Project Management
Projects connect Minimal to your databases. Each project belongs to an organisation and can hold one or more database connections.
All System API endpoints require X-Server-Key from your config.yml.
To create a new project, see the Quick Start guide — Step 2 walks through the full create flow.
Update a Project
Updates an existing project's name, abbreviation, description, or database connection. Pass project_id in the body to identify which project to update.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
project_id | string | ✅ Yes | ID of the project to update |
name | string | ✅ Yes | Updated project name |
abbreviation | string | ✅ Yes | Short slug — max 5 characters |
description | string | ❌ No | Optional project description |
database[].host | string | ✅ Yes | Database host (e.g. localhost) |
database[].port | string | ✅ Yes | Database port (e.g. 3306 for MySQL) |
database[].username | string | ✅ Yes | Database username |
database[].password | string | ✅ Yes | Database password |
database[].db_name | string | ✅ Yes | Name of the database to connect |
database[].db_type | string | ✅ Yes | mysql, postgresql, mariadb, or clickhouse |
database[].connect_timeout_secs | integer | ✅ Yes | Connection timeout in seconds |
database[].idle_timeout_secs | integer | ✅ Yes | Idle connection timeout in seconds |
database[].max_open_connections | integer | ✅ Yes | Max open connections in the pool |
database[].max_idle_connections | integer | ✅ Yes | Max idle connections in the pool |
Response
200 OK:
{
"code": 200,
"status": "OK",
"message": "project updated successfully"
}
List Projects
Returns all projects under the specified organisation.
Required Headers
| Header | Description |
|---|---|
X-Org-Id | Organisation identifier |
X-User-Id | Authenticated user's identifier |
X-Server-Key | Server key from config.yml |
Get Project Details
Returns full details of a specific project including its database connection configuration.
Required Headers
| Header | Description |
|---|---|
X-Project-Id | Project identifier |
X-Org-Id | Organisation identifier |
X-User-Id | Authenticated user's identifier |
X-Server-Key | Server key from config.yml |
Index Project Tables
Triggers Minimal to scan and index all tables in the project's connected database(s). Run this after creating a project or after any schema changes to make tables available for the Auto API.
Required Headers
| Header | Description |
|---|---|
X-Project-Id | Project identifier |
X-Org-Id | Organisation identifier |
X-Space-Id | Space identifier |
X-User-Id | Authenticated user's identifier |
X-User-Roles | Comma-separated roles (e.g., admin,user) |
X-Server-Key | Server key from config.yml |
Response
200 OK:
{
"code": 200,
"status": "OK",
"message": "project indexing started"
}
Indexing runs asynchronously. Use the Project Index Status endpoint below to check when it completes.
Project Index Status
Returns the current indexing status for a project. Poll this after calling Index Project Tables to confirm all tables have been indexed.
Required Headers
| Header | Description |
|---|---|
X-Project-Id | Project identifier |
X-Org-Id | Organisation identifier |
X-Space-Id | Space identifier |
X-User-Id | Authenticated user's identifier |
X-User-Roles | Comma-separated roles (e.g., admin,user) |
X-Server-Key | Server key from config.yml |
Common Errors
| Code | Cause |
|---|---|
400 | Missing or malformed request body |
401 | Missing X-User-Id header |
403 | Invalid or missing X-Server-Key |
404 | Project not found — check X-Project-Id |
417 | A required field is missing or abbreviation exceeds 5 characters |
424 | abbreviation is too long — keep to 5 characters max |