Chat, projects, prompts, providers
Chat history
User-scoped — ChatController (api/Chat) — JWT or API Key
| Method | Path | Purpose |
|---|---|---|
GET | /api/chat/sessions?externalUser=&externalId=&includeInactive= | List sessions for caller identity |
GET | /api/chat/conversation/{chatId}?externalUser=&externalId= | Full Q/A transcript |
Admin — ChatAdminController (api/ChatAdmin) — AdminOnly
| Method | Path | Purpose |
|---|---|---|
GET | /api/chatadmin/sessions?projectId=&externalUser=&externalId= | Cross-user listing |
GET | /api/chatadmin/conversation/{chatId} | Ops transcript |
Projects, members & federation
Projects — ProjectController (api/Project) — JWT
| Method | Path | Auth | Purpose |
|---|---|---|---|
GET | /api/project?includeSpent= | Auth | List projects |
GET | /api/project/{id} | Auth | Detail |
POST | /api/project | Admin | Create |
PUT | /api/project/{id} | Admin | Update |
DELETE | /api/project/{id} | Admin | Delete |
POST | /api/project/{id}/rotate-key | Admin | Rotate project API key |
GET | /api/project/{id}/members | Project access | Members |
POST | /api/project/{id}/members | Admin/Owner | { "username", "role?" } |
DELETE | /api/project/{id}/members/{userId} | Admin/Owner | Remove |
POST | /api/project/spent | Auth | Body int[] → spent by project |
{
"name": "Operations",
"allowedAdGroups": null,
"allowedAdUsers": null,
"budget": 1000,
"allowNoLog": false
}
4.4.4 Federation — MCP entitlements
Controller: ProjectFederationController — api/projects/{projectId}/federation — AdminOnly
| Method | Path | Purpose |
|---|---|---|
GET | .../external-principals | List external principals |
POST | .../identity-providers | Register IdP (google-user, eva-phone, …) |
POST | .../service-identities | Register service identity (e.g. Cloud Run SA) |
POST | .../mcp-entitlements | Grant MCP entitlement |
GET | .../mcp-entitlements | List |
DELETE | .../mcp-entitlements/{id} | Revoke |
GET | .../internal-users | Internal users |
Entitlement body example: { "mcpServerId": 5, "userId": null, "externalPrincipalId": "…", "maxInstances": 1 }.
Delegation exchange: POST /api/delegations/exchange — see Authentication → Delegation tokens.
Prompts
Controller: PromptController (api/Prompt) — JWT; mutations Admin
| Method | Path | Auth | Purpose |
|---|---|---|---|
GET | /api/prompt/project/{projectId} | Auth | List |
GET | /api/prompt/project/{projectId}/active | Auth | Active prompt |
GET | /api/prompt/{id} | Auth | Get |
POST | /api/prompt | Admin | Create |
PUT | /api/prompt/{id} | Admin | Update |
POST | /api/prompt/{id}/activate | Admin | Activate |
DELETE | /api/prompt/{id} | Admin | Delete |
GET | /api/prompt/{id}/versions | Auth | History |
POST | /api/prompt/{id}/restore/{versionId} | Admin | Restore |
{
"projectId": 1,
"name": "Intake",
"systemPrompt": "You are an intake assistant…",
"userPrompt": null,
"isActive": true,
"temperature": 0.3,
"maxTokens": 2000
}
Providers
Controller: ProviderController (api/Provider) — JWT; writes Admin
| Method | Path | Purpose |
|---|---|---|
GET | /api/provider | List |
GET | /api/provider/{id} | Detail |
POST / PUT / DELETE | /api/provider[/{id}] | CRUD (Admin) |
PATCH | /api/provider/{id}/status | Enable/disable |
POST | /api/provider/{id}/set-default | Set default |
POST | /api/provider/discover-models | Discover models |
GET | /api/provider/{id}/models | Models |
GET | /api/provider/{id}/usage / /api/provider/usage | Usage |
Types include: Azure, Bedrock, Gemini, Ollama, OpenAI-compatible, KnowledgeBase (KbBackend: AzureSearch | Internal), AzureRealtime.
Capability flags: text / audio / document / image / agentTools / embeddings / realtime audio.
For Internal RAG: enable Embeddings on an Azure or Gemini provider, create a Knowledge Base, then create a KnowledgeBase provider with KbBackend=Internal linked to that base — or ground chat via knowledgeBaseIds on /api/ai/chat.