NexHealth Onboardings API

An Onboarding resource

OpenAPI Specification

nexhealth-onboardings-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: NexHealth Adjustment Types Onboardings API
  description: v3.0.0 and v20240412 are two names for the same API version; the Nex-Api-Version header accepts either value. Welcome to the developer hub and documentation for NexHealth API. This section of guide describes the operations, response parameters, request parameters, and parameter constraints related to User API. The term Operations refer to functions or methods. The operations are included in requests and send to the web server. Each operation performs a different action or a query on database.
  termsOfService: https://www.nexhealth.com/terms-of-service
  contact:
    name: NexHealth
    email: info@nexhealth.com
  license:
    name: NexHealth License 1.0
    url: https://www.nexhealth.com/privacy
  version: v20240412
servers:
- url: https://nexhealth.info
security:
- Authorization: []
tags:
- name: Onboardings
  description: An Onboarding resource
paths:
  /onboardings:
    get:
      summary: View onboardings
      description: 'Returns the onboardings created by your organization. Each record represents a practice setup flow: either a full onboarding of a new institution or an installation added to an existing institution. Each setup flow appears once: installations that were created as part of an onboarding are represented by their parent onboarding and are not listed separately, although their IDs (e.g. from webhook events) can still be fetched individually via GET /onboardings/:id. Optionally filter by subdomain or status.'
      parameters:
      - in: header
        name: Nex-Api-Version
        description: The NexHealth API version
        required: true
        schema:
          type: string
          default: v3.0.0
      - in: query
        name: subdomain
        description: Filter by institution subdomain. Must be a subdomain your application has access to (as returned by the API in a previous query); an unknown or inaccessible subdomain returns 403 Forbidden. When omitted, onboardings for all of your organization's institutions are returned, including onboardings not yet matched to an institution.
        required: false
        schema:
          type: string
      - in: query
        name: status
        description: Filter by status
        required: false
        schema:
          type: string
          enum:
          - in_progress
          - complete
          - failed
      - in: query
        name: start_cursor
        description: First item of the current page. Starts empty
        required: false
        schema:
          type: string
      - in: query
        name: end_cursor
        description: Last item of the current page. Starts empty
        required: false
        schema:
          type: string
      - in: query
        name: per_page
        description: Number of results to return per page. Maximum allowed amount is 1000.
        required: false
        schema:
          type: integer
          format: int32
          default: 5
      - in: query
        name: sort
        description: "Optional comma-separated string of fields to sort on.\nInclude a leading dash for descending order.\n\nAvailable fields:\n  * created_at\n  * -created_at\n  * status\n  * -status\n  * subdomain\n  * -subdomain\n"
        required: false
        schema:
          type: string
          default: -created_at
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_V20240412_Entities_Api_Onboarding_Collection_Response_WithCursor'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Errors_BadRequest'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Errors_Unauthorized'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Errors_Forbidden'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Errors_InternalServerError'
      tags:
      - Onboardings
      operationId: getOnboardings
    post:
      summary: Create onboarding
      description: Creates an onboarding link to set up NexHealth at a practice. Include institution_name to onboard a new institution, or subdomain to add locations to an existing institution. Send the returned url to practice staff; it expires 3 months after creation. Only production applications can create onboardings.
      parameters:
      - in: header
        name: Nex-Api-Version
        description: The NexHealth API version
        required: true
        schema:
          type: string
          default: v3.0.0
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postOnboardings'
        required: true
      responses:
        '201':
          description: Successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_V20240412_Entities_Api_Onboarding_Response'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Errors_BadRequest'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Errors_Unauthorized'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Errors_Forbidden'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Errors_NotFound'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Errors_InternalServerError'
      tags:
      - Onboardings
      operationId: postOnboardings
  /onboardings/{hashid}:
    get:
      summary: View onboarding
      description: Returns a single onboarding by its ID. Responds with 404 if the ID does not exist or was created by another organization.
      parameters:
      - in: header
        name: Nex-Api-Version
        description: The NexHealth API version
        required: true
        schema:
          type: string
          default: v3.0.0
      - in: path
        name: hashid
        description: The ID of the onboarding, as returned in the id field by the list and create endpoints.
        required: true
        example: y2wxl82zldm4
        schema:
          type: string
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_V20240412_Entities_Api_Onboarding_Response'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Errors_BadRequest'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Errors_Unauthorized'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Errors_Forbidden'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Errors_NotFound'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Errors_InternalServerError'
      tags:
      - Onboardings
      operationId: getOnboardingsHashid
