Jane JDP API

Jane JDP API from Jane — 31 path(s) described in OpenAPI.

OpenAPI Specification

jane-app-jdp-openapi.yml Raw ↑
# Harvested + merged from the per-operation OpenAPI 3.1.0 definitions embedded in
# each Jane Developer Platform ReadMe reference page (developers.jane.app/reference/*.md).
# generated: '2026-07-24'  method: searched
# source: https://developers.jane.app/reference (per-endpoint embedded OpenAPI blocks)
openapi: 3.1.0
info:
  title: JDP API
  description: 'Open API specification for the JDP API


    ## Rate Limits


    All JDP API endpoints have a rate limit of **100 requests per minute** per endpoint per clinic.


    Rate limit information is returned in response headers:

    - `X-Throttle-Match`: Rate limit identifier

    - `Retry-After`: Number of seconds to wait before retrying (when rate limited)


    When rate limits are exceeded, the API returns a 429 status code with a `Retry-After` header.


    ### Affected Endpoints:

    - `/api/2026-01-01/treatments`

    - `/api/2026-01-01/appointments`

    - `/api/2026-01-01/locations`

    - `/api/2026-01-01/disciplines`

    - `/api/2026-01-01/patients`

    - `/api/2026-01-01/staff_members`

    - `/api/2026-01-01/company`

    - `/api/2026-01-01/medical-record/medications`'
  version: '2026-01-01'
servers:
- url: https://jdpdocsdemo.jane.qa
  description: Partner playground clinic
