Limites de projet et contrat de base
Le contrat OpenAPI expose les opérations de projet sous /v1/projects/{project_id} ; il n'y a pas d'opération POST /v1/projects de niveau supérieur dans le contrat public validé du plan de données. Un project_id sélectionne l'espace de travail du projet, tandis que scope, bucket, team_id et path restent des champs d'autorisation et de filtrage. Authentifiez-vous avec l'en-tête X-API-Key et utilisez un jeton autorisé pour le projet/l'équipe sélectionné.
- Contexte : POST /v1/projects/{project_id}/context.
- Tâches (todos) : POST /v1/projects/{project_id}/todos ; GET /v1/projects/{project_id}/todos.
- Transitions de tâches : POST /v1/projects/{project_id}/todos/{todo_id}/accept ; POST /v1/projects/{project_id}/todos/{todo_id}/assign ; POST /v1/projects/{project_id}/todos/{todo_id}/block ; POST /v1/projects/{project_id}/todos/{todo_id}/unblock ; POST /v1/projects/{project_id}/todos/{todo_id}/complete ; POST /v1/projects/{project_id}/todos/{todo_id}/cancel.
- Décisions : POST /v1/projects/{project_id}/decisions ; GET /v1/projects/{project_id}/decisions.
- Transitions de décision : POST /v1/projects/{project_id}/decisions/{decision_id}/resolve ; POST /v1/projects/{project_id}/decisions/{decision_id}/supersede ; POST /v1/projects/{project_id}/decisions/{decision_id}/reopen.
- Maintenance : GET /v1/projects/{project_id}/maintenance/settings ; PATCH /v1/projects/{project_id}/maintenance/settings ; GET /v1/projects/{project_id}/maintenance ; POST /v1/projects/{project_id}/maintenance/execute.
Schémas de requête et de réponse du contexte de projet
POST /v1/projects/{project_id}/context accepte ProjectContextRequest : bucket vaut % par défaut, team_id et durable_query acceptent null, max_items vaut 100 par défaut (1..1000), max_tokens vaut 8000 par défaut (1..50000), include_durable_context vaut true par défaut, et recent_hours vaut 168 par défaut (1..8760). Il renvoie ProjectContextPackResponse avec les champs requis project_scope, assembled_at et budget, plus project_state, agent_states, action_items, decisions, timeline, recent_memories, durable_context, governance_caveats, missing_domains, incomplete_domains et suggested_next_actions.
POST /v1/projects/memory-os/context
X-API-Key: <your-assigned-api-key>
Content-Type: application/json
{
"bucket": "work",
"max_items": 100,
"max_tokens": 8000,
"include_durable_context": true,
"recent_hours": 168
}Tâches et décisions de projet
La création de tâche accepte ProjectTodoCreateRequest avec content requis et priority, assignee_agent_id, depends_on, due_at, source_memory_id, metadata, bucket (par défaut work), scope, path et team_id facultatifs ; elle renvoie ProjectTodo. GET todos accepte status et team_id facultatifs et renvoie un tableau de ProjectTodo. La création de décision accepte ProjectDecisionCreateRequest avec context requis et options, impact_level, proposed_by_agent_id, supersedes, source_memory_id, due_at, metadata, bucket (par défaut work), scope, path et team_id facultatifs ; elle renvoie ProjectDecision. La liste des décisions accepte status et team_id et renvoie un tableau.
POST /v1/projects/memory-os/todos
X-API-Key: <your-assigned-api-key>
Content-Type: application/json
{
"content": "Review the current API contract",
"priority": "high",
"bucket": "work"
}
POST /v1/projects/memory-os/decisions
X-API-Key: <your-assigned-api-key>
Content-Type: application/json
{
"context": "Choose the public REST reference scope",
"options": ["memory-only", "full-openapi"]
}Opérations du cycle de vie des tâches et des décisions
Les opérations de cycle de vie OpenAPI renvoient ProjectTodo ou ProjectDecision, sauf supersede qui renvoie un tableau de ProjectDecision. ProjectTodo requiert todo_id, project_id et content ; ses autres champs déclarés incluent status, priority, assignee_agent_id, accepted_by_agent_id, blocked_reason, depends_on, due_at, completed_at, completion_note, source_memory_id, created_at, updated_at, audit_trail et extra_metadata. ProjectDecision requiert decision_id, project_id et content ; ses autres champs déclarés incluent title, decision, rationale, status, proposed_by_agent_id, resolved_by_agent_id, impact_level, supersedes, superseded_by, options, resolution, decision_context, source_memory_id, resolved_at, created_at, updated_at, audit_trail et extra_metadata. POST /v1/projects/{project_id}/decisions/{decision_id}/resolve requiert {resolution: string} ; POST /v1/projects/{project_id}/decisions/{decision_id}/supersede requiert context et accepte options, impact_level, proposed_by_agent_id et resolution_note ; reopen n'a pas de corps de requête. Todo accept, unblock et la plupart des transitions n'ont pas de corps de requête dans OpenAPI ; assign requiert {assignee_agent_id: string}, block requiert {reason: string}, complete accepte {note: string|null}, et cancel accepte {reason: string|null}.
{
"resolution": "Use the memory-only public reference."
}Maintenance du projet, pagination, erreurs et limites
La maintenance fait partie de la surface publique /v1/projects dans OpenAPI : les requêtes GET/PATCH de settings utilisent ProjectMaintenanceSettingsResponse et ProjectMaintenanceSettingsPatchRequest ; le rapport GET accepte team_id et scan_limit (par défaut 1000, plage 1..5000) et renvoie ProjectMaintenanceReportResponse ; l'exécution POST accepte ProjectMaintenanceExecuteRequest avec actions (1..4 chaînes), target_ids (jusqu'à 500 identifiants) et confirm_all_matching (par défaut false), renvoyant ProjectMaintenanceExecuteResponse. Les listes de tâches/décisions de projet exposent des filtres status/team_id mais aucun paramètre de page ou de curseur dans OpenAPI. Toutes les opérations répertoriées déclarent HTTPValidationError pour 422. Les erreurs d'autorisation à l'exécution et les limites de débit configurables de 60 secondes sont partagées avec les pages Authentification et API Mémoire ; aucun quota spécifique aux projets n'est publié dans OpenAPI.
Source : Surface d'outils MCP