kobotoolbox / kpi
kpi is the server for KoboToolbox. It includes an API for users to access data and manage their forms, question library, sharing settings, create reports, and export data.
AI Architecture Analysis
This repository is indexed by RepoMind. By analyzing kobotoolbox/kpi in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.
Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.
Repository Overview (README excerpt)
Crawler viewKPI For production always use a specific release branch, branch may include breaking changes. Run to list release branches and then switch to a release branch of your choice. We're open for contributions! API Deprecation & Removal Notices Please refer to the following documents for important information about deprecated or removed API endpoints: DEPRECATION.md — Lists all API endpoints that are deprecated. REMOVALS.md — Documents API endpoints that have already been removed. We recommend reviewing these files regularly to ensure your integrations remain compatible with future versions of the API. Important notice when upgrading from any release older than Prior to release , this project (KPI) and KoboCAT were two separated projects. KoboCAT is now part of KPI code base and its repository has been archived. KoboCAT deprecation notices will be maintained in this repository. More details here Important notice when upgrading from any release older than Prior to release , this project (KPI) and KoboCAT both shared a common Postgres database. They now each have their own. **If you are upgrading an existing single-database installation, you must follow these instructions** to migrate the KPI tables to a new database and adjust your configuration appropriately. If you do not want to upgrade at this time, please use the branch instead. Python Dependencies Python dependencies are managed with and from the package. The dependencies are listed in , with core requirements in . You may use directly with one of the compiled files, but consider using instead the . **Do not** add new dependencies directly to the *compiled* files; instead, update the relevant the *source* file(s), and execute after any changes. You can pass arguments to with e.g. . Downloading and compiling the translations • Pull the submodule into the directory with . • Optionally configure transifex to pull the latest translations into the directory with • Run to create files from the files. • To test out locales in the interface, double click "account actions" in the left navbar, use the dropdown to select a language, and refresh. Searching Results from the and endpoints can be filtered by a Boolean query specified in the parameter. For example: would return assets whose owner has the username "meg" (case sensitive) and whose name contains "quixotic" anywhere (case insensitive). For more details about the syntax, see the documentation at the top of kpi/utils/query_parser/query_parser.py. Admin reports There are several types of data reports available to superusers. • Full list of users including their details provided during signup, number of deployed projects (XForm count), number of submissions, date joined, and last login: . File being created is a CSV, so don't download immediately to wait for server to be finished writing to the file (it will download even if incomplete). • Monthly aggregate figures for number of forms, deployed projects, and submissions (from kobocat): Django Admin Interface As this is a Django project, you may find the admin panel at useful, e.g. to configure user accounts or log in as other users without knowing their passwords. You must use a superuser account to access the admin panel. Icons All project icons are kept in . Adding new icon requires adding new file here and regenerating icons with . Filenames are used for icon font classnames, e.g. for (please use kebab-case). You can see all available icons in Storybook by running . Supported Browsers See browsers list config API Documentation The OpenAPI documentation is available at: • **Swagger UI**: • **Raw schema**: For details about how the API documentation is implemented in each Django app, see .