openapi: 3.0.3 info: title: Clarifeye Platform Agent Settings Users API description: 'REST API for the Clarifeye Platform - Document intelligence and AI-powered analysis. ## Authentication All endpoints require authentication. Include the Authorization header in every request using either format: - `Authorization: Token ` - `Authorization: Bearer ` ## Impersonation Certain endpoints support user impersonation for creating or listing data on behalf of other users. This is useful for integrating external systems that need to attribute actions to specific users. **Header:** `X-Impersonate-Email` **Required Permission:** `CAN_IMPERSONATE_OTHER_USERS` (contact Clarifeye to enable this permission) **Behavior:** - If the header is provided and the impersonator has the required permission, the action is performed as the target user - If the target user is not found, the request proceeds as the original authenticated user - If the target user does not have access to the project, the request proceeds as the original authenticated user - If the impersonator lacks the `CAN_IMPERSONATE_OTHER_USERS` permission, the header is ignored ' version: 1.0.0 contact: name: Clarifeye Support servers: - url: https://eu.app.clarifeye.ai/api/v1 description: EU - url: https://us.app.clarifeye.ai/api/v1 description: US security: - BearerAuth: [] - TokenAuth: [] tags: - name: Users description: Manage users within a project paths: /projects/{project_id}/users/: get: tags: - Users summary: List project users description: Retrieve all users with access to a project. operationId: listProjectUsers parameters: - $ref: '#/components/parameters/ProjectId' - name: search in: query description: Filter by email (case-insensitive partial match) schema: type: string - $ref: '#/components/parameters/Limit' - $ref: '#/components/parameters/Offset' responses: '200': description: Successful response content: application/json: schema: allOf: - $ref: '#/components/schemas/PaginatedResponse' - type: object properties: results: type: array items: $ref: '#/components/schemas/ProjectPermission' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' /projects/{project_id}/users/remove-by-email/: post: tags: - Users summary: Remove user by email description: Remove a user from the project using their email address. Users cannot remove themselves. operationId: removeUserByEmail parameters: - $ref: '#/components/parameters/ProjectId' requestBody: required: true content: application/json: schema: type: object required: - email properties: email: type: string format: email description: Email address of the user to remove example: user@example.com responses: '204': description: User successfully removed '400': description: Bad request - user not found or trying to remove yourself content: application/json: schema: $ref: '#/components/schemas/Error' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' /projects/{project_id}/users/{permission_id}/: patch: tags: - Users summary: Update user permissions description: Update a user's permissions on the project. operationId: updateUserPermissions parameters: - $ref: '#/components/parameters/ProjectId' - name: permission_id in: path required: true description: UUID of the permission record schema: type: string format: uuid requestBody: required: true content: application/json: schema: type: object required: - permissions properties: permissions: type: array items: $ref: '#/components/schemas/PermissionType' example: - CAN_VIEW_DATA - CAN_PERFORM_ADMIN_ACTIONS responses: '200': description: Permissions updated successfully content: application/json: schema: $ref: '#/components/schemas/ProjectPermission' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' components: responses: BadRequest: description: Bad request - invalid parameters or request body content: application/json: schema: oneOf: - $ref: '#/components/schemas/Error' - $ref: '#/components/schemas/ValidationError' Forbidden: description: Forbidden - insufficient permissions content: application/json: schema: $ref: '#/components/schemas/Error' example: error: You do not have permission to perform this action. Unauthorized: description: Unauthorized - missing or invalid authentication content: application/json: schema: $ref: '#/components/schemas/Error' example: error: Authentication credentials were not provided. NotFound: description: Not found - resource does not exist content: application/json: schema: $ref: '#/components/schemas/Error' example: error: Not found. schemas: ProjectPermission: type: object properties: id: type: string format: uuid user: $ref: '#/components/schemas/User' permissions: type: array items: $ref: '#/components/schemas/PermissionType' ValidationError: type: object additionalProperties: type: array items: type: string example: email: - This field is required. PermissionType: type: string enum: - CAN_PERFORM_ADMIN_ACTIONS - CAN_VIEW_DATA - CAN_RUN_TASKS - CAN_VIEW_TECHNICAL_INTERFACE - CAN_IMPERSONATE_OTHER_USERS description: '- `CAN_PERFORM_ADMIN_ACTIONS`: Full administrative access - `CAN_VIEW_DATA`: Read-only access to project data - `CAN_RUN_TASKS`: Execute background tasks and pipelines - `CAN_VIEW_TECHNICAL_INTERFACE`: Access to technical features - `CAN_IMPERSONATE_OTHER_USERS`: Impersonate other users in API calls (contact Clarifeye to enable) ' PaginatedResponse: type: object properties: count: type: integer description: Total number of results next: type: string format: uri nullable: true description: URL to next page of results previous: type: string format: uri nullable: true description: URL to previous page of results results: type: array items: {} User: type: object properties: id: type: string format: uuid email: type: string format: email date_joined: type: string format: date-time Error: type: object properties: error: type: string description: Error message example: error: User not found parameters: Limit: name: limit in: query description: Maximum number of results per page schema: type: integer default: 100 minimum: 1 maximum: 1000 Offset: name: offset in: query description: Number of results to skip for pagination schema: type: integer default: 0 minimum: 0 ProjectId: name: project_id in: path required: true description: UUID of the project schema: type: string format: uuid securitySchemes: BearerAuth: type: http scheme: bearer description: 'Use Authorization: Bearer ' TokenAuth: type: apiKey in: header name: Authorization description: 'Use Authorization: Token '