OpenAPI Specification
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 <token_key>`
- `Authorization: Bearer <token_key>`
## 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 <token>'
TokenAuth:
type: apiKey
in: header
name: Authorization
description: 'Use Authorization: Token <token>'