openapi: 3.1.0 info: title: fleet-rlm version: 0.6.2 paths: /api/chat: post: tags: - chat summary: Chat description: Stream one chat Turn as an AI SDK UI 7 message stream. operationId: chat_api_chat_post parameters: - name: Idempotency-Key in: header required: false schema: anyOf: - type: string maxLength: 128 - type: 'null' title: Idempotency-Key - name: Authorization in: header required: false schema: anyOf: - type: string - type: 'null' title: Authorization - name: X-Fleet-User-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-User-Id - name: X-Fleet-Workspace-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-Workspace-Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ChatRequest' responses: '200': description: AI SDK UI 7 v1 UIMessage SSE stream content: text/event-stream: itemSchema: type: object properties: data: type: string event: type: string id: type: string retry: type: integer minimum: 0 headers: x-vercel-ai-ui-message-stream: description: AI SDK UI message stream protocol version schema: type: string const: v1 '400': description: Invalid attachment reference '404': description: Session not found '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/sessions: post: tags: - sessions summary: Create Session operationId: create_session_api_sessions_post parameters: - name: Authorization in: header required: false schema: anyOf: - type: string - type: 'null' title: Authorization - name: X-Fleet-User-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-User-Id - name: X-Fleet-Workspace-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-Workspace-Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SessionCreateRequest' responses: '201': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/SessionDetailResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' get: tags: - sessions summary: List Sessions operationId: list_sessions_api_sessions_get parameters: - name: status in: query required: false schema: anyOf: - type: string - type: 'null' description: active | archived title: Status description: active | archived - name: search in: query required: false schema: anyOf: - type: string - type: 'null' description: Title contains title: Search description: Title contains - name: limit in: query required: false schema: type: integer maximum: 100 minimum: 1 default: 20 title: Limit - name: offset in: query required: false schema: type: integer minimum: 0 default: 0 title: Offset - name: Authorization in: header required: false schema: anyOf: - type: string - type: 'null' title: Authorization - name: X-Fleet-User-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-User-Id - name: X-Fleet-Workspace-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-Workspace-Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/SessionListResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/sessions/{session_id}: get: tags: - sessions summary: Get Session operationId: get_session_api_sessions__session_id__get parameters: - name: session_id in: path required: true schema: type: string format: uuid title: Session Id - name: Authorization in: header required: false schema: anyOf: - type: string - type: 'null' title: Authorization - name: X-Fleet-User-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-User-Id - name: X-Fleet-Workspace-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-Workspace-Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/SessionDetailResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' patch: tags: - sessions summary: Patch Session operationId: patch_session_api_sessions__session_id__patch parameters: - name: session_id in: path required: true schema: type: string format: uuid title: Session Id - name: Authorization in: header required: false schema: anyOf: - type: string - type: 'null' title: Authorization - name: X-Fleet-User-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-User-Id - name: X-Fleet-Workspace-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-Workspace-Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SessionPatchRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/SessionDetailResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - sessions summary: Delete Session description: 'Soft-delete: archive the session.' operationId: delete_session_api_sessions__session_id__delete parameters: - name: session_id in: path required: true schema: type: string format: uuid title: Session Id - name: Authorization in: header required: false schema: anyOf: - type: string - type: 'null' title: Authorization - name: X-Fleet-User-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-User-Id - name: X-Fleet-Workspace-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-Workspace-Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/SessionDetailResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/sessions/{session_id}/turns: get: tags: - sessions summary: List Session Turns operationId: list_session_turns_api_sessions__session_id__turns_get parameters: - name: session_id in: path required: true schema: type: string format: uuid title: Session Id - name: limit in: query required: false schema: type: integer maximum: 200 minimum: 1 default: 50 title: Limit - name: offset in: query required: false schema: type: integer minimum: 0 default: 0 title: Offset - name: Authorization in: header required: false schema: anyOf: - type: string - type: 'null' title: Authorization - name: X-Fleet-User-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-User-Id - name: X-Fleet-Workspace-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-Workspace-Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TurnListResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/files: post: tags: - files summary: Upload File description: Upload one file; return opaque AttachmentRef metadata only. operationId: upload_file_api_files_post parameters: - name: Authorization in: header required: false schema: anyOf: - type: string - type: 'null' title: Authorization - name: X-Fleet-User-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-User-Id - name: X-Fleet-Workspace-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-Workspace-Id requestBody: required: true content: multipart/form-data: schema: $ref: '#/components/schemas/Body_upload_file_api_files_post' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AttachmentResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/files/{file_id}: get: tags: - files summary: Get File operationId: get_file_api_files__file_id__get parameters: - name: file_id in: path required: true schema: type: string format: uuid title: File Id - name: Authorization in: header required: false schema: anyOf: - type: string - type: 'null' title: Authorization - name: X-Fleet-User-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-User-Id - name: X-Fleet-Workspace-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-Workspace-Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/AttachmentResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/artifacts/{artifact_id}: get: tags: - artifacts summary: Get Artifact operationId: get_artifact_api_artifacts__artifact_id__get parameters: - name: artifact_id in: path required: true schema: type: string format: uuid title: Artifact Id - name: Authorization in: header required: false schema: anyOf: - type: string - type: 'null' title: Authorization - name: X-Fleet-User-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-User-Id - name: X-Fleet-Workspace-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-Workspace-Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ArtifactResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/skills: get: tags: - skills summary: List Skills description: List SkillCards authorized for the caller (metadata only). operationId: list_skills_api_skills_get parameters: - name: q in: query required: false schema: anyOf: - type: string - type: 'null' description: Optional ranking query title: Q description: Optional ranking query - name: Authorization in: header required: false schema: anyOf: - type: string - type: 'null' title: Authorization - name: X-Fleet-User-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-User-Id - name: X-Fleet-Workspace-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-Workspace-Id responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/SkillCardResponse' title: Response List Skills Api Skills Get '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/skills/{skill_id}: get: tags: - skills summary: Get Skill operationId: get_skill_api_skills__skill_id__get parameters: - name: skill_id in: path required: true schema: type: string format: uuid title: Skill Id - name: Authorization in: header required: false schema: anyOf: - type: string - type: 'null' title: Authorization - name: X-Fleet-User-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-User-Id - name: X-Fleet-Workspace-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-Workspace-Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/SkillCardResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/runs/{run_id}/cancel: post: tags: - runs summary: Cancel Run description: 'Request cancellation of an owned in-flight Run. Idempotent. Missing or foreign runs return 404 (never 403). Durable cancel intent is recorded when a SessionRepository is configured; the in-process registry always receives the signal for the local worker.' operationId: cancel_run_api_runs__run_id__cancel_post parameters: - name: run_id in: path required: true schema: type: string format: uuid title: Run Id - name: Authorization in: header required: false schema: anyOf: - type: string - type: 'null' title: Authorization - name: X-Fleet-User-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-User-Id - name: X-Fleet-Workspace-Id in: header required: false schema: anyOf: - type: string format: uuid - type: 'null' title: X-Fleet-Workspace-Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/CancelRunResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' components: schemas: ArtifactResponse: properties: id: type: string format: uuid title: Id session_id: type: string format: uuid title: Session Id run_id: type: string format: uuid title: Run Id kind: type: string title: Kind title: anyOf: - type: string - type: 'null' title: Title media_type: type: string title: Media Type byte_size: type: integer title: Byte Size checksum_sha256: type: string title: Checksum Sha256 type: object required: - id - session_id - run_id - kind - media_type - byte_size - checksum_sha256 title: ArtifactResponse description: Public artifact metadata — no host or Volume paths. AttachmentResponse: properties: id: type: string format: uuid title: Id filename: type: string title: Filename content_type: anyOf: - type: string - type: 'null' title: Content Type byte_size: type: integer title: Byte Size checksum_sha256: type: string title: Checksum Sha256 type: object required: - id - filename - byte_size - checksum_sha256 title: AttachmentResponse description: Public attachment metadata — no host or Volume paths. Body_upload_file_api_files_post: properties: file: type: string contentMediaType: application/octet-stream title: File type: object required: - file title: Body_upload_file_api_files_post CancelRunResponse: properties: run_id: type: string format: uuid title: Run Id cancelled: type: boolean title: Cancelled already_cancelled: type: boolean title: Already Cancelled type: object required: - run_id - cancelled - already_cancelled title: CancelRunResponse ChatRequest: properties: message: type: string maxLength: 100000 minLength: 1 title: Message session_id: anyOf: - type: string format: uuid - type: 'null' title: Session Id attachment_ids: items: type: string format: uuid type: array title: Attachment Ids type: object required: - message title: ChatRequest description: Body for POST /api/chat. HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError SessionCreateRequest: properties: title: anyOf: - type: string maxLength: 255 - type: 'null' title: Title type: object title: SessionCreateRequest SessionDetailResponse: properties: id: type: string format: uuid title: Id title: type: string title: Title status: type: string title: Status checkpoint_version: type: integer title: Checkpoint Version turn_count: type: integer title: Turn Count created_at: anyOf: - type: string - type: 'null' title: Created At updated_at: anyOf: - type: string - type: 'null' title: Updated At type: object required: - id - title - status - checkpoint_version - turn_count title: SessionDetailResponse SessionListResponse: properties: items: items: $ref: '#/components/schemas/SessionSummaryResponse' type: array title: Items total: type: integer title: Total offset: type: integer title: Offset limit: type: integer title: Limit has_more: type: boolean title: Has More type: object required: - items - total - offset - limit - has_more title: SessionListResponse SessionPatchRequest: properties: title: anyOf: - type: string maxLength: 255 - type: 'null' title: Title status: anyOf: - type: string - type: 'null' title: Status description: active | archived type: object title: SessionPatchRequest SessionSummaryResponse: properties: id: type: string format: uuid title: Id title: type: string title: Title status: type: string title: Status checkpoint_version: type: integer title: Checkpoint Version created_at: anyOf: - type: string - type: 'null' title: Created At updated_at: anyOf: - type: string - type: 'null' title: Updated At type: object required: - id - title - status - checkpoint_version title: SessionSummaryResponse SkillCardResponse: properties: id: type: string format: uuid title: Id name: type: string title: Name description: type: string title: Description scope: type: string title: Scope version: type: string title: Version trust: type: string title: Trust affordances: items: type: string type: array title: Affordances resources_available: type: boolean title: Resources Available type: object required: - id - name - description - scope - version - trust - affordances - resources_available title: SkillCardResponse description: Bounded Skill discovery metadata — no instructions body. TurnListResponse: properties: items: items: $ref: '#/components/schemas/TurnResponse' type: array title: Items total: type: integer title: Total offset: type: integer title: Offset limit: type: integer title: Limit has_more: type: boolean title: Has More type: object required: - items - total - offset - limit - has_more title: TurnListResponse TurnResponse: properties: id: type: string format: uuid title: Id sequence: type: integer title: Sequence role: type: string title: Role content: type: string title: Content status: type: string title: Status run_id: anyOf: - type: string format: uuid - type: 'null' title: Run Id parts: items: additionalProperties: true type: object type: array title: Parts metadata: anyOf: - additionalProperties: true type: object - type: 'null' title: Metadata type: object required: - id - sequence - role - content - status - parts title: TurnResponse ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type input: title: Input ctx: type: object title: Context type: object required: - loc - msg - type title: ValidationError