Elynext DevelopersDownload OpenAPI

API reference

Browse the operations, permissions, parameters and response schemas from the versioned contract. Paths are relative to /api/v1 at the API origin assigned during onboarding; this documentation hostname is not the API service address.

Download OpenAPI 3.1 · Download request and response examples

Browse the contract in Swagger UI

GET /appointments · List appointments

List tenant-scoped Elynext appointments resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "appointments.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "in": "query",
    "name": "limit",
    "schema": {
      "default": 50,
      "maximum": 100,
      "minimum": 1,
      "type": "integer"
    }
  },
  {
    "in": "query",
    "name": "offset",
    "schema": {
      "default": 0,
      "minimum": 0,
      "type": "integer"
    }
  },
  {
    "description": "Public field name, optionally prefixed with - for descending order.",
    "in": "query",
    "name": "sort",
    "schema": {
      "type": "string"
    }
  },
  {
    "description": "Free-text search. Use POST search for structured filters.",
    "in": "query",
    "name": "search",
    "schema": {
      "type": "string"
    }
  }
]

Responses

200 Appointments response.

application/json

Schema: AppointmentCollection

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
POST /appointments · Create appointments

Create tenant-scoped Elynext appointments resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "appointments.write"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Optional key used to make critical POST requests safe to retry.",
    "in": "header",
    "name": "Idempotency-Key",
    "required": false,
    "schema": {
      "maxLength": 255,
      "minLength": 1,
      "type": "string"
    }
  }
]

Request body

application/json

Schema: AppointmentWrite

Responses

201 Appointments response.

application/json

Schema: AppointmentEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
POST /appointments/search · Search appointments

Search tenant-scoped Elynext appointments resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "appointments.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
]

Request body

application/json

Schema: SearchRequest

Responses

200 Appointments response.

application/json

Schema: AppointmentCollection

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
GET /appointments/{id} · Get appointments

Get tenant-scoped Elynext appointments resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "appointments.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Opaque Elynext resource identifier.",
    "in": "path",
    "name": "id",
    "required": true,
    "schema": {
      "maxLength": 160,
      "minLength": 1,
      "type": "string"
    }
  }
]

Responses

200 Appointments response.

application/json

Schema: AppointmentEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
PATCH /appointments/{id} · Update appointments

Update tenant-scoped Elynext appointments resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "appointments.write"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Opaque Elynext resource identifier.",
    "in": "path",
    "name": "id",
    "required": true,
    "schema": {
      "maxLength": 160,
      "minLength": 1,
      "type": "string"
    }
  }
]

Request body

application/json

Schema: AppointmentWrite

Responses

200 Appointments response.

application/json

Schema: AppointmentEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
DELETE /appointments/{id} · Cancel an appointment

Set status to Annullato, without physically deleting the record. Cancellation policies and reason handling require acceptance verification.

Permissions

[
  {
    "ElynextOAuth2": [
      "appointments.write"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Opaque Elynext resource identifier.",
    "in": "path",
    "name": "id",
    "required": true,
    "schema": {
      "maxLength": 160,
      "minLength": 1,
      "type": "string"
    }
  }
]

Responses

200 Appointments response.

application/json

Schema: ArchiveEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
GET /availability · Read booking availability

Credential-scoped read. Locations represent the credential's studio. Availability is advisory for one doctor/service/day, not a reservation or a service eligibility guarantee.

Permissions

[
  {
    "ElynextOAuth2": [
      "appointments.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "in": "query",
    "name": "date",
    "required": true,
    "schema": {
      "format": "date",
      "type": "string"
    }
  },
  {
    "in": "query",
    "name": "doctorId",
    "required": true,
    "schema": {
      "type": "string"
    }
  },
  {
    "in": "query",
    "name": "serviceId",
    "required": true,
    "schema": {
      "type": "string"
    }
  },
  {
    "in": "query",
    "name": "locationId",
    "required": false,
    "schema": {
      "type": "string"
    }
  }
]

Responses

200 Booking response.

application/json

Schema: AvailabilityEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
GET /clinical-records · List clinical-records

List tenant-scoped Elynext clinical-records resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "clinical-records.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "in": "query",
    "name": "limit",
    "schema": {
      "default": 50,
      "maximum": 100,
      "minimum": 1,
      "type": "integer"
    }
  },
  {
    "in": "query",
    "name": "offset",
    "schema": {
      "default": 0,
      "minimum": 0,
      "type": "integer"
    }
  },
  {
    "description": "Public field name, optionally prefixed with - for descending order.",
    "in": "query",
    "name": "sort",
    "schema": {
      "type": "string"
    }
  },
  {
    "description": "Free-text search. Use POST search for structured filters.",
    "in": "query",
    "name": "search",
    "schema": {
      "type": "string"
    }
  }
]

Responses

200 Clinical Records response.

application/json

Schema: ClinicalRecordCollection

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
POST /clinical-records · Create clinical-records

Create tenant-scoped Elynext clinical-records resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "clinical-records.write"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Optional key used to make critical POST requests safe to retry.",
    "in": "header",
    "name": "Idempotency-Key",
    "required": false,
    "schema": {
      "maxLength": 255,
      "minLength": 1,
      "type": "string"
    }
  }
]

Request body

application/json

Schema: ClinicalRecordWrite

Responses

201 Clinical Records response.

application/json

Schema: ClinicalRecordEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
POST /clinical-records/search · Search clinical-records

Search tenant-scoped Elynext clinical-records resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "clinical-records.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
]

Request body

application/json

Schema: SearchRequest

Responses

200 Clinical Records response.

application/json

Schema: ClinicalRecordCollection

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
GET /clinical-records/{id} · Get clinical-records

Get tenant-scoped Elynext clinical-records resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "clinical-records.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Opaque Elynext resource identifier.",
    "in": "path",
    "name": "id",
    "required": true,
    "schema": {
      "maxLength": 160,
      "minLength": 1,
      "type": "string"
    }
  }
]

Responses

200 Clinical Records response.

application/json

Schema: ClinicalRecordEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
PATCH /clinical-records/{id} · Update clinical-records

Update tenant-scoped Elynext clinical-records resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "clinical-records.write"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Opaque Elynext resource identifier.",
    "in": "path",
    "name": "id",
    "required": true,
    "schema": {
      "maxLength": 160,
      "minLength": 1,
      "type": "string"
    }
  }
]

Request body

application/json

Schema: ClinicalRecordWrite