security:
- OAuth2: []
tags:
- name: Appointments
- name: CarePlans
- name: Catalog
- name: Company
- name: Disciplines
- name: DocumentUploads
- name: Extensions
- name: Locations
- name: Medications
- name: Observations
- name: Patients
- name: StaffMembers
- name: Treatments
- name: Webhooks
paths:
  /api/2026-01-01/medical-record/care-plans:
    post:
      operationId: createCarePlan
      summary: Create a care plan
      description: Create a care plan
      security:
      - OAuth2:
        - care_plans:create
      tags:
      - CarePlans
      requestBody:
        description: The care plan to create
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/create_care_plan_request'
      responses:
        '201':
          description: The care plan was created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/care_plan'
        '400':
          description: The care plan was not created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error_response'
    get:
      operationId: listCarePlans
      summary: List care plans
      description: List medical record care plans for the current user's accessible patients.
      security:
      - OAuth2:
        - care_plans:read
      tags:
      - CarePlans
      parameters:
      - $ref: '#/components/parameters/page_limit'
      - $ref: '#/components/parameters/page_cursor'
      - name: sort
        in: query
        required: false
        description: 'Comma-separated sort fields. Prefix with `-` for descending order (e.g. `-created_at`).
          Allowed: created_at, updated_at'
        schema:
          type: string
          example: -created_at
      - name: patient_id[eq]
        in: query
        required: false
        description: Filter by patient public ID
        schema:
          type: string
          format: uuid
      - name: category[eq]
        in: query
        required: false
        description: 'Filter by category. Allowed values: treatment_plan'
        schema:
          type: string
          enum:
          - treatment_plan
      - name: encounter_id[eq]
        in: query
        required: false
        description: Filter by encounter public ID
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: List of care plans
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/care_plans_response'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error_response'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden - insufficient permissions
  /api/2026-01-01/medical-record/care-plans/{care_plan_id}/activities:
    post:
      operationId: createCarePlanActivity
      summary: Create a care plan activity
      description: Create a care plan activity
      security:
      - OAuth2:
        - care_plans:create
      parameters:
      - name: care_plan_id
        in: path
        required: true
        description: The ID of the care plan
        schema:
          type: string
      tags:
      - CarePlans
      requestBody:
        description: The care plan activity to create
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/create_care_plan_activity_request'
      responses:
        '201':
          description: The care plan activity was created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/care_plan_activity'
        '400':
          description: The care plan activity was not created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error_response'
  /api/2025-02-28-beta/extensions:
    post:
      operationId: createExtension
      summary: Create Extension
      description: Creates a new extension
      tags:
      - Extensions
      security:
      - BearerAuth: []
      requestBody:
        description: Extension data to create
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/extension_request'
      responses:
        '201':
          description: Extension created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/extension'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error_response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized_error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/forbidden_error'
        '422':
          description: Unprocessable entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unprocessable_entity_error'
    get:
      operationId: getExtensions
      summary: List Extensions
      description: Retrieves a list of extensions
      tags:
      - Extensions
      security:
      - BearerAuth: []
      responses:
        '200':
          description: List of extensions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/extensions_response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized_error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/forbidden_error'
  /api/2026-01-01/medical-record/medications:
    post:
      operationId: createMedication
      summary: Create a medication
      description: Create a new medication record for a patient
      security:
      - OAuth2:
        - medications:create
      tags:
      - Medications
      requestBody:
        description: The medication to create
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/create_medication_request'
      responses:
        '201':
          description: The medication was created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/medication'
        '400':
          description: The medication was not created - validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error_response'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden - insufficient permissions
        '404':
          description: Patient not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/not_found_error_response'
    get:
      operationId: listMedications
      summary: List medications
      description: List medications for the current user's accessible patients
      security:
      - OAuth2:
        - medications:read
      tags:
      - Medications
      parameters:
      - name: page[limit]
        in: query
        required: false
        description: Maximum number of items to return (default 50)
        schema:
          type: integer
          default: 50
      - name: page[cursor]
        in: query
        required: false
        description: Cursor for pagination
        schema:
          type: string
      - name: sort
        in: query
        required: false
        description: Sort field (default created_at)
        schema:
          type: string
          default: created_at
      responses:
        '200':
          description: List of medications
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/medications_response'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden - insufficient permissions
  /api/2026-01-01/medical-record/observations:
    post:
      operationId: createObservation
      summary: Create an observation
      description: Create an observation
      security:
      - OAuth2:
        - observations:create
      tags:
      - Observations
      requestBody:
        description: The observation to create
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/create_observation_request'
      responses:
        '201':
          description: The observation was created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/observation'
        '400':
          description: The observation was not created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error_response'
    get:
      operationId: listObservations
      summary: List observations
      description: List medical record observations for the current user's accessible patients.
      security:
      - OAuth2:
        - observations:read
      tags:
      - Observations
      parameters:
      - $ref: '#/components/parameters/page_limit'
      - $ref: '#/components/parameters/page_cursor'
      - name: sort
        in: query
        required: false
        description: 'Comma-separated sort fields. Prefix with `-` for descending order (e.g. `-created_at`).
          Allowed: created_at, updated_at, issued_at'
        schema:
          type: string
          example: -created_at
      - name: patient_id[eq]
        in: query
        required: false
        description: Filter by patient public ID
        schema:
          type: string
          format: uuid
      - name: category[eq]
        in: query
        required: false
        description: 'Filter by category. Allowed values: vital_signs, laboratory, exam'
        schema:
          type: string
          enum:
          - vital_signs
          - laboratory
          - exam
      - name: encounter_id[eq]
        in: query
        required: false
        description: Filter by encounter public ID
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: List of observations
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/observations_response'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error_response'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden - insufficient permissions
  /api/2025-02-28-beta/extensions/{extension_id}:
    delete:
      operationId: deleteExtension
      summary: Delete Extension
      description: Deletes an extension
      tags:
      - Extensions
      security:
      - BearerAuth: []
      parameters:
      - name: extension_id
        in: path
        required: true
        description: The ID of the extension
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Extension deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/extension_delete_response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized_error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/forbidden_error'
        '404':
          description: Extension not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/not_found_error'
    get:
      operationId: getExtension
      summary: Get Extension
      description: Retrieves a specific extension by ID
      tags:
      - Extensions
      security:
      - BearerAuth: []
      parameters:
      - name: extension_id
        in: path
        required: true
        description: The ID of the extension
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Extension details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/extension'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized_error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/forbidden_error'
        '404':
          description: Extension not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/not_found_error'
    put:
      operationId: updateExtension
      summary: Update Extension
      description: Updates an existing extension
      tags:
      - Extensions
      security:
      - BearerAuth: []
      parameters:
      - name: extension_id
        in: path
        required: true
        description: The ID of the extension
        schema:
          type: string
          format: uuid
      requestBody:
        description: Extension data to update
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/extension_request'
      responses:
        '200':
          description: Extension updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/extension'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error_response'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized_error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/forbidden_error'
        '404':
          description: Extension not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/not_found_error'
        '422':
          description: Unprocessable entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unprocessable_entity_error'
  /api/2026-01-01/webhooks/{webhook_id}:
    delete:
      operationId: deleteWebhook
      summary: Deregister a webhook subscription
      description: Permanently removes a webhook subscription. The partner will no longer receive events
        for this subscription.
      security:
      - OAuth2:
        - webhooks:delete
      tags:
      - Webhooks
      parameters:
      - name: webhook_id
        in: path
        required: true
        description: The ID of the webhook subscription
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: The webhook subscription was deregistered
        '401':
          description: The request is not authorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errors_message_response'
        '403':
          description: The authenticated partner does not have permission to deregister this webhook subscription
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errors_message_response'
        '404':
          description: The webhook subscription was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errors_message_response'
        '422':
          description: The webhook subscription could not be deregistered due to validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errors_message_response'
        '503':
          description: The service is temporarily unavailable
    get:
      operationId: getWebhook
      summary: Retrieve a webhook subscription
      description: Returns the details of a single webhook subscription by ID.
      security:
      - OAuth2:
        - webhooks:read
      tags:
      - Webhooks
      parameters:
      - name: webhook_id
        in: path
        required: true
        description: The ID of the webhook subscription
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: The webhook subscription
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/webhook-subscription-response'
        '401':
          description: The request is not authorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errors_message_response'
        '403':
          description: The authenticated partner does not have permission to view this webhook subscription
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errors_message_response'
        '404':
          description: The webhook subscription was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errors_message_response'
        '503':
          description: The service is temporarily unavailable
  /api/2026-01-01/appointments/{appointment_id}:
    get:
      operationId: getAnAppointment
      summary: Get an Appointment
      description: Retrieve detailed appointment information using its unique identifier
      tags:
      - Appointments
      security:
      - OAuth2:
        - appointments:read
      parameters:
      - name: appointment_id
        in: path
        required: true
        description: The ID of the appointment
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: The appointment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/appointment'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errors_message_response'
        '404':
          description: The appointment was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errors_message_response'
        '429':
          description: Rate limit exceeded - 100 requests per minute per endpoint per clinic
          headers:
            X-Throttle-Match:
              description: Rate limit identifier
              schema:
                type: string
              example: marketing_api/ip/clinic
            Retry-After:
              description: Number of seconds to wait before retrying
              schema:
                type: integer
              example: 60
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errors'
  /api/2026-01-01/staff_members/{staff_member_id}:
    get:
      operationId: getAStaffMember
      summary: Get a Staff Member
      description: Retrieve detailed staff member using their unique identifier
      tags:
      - StaffMembers
      security:
      - OAuth2:
        - staff_members:read
      parameters:
      - name: staff_member_id
        in: path
        required: true
        description: The ID of the staff member
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: The staff member
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/staff_member-2'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errors_message_response'
        '404':
          description: The staff member was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errors_message_response'
        '429':
          description: Rate limit exceeded - 100 requests per minute per endpoint per clinic
          headers:
            X-Throttle-Match:
              description: Rate limit identifier
              schema:
                type: string
              example: marketing_api/ip/clinic
            Retry-After:
              description: Number of seconds to wait before retrying
              schema:
                type: integer
              example: 60
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errors'
  /api/2026-01-01/medical-record/care-plans/{care_plan_id}:
    get:
      operationId: getCarePlan
      summary: Get a care plan
      description: Get a care plan by its ID
      security:
      - OAuth2:
        - care_plans:read
      tags:
      - CarePlans
      parameters:
      - name: care_plan_id
        in: path
        required: true
        description: The ID of the care plan
        schema:
          type: string
      responses:
        '200':
          description: The care plan
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/care_plan'
        '404':
          description: The care plan was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/not_found_error_response'
    patch:
      operationId: updateCarePlan
      summary: Update a care plan
      description: Update a care plan by its ID
      security:
      - OAuth2:
        - care_plans:update
      tags:
      - CarePlans
      parameters:
      - name: care_plan_id
        in: path
        required: true
        description: The ID of the care plan
        schema:
          type: string
      requestBody:
        description: The care plan to update
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/update_care_plan_request'
      responses:
        '200':
          description: The care plan was updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/care_plan'
        '400':
          description: The care plan was not updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error_response'
        '404':
          description: The care plan was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/not_found_error_response'
        '422':
          description: The care plan validation failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error_response'
  /api/2026-01-01/medical-record/care-plans/{care_plan_id}/activities/{care_plan_activity_id}:
    get:
      operationId: getCarePlanActivity
      summary: Get a care plan activity
      description: Get a care plan activity by its ID
      security:
      - OAuth2:
        - care_plans:read
      tags:
      - CarePlans
      parameters:
      - name: care_plan_id
        in: path
        required: true
        description: The ID of the care plan
        schema:
          type: string
      - name: care_plan_activity_id
        in: path
        required: true
        description: The ID of the care plan activity
        schema:
          type: string
      responses:
        '200':
          description: The care plan activity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/care_plan_activity'
        '404':
          description: The care plan activity was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/not_found_error_response'
    patch:
      operationId: updateCarePlanActivity
      summary: Update a care plan activity
      description: Update a care plan activity by its ID
      security:
      - OAuth2:
        - care_plans:update
      tags:
      - CarePlans
      parameters:
      - name: care_plan_id
        in: path
        required: true
        description: The ID of the care plan
        schema:
          type: string
      - name: care_plan_activity_id
        in: path
        required: true
        description: The ID of the care plan activity
        schema:
          type: string
      requestBody:
        description: The care plan activity to update
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/update_care_plan_activity_request'
      responses:
        '200':
          description: The care plan activity was updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/care_plan_activity'
        '400':
          description: The care plan activity was not updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error_response'
        '404':
          description: The care plan activity was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/not_found_error_response'
        '422':
          description: The care plan activity validation failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error_response'
  /api/2025-02-28-beta/catalog/extensions/{id}:
    get:
      operationId: getCatalogExtension
      summary: Get Catalog Extension
      description: Retrieves a specific extension from the catalog
      tags:
      - Catalog
      security:
      - BearerAuth: []
      parameters:
      - name: id
        in: path
        required: true
        description: Extension ID
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Catalog extension details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/catalog_extension'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized_error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/forbidden_error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/not_found_error'
  /api/2025-02-28-beta/catalog/extensions:
    get:
      operationId: getCatalogExtensions
      summary: Get Catalog Extensions
      description: Retrieves the catalog with all available approved extensions
      tags:
      - Catalog
      responses:
        '200':
          description: List of catalog extensions with pagination metadata
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/catalog_extensions_response'
  /api/2026-01-01/company:
    get:
      operationId: getCompany
      summary: Get details about the company
      description: Retrieve details about the company
      tags:
      - Company
      security:
      - OAuth2:
        - companies:read
      responses:
        '200':
          description: The company details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/company'
        '400':
          description: The request is invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalid_request_error'
        '401':
          description: The request is not authorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unauthorized_error'
        '404':
          description: The company was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/not_found_error'
        '429':
          description: Rate limit exceeded - 100 requests per minute per endpoint per clinic
          headers:
            X-Throttle-Match:
              description: Rate limit identifier
              schema:
                type: string
              example: marketing_api/ip/clinic
            Retry-After:
              description: Number of seconds to wait before retrying
              schema:
                type: integer
              example: 60
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errors'
  /api/2026-01-01/disciplines/{discipline_id}:
    get:
      operationId: getDiscipline
      summary: Get a Discipline
      description: Get a Discipline by its ID
      tags:
      - Disciplines
      security:
      - OAuth2:
        - disciplines:read
      parameters:
      - name: discipline_id
        in: path
        required: true
        description: The Id of the discipline
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: The discipline
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/discipline'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error_response'
        '404':
          description: The discipline was not found
          

# --- truncated at 32 KB (150 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/jane-app/refs/heads/main/openapi/jane-app-jdp-openapi.yml