openapi: "3.0.3" info: title: SentryAgent.ai — SDK Scaffold Generator version: 1.0.0 description: | SDK scaffold generator endpoint for the SentryAgent.ai AgentIdP platform. The scaffold endpoint generates a ready-to-run agent project ZIP archive pre-configured with the agent's credentials, API URL, and chosen SDK. The generated scaffold includes: - Language-specific project structure (TypeScript / Python / Go / Java / Rust) - Pre-filled `.env.example` with `CLIENT_ID` and `API_URL` - Agent authentication boilerplate using the SentryAgent.ai SDK - README with quickstart instructions - Docker / CI configuration (where applicable) **Authentication:** Requires a valid Bearer JWT. **Rate limit:** 10 requests per minute per tenant (separate from the global limit). The scaffold endpoint responds with `Retry-After` on rate limit. **Supported languages:** `typescript`, `python`, `go`, `java`, `rust` servers: - url: http://localhost:3000/api/v1 description: Local development server - url: https://api.sentryagent.ai/v1 description: Production server tags: - name: SDK Scaffold description: Generate a ready-to-run agent SDK project scaffold components: securitySchemes: BearerAuth: type: http scheme: bearer bearerFormat: JWT description: | JWT access token obtained via `POST /token`. Include as `Authorization: Bearer `. schemas: ScaffoldLanguage: type: string enum: - typescript - python - go - java - rust description: Target programming language for the scaffold project. example: typescript ErrorResponse: type: object description: Standard error response envelope. required: - code - message properties: code: type: string example: "AGENT_NOT_FOUND" message: type: string example: "Agent with the specified ID was not found." details: type: object additionalProperties: true responses: Unauthorized: description: Missing or invalid Bearer token. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: code: "UNAUTHORIZED" message: "A valid Bearer token is required to access this resource." Forbidden: description: Valid token but insufficient permissions. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: code: "FORBIDDEN" message: "You do not have permission to access this agent's scaffold." NotFound: description: Agent not found. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: code: "AGENT_NOT_FOUND" message: "Agent with the specified ID was not found." TooManyRequests: description: | Scaffold-specific rate limit exceeded (10 requests per minute per tenant). Retry after the duration specified in the `Retry-After` header. headers: Retry-After: schema: type: integer description: Number of seconds to wait before retrying. example: 60 content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: code: "RATE_LIMIT_EXCEEDED" message: "Scaffold rate limit exceeded. Please retry after 60 seconds." InternalServerError: description: Unexpected server error. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: code: "INTERNAL_SERVER_ERROR" message: "An unexpected error occurred. Please try again later." security: - BearerAuth: [] paths: /sdk/scaffold/{agentId}: get: operationId: getAgentScaffold tags: - SDK Scaffold summary: Generate and download an agent SDK scaffold ZIP description: | Generates a ready-to-run agent project scaffold for the specified agent and streams it as a ZIP file download. The scaffold is customized with: - The agent's `CLIENT_ID` pre-filled in `.env.example` - The platform API URL (`API_URL`) configured for the environment - The agent's name, type, and capabilities reflected in project metadata - Language-specific SDK integration boilerplate **Rate limit:** 10 requests per minute per tenant. Exceeding this limit returns `429 Too Many Requests` with a `Retry-After` header. **Language selection:** Pass the desired `language` query parameter. Defaults to `typescript` when omitted. **Authorization:** The authenticated agent (from Bearer token) must belong to the same organization as the target agent (`agentId`). Cross-tenant scaffold generation is not permitted. parameters: - name: agentId in: path required: true description: UUID of the agent to generate a scaffold for. schema: type: string format: uuid example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - name: language in: query required: false description: | Target programming language for the scaffold. Defaults to `typescript` when omitted. schema: $ref: '#/components/schemas/ScaffoldLanguage' example: typescript responses: '200': description: | Scaffold ZIP archive generated and streamed successfully. The response body is a ZIP archive containing the generated project files. Save it locally and unzip to get started: ``` curl -O -J -H "Authorization: Bearer " \ "https://api.sentryagent.ai/v1/sdk/scaffold/a1b2c3d4-e5f6-7890-abcd-ef1234567890?language=typescript" unzip screener-001-scaffold.zip cd screener-001-scaffold && npm install ``` headers: Content-Disposition: schema: type: string description: | Filename for the ZIP download. Format: `attachment; filename="-scaffold.zip"` example: 'attachment; filename="screener-001-scaffold.zip"' Content-Type: schema: type: string example: "application/zip" X-RateLimit-Limit: schema: type: integer description: Scaffold rate limit (requests per minute per tenant). example: 10 X-RateLimit-Remaining: schema: type: integer description: Remaining scaffold requests in the current window. example: 9 content: application/zip: schema: type: string format: binary description: ZIP archive of the generated scaffold project. '400': description: Invalid `language` query parameter. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: code: "VALIDATION_ERROR" message: "Invalid language. Supported languages are: typescript, python, go, java, rust." details: field: "language" provided: "ruby" supported: - typescript - python - go - java - rust '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '422': description: Agent is decommissioned — cannot generate scaffold for inactive agents. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: code: "AGENT_DECOMMISSIONED" message: "Cannot generate scaffold for a decommissioned agent." '429': $ref: '#/components/responses/TooManyRequests' '500': $ref: '#/components/responses/InternalServerError'