Responses

200 Clinical Records response.

application/json

Schema: ClinicalRecordEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
DELETE /clinical-records/{id} · Archive clinical-records

Archive tenant-scoped Elynext clinical-records resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "clinical-records.write"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Opaque Elynext resource identifier.",
    "in": "path",
    "name": "id",
    "required": true,
    "schema": {
      "maxLength": 160,
      "minLength": 1,
      "type": "string"
    }
  }
]

Responses

200 Clinical Records response.

application/json

Schema: ArchiveEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
GET /docs · Open Swagger UI

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
]

Responses

200 Swagger UI for the Elynext Public API.

text/html

{
  "type": "string"
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
GET /doctors · Read booking doctors

Credential-scoped read. Locations represent the credential's studio. Availability is advisory for one doctor/service/day, not a reservation or a service eligibility guarantee.

Permissions

[
  {
    "ElynextOAuth2": [
      "appointments.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "in": "query",
    "name": "limit",
    "required": false,
    "schema": {
      "default": 50,
      "maximum": 100,
      "minimum": 1,
      "type": "integer"
    }
  },
  {
    "in": "query",
    "name": "offset",
    "required": false,
    "schema": {
      "default": 0,
      "maximum": 100000,
      "minimum": 0,
      "type": "integer"
    }
  }
]

Responses

200 Booking response.

application/json

Schema: DoctorsCollection

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
GET /documents · List documents

List tenant-scoped Elynext documents resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "documents.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "in": "query",
    "name": "limit",
    "schema": {
      "default": 50,
      "maximum": 100,
      "minimum": 1,
      "type": "integer"
    }
  },
  {
    "in": "query",
    "name": "offset",
    "schema": {
      "default": 0,
      "minimum": 0,
      "type": "integer"
    }
  },
  {
    "description": "Public field name, optionally prefixed with - for descending order.",
    "in": "query",
    "name": "sort",
    "schema": {
      "type": "string"
    }
  },
  {
    "description": "Free-text search. Use POST search for structured filters.",
    "in": "query",
    "name": "search",
    "schema": {
      "type": "string"
    }
  }
]

Responses

200 Documents response.

application/json

Schema: DocumentCollection

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
POST /documents · Create documents

Create tenant-scoped Elynext documents resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "documents.write"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Optional key used to make critical POST requests safe to retry.",
    "in": "header",
    "name": "Idempotency-Key",
    "required": false,
    "schema": {
      "maxLength": 255,
      "minLength": 1,
      "type": "string"
    }
  }
]

Request body

application/json

Schema: DocumentWrite

Responses

201 Documents response.

application/json

Schema: DocumentEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
POST /documents/search · Search documents

Search tenant-scoped Elynext documents resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "documents.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
]

Request body

application/json

Schema: SearchRequest

Responses

200 Documents response.

application/json

Schema: DocumentCollection

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
GET /documents/{id} · Get documents

Get tenant-scoped Elynext documents resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "documents.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Opaque Elynext resource identifier.",
    "in": "path",
    "name": "id",
    "required": true,
    "schema": {
      "maxLength": 160,
      "minLength": 1,
      "type": "string"
    }
  }
]

Responses

200 Documents response.

application/json

Schema: DocumentEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
PATCH /documents/{id} · Update documents

Update tenant-scoped Elynext documents resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "documents.write"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Opaque Elynext resource identifier.",
    "in": "path",
    "name": "id",
    "required": true,
    "schema": {
      "maxLength": 160,
      "minLength": 1,
      "type": "string"
    }
  }
]

Request body

application/json

Schema: DocumentWrite

Responses

200 Documents response.

application/json

Schema: DocumentEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
DELETE /documents/{id} · Archive documents

Archive tenant-scoped Elynext documents resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "documents.write"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Opaque Elynext resource identifier.",
    "in": "path",
    "name": "id",
    "required": true,
    "schema": {
      "maxLength": 160,
      "minLength": 1,
      "type": "string"
    }
  }
]

Responses

200 Documents response.

application/json

Schema: ArchiveEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
GET /health · Read API health metadata

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
]

Responses

200 API health metadata.

application/json

Schema: HealthEnvelope

Example · ok

{
  "data": {
    "apiVersion": "v1",
    "classification": "PUBLIC_METADATA",
    "name": "Elynext API",
    "status": "ok"
  },
  "meta": {
    "apiVersion": "v1",
    "requestId": "req_0000000000000001",
    "timestamp": "2026-08-12T00:00:00Z"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
GET /locations · Read booking locations

Credential-scoped read. Locations represent the credential's studio. Availability is advisory for one doctor/service/day, not a reservation or a service eligibility guarantee.

Permissions

[
  {
    "ElynextOAuth2": [
      "appointments.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "in": "query",
    "name": "limit",
    "required": false,
    "schema": {
      "default": 50,
      "maximum": 100,
      "minimum": 1,
      "type": "integer"
    }
  },
  {
    "in": "query",
    "name": "offset",
    "required": false,
    "schema": {
      "default": 0,
      "maximum": 100000,
      "minimum": 0,
      "type": "integer"
    }
  }
]

Responses

200 Booking response.

application/json

Schema: LocationsCollection

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
POST /oauth/token · Issue OAuth2 client credentials token

Issues an Elynext Public API bearer token for a registered partner client.

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
]

Request body

application/json

Schema: OAuthTokenRequest

application/x-www-form-urlencoded

Schema: OAuthTokenRequest

Example · clientCredentials

{
  "client_id": "partner_client_01",
  "client_secret": "example_client_secret_min_24_chars",
  "grant_type": "client_credentials",
  "scope": "api.health.read api.version.read"
}

Responses

200 OAuth2 access token issued.

application/json

Schema: OAuthTokenResponse

Example · issued

{
  "access_token": "<access-token>",
  "api_version": "v1",
  "expires_in": 3600,
  "scope": "api.health.read api.version.read",
  "tenant_id": "studio_001",
  "token_type": "Bearer"
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
GET /openapi.json · Read the OpenAPI contract

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
]

Responses

200 OpenAPI 3.1 contract for the Elynext Public API.

application/json

{
  "type": "object"
}

Example · openapi

{
  "info": {
    "title": "Elynext API",
    "version": "1.0.0"
  },
  "openapi": "3.1.0"
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
GET /openapi.yaml · Read the OpenAPI contract as YAML

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
]

Responses

200 OpenAPI 3.1 YAML contract for the Elynext Public API.

application/yaml

{
  "type": "string"
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
GET /patients · List patients

List tenant-scoped Elynext patients resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "patients.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "in": "query",
    "name": "limit",
    "schema": {
      "default": 50,
      "maximum": 100,
      "minimum": 1,
      "type": "integer"
    }
  },
  {
    "in": "query",
    "name": "offset",
    "schema": {
      "default": 0,
      "minimum": 0,
      "type": "integer"
    }
  },
  {
    "description": "Public field name, optionally prefixed with - for descending order.",
    "in": "query",
    "name": "sort",
    "schema": {
      "type": "string"
    }
  },
  {
    "description": "Free-text search. Use POST search for structured filters.",
    "in": "query",
    "name": "search",
    "schema": {
      "type": "string"
    }
  }
]

Responses

200 Patients response.

application/json

Schema: PatientCollection

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
POST /patients · Create patients

Create tenant-scoped Elynext patients resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "patients.write"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Optional key used to make critical POST requests safe to retry.",
    "in": "header",
    "name": "Idempotency-Key",
    "required": false,
    "schema": {
      "maxLength": 255,
      "minLength": 1,
      "type": "string"
    }
  }
]

