openapi: 3.1.0 info: title: Bluejay Agents Prompts API description: Bluejay API version: 0.1.0 servers: - url: https://api.getbluejay.ai description: Production server security: - apiKeyAuth: [] tags: - name: Prompts paths: /v1/agents/{agent_id}/prompts: get: tags: - Prompts summary: Get Prompt By Label Agent Scoped description: 'retrieve a single prompt by label under /agents/{agent_id}/prompts?label=... . - if label is missing -> 400 - if label resolves to 0 -> 404; >1 -> 400 ambiguous (except latest which should be unique)' operationId: get_prompt_by_label_agent_scoped_v1_agents__agent_id__prompts_get security: - HTTPBearer: [] parameters: - name: agent_id in: path required: true schema: type: integer title: Agent Id - name: label in: query required: false schema: anyOf: - type: string - type: 'null' title: Label - name: X-API-Key in: header required: true schema: type: string description: API key required to authenticate requests. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PromptResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/agents/{agent_id}/prompts/versions: post: tags: - Prompts summary: Create Prompt Version Agent Scoped description: create a new prompt version under /agents/{agent_id}/prompts/versions. operationId: create_prompt_version_agent_scoped_v1_agents__agent_id__prompts_versions_post security: - HTTPBearer: [] parameters: - name: agent_id in: path required: true schema: type: integer title: Agent Id - name: X-API-Key in: header required: true schema: type: string description: API key required to authenticate requests. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreatePromptVersionBody' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PromptResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' get: tags: - Prompts summary: List Prompt Versions description: list prompt versions with optional filters (label, version). operationId: list_prompt_versions_v1_agents__agent_id__prompts_versions_get security: - HTTPBearer: [] parameters: - name: agent_id in: path required: true schema: type: integer title: Agent Id - name: label in: query required: false schema: anyOf: - type: string - type: 'null' title: Label - name: version in: query required: false schema: anyOf: - type: integer - type: 'null' title: Version - name: limit in: query required: false schema: type: integer default: 50 title: Limit - name: X-API-Key in: header required: true schema: type: string description: API key required to authenticate requests. responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/PromptResponse' title: Response List Prompt Versions V1 Agents Agent Id Prompts Versions Get '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - Prompts summary: Delete Prompt Version By Label Agent Scoped description: 'delete a prompt version by label. - if label is production -> 400 (must move production first) - if label resolves to 0 -> 404; >1 -> 400 ambiguous (except latest which should be unique) - if deleting latest, reassign latest to highest remaining version - cannot delete if it is the only version' operationId: delete_prompt_version_by_label_agent_scoped_v1_agents__agent_id__prompts_versions_delete security: - HTTPBearer: [] parameters: - name: agent_id in: path required: true schema: type: integer title: Agent Id - name: label in: query required: false schema: anyOf: - type: string - type: 'null' title: Label - name: X-API-Key in: header required: true schema: type: string description: API key required to authenticate requests. responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/agents/{agent_id}/prompts/promote: post: tags: - Prompts summary: Promote Production Label Agent Scoped description: Move the production label to the latest prompt version, or to the version identified by prompt_id. operationId: promote_production_label_agent_scoped_v1_agents__agent_id__prompts_promote_post security: - HTTPBearer: [] parameters: - name: agent_id in: path required: true schema: type: integer title: Agent Id - name: prompt_id in: query required: false schema: anyOf: - type: string format: uuid - type: 'null' description: If set, attach the production label to this prompt version; otherwise attach to the latest version. title: Prompt Id description: If set, attach the production label to this prompt version; otherwise attach to the latest version. - name: X-API-Key in: header required: true schema: type: string description: API key required to authenticate requests. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PromptResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/agents/{agent_id}/prompts/versions/{version}: get: tags: - Prompts summary: Get Prompt Version Agent Scoped operationId: get_prompt_version_agent_scoped_v1_agents__agent_id__prompts_versions__version__get security: - HTTPBearer: [] parameters: - name: agent_id in: path required: true schema: type: integer title: Agent Id - name: version in: path required: true schema: type: integer title: Version - name: X-API-Key in: header required: true schema: type: string description: API key required to authenticate requests. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PromptResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - Prompts summary: Delete Prompt Version Agent Scoped description: 'delete a specific prompt version; cannot delete production; cannot delete only version. if deleting latest, reassign latest to highest remaining version. returns metadata about the deletion.' operationId: delete_prompt_version_agent_scoped_v1_agents__agent_id__prompts_versions__version__delete security: - HTTPBearer: [] parameters: - name: agent_id in: path required: true schema: type: integer title: Agent Id - name: version in: path required: true schema: type: integer title: Version - name: X-API-Key in: header required: true schema: type: string description: API key required to authenticate requests. responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/agents/{agent_id}/prompts/{prompt_id}: get: tags: - Prompts summary: Get Prompt By Id operationId: get_prompt_by_id_v1_agents__agent_id__prompts__prompt_id__get security: - HTTPBearer: [] parameters: - name: agent_id in: path required: true schema: type: integer title: Agent Id - name: prompt_id in: path required: true schema: type: string format: uuid title: Prompt Id - name: X-API-Key in: header required: true schema: type: string description: API key required to authenticate requests. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/PromptResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - Prompts summary: Delete Prompt By Id Agent Scoped operationId: delete_prompt_by_id_agent_scoped_v1_agents__agent_id__prompts__prompt_id__delete security: - HTTPBearer: [] parameters: - name: agent_id in: path required: true schema: type: integer title: Agent Id - name: prompt_id in: path required: true schema: type: string format: uuid title: Prompt Id - name: X-API-Key in: header required: true schema: type: string description: API key required to authenticate requests. responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/agents/{agent_id}/prompts/versions/{version}/labels: get: tags: - Prompts summary: List Prompt Version Labels Agent Scoped operationId: list_prompt_version_labels_agent_scoped_v1_agents__agent_id__prompts_versions__version__labels_get security: - HTTPBearer: [] parameters: - name: agent_id in: path required: true schema: type: integer title: Agent Id - name: version in: path required: true schema: type: integer title: Version - name: X-API-Key in: header required: true schema: type: string description: API key required to authenticate requests. responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/LabelListResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Prompts summary: Add Prompt Version Labels Agent Scoped operationId: add_prompt_version_labels_agent_scoped_v1_agents__agent_id__prompts_versions__version__labels_post security: - HTTPBearer: [] parameters: - name: agent_id in: path required: true schema: type: integer title: Agent Id - name: version in: path required: true schema: type: integer title: Version - name: X-API-Key in: header required: true schema: type: string description: API key required to authenticate requests. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LabelDeltaRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/LabelListResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - Prompts summary: Remove Prompt Version Labels Agent Scoped operationId: remove_prompt_version_labels_agent_scoped_v1_agents__agent_id__prompts_versions__version__labels_delete security: - HTTPBearer: [] parameters: - name: agent_id in: path required: true schema: type: integer title: Agent Id - name: version in: path required: true schema: type: integer title: Version - name: X-API-Key in: header required: true schema: type: string description: API key required to authenticate requests. requestBody: content: application/json: schema: $ref: '#/components/schemas/LabelDeltaRequest' default: labels: [] override_label: false responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/LabelListResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' components: schemas: LabelDeltaRequest: properties: labels: anyOf: - items: type: string type: array - type: 'null' title: Labels override_label: anyOf: - type: boolean - type: 'null' title: Override Label default: false type: object title: LabelDeltaRequest description: 'request body for add/remove label operations. labels: list of labels to add or remove. empty/null means no-op for add, and clear-all for remove (callers decide the semantics). override_label: when true, adding an existing label moves its association to the requested resource; when false, conflicts return 409.' CreatePromptVersionBody: properties: prompt_text: type: string title: Prompt Text commit_message: anyOf: - type: string - type: 'null' title: Commit Message labels: anyOf: - items: type: string type: array - type: 'null' title: Labels metadata: anyOf: - additionalProperties: true type: object - type: 'null' title: Metadata type: object required: - prompt_text title: CreatePromptVersionBody description: body for agent-scoped create version endpoint (agent_id in path). LabelListResponse: properties: labels: items: type: string type: array title: Labels type: object title: LabelListResponse description: response wrapper for just a list of labels. ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError PromptResponse: properties: id: anyOf: - type: string format: uuid - type: 'null' title: Id description: the id of the prompt prompt_text: type: string title: Prompt Text description: the prompt content commit_message: anyOf: - type: string - type: 'null' title: Commit Message labels: anyOf: - items: type: string type: array - type: 'null' title: Labels description: labels associated with the prompt metadata: anyOf: - additionalProperties: true type: object - type: 'null' title: Metadata description: arbitrary JSON metadata version: type: integer title: Version description: the version number of the prompt agent_id: type: integer title: Agent Id description: id of the agent that owns this prompt type: object required: - prompt_text - version - agent_id title: PromptResponse description: response model for prompt without created_at. HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError securitySchemes: apiKeyAuth: type: apiKey in: header name: X-API-Key description: API key required to authenticate requests.