openapi: 3.0.3 info: title: ReqRes API description: 'OpenAPI specification for the ReqRes API. Covers legacy demo endpoints, collections, app-user auth flows, custom endpoints, and the Agent Sandbox (/agent/v1/*) for AI coding agents. All /api/* endpoints require x-api-key. All /app/* endpoints require Authorization: Bearer . /agent/v1/* endpoints are open in v1 (IP-based rate limiting).' version: 2.1.0 contact: name: ReqRes Support url: https://reqres.in email: hello@reqres.in license: name: MIT url: https://opensource.org/licenses/MIT x-generated-from: documentation x-last-validated: '2026-05-29' x-source-url: https://reqres.in/openapi.json servers: - url: https://reqres.in description: Production server - url: http://localhost:8000 description: Development server tags: - name: Legacy - name: Authentication - name: Collections - name: App Users - name: Custom Endpoints - name: Agent Sandbox description: Endpoints designed for AI coding agents. Cursor pagination, deeply nested resources, deliberate error scenarios, deterministic seeded fixtures. paths: /api/users: get: summary: ReqRes List Users (legacy) description: Retrieve a paginated list of demo users. Supports page/per_page query params. operationId: getLegacyUsers tags: - Legacy parameters: - name: page in: query description: Page number for pagination. required: false schema: type: integer minimum: 1 default: 1 - name: per_page in: query description: Number of users per page. required: false schema: type: integer minimum: 1 maximum: 100 responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/LegacyUserListResponse' '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - ApiKeyAuth: [] x-microcks-operation: delay: 0 dispatcher: FALLBACK post: summary: ReqRes Create User (legacy) description: Creates a demo user. Returns the request payload plus id/createdAt fields. operationId: createLegacyUser tags: - Legacy requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LegacyMutationRequest' responses: '201': description: User created content: application/json: schema: $ref: '#/components/schemas/LegacyMutationResponse' '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - ApiKeyAuth: [] x-microcks-operation: delay: 0 dispatcher: FALLBACK /api/users/{id}: get: summary: ReqRes Get User by Id (legacy) description: Retrieve a single demo user by id. operationId: getLegacyUserById tags: - Legacy parameters: - name: id in: path description: User id. required: true schema: type: integer minimum: 1 responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/LegacyUserResponse' '404': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - ApiKeyAuth: [] x-microcks-operation: delay: 0 dispatcher: FALLBACK put: summary: ReqRes Update User (legacy) description: Updates a demo user. Returns the request payload plus updatedAt field. operationId: updateLegacyUser tags: - Legacy parameters: - name: id in: path description: User id. required: true schema: type: integer minimum: 1 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LegacyMutationRequest' responses: '200': description: User updated content: application/json: schema: $ref: '#/components/schemas/LegacyMutationResponse' '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - ApiKeyAuth: [] x-microcks-operation: delay: 0 dispatcher: FALLBACK patch: summary: ReqRes Patch User (legacy) description: Partially updates a demo user. Returns the request payload plus updatedAt field. operationId: patchLegacyUser tags: - Legacy parameters: - name: id in: path description: User id. required: true schema: type: integer minimum: 1 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LegacyMutationRequest' responses: '200': description: User updated content: application/json: schema: $ref: '#/components/schemas/LegacyMutationResponse' '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - ApiKeyAuth: [] x-microcks-operation: delay: 0 dispatcher: FALLBACK delete: summary: ReqRes Delete User (legacy) description: Deletes a demo user and returns no content. operationId: deleteLegacyUser tags: - Legacy parameters: - name: id in: path description: User id. required: true schema: type: integer minimum: 1 responses: '204': description: No content security: - ApiKeyAuth: [] x-microcks-operation: delay: 0 dispatcher: FALLBACK /api/unknown: get: summary: ReqRes List Resources (legacy) description: Retrieve a paginated list of the demo "unknown" resource. operationId: getLegacyUnknown tags: - Legacy parameters: - name: page in: query description: Page number for pagination. required: false schema: type: integer minimum: 1 default: 1 - name: per_page in: query description: Number of items per page. required: false schema: type: integer minimum: 1 maximum: 100 responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/LegacyUnknownListResponse' '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - ApiKeyAuth: [] x-microcks-operation: delay: 0 dispatcher: FALLBACK /api/unknown/{id}: get: summary: ReqRes Get Resource by Id (legacy) description: Retrieve a single demo resource by id. operationId: getLegacyUnknownById tags: - Legacy parameters: - name: id in: path description: Resource id. required: true schema: type: integer minimum: 1 responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/LegacyUnknownResponse' '404': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - ApiKeyAuth: [] x-microcks-operation: delay: 0 dispatcher: FALLBACK /api/register: post: summary: ReqRes Register User description: Register a demo user account. operationId: registerUser tags: - Authentication requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AuthRequest' responses: '200': description: Successful registration content: application/json: schema: $ref: '#/components/schemas/RegisterResponse' '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - ApiKeyAuth: [] x-microcks-operation: delay: 0 dispatcher: FALLBACK /api/login: post: summary: ReqRes Login User description: Authenticate a demo user and return a token. operationId: loginUser tags: - Authentication requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AuthRequest' responses: '200': description: Successful login content: application/json: schema: $ref: '#/components/schemas/LoginResponse' '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - ApiKeyAuth: [] x-microcks-operation: delay: 0 dispatcher: FALLBACK /api/logout: post: summary: ReqRes Logout User description: Legacy logout endpoint (returns empty object). operationId: logoutUser tags: - Authentication responses: '200': description: Logged out content: application/json: schema: type: object additionalProperties: true security: - ApiKeyAuth: [] x-microcks-operation: delay: 0 dispatcher: FALLBACK /api/collections: get: summary: ReqRes List Collections description: List collections for the current project/environment. operationId: listCollections tags: - Collections parameters: - name: X-Reqres-Env in: header description: 'Environment key (for example: prod or dev).' required: false schema: type: string security: - ApiKeyAuth: [] responses: '200': description: Collections list content: application/json: schema: $ref: '#/components/schemas/CollectionListResponse' '401': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK post: summary: ReqRes Create Collection description: Create a new collection. operationId: createCollection tags: - Collections parameters: - name: X-Reqres-Env in: header description: 'Environment key (for example: prod or dev).' required: false schema: type: string security: - ApiKeyAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CollectionCreateRequest' responses: '201': description: Collection created content: application/json: schema: $ref: '#/components/schemas/CollectionResponse' '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK /api/collections/{slug}: get: summary: ReqRes Get Collection description: Fetch a collection by slug. operationId: getCollection tags: - Collections parameters: - name: X-Reqres-Env in: header description: 'Environment key (for example: prod or dev).' required: false schema: type: string - name: slug in: path description: Collection slug. required: true schema: type: string security: - ApiKeyAuth: [] responses: '200': description: Collection content: application/json: schema: $ref: '#/components/schemas/CollectionResponse' '404': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK put: summary: ReqRes Update Collection description: Update a collection by slug. operationId: updateCollection tags: - Collections parameters: - name: X-Reqres-Env in: header description: 'Environment key (for example: prod or dev).' required: false schema: type: string - name: slug in: path description: Collection slug. required: true schema: type: string security: - ApiKeyAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CollectionUpdateRequest' responses: '200': description: Collection updated content: application/json: schema: $ref: '#/components/schemas/CollectionResponse' '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK delete: summary: ReqRes Delete Collection description: Delete a collection by slug. operationId: deleteCollection tags: - Collections parameters: - name: X-Reqres-Env in: header description: 'Environment key (for example: prod or dev).' required: false schema: type: string - name: slug in: path description: Collection slug. required: true schema: type: string security: - ApiKeyAuth: [] responses: '204': description: No content '404': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK /api/collections/{slug}/records: get: summary: ReqRes List Records description: List records for a collection with filters. operationId: listCollectionRecords tags: - Collections parameters: - name: X-Reqres-Env in: header description: 'Environment key (for example: prod or dev).' required: false schema: type: string - name: slug in: path description: Collection slug. required: true schema: type: string - name: page in: query description: Page number. required: false schema: type: integer minimum: 1 - name: limit in: query description: Page size (max 100). required: false schema: type: integer minimum: 1 maximum: 100 - name: search in: query description: Case-insensitive search on record data. required: false schema: type: string - name: created_before in: query description: Filter records created before timestamp. required: false schema: type: string format: date-time - name: created_after in: query description: Filter records created after timestamp. required: false schema: type: string format: date-time - name: data_contains in: query description: JSON string for containment filter. required: false schema: type: string - name: order in: query description: Sort order by created_at. required: false schema: type: string enum: - asc - desc - name: include_deleted in: query description: Include soft-deleted records. required: false schema: type: boolean security: - ApiKeyAuth: [] responses: '200': description: Record list content: application/json: schema: $ref: '#/components/schemas/CollectionRecordListResponse' '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK post: summary: ReqRes Create Record description: Create a new record in a collection. operationId: createCollectionRecord tags: - Collections parameters: - name: X-Reqres-Env in: header description: 'Environment key (for example: prod or dev).' required: false schema: type: string - name: slug in: path description: Collection slug. required: true schema: type: string security: - ApiKeyAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CollectionRecordCreateRequest' responses: '201': description: Record created content: application/json: schema: $ref: '#/components/schemas/CollectionRecordResponse' '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK /api/collections/{slug}/records/{recordId}: get: summary: ReqRes Get Record description: Fetch a record by id. operationId: getCollectionRecord tags: - Collections parameters: - name: X-Reqres-Env in: header description: 'Environment key (for example: prod or dev).' required: false schema: type: string - name: slug in: path description: Collection slug. required: true schema: type: string - name: recordId in: path description: Record id. required: true schema: type: string security: - ApiKeyAuth: [] responses: '200': description: Record content: application/json: schema: $ref: '#/components/schemas/CollectionRecordResponse' '404': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK put: summary: ReqRes Update Record description: Update a record by id. operationId: updateCollectionRecord tags: - Collections parameters: - name: X-Reqres-Env in: header description: 'Environment key (for example: prod or dev).' required: false schema: type: string - name: slug in: path description: Collection slug. required: true schema: type: string - name: recordId in: path description: Record id. required: true schema: type: string security: - ApiKeyAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CollectionRecordUpdateRequest' responses: '200': description: Record updated content: application/json: schema: $ref: '#/components/schemas/CollectionRecordResponse' '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK delete: summary: ReqRes Delete Record description: Delete a record by id. operationId: deleteCollectionRecord tags: - Collections parameters: - name: X-Reqres-Env in: header description: 'Environment key (for example: prod or dev).' required: false schema: type: string - name: slug in: path description: Collection slug. required: true schema: type: string - name: recordId in: path description: Record id. required: true schema: type: string security: - ApiKeyAuth: [] responses: '204': description: No content '404': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK /api/app-users/login: post: summary: ReqRes App User Login description: Create or log in an app user and send a magic link token. operationId: appUserLogin tags: - App Users security: - ApiKeyAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AppUserLoginRequest' responses: '200': description: Login initiated content: application/json: schema: $ref: '#/components/schemas/AppUserLoginResponse' '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK /api/app-users/verify: post: summary: ReqRes Verify App User Token description: Verify a magic link token and return an app-session token. operationId: verifyAppUserToken tags: - App Users requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AppUserVerifyRequest' responses: '200': description: Token verified content: application/json: schema: $ref: '#/components/schemas/AppUserVerifyResponse' '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' security: - ApiKeyAuth: [] x-microcks-operation: delay: 0 dispatcher: FALLBACK /api/app-users/me: get: summary: ReqRes Current App User description: Return the current app user based on session token. operationId: getAppUserMe tags: - App Users security: - BearerAuth: [] responses: '200': description: App user session content: application/json: schema: $ref: '#/components/schemas/AppUserSessionResponse' '401': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK /api/app-users: get: summary: ReqRes List App Users description: List app users for the current project. operationId: listAppUsers tags: - App Users security: - ApiKeyAuth: [] parameters: - name: X-Reqres-Env in: header description: 'Environment key (for example: prod or dev).' required: false schema: type: string - name: limit in: query description: Max results (default 50). required: false schema: type: integer minimum: 1 maximum: 200 responses: '200': description: App users list content: application/json: schema: $ref: '#/components/schemas/AppUserListResponse' '401': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK post: summary: ReqRes Create App User description: Create an app user in the project. operationId: createAppUser tags: - App Users security: - ApiKeyAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AppUserCreateRequest' responses: '200': description: App user created content: application/json: schema: $ref: '#/components/schemas/AppUserResponse' '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK /api/app-users/{id}: get: summary: ReqRes Get App User description: Fetch an app user by id. operationId: getAppUser tags: - App Users security: - ApiKeyAuth: [] parameters: - name: id in: path description: App user id. required: true schema: type: string responses: '200': description: App user content: application/json: schema: $ref: '#/components/schemas/AppUserResponse' '404': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK put: summary: ReqRes Update App User description: Update an app user by id. operationId: updateAppUser tags: - App Users security: - ApiKeyAuth: [] parameters: - name: id in: path description: App user id. required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AppUserUpdateRequest' responses: '200': description: App user updated content: application/json: schema: $ref: '#/components/schemas/AppUserResponse' '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK delete: summary: ReqRes Delete App User description: Delete an app user by id. operationId: deleteAppUser tags: - App Users security: - ApiKeyAuth: [] parameters: - name: id in: path description: App user id. required: true schema: type: string responses: '200': description: App user deleted content: application/json: schema: type: object additionalProperties: true '404': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK /api/app-users/{id}/sessions/simulate: post: summary: ReqRes Simulate App User Session description: Owner-only helper to mint an app-user session token. operationId: simulateAppUserSession tags: - App Users security: - ApiKeyAuth: [] parameters: - name: id in: path description: App user id. required: true schema: type: string requestBody: required: false content: application/json: schema: type: object additionalProperties: true responses: '200': description: Session simulated content: application/json: schema: type: object additionalProperties: true '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK /api/projects/{projectId}/app-users: get: summary: ReqRes List Project App Users description: List app users for a project using API key auth. operationId: listProjectAppUsers tags: - App Users security: - ApiKeyAuth: [] parameters: - name: X-Reqres-Env in: header description: 'Environment key (for example: prod or dev).' required: false schema: type: string - name: projectId in: path description: Project id. required: true schema: type: string - name: statuses in: query description: Filter by status (active, pending) or use "all". required: false schema: type: string responses: '200': description: App users list content: application/json: schema: $ref: '#/components/schemas/AppUserListResponse' '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK /api/projects/{projectId}/app-users/total: get: summary: ReqRes App Users Total description: Return total app user count for a project. operationId: getProjectAppUserTotal tags: - App Users security: - ApiKeyAuth: [] parameters: - name: X-Reqres-Env in: header description: 'Environment key (for example: prod or dev).' required: false schema: type: string - name: projectId in: path description: Project id. required: true schema: type: string responses: '200': description: Total count content: application/json: schema: $ref: '#/components/schemas/AppUserTotalResponse' '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK /api/custom/{path}: get: summary: ReqRes Execute Custom Endpoint description: Execute a custom endpoint with GET. operationId: executeCustomEndpointGet tags: - Custom Endpoints parameters: - name: path in: path description: Custom endpoint path (supports nested segments). required: true schema: type: string security: - ApiKeyAuth: [] responses: '200': description: Custom response content: application/json: schema: type: object additionalProperties: true '401': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '404': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK post: summary: ReqRes Execute Custom Endpoint description: Execute a custom endpoint with POST. operationId: executeCustomEndpointPost tags: - Custom Endpoints parameters: - name: path in: path description: Custom endpoint path (supports nested segments). required: true schema: type: string security: - ApiKeyAuth: [] requestBody: required: false content: application/json: schema: type: object additionalProperties: true responses: '200': description: Custom response content: application/json: schema: type: object additionalProperties: true '401': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK put: summary: ReqRes Execute Custom Endpoint description: Execute a custom endpoint with PUT. operationId: executeCustomEndpointPut tags: - Custom Endpoints parameters: - name: path in: path description: Custom endpoint path (supports nested segments). required: true schema: type: string security: - ApiKeyAuth: [] requestBody: required: false content: application/json: schema: type: object additionalProperties: true responses: '200': description: Custom response content: application/json: schema: type: object additionalProperties: true '401': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK patch: summary: ReqRes Execute Custom Endpoint description: Execute a custom endpoint with PATCH. operationId: executeCustomEndpointPatch tags: - Custom Endpoints parameters: - name: path in: path description: Custom endpoint path (supports nested segments). required: true schema: type: string security: - ApiKeyAuth: [] requestBody: required: false content: application/json: schema: type: object additionalProperties: true responses: '200': description: Custom response content: application/json: schema: type: object additionalProperties: true '401': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK delete: summary: ReqRes Execute Custom Endpoint description: Execute a custom endpoint with DELETE. operationId: executeCustomEndpointDelete tags: - Custom Endpoints parameters: - name: path in: path description: Custom endpoint path (supports nested segments). required: true schema: type: string security: - ApiKeyAuth: [] responses: '200': description: Custom response content: application/json: schema: type: object additionalProperties: true '401': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK /app/me: get: summary: ReqRes App User Profile description: Return app-user profile from a session token. operationId: getAppSessionProfile tags: - App Users security: - BearerAuth: [] responses: '200': description: App user profile content: application/json: schema: $ref: '#/components/schemas/AppUserSessionResponse' '401': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK /app/collections: get: summary: ReqRes List Collections (app User) description: List collections with an app-user session token. operationId: listCollectionsAppUser tags: - App Users security: - BearerAuth: [] responses: '200': description: Collections list content: application/json: schema: $ref: '#/components/schemas/CollectionListResponse' '401': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK /app/collections/{slug}: get: summary: ReqRes Get Collection (app User) description: Fetch collection by slug with an app-user token. operationId: getCollectionAppUser tags: - App Users security: - BearerAuth: [] parameters: - name: slug in: path description: Collection slug. required: true schema: type: string responses: '200': description: Collection content: application/json: schema: $ref: '#/components/schemas/CollectionResponse' '404': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK /app/collections/{slug}/records: get: summary: ReqRes List Records (app User) description: List records with an app-user token. operationId: listRecordsAppUser tags: - App Users security: - BearerAuth: [] parameters: - name: slug in: path description: Collection slug. required: true schema: type: string responses: '200': description: Records content: application/json: schema: $ref: '#/components/schemas/CollectionRecordListResponse' '404': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK post: summary: ReqRes Create Record (app User) description: Create a record with an app-user token. operationId: createRecordAppUser tags: - App Users security: - BearerAuth: [] parameters: - name: slug in: path description: Collection slug. required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CollectionRecordCreateRequest' responses: '201': description: Record created content: application/json: schema: $ref: '#/components/schemas/CollectionRecordResponse' '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK /app/collections/{slug}/records/{recordId}: get: summary: ReqRes Get Record (app User) description: Fetch a record by id with an app-user token. operationId: getRecordAppUser tags: - App Users security: - BearerAuth: [] parameters: - name: slug in: path description: Collection slug. required: true schema: type: string - name: recordId in: path description: Record id. required: true schema: type: string responses: '200': description: Record content: application/json: schema: $ref: '#/components/schemas/CollectionRecordResponse' '404': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK put: summary: ReqRes Update Record (app User) description: Update a record with an app-user token. operationId: updateRecordAppUser tags: - App Users security: - BearerAuth: [] parameters: - name: slug in: path description: Collection slug. required: true schema: type: string - name: recordId in: path description: Record id. required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CollectionRecordUpdateRequest' responses: '200': description: Record updated content: application/json: schema: $ref: '#/components/schemas/CollectionRecordResponse' '400': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK delete: summary: ReqRes Delete Record (app User) description: Delete a record with an app-user token. operationId: deleteRecordAppUser tags: - App Users security: - BearerAuth: [] parameters: - name: slug in: path description: Collection slug. required: true schema: type: string - name: recordId in: path description: Record id. required: true schema: type: string responses: '204': description: No content '404': description: Error response content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK /agent/v1/health: get: summary: ReqRes Agent Sandbox Health Probe description: Lightweight health check that returns sandbox status, version, uptime, and the caller's current rate-limit status. Cached at the edge for 10 seconds. Cheap to poll. Send the optional x-agent-id header to elevate to Agent Developer tier limits. operationId: agentHealth tags: - Agent Sandbox responses: '200': description: Healthy content: application/json: schema: $ref: '#/components/schemas/AgentHealthResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK /agent/v1/users: get: summary: ReqRes List Agent Users (cursor Pagination) description: 'Paginated user list with realistic edge cases: nullable nested fields, sparse fieldsets, silent param clamping. Use meta.next_cursor for next page; never increment a page number.' operationId: agentListUsers tags: - Agent Sandbox parameters: - name: cursor in: query schema: type: string description: Opaque cursor from previous response. Omit for first page. - name: limit in: query schema: type: integer default: 20 maximum: 100 description: Page size (silently clamped at 100). - name: fields in: query schema: type: string description: Comma-separated sparse fieldset (e.g. id,email,full_name). - name: seed in: query schema: type: integer default: 42 description: Deterministic fixture seed. responses: '200': description: Paginated user list content: application/json: schema: $ref: '#/components/schemas/AgentUserListResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK /agent/v1/users/{id}: get: summary: ReqRes Get a Single Agent User with Optional Expansion description: Returns one user. Without ?expand=, nested resources (addresses, activity, organizations) are returned as references. With ?expand=addresses,activity, those resources are inlined. operationId: agentGetUser tags: - Agent Sandbox parameters: - name: id in: path required: true schema: type: string pattern: ^usr_[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$ description: ULID with usr_ prefix. - name: expand in: query schema: type: string description: 'Comma-separated: addresses, activity, organizations.' responses: '200': description: User found content: application/json: schema: $ref: '#/components/schemas/AgentUserDetailResponse' '400': description: Invalid ID format content: application/json: schema: $ref: '#/components/schemas/AgentErrorResponse' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/AgentErrorResponse' x-microcks-operation: delay: 0 dispatcher: FALLBACK /agent/v1/auth/login: post: summary: ReqRes Agent Auth Login (with MFA Branch) description: Returns a session for normal accounts or an MFA challenge for accounts with email matching '+mfa@'. Use '+wrong@' or '+locked@' suffixes to trigger 401 branches. operationId: agentLogin tags: - Agent Sandbox requestBody: required: true content: application/json: schema: type: object required: - email - password properties: email: type: string format: email password: type: string minLength: 8 responses: '200': description: Session created or MFA challenge content: application/json: {} '400': description: Missing fields '401': description: Invalid credentials or account locked '422': description: Validation error '429': description: Rate limited x-microcks-operation: delay: 0 dispatcher: FALLBACK /agent/v1/orders: get: summary: ReqRes List Agent Orders (relational Data) description: Orders with relational references (customer, line items, products, addresses). Money is always {amount, currency, formatted}. Some line_items reference deleted products. operationId: agentListOrders tags: - Agent Sandbox parameters: - name: cursor in: query schema: type: string - name: limit in: query schema: type: integer default: 20 maximum: 100 - name: status in: query schema: type: string enum: - pending - paid - shipped - delivered - refunded - cancelled - name: seed in: query schema: type: integer default: 42 responses: '200': description: Paginated order list content: application/json: {} '400': description: Invalid status filter x-microcks-operation: delay: 0 dispatcher: FALLBACK /agent/v1/scenarios: get: summary: ReqRes List Training Scenarios description: Returns the catalogue of available failure scenarios. operationId: agentListScenarios tags: - Agent Sandbox responses: '200': description: Scenario list content: application/json: {} x-microcks-operation: delay: 0 dispatcher: FALLBACK /agent/v1/scenarios/{scenario}: get: summary: ReqRes Trigger a Deliberate Failure Scenario description: 'Returns a controlled failure for testing agent error handling. All responses include header X-Agent-Sandbox-Intentional: so error reporters can suppress them. Available scenarios: rate-limited, server-error, bad-gateway, timeout, validation-error, unauthorized, forbidden, not-found, conflict, too-large, slow, partial-content, redirect-loop, malformed-json, empty-response.' operationId: agentScenario tags: - Agent Sandbox parameters: - name: scenario in: path required: true schema: type: string responses: '200': description: Slow / partial-content / empty-response / malformed-json scenarios '206': description: Partial content '302': description: Redirect loop hop '401': description: Unauthorized scenario '403': description: Forbidden scenario '404': description: Not-found scenario or unknown scenario name '409': description: Conflict scenario '413': description: Too-large scenario '422': description: Validation-error scenario '429': description: Rate-limited scenario '500': description: Server-error scenario '502': description: Bad-gateway scenario '504': description: Timeout scenario (returns immediately, see X-Agent-Sandbox-Simulated-Delay header) x-microcks-operation: delay: 0 dispatcher: FALLBACK components: securitySchemes: ApiKeyAuth: type: apiKey in: header name: x-api-key BearerAuth: type: http scheme: bearer bearerFormat: session_token schemas: AgentMoney: type: object required: - amount - currency - formatted properties: amount: type: integer description: Value in smallest currency unit (cents for USD, pence for GBP). currency: type: string description: ISO 4217 code, e.g. USD. formatted: type: string description: Human-readable display string with currency symbol. AgentPaginationMeta: type: object required: - limit - returned - next_cursor - prev_cursor - has_more - total_estimate properties: limit: type: integer returned: type: integer next_cursor: type: - string - 'null' description: Opaque cursor or null if at end. prev_cursor: type: - string - 'null' description: Always null in v1 (forward-only pagination). has_more: type: boolean total_estimate: type: integer AgentErrorResponse: type: object required: - error - message properties: error: type: string description: Machine-readable error code. message: type: string description: Human-readable message. hint: type: string request_id: type: string AgentHealthResponse: type: object required: - data properties: data: type: object required: - status - version - uptime_seconds - rate_limit_status - deprecations properties: status: type: string enum: - healthy - degraded - maintenance version: type: string uptime_seconds: type: integer rate_limit_status: type: object properties: tier: type: string remaining_today: type: - integer - 'null' limit_today: type: - integer - 'null' reset_at: type: - string - 'null' format: date-time deprecations: type: array items: type: object AgentUser: type: object required: - id - email - full_name - locale - created_at - updated_at - timezone - profile - preferences - status properties: id: type: string pattern: ^usr_[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$ email: type: string format: email full_name: type: string locale: type: string created_at: type: string format: date-time updated_at: type: string format: date-time timezone: type: string profile: type: object properties: avatar_url: type: - string - 'null' bio: type: - string - 'null' company: type: - object - 'null' properties: name: type: string department: type: string employee_id: type: string social: type: object properties: twitter: type: - string - 'null' github: type: - string - 'null' linkedin: type: - string - 'null' preferences: type: object status: type: string enum: - active - suspended AgentUserListResponse: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/AgentUser' meta: $ref: '#/components/schemas/AgentPaginationMeta' AgentUserDetailResponse: type: object required: - data properties: data: $ref: '#/components/schemas/AgentUser' ErrorResponse: type: object properties: error: type: string message: type: string additionalProperties: true required: - error LegacyUser: type: object properties: id: type: integer email: type: string format: email first_name: type: string last_name: type: string avatar: type: string required: - id - email - first_name - last_name - avatar LegacyUserListResponse: type: object properties: page: type: integer per_page: type: integer total: type: integer total_pages: type: integer data: type: array items: $ref: '#/components/schemas/LegacyUser' support: type: object additionalProperties: true required: - page - per_page - total - total_pages - data additionalProperties: true LegacyUserResponse: type: object properties: data: $ref: '#/components/schemas/LegacyUser' support: type: object additionalProperties: true required: - data additionalProperties: true LegacyMutationRequest: type: object additionalProperties: true LegacyMutationResponse: type: object properties: id: type: string createdAt: type: string format: date-time updatedAt: type: string format: date-time additionalProperties: true LegacyUnknown: type: object properties: id: type: integer name: type: string year: type: integer color: type: string pantone_value: type: string required: - id - name - year - color - pantone_value LegacyUnknownListResponse: type: object properties: page: type: integer per_page: type: integer total: type: integer total_pages: type: integer data: type: array items: $ref: '#/components/schemas/LegacyUnknown' support: type: object additionalProperties: true required: - page - per_page - total - total_pages - data additionalProperties: true LegacyUnknownResponse: type: object properties: data: $ref: '#/components/schemas/LegacyUnknown' support: type: object additionalProperties: true required: - data additionalProperties: true AuthRequest: type: object properties: email: type: string format: email password: type: string required: - email - password RegisterResponse: type: object properties: id: type: integer token: type: string required: - token additionalProperties: true LoginResponse: type: object properties: token: type: string required: - token Collection: type: object properties: id: type: string project_id: type: string user_id: type: string name: type: string slug: type: string schema: type: object additionalProperties: true visibility: type: string created_at: type: string format: date-time updated_at: type: string format: date-time required: - id - name - slug additionalProperties: true CollectionListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/Collection' required: - data CollectionResponse: type: object properties: data: $ref: '#/components/schemas/Collection' required: - data CollectionCreateRequest: type: object properties: name: type: string slug: type: string schema: type: object additionalProperties: true project_id: oneOf: - type: string - type: integer visibility: type: string required: - name additionalProperties: true CollectionUpdateRequest: type: object properties: name: type: string slug: type: string schema: type: object additionalProperties: true visibility: type: string additionalProperties: true CollectionRecord: type: object properties: id: type: string collection_id: type: string project_id: type: string app_user_id: type: string created_by: type: string created_at: type: string format: date-time updated_at: type: string format: date-time deleted_at: type: string format: date-time nullable: true data: type: object additionalProperties: true required: - id - data additionalProperties: true CollectionRecordListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/CollectionRecord' meta: type: object properties: page: type: integer limit: type: integer total: type: integer pages: type: integer additionalProperties: true required: - data CollectionRecordResponse: type: object properties: data: $ref: '#/components/schemas/CollectionRecord' required: - data CollectionRecordCreateRequest: type: object properties: data: type: object additionalProperties: true required: - data additionalProperties: true CollectionRecordUpdateRequest: type: object properties: data: type: object additionalProperties: true required: - data additionalProperties: true AppUser: type: object properties: id: type: string email: type: string format: email status: type: string last_login_at: type: string format: date-time created_at: type: string format: date-time metadata: type: object additionalProperties: true required: - id - email additionalProperties: true AppUserListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/AppUser' required: - data AppUserResponse: type: object properties: data: $ref: '#/components/schemas/AppUser' required: - data AppUserLoginRequest: type: object properties: email: type: string format: email project_id: oneOf: - type: string - type: integer metadata: type: object additionalProperties: true required: - email additionalProperties: true AppUserLoginResponse: type: object properties: data: type: object additionalProperties: true required: - data AppUserVerifyRequest: type: object properties: token: type: string required: - token AppUserVerifyResponse: type: object properties: data: type: object additionalProperties: true required: - data AppUserCreateRequest: type: object properties: email: type: string format: email metadata: type: object additionalProperties: true required: - email additionalProperties: true AppUserUpdateRequest: type: object properties: email: type: string format: email status: type: string metadata: type: object additionalProperties: true additionalProperties: true AppUserSessionResponse: type: object properties: data: type: object additionalProperties: true required: - data AppUserTotalResponse: type: object properties: total: type: integer required: - total Template: type: object properties: id: type: integer name: type: string description: type: string category: type: string icon: type: string is_featured: type: boolean config: type: object additionalProperties: true endpoints: type: array items: type: object additionalProperties: true required: - id - name - description additionalProperties: true TemplatesResponse: type: object properties: templates: type: array items: $ref: '#/components/schemas/Template' pagination: type: object properties: total: type: integer limit: type: integer offset: type: integer pages: type: integer additionalProperties: true additionalProperties: true