Request body

application/json

Schema: PatientWrite

Responses

201 Patients response.

application/json

Schema: PatientEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
POST /patients/search · Search patients

Search tenant-scoped Elynext patients resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "patients.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
]

Request body

application/json

Schema: SearchRequest

Responses

200 Patients response.

application/json

Schema: PatientCollection

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
GET /patients/{id} · Get patients

Get tenant-scoped Elynext patients resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "patients.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Opaque Elynext resource identifier.",
    "in": "path",
    "name": "id",
    "required": true,
    "schema": {
      "maxLength": 160,
      "minLength": 1,
      "type": "string"
    }
  }
]

Responses

200 Patients response.

application/json

Schema: PatientEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
PATCH /patients/{id} · Update patients

Update tenant-scoped Elynext patients resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "patients.write"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Opaque Elynext resource identifier.",
    "in": "path",
    "name": "id",
    "required": true,
    "schema": {
      "maxLength": 160,
      "minLength": 1,
      "type": "string"
    }
  }
]

Request body

application/json

Schema: PatientWrite

Responses

200 Patients response.

application/json

Schema: PatientEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
DELETE /patients/{id} · Archive patients

Archive tenant-scoped Elynext patients resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "patients.write"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Opaque Elynext resource identifier.",
    "in": "path",
    "name": "id",
    "required": true,
    "schema": {
      "maxLength": 160,
      "minLength": 1,
      "type": "string"
    }
  }
]

Responses

200 Patients response.

application/json

Schema: ArchiveEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
GET /reports · List reports

List tenant-scoped Elynext reports resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "reports.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "in": "query",
    "name": "limit",
    "schema": {
      "default": 50,
      "maximum": 100,
      "minimum": 1,
      "type": "integer"
    }
  },
  {
    "in": "query",
    "name": "offset",
    "schema": {
      "default": 0,
      "minimum": 0,
      "type": "integer"
    }
  },
  {
    "description": "Public field name, optionally prefixed with - for descending order.",
    "in": "query",
    "name": "sort",
    "schema": {
      "type": "string"
    }
  },
  {
    "description": "Free-text search. Use POST search for structured filters.",
    "in": "query",
    "name": "search",
    "schema": {
      "type": "string"
    }
  }
]

Responses

200 Reports response.

application/json

Schema: ReportCollection

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
POST /reports · Create reports

Create tenant-scoped Elynext reports resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "reports.write"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Optional key used to make critical POST requests safe to retry.",
    "in": "header",
    "name": "Idempotency-Key",
    "required": false,
    "schema": {
      "maxLength": 255,
      "minLength": 1,
      "type": "string"
    }
  }
]

Request body

application/json

Schema: ReportWrite

Responses

201 Reports response.

application/json

Schema: ReportEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
POST /reports/search · Search reports

Search tenant-scoped Elynext reports resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "reports.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
]

Request body

application/json

Schema: SearchRequest

Responses

200 Reports response.

application/json

Schema: ReportCollection

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
GET /reports/{id} · Get reports

Get tenant-scoped Elynext reports resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "reports.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Opaque Elynext resource identifier.",
    "in": "path",
    "name": "id",
    "required": true,
    "schema": {
      "maxLength": 160,
      "minLength": 1,
      "type": "string"
    }
  }
]

Responses

200 Reports response.

application/json

Schema: ReportEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
PATCH /reports/{id} · Update reports

Update tenant-scoped Elynext reports resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "reports.write"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Opaque Elynext resource identifier.",
    "in": "path",
    "name": "id",
    "required": true,
    "schema": {
      "maxLength": 160,
      "minLength": 1,
      "type": "string"
    }
  }
]

Request body

application/json

Schema: ReportWrite

Responses

200 Reports response.

application/json

Schema: ReportEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
DELETE /reports/{id} · Archive reports

Archive tenant-scoped Elynext reports resources.

Permissions

