Updates an Agent through its canonical owning Application.
Updates the Agent's top-level metadata only — the flow graph is versioned separately through the revisions endpoints. The lookup is scoped to the Application in the route, so an Agent owned by a different Application returns 404. Requires the Editor role.
Authorization
Bearer JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.
In: header
Path Parameters
Id of the owning Application.
uuidId of the Agent to update.
The tenant identifier
The fields to change. Omitted fields are left untouched.
Enum representing the different types of AI agents supported by Fruxon.
Wire form is UPPER_SNAKE; Unspecified = 0 is the AIP-126
zero-sentinel.
This enum is mandatory, meaning every agent must have a specific type.
"UNSPECIFIED" | "SUMMARIZATION" | "RECOMMENDATION" | "ANALYZER" | "CHAT" | "OTHER"Configuration for an externally-hosted agent. Persisted as JSONB on Fruxon.Model.Agents.Agent.ExternalConfig; null when Fruxon.Model.Agents.Agent.Origin is Fruxon.Model.Agents.External.AgentOrigin.Native.
Connection details are a free-form
System.Collections.Generic.Dictionary2 whose schema is declared per-platform by the matching IAgentPlatformDescriptor.ConnectionParameters. This mirrors how connectors and integrations work: persistent state is a flat dict, descriptors carry the schema, secrets are auto-encrypted by walking the metadata. Adding a new platform with novel auth (OAuth, signed JWT, mTLS) needs no shared-code changes — just new ParameterMetadata` entries on the descriptor.
Conventional keys (most platforms use most of these):
endpoint: the HTTP base URLassistant_id: platform-side agent identifier (LangGraph assistant_id, OpenAI assistant id)auth_header_name/auth_header_value: generic header-based authapi_key: when the platform expects a fixed headertimeout_seconds: per-invocation timeout
Per-agent prompt/completion redaction toggle. Nullable so the partial-update payload can leave it untouched; only flipped when the caller explicitly sends a value.
Response Body
curl -X PUT "https://api.fruxon.com/v1/tenants/string/networks/497f6eca-6276-4993-bfeb-53cbbbba6f08/agents/string" \ -H "Content-Type: application/json" \ -d '{}'{
"id": "string",
"displayName": "string",
"description": "string",
"avatarFileId": "string",
"tags": [
"string"
],
"type": "SUMMARIZATION",
"enabled": false,
"enabledBeforeDeletion": false,
"currentRevision": 0,
"shape": "AGENT",
"runnableType": "AGENT",
"createdAt": 0,
"modifiedAt": 0,
"tenantId": "00000000-0000-0000-0000-000000000000",
"networkId": "00000000-0000-0000-0000-000000000000",
"solutionId": "string",
"deletedAt": 0,
"evaluationMetrics": [
{
"metricId": "00000000-0000-0000-0000-000000000000",
"weight": 0
}
],
"origin": "NATIVE",
"externalConfig": {
"parameters": {}
},
"redactLlmMessages": false
}{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}Creates an Agent canonically owned by the Application in the route.
The Application in the route wins — any owner supplied in the body is overwritten before validation, so an Agent can never be created into a different Application than the one the caller was authorized against. Requires the Editor role. Responds 201 with a `Location` header pointing at the new Agent, or 400 with per-field validation errors.
Gets an Agent through its canonical owning Application.
Returns the Agent's top-level metadata (display name, description, enabled flag, current deployed revision, deletion state). The lookup is scoped to the Application in the route, so an Agent owned by a different Application returns 404 even when the caller could reach it through `GET /v1/tenants/{tenant}/agents/{agent}`.