components:
  schemas:
    API_Errors_InternalServerError:
      type: object
      properties:
        code:
          type: boolean
          description: Indicates the success or failure of the request.
        description:
          type: string
          description: Additional context about the request to help with debugging.
        data:
          type: object
        error:
          type: array
          items:
            type: string
          description: Any errors that occured during the execution of the request.
      description: API_Errors_InternalServerError model
    API_Errors_Forbidden:
      type: object
      properties:
        code:
          type: boolean
          description: Indicates the success or failure of the request.
        description:
          type: string
          description: Additional context about the request to help with debugging.
        data:
          type: object
        error:
          type: array
          items:
            type: string
          description: Any errors that occured during the execution of the request.
      description: API_Errors_Forbidden model
    postOnboardings:
      type: object
      properties:
        onboarding:
          type: object
          description: Onboarding details
          properties:
            institution_name:
              type: string
              description: The institution's name. Only include this if you are onboarding a new institution.
              example: Smile Dental Group
            institution_zip_code:
              type: string
              description: The institution's zip code. Only used when onboarding a new institution (institution_name); ignored when subdomain is provided. If you omit it, practice staff will be asked to enter it during setup.
              example: '94105'
            institution_website:
              type: string
              description: The institution's website URL. Only include this if you are onboarding a new institution. If you omit it, practice staff will be asked to enter it during setup.
              example: https://www.smiledentalgroup.example.com
            institution_email:
              type: string
              description: The institution's primary email address. Only include this if you are onboarding a new institution. If you omit it, practice staff will be asked to enter it during setup.
              example: office@smiledentalgroup.example.com
            subdomain:
              type: string
              description: The subdomain for the institution you want to add locations to. You need to include this when you want to add new locations to an existing institution. Ensure the subdomain used is returned by the API in a previous query. If both subdomain and institution_name are provided, subdomain takes precedence and all institution_* fields are ignored.
              example: smile-dental
            emr_name:
              type: string
              description: 'The name of the electronic medical record (EMR) system where you want to install the Synchronizer. Note: drchrono is only supported when onboarding a new institution (institution_name), not when adding to an existing institution (subdomain).'
              enum:
              - athena
              - curve2
              - cloud9
              - denticon
              - dentrix
              - dentrixascend
              - drchrono
              - eaglesoft
              - ecw
              - modmed
              - nextgen
              - opendental
              example: opendental
      required:
      - onboarding
      description: Create onboarding
    API_V20240412_Entities_Api_Onboarding:
      type: object
      properties:
        id:
          type: string
          example: y2wxl82zldm4
          description: The ID of the onboarding process.
        created_at:
          type: string
          format: date-time
          example: '2026-01-01T00:00:00Z'
          description: The timestamp the onboarding url was created.
        subdomain:
          type: string
          example: test-subdomain
          description: The subdomain of the institution this onboarding belongs to. Null until the onboarding has been matched to an institution (e.g. while a new institution is still being set up).
          nullable: true
        url:
          type: string
          example: https://app.nexhealth.com/onboardings/y2wxl82zldm4
          description: The link to send to practice staff to complete setup. Format varies by onboarding type. Expires at url_expires_at.
        url_expires_at:
          type: string
          format: date-time
          example: '2026-02-01T00:00:00Z'
          description: When the url will expire and no longer be valid.
        status:
          type: string
          enum:
          - in_progress
          - complete
          - failed
          example: in_progress
          description: 'Current state of the onboarding. in_progress: the link has been created and setup is not finished; complete: setup finished (including installations completed manually by NexHealth); failed: the onboarding failed, was cancelled, or was disabled and will not proceed.'
        booking_params:
          type: object
          example:
            location_id: 105
            appointment_type_ids:
            - 19
            - 20
          description: Data collected during setup for online booking. Contains "location_id" (ID of the location selected during setup; may be serialized as an integer or numeric string) and "appointment_type_ids" (array of appointment type IDs), each present only after the corresponding setup step has run. Always null for installation-based onboardings. Before setup begins it is an empty object on the retrieve and create endpoints and null on the list endpoint.
          nullable: true
        availability_ready_at:
          type: string
          format: date-time
          example: '2026-01-01T00:00:00Z'
          description: When the onboarding location first became bookable. Null until availability is ready.
          nullable: true
    API_Errors_Unauthorized:
      type: object
      properties:
        code:
          type: boolean
          description: Indicates the success or failure of the request.
        description:
          type: string
          description: Additional context about the request to help with debugging.
        data:
          type: object
        error:
          type: array
          items:
            type: string
          description: Any errors that occured during the execution of the request.
      description: API_Errors_Unauthorized model
    API_V20240412_Entities_Api_Onboarding_Collection_Response_WithCursor:
      type: object
      properties:
        code:
          type: boolean
          example: false
          description: Indicates the success or failure of the request
        description:
          type: string
          example: Description
          description: Additional context on the request to help with debugging.
        error:
          type: array
          items:
            type: string
          example:
          - Error message
          description: Any errors that occur during the execution of the request.
        data:
          type: array
          items:
            $ref: '#/components/schemas/API_V20240412_Entities_Api_Onboarding'
        page_info:
          type: object
          example:
            has_previous_page: false
            has_next_page: false
            start_cursor: AAAAA
            end_cursor: BBBBBB
          description: Pagination information that can be used for fetching previous and next pages.
      description: API_V20240412_Entities_Api_Onboarding_Collection_Response_WithCursor model
    API_Errors_BadRequest:
      type: object
      properties:
        code:
          type: boolean
          description: Indicates the success or failure of the request.
        description:
          type: string
          description: Additional context about the request to help with debugging.
        data:
          type: object
        error:
          type: array
          items:
            type: string
          description: Any errors that occured during the execution of the request.
      description: API_Errors_BadRequest model
    API_V20240412_Entities_Api_Onboarding_Response:
      type: object
      properties:
        code:
          type: boolean
          example: false
          description: Indicates the success or failure of the request
        description:
          type: string
          example: Description
          description: Additional context on the request to help with debugging.
        error:
          type: array
          items:
            type: string
          example:
          - Error message
          description: Any errors that occur during the execution of the request.
        data:
          $ref: '#/components/schemas/API_V20240412_Entities_Api_Onboarding'
        count:
          type: integer
          format: int32
          example: 2
          description: Number of total objects, in case of collection.
      description: API_V20240412_Entities_Api_Onboarding_Response model
    API_Errors_NotFound:
      type: object
      properties:
        code:
          type: boolean
          description: Indicates the success or failure of the request.
        description:
          type: string
          description: Additional context about the request to help with debugging.
        data:
          type: object
        error:
          type: array
          items:
            type: string
          description: Any errors that occured during the execution of the request.
      description: API_Errors_NotFound model
  securitySchemes:
    Authorization:
      type: apiKey
      name: Authorization
      in: header