[
  {
    "ElynextOAuth2": [
      "reports.write"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Opaque Elynext resource identifier.",
    "in": "path",
    "name": "id",
    "required": true,
    "schema": {
      "maxLength": 160,
      "minLength": 1,
      "type": "string"
    }
  }
]

Responses

200 Reports response.

application/json

Schema: ArchiveEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
GET /services · Read booking services

Credential-scoped read. Locations represent the credential's studio. Availability is advisory for one doctor/service/day, not a reservation or a service eligibility guarantee.

Permissions

[
  {
    "ElynextOAuth2": [
      "appointments.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "in": "query",
    "name": "limit",
    "required": false,
    "schema": {
      "default": 50,
      "maximum": 100,
      "minimum": 1,
      "type": "integer"
    }
  },
  {
    "in": "query",
    "name": "offset",
    "required": false,
    "schema": {
      "default": 0,
      "maximum": 100000,
      "minimum": 0,
      "type": "integer"
    }
  }
]

Responses

200 Booking response.

application/json

Schema: ServicesCollection

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

409 Request conflicts with a previous idempotent request.

application/json

Schema: Error

Example · idempotencyConflict

{
  "error": {
    "code": "idempotency_conflict",
    "details": {},
    "message": "Idempotency key was already used with a different payload.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
GET /version · Read API version metadata

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
]

Responses

200 API version metadata.

application/json

Schema: VersionEnvelope

Example · foundation

{
  "data": {
    "apiVersion": "v1",
    "applicationVersion": "0.0.0",
    "capabilities": [
      "api.health.read",
      "api.openapi.read",
      "api.version.read"
    ],
    "contractVersion": "1.0.0",
    "name": "Elynext API",
    "resources": [
      "docs",
      "health",
      "oauth/token",
      "webhook-subscriptions",
      "patients",
      "appointments",
      "clinical-records",
      "documents",
      "reports",
      "services",
      "locations",
      "doctors",
      "availability",
      "openapi.json",
      "openapi.yaml",
      "version"
    ],
    "stage": "foundation"
  },
  "meta": {
    "apiVersion": "v1",
    "requestId": "req_0000000000000001",
    "timestamp": "2026-08-12T00:00:00Z"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
GET /webhook-subscriptions · List webhook subscriptions

Manage tenant-scoped Elynext webhook subscriptions.

Permissions

[
  {
    "ElynextOAuth2": [
      "webhook-subscriptions.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
]

Responses

200 Webhook subscription response.

application/json

Schema: WebhookSubscriptionCollection

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
POST /webhook-subscriptions · Create webhook subscription

Manage tenant-scoped Elynext webhook subscriptions.

Permissions

[
  {
    "ElynextOAuth2": [
      "webhook-subscriptions.write"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
]

Request body

application/json

Schema: WebhookSubscriptionWrite

Responses

201 Webhook subscription response.

application/json

Schema: WebhookSubscriptionEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
GET /webhook-subscriptions/{id} · Get webhook subscription

Manage tenant-scoped Elynext webhook subscriptions.

Permissions

[
  {
    "ElynextOAuth2": [
      "webhook-subscriptions.read"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Opaque Elynext webhook subscription identifier.",
    "in": "path",
    "name": "id",
    "required": true,
    "schema": {
      "maxLength": 160,
      "minLength": 1,
      "type": "string"
    }
  }
]

Responses

200 Webhook subscription response.

application/json

Schema: WebhookSubscriptionEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
PATCH /webhook-subscriptions/{id} · Update webhook subscription

Manage tenant-scoped Elynext webhook subscriptions.

Permissions

[
  {
    "ElynextOAuth2": [
      "webhook-subscriptions.write"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Opaque Elynext webhook subscription identifier.",
    "in": "path",
    "name": "id",
    "required": true,
    "schema": {
      "maxLength": 160,
      "minLength": 1,
      "type": "string"
    }
  }
]

Request body

application/json

Schema: WebhookSubscriptionWrite

Responses

200 Webhook subscription response.

application/json

Schema: WebhookSubscriptionEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}
DELETE /webhook-subscriptions/{id} · Revoke webhook subscription

Manage tenant-scoped Elynext webhook subscriptions.

Permissions

[
  {
    "ElynextOAuth2": [
      "webhook-subscriptions.write"
    ]
  },
  {
    "ElynextApiKey": []
  }
]

Parameters

[
  {
    "description": "Optional opaque request correlation identifier supplied by the client.",
    "in": "header",
    "name": "X-Request-Id",
    "required": false,
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  },
  {
    "description": "Opaque Elynext webhook subscription identifier.",
    "in": "path",
    "name": "id",
    "required": true,
    "schema": {
      "maxLength": 160,
      "minLength": 1,
      "type": "string"
    }
  }
]

Responses

200 Webhook subscription response.

application/json

Schema: WebhookSubscriptionEnvelope

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

400 Request is invalid.

application/json

Schema: Error

Example · badRequest

{
  "error": {
    "code": "unsupported_grant_type",
    "details": {},
    "message": "Only client_credentials grant type is supported.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

401 Authentication is required.

application/json

Schema: Error

Example · unauthorized

{
  "error": {
    "code": "unauthorized",
    "details": {},
    "message": "Authentication is required.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

403 Insufficient permissions.

application/json

Schema: Error

Example · forbidden

{
  "error": {
    "code": "forbidden",
    "details": {},
    "message": "Insufficient permissions.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

404 Resource not found.

application/json

Schema: Error

Example · notFound

{
  "error": {
    "code": "not_found",
    "details": {},
    "message": "Elynext API resource not found.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

405 HTTP method is not allowed for this resource.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

429 Rate limit exceeded.

application/json

Schema: Error

Example · rateLimited

{
  "error": {
    "code": "rate_limited",
    "details": {},
    "message": "Rate limit exceeded.",
    "requestId": "req_0000000000000001"
  }
}

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "Retry-After": {
    "description": "Seconds to wait before retrying a rate-limited request.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

500 Request failed.

application/json

Schema: Error

Response headers

{
  "RateLimit-Limit": {
    "description": "Maximum number of requests allowed in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Remaining": {
    "description": "Remaining number of requests in the current window.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "RateLimit-Reset": {
    "description": "Epoch second when the current rate-limit window resets.",
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "X-Request-Id": {
    "description": "Opaque request correlation identifier.",
    "schema": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    }
  }
}

Webhook event reference

POST appointment.cancelled · Receive appointment.cancelled webhook

Signed Elynext webhook delivery with minimized event metadata.

Parameters

[
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Event-Id",
    "required": true,
    "schema": {
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Delivery-Id",
    "required": true,
    "schema": {
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Event-Version",
    "required": true,
    "schema": {
      "const": "1",
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Timestamp",
    "required": true,
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Signature",
    "required": true,
    "schema": {
      "pattern": "^v1=[a-f0-9]{64}$",
      "type": "string"
    }
  }
]

Request body

application/json

Schema: WebhookEvent

Responses

200 Webhook accepted by the partner endpoint.

400 Webhook rejected by the partner endpoint.

500 Partner endpoint failed; Elynext may retry delivery.

POST appointment.created · Receive appointment.created webhook

Signed Elynext webhook delivery with minimized event metadata.

Parameters

[
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Event-Id",
    "required": true,
    "schema": {
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Delivery-Id",
    "required": true,
    "schema": {
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Event-Version",
    "required": true,
    "schema": {
      "const": "1",
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Timestamp",
    "required": true,
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Signature",
    "required": true,
    "schema": {
      "pattern": "^v1=[a-f0-9]{64}$",
      "type": "string"
    }
  }
]

Request body

application/json

Schema: WebhookEvent

Responses

200 Webhook accepted by the partner endpoint.

400 Webhook rejected by the partner endpoint.

500 Partner endpoint failed; Elynext may retry delivery.

POST appointment.updated · Receive appointment.updated webhook

Signed Elynext webhook delivery with minimized event metadata.

Parameters

[
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Event-Id",
    "required": true,
    "schema": {
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Delivery-Id",
    "required": true,
    "schema": {
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Event-Version",
    "required": true,
    "schema": {
      "const": "1",
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Timestamp",
    "required": true,
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Signature",
    "required": true,
    "schema": {
      "pattern": "^v1=[a-f0-9]{64}$",
      "type": "string"
    }
  }
]

Request body

application/json

Schema: WebhookEvent

Responses

200 Webhook accepted by the partner endpoint.

400 Webhook rejected by the partner endpoint.

500 Partner endpoint failed; Elynext may retry delivery.

POST clinical-record.created · Receive clinical-record.created webhook

Signed Elynext webhook delivery with minimized event metadata.

Parameters

[
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Event-Id",
    "required": true,
    "schema": {
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Delivery-Id",
    "required": true,
    "schema": {
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Event-Version",
    "required": true,
    "schema": {
      "const": "1",
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Timestamp",
    "required": true,
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Signature",
    "required": true,
    "schema": {
      "pattern": "^v1=[a-f0-9]{64}$",
      "type": "string"
    }
  }
]

Request body

application/json

Schema: WebhookEvent

Responses

200 Webhook accepted by the partner endpoint.

400 Webhook rejected by the partner endpoint.

500 Partner endpoint failed; Elynext may retry delivery.

POST document.created · Receive document.created webhook

Signed Elynext webhook delivery with minimized event metadata.

Parameters

[
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Event-Id",
    "required": true,
    "schema": {
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Delivery-Id",
    "required": true,
    "schema": {
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Event-Version",
    "required": true,
    "schema": {
      "const": "1",
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Timestamp",
    "required": true,
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Signature",
    "required": true,
    "schema": {
      "pattern": "^v1=[a-f0-9]{64}$",
      "type": "string"
    }
  }
]

Request body

application/json

Schema: WebhookEvent

Responses

200 Webhook accepted by the partner endpoint.

400 Webhook rejected by the partner endpoint.

500 Partner endpoint failed; Elynext may retry delivery.

POST patient.created · Receive patient.created webhook

Signed Elynext webhook delivery with minimized event metadata.

Parameters

[
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Event-Id",
    "required": true,
    "schema": {
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Delivery-Id",
    "required": true,
    "schema": {
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Event-Version",
    "required": true,
    "schema": {
      "const": "1",
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Timestamp",
    "required": true,
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Signature",
    "required": true,
    "schema": {
      "pattern": "^v1=[a-f0-9]{64}$",
      "type": "string"
    }
  }
]

Request body

application/json

Schema: WebhookEvent

Responses

200 Webhook accepted by the partner endpoint.

400 Webhook rejected by the partner endpoint.

500 Partner endpoint failed; Elynext may retry delivery.

POST patient.updated · Receive patient.updated webhook

Signed Elynext webhook delivery with minimized event metadata.

Parameters

[
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Event-Id",
    "required": true,
    "schema": {
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Delivery-Id",
    "required": true,
    "schema": {
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Event-Version",
    "required": true,
    "schema": {
      "const": "1",
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Timestamp",
    "required": true,
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Signature",
    "required": true,
    "schema": {
      "pattern": "^v1=[a-f0-9]{64}$",
      "type": "string"
    }
  }
]

Request body

application/json

Schema: WebhookEvent

Responses

200 Webhook accepted by the partner endpoint.

400 Webhook rejected by the partner endpoint.

500 Partner endpoint failed; Elynext may retry delivery.

POST report.created · Receive report.created webhook

Signed Elynext webhook delivery with minimized event metadata.

Parameters

[
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Event-Id",
    "required": true,
    "schema": {
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Delivery-Id",
    "required": true,
    "schema": {
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Event-Version",
    "required": true,
    "schema": {
      "const": "1",
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Timestamp",
    "required": true,
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Signature",
    "required": true,
    "schema": {
      "pattern": "^v1=[a-f0-9]{64}$",
      "type": "string"
    }
  }
]

Request body

application/json

Schema: WebhookEvent

Responses

200 Webhook accepted by the partner endpoint.

400 Webhook rejected by the partner endpoint.

500 Partner endpoint failed; Elynext may retry delivery.

POST report.updated · Receive report.updated webhook

Signed Elynext webhook delivery with minimized event metadata.

Parameters

[
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Event-Id",
    "required": true,
    "schema": {
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Delivery-Id",
    "required": true,
    "schema": {
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Event-Version",
    "required": true,
    "schema": {
      "const": "1",
      "type": "string"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Timestamp",
    "required": true,
    "schema": {
      "minimum": 0,
      "type": "integer"
    }
  },
  {
    "in": "header",
    "name": "X-Elynext-Webhook-Signature",
    "required": true,
    "schema": {
      "pattern": "^v1=[a-f0-9]{64}$",
      "type": "string"
    }
  }
]

Request body

application/json

Schema: WebhookEvent

Responses

200 Webhook accepted by the partner endpoint.

400 Webhook rejected by the partner endpoint.

500 Partner endpoint failed; Elynext may retry delivery.

Data schemas

ApiKeyCredential
{
  "additionalProperties": false,
  "description": "Runtime API key credential model reserved for future protected Domain API requests.",
  "properties": {
    "header": {
      "const": "X-Elynext-API-Key",
      "type": "string"
    },
    "key_id": {
      "minLength": 1,
      "type": "string"
    },
    "scopes": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "status": {
      "enum": [
        "active",
        "revoked"
      ],
      "type": "string"
    },
    "tenant_id": {
      "minLength": 1,
      "type": "string"
    }
  },
  "required": [
    "key_id",
    "tenant_id",
    "scopes",
    "status"
  ],
  "type": "object"
}
Appointment
{
  "additionalProperties": false,
  "properties": {
    "accessType": {
      "type": "string"
    },
    "createdAt": {
      "format": "date-time",
      "type": "string"
    },
    "doctorId": {
      "type": "string"
    },
    "endsAt": {
      "format": "date-time",
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "patientId": {
      "type": "string"
    },
    "reason": {
      "type": "string"
    },
    "room": {
      "type": "string"
    },
    "startsAt": {
      "format": "date-time",
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "tenantId": {
      "type": "string"
    },
    "type": {
      "type": "string"
    },
    "updatedAt": {
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
AppointmentCollection
{
  "additionalProperties": false,
  "properties": {
    "data": {
      "items": {
        "$ref": "#/components/schemas/Appointment"
      },
      "type": "array"
    },
    "meta": {
      "additionalProperties": false,
      "properties": {
        "filters": {
          "type": "object"
        },
        "pagination": {
          "$ref": "#/components/schemas/PaginationMeta"
        },
        "sort": {
          "type": "string"
        }
      },
      "required": [
        "pagination",
        "sort",
        "filters"
      ],
      "type": "object"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
AppointmentEnvelope
{
  "additionalProperties": false,
  "properties": {
    "data": {
      "$ref": "#/components/schemas/Appointment"
    }
  },
  "required": [
    "data"
  ],
  "type": "object"
}
AppointmentWrite
{
  "additionalProperties": false,
  "description": "Business validations apply. serviceId and locationId are not accepted fields in this version. Timestamps require explicit offsets and normalize to Europe/Rome. Conflicting bookings return 409; retry concurrent_request with the same idempotency key.",
  "properties": {
    "accessType": {
      "type": "string"
    },
    "doctorId": {
      "type": "string"
    },
    "endsAt": {
      "format": "date-time",
      "type": "string"
    },
    "patientId": {
      "type": "string"
    },
    "reason": {
      "type": "string"
    },
    "room": {
      "type": "string"
    },
    "startsAt": {
      "format": "date-time",
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "type": {
      "type": "string"
    }
  },
  "type": "object"
}
ArchiveEnvelope
{
  "additionalProperties": false,
  "properties": {
    "data": {
      "additionalProperties": false,
      "properties": {
        "archived": {
          "const": true,
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "status": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "archived",
        "status"
      ],
      "type": "object"
    }
  },
  "required": [
    "data"
  ],
  "type": "object"
}
AvailabilityEnvelope
{
  "properties": {
    "data": {
      "additionalProperties": false,
      "properties": {
        "date": {
          "format": "date",
          "type": "string"
        },
        "doctorId": {
          "type": "string"
        },
        "durationMinutes": {
          "maximum": 1440,
          "minimum": 5,
          "type": "integer"
        },
        "locationId": {
          "type": "string"
        },
        "serviceId": {
          "type": "string"
        },
        "slots": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "endsAt": {
                "format": "date-time",
                "type": "string"
              },
              "startsAt": {
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "startsAt",
              "endsAt"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "timezone": {
          "type": "string"
        }
      },
      "required": [
        "date",
        "timezone",
        "locationId",
        "doctorId",
        "serviceId",
        "durationMinutes",
        "slots"
      ],
      "type": "object"
    }
  },
  "required": [
    "data"
  ],
  "type": "object"
}
ClinicalRecord
{
  "additionalProperties": false,
  "properties": {
    "createdAt": {
      "format": "date-time",
      "type": "string"
    },
    "doctorId": {
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "occurredAt": {
      "format": "date-time",
      "type": "string"
    },
    "patientId": {
      "type": "string"
    },
    "reason": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "tenantId": {
      "type": "string"
    },
    "type": {
      "type": "string"
    },
    "updatedAt": {
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
ClinicalRecordCollection
{
  "additionalProperties": false,
  "properties": {
    "data": {
      "items": {
        "$ref": "#/components/schemas/ClinicalRecord"
      },
      "type": "array"
    },
    "meta": {
      "additionalProperties": false,
      "properties": {
        "filters": {
          "type": "object"
        },
        "pagination": {
          "$ref": "#/components/schemas/PaginationMeta"
        },
        "sort": {
          "type": "string"
        }
      },
      "required": [
        "pagination",
        "sort",
        "filters"
      ],
      "type": "object"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
ClinicalRecordEnvelope
{
  "additionalProperties": false,
  "properties": {
    "data": {
      "$ref": "#/components/schemas/ClinicalRecord"
    }
  },
  "required": [
    "data"
  ],
  "type": "object"
}
ClinicalRecordWrite
{
  "additionalProperties": false,
  "description": "Field shapes only; environment business validations and required fields also apply.",
  "properties": {
    "doctorId": {
      "type": "string"
    },
    "occurredAt": {
      "format": "date-time",
      "type": "string"
    },
    "patientId": {
      "type": "string"
    },
    "reason": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "type": {
      "type": "string"
    }
  },
  "type": "object"
}
DoctorsCollection
{
  "properties": {
    "data": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "locationId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "locationId"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "meta": {
      "properties": {
        "pagination": {
          "$ref": "#/components/schemas/PaginationMeta"
        }
      },
      "type": "object"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
Document
{
  "additionalProperties": false,
  "properties": {
    "author": {
      "type": "string"
    },
    "clinicalRecordId": {
      "type": "string"
    },
    "createdAt": {
      "format": "date-time",
      "type": "string"
    },
    "doctorId": {
      "type": "string"
    },
    "generatedAt": {
      "format": "date-time",
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "patientId": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "tenantId": {
      "type": "string"
    },
    "type": {
      "type": "string"
    },
    "updatedAt": {
      "format": "date-time",
      "type": "string"
    },
    "version": {
      "type": "string"
    }
  },
  "type": "object"
}
DocumentCollection
{
  "additionalProperties": false,
  "properties": {
    "data": {
      "items": {
        "$ref": "#/components/schemas/Document"
      },
      "type": "array"
    },
    "meta": {
      "additionalProperties": false,
      "properties": {
        "filters": {
          "type": "object"
        },
        "pagination": {
          "$ref": "#/components/schemas/PaginationMeta"
        },
        "sort": {
          "type": "string"
        }
      },
      "required": [
        "pagination",
        "sort",
        "filters"
      ],
      "type": "object"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
DocumentEnvelope
{
  "additionalProperties": false,
  "properties": {
    "data": {
      "$ref": "#/components/schemas/Document"
    }
  },
  "required": [
    "data"
  ],
  "type": "object"
}
DocumentWrite
{
  "additionalProperties": false,
  "description": "Field shapes only; environment business validations and required fields also apply.",
  "properties": {
    "author": {
      "type": "string"
    },
    "clinicalRecordId": {
      "type": "string"
    },
    "doctorId": {
      "type": "string"
    },
    "generatedAt": {
      "format": "date-time",
      "type": "string"
    },
    "patientId": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "type": {
      "type": "string"
    },
    "version": {
      "type": "string"
    }
  },
  "type": "object"
}
Error
{
  "additionalProperties": false,
  "properties": {
    "error": {
      "additionalProperties": false,
      "properties": {
        "code": {
          "type": "string"
        },
        "details": {
          "type": "object"
        },
        "message": {
          "type": "string"
        },
        "requestId": {
          "type": "string"
        }
      },
      "required": [
        "code",
        "message",
        "details",
        "requestId"
      ],
      "type": "object"
    }
  },
  "required": [
    "error"
  ],
  "type": "object"
}
Health
{
  "additionalProperties": false,
  "properties": {
    "apiVersion": {
      "const": "v1",
      "type": "string"
    },
    "classification": {
      "const": "PUBLIC_METADATA",
      "type": "string"
    },
    "name": {
      "const": "Elynext API",
      "type": "string"
    },
    "status": {
      "enum": [
        "ok"
      ],
      "type": "string"
    }
  },
  "required": [
    "status",
    "name",
    "apiVersion",
    "classification"
  ],
  "type": "object"
}
HealthEnvelope
{
  "additionalProperties": false,
  "properties": {
    "data": {
      "$ref": "#/components/schemas/Health"
    },
    "meta": {
      "$ref": "#/components/schemas/ResponseMeta"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
LocationsCollection
{
  "properties": {
    "data": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "address": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "address"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "meta": {
      "properties": {
        "pagination": {
          "$ref": "#/components/schemas/PaginationMeta"
        }
      },
      "type": "object"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
OAuthTokenRequest
{
  "additionalProperties": false,
  "properties": {
    "client_id": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    },
    "client_secret": {
      "maxLength": 512,
      "minLength": 24,
      "type": "string",
      "writeOnly": true
    },
    "grant_type": {
      "const": "client_credentials",
      "type": "string"
    },
    "scope": {
      "description": "Optional space-delimited subset of scopes assigned to the partner client.",
      "type": "string"
    }
  },
  "required": [
    "grant_type"
  ],
  "type": "object"
}
OAuthTokenResponse
{
  "additionalProperties": false,
  "properties": {
    "access_token": {
      "minLength": 1,
      "type": "string"
    },
    "api_version": {
      "const": "v1",
      "type": "string"
    },
    "expires_in": {
      "minimum": 1,
      "type": "integer"
    },
    "scope": {
      "type": "string"
    },
    "tenant_id": {
      "minLength": 1,
      "type": "string"
    },
    "token_type": {
      "const": "Bearer",
      "type": "string"
    }
  },
  "required": [
    "access_token",
    "token_type",
    "expires_in",
    "scope",
    "tenant_id",
    "api_version"
  ],
  "type": "object"
}
PaginationMeta
{
  "additionalProperties": false,
  "properties": {
    "limit": {
      "maximum": 100,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "total": {
      "minimum": 0,
      "type": "integer"
    }
  },
  "required": [
    "limit",
    "offset",
    "total"
  ],
  "type": "object"
}
Patient
{
  "additionalProperties": false,
  "properties": {
    "city": {
      "type": "string"
    },
    "createdAt": {
      "format": "date-time",
      "type": "string"
    },
    "dateOfBirth": {
      "format": "date",
      "type": "string"
    },
    "doctorId": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "firstName": {
      "type": "string"
    },
    "healthDataConsent": {
      "type": "boolean"
    },
    "id": {
      "type": "string"
    },
    "lastName": {
      "type": "string"
    },
    "mobile": {
      "type": "string"
    },
    "phone": {
      "type": "string"
    },
    "postalCode": {
      "type": "string"
    },
    "privacyConsent": {
      "type": "boolean"
    },
    "province": {
      "type": "string"
    },
    "sex": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "taxCode": {
      "type": "string"
    },
    "tenantId": {
      "type": "string"
    },
    "updatedAt": {
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
PatientCollection
{
  "additionalProperties": false,
  "properties": {
    "data": {
      "items": {
        "$ref": "#/components/schemas/Patient"
      },
      "type": "array"
    },
    "meta": {
      "additionalProperties": false,
      "properties": {
        "filters": {
          "type": "object"
        },
        "pagination": {
          "$ref": "#/components/schemas/PaginationMeta"
        },
        "sort": {
          "type": "string"
        }
      },
      "required": [
        "pagination",
        "sort",
        "filters"
      ],
      "type": "object"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
PatientEnvelope
{
  "additionalProperties": false,
  "properties": {
    "data": {
      "$ref": "#/components/schemas/Patient"
    }
  },
  "required": [
    "data"
  ],
  "type": "object"
}
PatientWrite
{
  "additionalProperties": false,
  "description": "Business validations apply in addition to field shapes. Language and communication/marketing consent are not in this version; privacyConsent and healthDataConsent are not marketing consent.",
  "properties": {
    "city": {
      "type": "string"
    },
    "dateOfBirth": {
      "format": "date",
      "type": "string"
    },
    "doctorId": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "firstName": {
      "type": "string"
    },
    "healthDataConsent": {
      "type": "boolean"
    },
    "lastName": {
      "type": "string"
    },
    "mobile": {
      "type": "string"
    },
    "phone": {
      "type": "string"
    },
    "postalCode": {
      "type": "string"
    },
    "privacyConsent": {
      "type": "boolean"
    },
    "province": {
      "type": "string"
    },
    "sex": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "taxCode": {
      "type": "string"
    }
  },
  "type": "object"
}
Report
{
  "additionalProperties": false,
  "properties": {
    "clinicalRecordId": {
      "type": "string"
    },
    "createdAt": {
      "format": "date-time",
      "type": "string"
    },
    "doctorId": {
      "type": "string"
    },
    "documentId": {
      "type": "string"
    },
    "examId": {
      "type": "string"
    },
    "generatedAt": {
      "format": "date-time",
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "patientId": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "tenantId": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "type": {
      "type": "string"
    },
    "updatedAt": {
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
ReportCollection
{
  "additionalProperties": false,
  "properties": {
    "data": {
      "items": {
        "$ref": "#/components/schemas/Report"
      },
      "type": "array"
    },
    "meta": {
      "additionalProperties": false,
      "properties": {
        "filters": {
          "type": "object"
        },
        "pagination": {
          "$ref": "#/components/schemas/PaginationMeta"
        },
        "sort": {
          "type": "string"
        }
      },
      "required": [
        "pagination",
        "sort",
        "filters"
      ],
      "type": "object"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
ReportEnvelope
{
  "additionalProperties": false,
  "properties": {
    "data": {
      "$ref": "#/components/schemas/Report"
    }
  },
  "required": [
    "data"
  ],
  "type": "object"
}
ReportWrite
{
  "additionalProperties": false,
  "description": "Field shapes only; environment business validations and required fields also apply.",
  "properties": {
    "clinicalRecordId": {
      "type": "string"
    },
    "doctorId": {
      "type": "string"
    },
    "documentId": {
      "type": "string"
    },
    "examId": {
      "type": "string"
    },
    "generatedAt": {
      "format": "date-time",
      "type": "string"
    },
    "patientId": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "type": {
      "type": "string"
    }
  },
  "type": "object"
}
ResponseMeta
{
  "additionalProperties": false,
  "properties": {
    "apiVersion": {
      "const": "v1",
      "type": "string"
    },
    "requestId": {
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    },
    "timestamp": {
      "format": "date-time",
      "type": "string"
    }
  },
  "required": [
    "apiVersion",
    "requestId",
    "timestamp"
  ],
  "type": "object"
}
SearchRequest
{
  "additionalProperties": true,
  "description": "Portable contract: equality filters on documented public fields, free-text search and pagination. No dedicated date-range or incremental synchronization cursor is specified. Do not depend on unspecified filter operators.",
  "properties": {
    "filters": {
      "type": "object"
    },
    "limit": {
      "maximum": 100,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "search": {
      "type": "string"
    },
    "sort": {
      "type": "string"
    }
  },
  "type": "object"
}
ServicesCollection
{
  "properties": {
    "data": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "durationMinutes": {
            "maximum": 1440,
            "minimum": 5,
            "type": [
              "integer",
              "null"
            ]
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "durationMinutes"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "meta": {
      "properties": {
        "pagination": {
          "$ref": "#/components/schemas/PaginationMeta"
        }
      },
      "type": "object"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
Version
{
  "additionalProperties": false,
  "properties": {
    "apiVersion": {
      "const": "v1",
      "type": "string"
    },
    "applicationVersion": {
      "type": "string"
    },
    "capabilities": {
      "items": {
        "pattern": "^(api\\.|[a-z][a-z0-9-]*\\.(read|write|create|update|delete|download|export|publish|manage)$)",
        "type": "string"
      },
      "type": "array"
    },
    "contractVersion": {
      "type": "string"
    },
    "name": {
      "const": "Elynext API",
      "type": "string"
    },
    "resources": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "stage": {
      "const": "foundation",
      "type": "string"
    }
  },
  "required": [
    "name",
    "apiVersion",
    "contractVersion",
    "applicationVersion",
    "stage",
    "capabilities",
    "resources"
  ],
  "type": "object"
}
VersionEnvelope
{
  "additionalProperties": false,
  "properties": {
    "data": {
      "$ref": "#/components/schemas/Version"
    },
    "meta": {
      "$ref": "#/components/schemas/ResponseMeta"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
WebhookEvent
{
  "additionalProperties": false,
  "description": "Minimal signed webhook event payload. Clinical details must be fetched through authorized Domain API calls.",
  "properties": {
    "eventId": {
      "type": "string"
    },
    "eventType": {
      "enum": [
        "patient.created",
        "patient.updated",
        "appointment.created",
        "appointment.updated",
        "appointment.cancelled",
        "clinical-record.created",
        "document.created",
        "report.created",
        "report.updated"
      ],
      "type": "string"
    },
    "eventVersion": {
      "const": "1",
      "type": "string"
    },
    "metadata": {
      "additionalProperties": false,
      "properties": {
        "apiVersion": {
          "const": "v1",
          "type": "string"
        },
        "requestId": {
          "type": "string"
        },
        "resourceType": {
          "type": "string"
        }
      },
      "required": [
        "apiVersion",
        "requestId",
        "resourceType"
      ],
      "type": "object"
    },
    "resourceId": {
      "type": "string"
    },
    "tenantId": {
      "type": "string"
    },
    "timestamp": {
      "format": "date-time",
      "type": "string"
    }
  },
  "required": [
    "eventId",
    "eventType",
    "eventVersion",
    "tenantId",
    "resourceId",
    "timestamp",
    "metadata"
  ],
  "type": "object"
}
WebhookSubscription
{
  "additionalProperties": false,
  "properties": {
    "createdAt": {
      "format": "date-time",
      "type": "string"
    },
    "eventTypes": {
      "items": {
        "enum": [
          "patient.created",
          "patient.updated",
          "appointment.created",
          "appointment.updated",
          "appointment.cancelled",
          "clinical-record.created",
          "document.created",
          "report.created",
          "report.updated"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "id": {
      "type": "string"
    },
    "status": {
      "enum": [
        "active",
        "paused",
        "revoked"
      ],
      "type": "string"
    },
    "targetUrl": {
      "format": "uri",
      "type": "string"
    },
    "tenantId": {
      "type": "string"
    },
    "updatedAt": {
      "format": "date-time",
      "type": "string"
    }
  },
  "required": [
    "id",
    "tenantId",
    "targetUrl",
    "eventTypes",
    "status",
    "createdAt",
    "updatedAt"
  ],
  "type": "object"
}
WebhookSubscriptionCollection
{
  "additionalProperties": false,
  "properties": {
    "data": {
      "items": {
        "$ref": "#/components/schemas/WebhookSubscription"
      },
      "type": "array"
    },
    "meta": {
      "additionalProperties": false,
      "properties": {
        "total": {
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "total"
      ],
      "type": "object"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
WebhookSubscriptionEnvelope
{
  "additionalProperties": false,
  "properties": {
    "data": {
      "$ref": "#/components/schemas/WebhookSubscription"
    }
  },
  "required": [
    "data"
  ],
  "type": "object"
}
WebhookSubscriptionWrite
{
  "additionalProperties": false,
  "properties": {
    "eventTypes": {
      "items": {
        "enum": [
          "patient.created",
          "patient.updated",
          "appointment.created",
          "appointment.updated",
          "appointment.cancelled",
          "clinical-record.created",
          "document.created",
          "report.created",
          "report.updated"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "signingSecret": {
      "minLength": 24,
      "type": "string",
      "writeOnly": true
    },
    "status": {
      "enum": [
        "active",
        "paused",
        "revoked"
      ],
      "type": "string"
    },
    "targetUrl": {
      "format": "uri",
      "type": "string"
    }
  },
  "type": "object"
}