Skip to main content

Chat, projects, prompts, providers

Chat history

User-scoped — ChatController (api/Chat) — JWT or API Key

MethodPathPurpose
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

MethodPathPurpose
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

MethodPathAuthPurpose
GET/api/project?includeSpent=AuthList projects
GET/api/project/{id}AuthDetail
POST/api/projectAdminCreate
PUT/api/project/{id}AdminUpdate
DELETE/api/project/{id}AdminDelete
POST/api/project/{id}/rotate-keyAdminRotate project API key
GET/api/project/{id}/membersProject accessMembers
POST/api/project/{id}/membersAdmin/Owner{ "username", "role?" }
DELETE/api/project/{id}/members/{userId}Admin/OwnerRemove
POST/api/project/spentAuthBody int[] → spent by project
{
"name": "Operations",
"allowedAdGroups": null,
"allowedAdUsers": null,
"budget": 1000,
"allowNoLog": false
}

4.4.4 Federation — MCP entitlements

Controller: ProjectFederationControllerapi/projects/{projectId}/federationAdminOnly

MethodPathPurpose
GET.../external-principalsList external principals
POST.../identity-providersRegister IdP (google-user, eva-phone, …)
POST.../service-identitiesRegister service identity (e.g. Cloud Run SA)
POST.../mcp-entitlementsGrant MCP entitlement
GET.../mcp-entitlementsList
DELETE.../mcp-entitlements/{id}Revoke
GET.../internal-usersInternal 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

MethodPathAuthPurpose
GET/api/prompt/project/{projectId}AuthList
GET/api/prompt/project/{projectId}/activeAuthActive prompt
GET/api/prompt/{id}AuthGet
POST/api/promptAdminCreate
PUT/api/prompt/{id}AdminUpdate
POST/api/prompt/{id}/activateAdminActivate
DELETE/api/prompt/{id}AdminDelete
GET/api/prompt/{id}/versionsAuthHistory
POST/api/prompt/{id}/restore/{versionId}AdminRestore
{
"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

MethodPathPurpose
GET/api/providerList
GET/api/provider/{id}Detail
POST / PUT / DELETE/api/provider[/{id}]CRUD (Admin)
PATCH/api/provider/{id}/statusEnable/disable
POST/api/provider/{id}/set-defaultSet default
POST/api/provider/discover-modelsDiscover models
GET/api/provider/{id}/modelsModels
GET/api/provider/{id}/usage / /api/provider/usageUsage

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.