AlayaCare Visits API

The Visits API from AlayaCare — 8 operation(s) for visits.

Operations 13

GET /submissions/visits Get a list of visits and submissions given a client id.
GET /cancelcodes Get a list of cancel codes
GET /visits Get list of visits
POST /visits Create a new visit
GET /visits/{alayacare_visit_id} Get visit details using AlayaCare ID
PUT /visits/{alayacare_visit_id} Update visit details using AlayaCare ID
DELETE /visits/{alayacare_visit_id} Delete visit using AlayaCare ID
GET /visits/by_id/{visit_id} Get visit details using external ID
PUT /visits/by_id/{visit_id} Update visit details using external ID
DELETE /visits/by_id/{visit_id} Delete visit using external ID
PUT /visits/lock Lock list of visits using Alayacare visit ID or external visit ID
GET /visits/{alayacare_visit_id}/delivery_date Get the delivery date of a visit given the ID
GET /visits/{client_id}/next_visit_id Get the next visit ID for a client

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/alayacare-visits-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

alayacare-visits-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Alayacare Visits API
  version: '1.0'
  description: 'Operations tagged Visits across 2 of this provider''s published API definitions: alayacare-forms-openapi.yml, alayacare-scheduler-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://homecare.alayacare.ca/ext/api/v2/tasks/forms20
- url: https://homecare.alayacare.ca/ext/api/v2/scheduler
tags:
- name: Visits
paths:
  /submissions/visits:
    get:
      tags:
      - Visits
      summary: 'Get a list of visits and submissions given a client id.

        '
      description: "* Requires one of the following ACLs:\n  - `ACL_PATROL_CLIENT_REPORTS_VIEW`\n  - `ACL_CLIENT_SHIFTREPORT_VIEW`\n  - `ACL_CLIENT_REPORTS_VIEW`\n  - `ACL_CLIENT_REPORTS_HISTORICAL_VIEW`\n* `client_id` and `external_client_id` are mutually exclusive\n* `employee_id` and `external_employee_id` are mutually exclusive\n* Must specify either `client_id` or `external_client_id`\n* If the end_date is not specified, it will be defaulted to the end of today's date\n"
      parameters:
      - name: start_at
        description: Filter by start date greater or equal than specified value
        in: query
        schema:
          type: string
          format: date-time
      - name: end_at
        description: Filter by end date less or equal than specified value. If not specified, the default date will be defaulted to the end of today's date
        in: query
        schema:
          type: string
          format: date-time
      - name: client_id
        description: Filter by client ID
        in: query
        schema:
          type: integer
      - name: external_client_id
        description: Filter by external client ID
        in: query
        schema:
          type: string
      - name: employee_id
        description: Filter by employee ID
        in: query
        schema:
          type: integer
      - name: external_employee_id
        description: Filter by external employee ID
        in: query
        schema:
          type: string
      - name: work_session_id
        description: Filter by work session ID
        in: query
        schema:
          type: integer
      - name: service_id
        description: Filter by service ID
        in: query
        schema:
          type: integer
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/count'
      responses:
        '200':
          description: Visit information with form submissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VisitBySubmissionList'
        '401':
          $ref: '#/components/responses/AuthChallenge'
        '400':
          $ref: '#/components/responses/ErrorResponseInvalidRequest'
        '403':
          $ref: '#/components/responses/PermissionError'
      security:
      - basicAuth: []
    servers:
    - url: https://homecare.alayacare.ca/ext/api/v2/tasks/forms20
  /cancelcodes:
    get:
      tags:
      - Visits
      summary: Get a list of cancel codes
      parameters:
      - $ref: '#/components/parameters/page_2'
      - $ref: '#/components/parameters/count_2'
      - $ref: '#/components/parameters/branch_id'
      responses:
        '200':
          description: A list of cancel codes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VisitCancelCodeList'
    servers:
    - url: https://homecare.alayacare.ca/ext/api/v2/scheduler
  /visits:
    get:
      tags:
      - Visits
      summary: Get list of visits
      description: '**Note:** This endpoint returns only patient/client visits (where the client is a patient). To retrieve facility visits, use the `/facility_visits` endpoint instead.

        - `client_id` and `alayacare_client_id` are mutually exclusive, specifying both is an invalid request.

        - `employee_id` and `alayacare_employee_id` are mutually exclusive, specifying both is an invalid request.

        - `service_id` and `alayacare_service_id` are mutually exclusive, specifying both is an invalid request.

        - If the `start_date_from` filter is not specified, it will default to **now**.

        - If the `start_date_to` filter is not specified, it will default to **7 days from now**.

        '
      parameters:
      - name: tags
        in: query
        required: false
        description: 'Filter on a list of tags and return values for at least one matching tag. Filter by multiple tag names using **OR**.

          '
        schema:
          type: array
          items:
            type: string
      - name: start_date_from
        in: query
        required: false
        description: 'Filter by visit start date time greater or equal than specified value.

          If not specified will default to now.

          Expected format is ISO 8601 converted to UTC timezone.

          `start_at` can be used as this filter name

          Ex: `2018-02-03T08:00:00-05:00`

          '
        schema:
          type: string
          format: date-time
      - name: start_date_to
        in: query
        required: false
        description: 'Filter by visit start date time less than or equal than specified value.

          If not specified will default to 7 days from now.

          Expected format is ISO 8601 converted to UTC timezone.

          `end_at` can be used as this filter name

          Ex: `2019-02-18T08:00:00-05:00`

          '
        schema:
          type: string
          format: date-time
      - name: end_date_from
        in: query
        required: false
        description: 'Filter by visit end date time greater or equal than specified value.

          Expected format is ISO 8601 converted to UTC timezone.

          Ex: `2019-02-03T08:00:00-05:00`

          '
        schema:
          type: string
          format: date-time
      - name: end_date_to
        in: query
        required: false
        description: 'Filter by visit end date time less than or equal than specified value.

          Expected format is ISO 8601 converted to UTC timezone.

          Ex: `2018-02-18T08:00:00-05:00`

          '
        schema:
          type: string
          format: date-time
      - name: is_cancelled
        in: query
        required: false
        description: 'If true, returns only visits with a valid cancel code, not including ''On Hold''.

          If false, returns only visits with ''On Hold'' codes or *no* cancel code.

          '
        schema:
          type: boolean
      - name: is_on_hold
        in: query
        required: false
        description: 'If true, returns only visits with an ''On Hold'' cancel code.

          If false, returns only visits with *no* cancel code or with a cancel code other than ''On Hold''.

          '
        schema:
          type: boolean
      - name: is_vacant
        in: query
        required: false
        description: 'If true, returns only visits with *no* employee assigned.

          If false, returns only visits with an employee assigned.

          '
        schema:
          type: boolean
      - name: status
        in: query
        required: false
        description: Status of the visit based on status hierarchy from AlayaCare web application, one or more using **OR**.
        schema:
          type: string
          enum:
          - scheduled
          - vacant
          - on_hold
          - cancelled
          - offered
          - clocked
          - late
          - completed
          - missed
          - approved
      - $ref: '#/components/parameters/branch_id'
      - $ref: '#/components/parameters/client_id'
      - $ref: '#/components/parameters/alayacare_client_id'
      - $ref: '#/components/parameters/employee_id'
      - $ref: '#/components/parameters/alayacare_employee_id'
      - $ref: '#/components/parameters/service_id'
      - $ref: '#/components/parameters/alayacare_service_id'
      - $ref: '#/components/parameters/page_2'
      - $ref: '#/components/parameters/count_2'
      responses:
        '200':
          description: A list of visits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VisitList'
        '401':
          $ref: '#/components/responses/ErrorResponseAuthentication'
    post:
      tags:
      - Visits
      summary: Create a new visit
      description: '- `client_id` or `alayacare_client_id` is required, not specifying one is an invalid request.

        - `client_id` and `alayacare_client_id` are mutually exclusive, specifying both is an invalid request.

        - `employee_id` and `alayacare_employee_id` are mutually exclusive, specifying both is an invalid request..

        - `service_id` and `alayacare_service_id` are mutually exclusive, specifying both is an invalid request..

        **Remarks**

        A visit can be created without specifying the service if the client has a single **active** service.

        If no employee is specified a vacant visit will be created.

        A cancelled visit (`cancelled`= `true`) must include a cancel code ID.

        '
      responses:
        '201':
          description: Visit successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Visit'
        '400':
          $ref: '#/components/responses/ErrorResponseVisitCreateInvalidRequest'
        '401':
          $ref: '#/components/responses/ErrorResponseAuthentication'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VisitCreate'
        description: Visit data in JSON format.
        required: true
    servers:
    - url: https://homecare.alayacare.ca/ext/api/v2/scheduler
  /visits/{alayacare_visit_id}:
    parameters:
    - name: alayacare_visit_id
      description: AlayaCare visit ID
      in: path
      required: true
      schema:
        type: integer
    get:
      tags:
      - Visits
      summary: Get visit details using AlayaCare ID
      description: '**Note:** This endpoint returns only patient/client visits (where the client is a patient).

        If the visit belongs to a facility, this endpoint will return a `404`. Use `GET /facility_visits/{alayacare_visit_id}` instead.

        '
      responses:
        '200':
          description: Visit details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VisitDetails'
        '401':
          $ref: '#/components/responses/ErrorResponseAuthentication'
        '404':
          $ref: '#/components/responses/ErrorResponseVisitNotFound'
    put:
      tags:
      - Visits
      summary: Update visit details using AlayaCare ID
      description: '**Note:** This endpoint only supports patient/client visits. To update a facility visit, use `PUT /facility_visits/{alayacare_visit_id}` instead.


        A cancelled visit (`cancelled`= `true`) must include a cancel code ID.

        '
      responses:
        '200':
          description: Visit successfully updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Visit'
        '400':
          $ref: '#/components/responses/ErrorResponseVisitUpdateInvalidRequest'
        '401':
          $ref: '#/components/responses/ErrorResponseAuthentication'
        '404':
          $ref: '#/components/responses/ErrorResponseVisitNotFound'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VisitUpdate'
        description: Visit data in JSON format
        required: true
    delete:
      tags:
      - Visits
      summary: Delete visit using AlayaCare ID
      responses:
        '204':
          description: Visit successfully deleted
        '401':
          $ref: '#/components/responses/ErrorResponseAuthentication'
        '404':
          $ref: '#/components/responses/ErrorResponseVisitNotFound'
    servers:
    - url: https://homecare.alayacare.ca/ext/api/v2/scheduler
  /visits/by_id/{visit_id}:
    parameters:
    - name: visit_id
      description: External visit ID
      in: path
      required: true
      schema:
        type: string
    get:
      tags:
      - Visits
      summary: Get visit details using external ID
      responses:
        '200':
          description: Visit details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VisitDetails'
        '401':
          $ref: '#/components/responses/ErrorResponseAuthentication'
        '404':
          $ref: '#/components/responses/ErrorResponseVisitNotFound'
    put:
      tags:
      - Visits
      summary: Update visit details using external ID
      description: A cancelled visit (`cancelled`= `true`) must include a cancel code ID.
      responses:
        '200':
          description: Visit successfully updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Visit'
        '400':
          $ref: '#/components/responses/ErrorResponseVisitUpdateInvalidRequest'
        '401':
          $ref: '#/components/responses/ErrorResponseAuthentication'
        '404':
          $ref: '#/components/responses/ErrorResponseVisitNotFound'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VisitUpdate'
        description: Visit data in JSON format
        required: true
    delete:
      tags:
      - Visits
      summary: Delete visit using external ID
      responses:
        '204':
          description: Visit successfully deleted
        '401':
          $ref: '#/components/responses/ErrorResponseAuthentication'
        '404':
          $ref: '#/components/responses/ErrorResponseVisitNotFound'
    servers:
    - url: https://homecare.alayacare.ca/ext/api/v2/scheduler
  /visits/lock:
    put:
      tags:
      - Visits
      summary: Lock list of visits using Alayacare visit ID or external visit ID
      description: '**Remarks**

        - Only Approved visits can be locked using `alayacare_visit_id` or `visit_id`.

        - Visits cannot be **unlocked**.

        '
      responses:
        '200':
          description: Visit successfully locked
        '207':
          $ref: '#/components/responses/ErrorResponsePartialVisitLock'
        '400':
          $ref: '#/components/responses/ErrorResponseVisitLockInvalidRequest'
        '401':
          $ref: '#/components/responses/ErrorResponseAuthentication'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VisitIDList'
        description: Visit data in JSON format
        required: true
    servers:
    - url: https://homecare.alayacare.ca/ext/api/v2/scheduler
  /visits/{alayacare_visit_id}/delivery_date:
    parameters:
    - name: alayacare_visit_id
      description: AlayaCare visit ID
      in: path
      required: true
      schema:
        type: integer
    get:
      tags:
      - Visits
      summary: Get the delivery date of a visit given the ID
      responses:
        '200':
          description: Delivery date for visit
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveryDateInformation'
        '404':
          $ref: '#/components/responses/ErrorResponseDeliveryDateNotFound'
    servers:
    - url: https://homecare.alayacare.ca/ext/api/v2/scheduler
  /visits/{client_id}/next_visit_id:
    parameters:
    - name: client_id
      description: Client ID
      in: path
      required: true
      schema:
        type: integer
    - name: with_canceled
      description: 'If false, get the next visit without a cancel code

        '
      in: query
      required: false
      schema:
        type: boolean
        default: true
    - name: date_utc
      description: Date to filter the next visit. If not specified, date is now.
      in: query
      required: false
      schema:
        type: string
        format: date-time
    get:
      tags:
      - Visits
      summary: Get the next visit ID for a client
      responses:
        '200':
          description: Next visit ID for client
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NextVisitId'
        '404':
          $ref: '#/components/responses/ErrorResponseVisitNotFound'
    servers:
    - url: https://homecare.alayacare.ca/ext/api/v2/scheduler
components:
  schemas:
    ErrorResponse:
      description: Error response
      type: object
      properties:
        code:
          type: integer
          description: Response code
        message:
          type: string
          description: Detailed error message
      required:
      - code
      - message
    VisitBySubmission:
      type: object
      properties:
        id:
          type: integer
          description: visit ID
          example: 1
        service_id:
          type: integer
          description: service ID
          example: 1
        service_name:
          type: string
          description: Service description
          example: Physiotherapy
        start_at:
          type: string
          description: Start time of the visit
          example: 1711154100
        end_at:
          type: string
          description: End time of the visit
          example: 1711157700
        employee_id:
          type: integer
          description: ID of employee that is assigned to the visit
          example: 101
        submissions:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
                description: Submission ID
                example: 123
              name:
                type: string
                description: Name of the form
                example: Physiotherapy
              schema_id:
                type: string
                description: Schema ID of the form
                example: c3560f0e-7a72-41ea-9d2b-b4d9457e4339
    VisitBySubmissionList:
      description: A list of visits
      type: object
      required:
      - count
      - page
      - total_pages
      - items_per_page
      - items
      properties:
        count:
          description: Number of items in the response
          type: integer
          example: 1
        page:
          description: Current page number
          type: integer
          example: 1
        total_pages:
          description: Total number of pages available
          type: integer
          example: 1
        items_per_page:
          description: Maximum number of item per page
          type: integer
          example: 1
        items:
          type: array
          items:
            $ref: '#/components/schemas/VisitBySubmission'
    Address:
      type: object
      properties:
        order:
          type: integer
          description: Order of location in route
          example: 1
        is_home_address:
          type: boolean
          description: If address defined matches the client address from the client profile, this value is true. Otherwise, the value is false.
          example: true
        latitude:
          type: number
          description: Latitude of the address
          example: 45.5017
        longitude:
          type: number
          description: Longitude of the address
          example: 73.5673
        address_1:
          type: string
          description: First line of the address
          example: 4200 St Laurent Blvd
        address_2:
          type: string
          description: Second line of the address
          example: '800'
        city:
          type: string
          description: City
          example: Montreal
        state:
          type: string
          description: State or province
          example: QC
        zip_code:
          type: string
          description: ZIP or postal code
          example: H2W 2R2
        country:
          type: string
          description: Country
          example: Canada
    ErrorResponse_2:
      description: Error response
      type: object
      properties:
        code:
          type: integer
          example: 400
          description: Response code
        message:
          type: string
          example: Invalid request
          description: Detailed error message
      required:
      - code
      - message
    VisitTag:
      type: string
      description: Name of tag.
      example: First visit
    VisitCancelCode:
      description: Visit cancellation code
      type:
      - object
      - 'null'
      properties:
        id:
          type: integer
          description: AlayaCare cancel code ID
          example: 1
        code:
          type: string
          description: Cancel code
          example: CLNT_REQ_RESCHEDULE
        description:
          type:
          - string
          - 'null'
          description: Cancel code description
          example: Client requested reschedule
      required:
      - id
      - code
    BaseVisitDetails:
      type: object
      properties:
        alayacare_employee_id:
          type:
          - integer
          - 'null'
          format: int64
          description: AlayaCare employee ID
          example: 101
        alayacare_service_id:
          type: integer
          format: int64
          description: AlayaCare service ID
          example: 1
        alayacare_visit_id:
          type: integer
          format: int64
          description: AlayaCare visit ID
          example: 10001
        employee_id:
          type:
          - string
          - 'null'
          description: External employee ID
          example: sor_employee_id_1
        service_id:
          type:
          - string
          - 'null'
          description: External service ID
          example: sor_service_id_1
        visit_id:
          type:
          - string
          - 'null'
          description: External visit ID
          example: sor_visit_id_1
        status:
          type: string
          description: Status of the visit based on status hierarchy from AlayaCare web application.
          example: scheduled
          enum:
          - scheduled
          - vacant
          - on_hold
          - cancelled
          - offered
          - clocked
          - late
          - completed
          - missed
          - approved
        start_at:
          type: string
          format: date-time
          description: Visit start time (ISO 8601)
          example: '2017-07-08T13:30:00+00:00'
        end_at:
          type: string
          format: date-time
          description: Visit end time (ISO 8601)
          example: '2017-07-08T14:00:00+00:00'
        cancelled:
          type: boolean
          description: Indicates if visit is cancelled
        employee:
          $ref: '#/components/schemas/EmployeeDetails'
        service:
          $ref: '#/components/schemas/VisitServiceDetails'
        funders:
          description: Visit funders
          type: array
          items:
            $ref: '#/components/schemas/VisitFunderDetails'
        work_sessions:
          type: array
          items:
            $ref: '#/components/schemas/VisitWorkSession'
        adls:
          type: array
          items:
            $ref: '#/components/schemas/VisitDailyActivity'
        notes:
          type: array
          items:
            $ref: '#/components/schemas/VisitNote'
        cancel_code:
          $ref: '#/components/schemas/VisitCancelCode'
        activity_codes:
          type: array
          items:
            $ref: '#/components/schemas/VisitActivityCode'
        skills:
          type: array
          items:
            $ref: '#/components/schemas/VisitSkill'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/VisitTag'
        service_instructions:
          description: Service instructions
          type:
          - string
          - 'null'
          example: Call in the morning to confirm each visit
        service_code_id:
          description: Visit override service code id.
          type:
          - integer
          - 'null'
          example: 1
        service_code_name:
          description: Visit override service code name.
          type:
          - string
          - 'null'
          example: Default Appointment
        route:
          type: array
          items:
            $ref: '#/components/schemas/Address'
      required:
      - alayacare_service_id
      - alayacare_visit_id
      - start_at
      - end_at
      - cancelled
      - employee
      - service
      - work_sessions
      - adls
      - notes
      - cancel_code
      - activity_codes
      - tags
      - service_instructions
    VisitCancelCodeList:
      allOf:
      - $ref: '#/components/schemas/PaginatedList'
      description: Paginated list of cancel codes
      properties:
        items:
          type: array
          items:
            allOf:
            - $ref: '#/components/schemas/VisitCancelCode'
            properties:
              branch:
                $ref: '#/components/schemas/Branch'
    VisitWorkSession:
      type: object
      description: Visit work session
      properties:
        clock_in:
          description: Work session start time
          type: string
          format: date-time
          example: '2017-07-08T13:30:00+00:00'
        clock_out:
          description: Work session end time
          type:
          - string
          - 'null'
          format: date-time
          example: '2017-07-08T14:30:00+00:00'
        employee_id:
          description: Work session employee id
          type: integer
          example: 101
        clock_in_location:
          $ref: '#/components/schemas/Location'
        clock_out_location:
          $ref: '#/components/schemas/Location'
    DeliveryDateInformation:
      properties:
        alayacare_visit_id:
          type: integer
          description: AlayaCare visit ID
          example: 17432
        delivery_date:
          type: string
          description: Delivery date for visit in UTC format
          example: '2022-12-13'
    VisitDailyActivity:
      type: object
      description: Activity of daily living
      properties:
        name:
          type: string
          description: ADL description
          example: Take out the trash
        completed:
          type: boolean
          description: Indicates if the ADL was completed during the visit
          example: false
        reason:
          type:
          - string
          - 'null'
          description: Reason why the ADL was not completed, in case it wasn't
          example: Not a garbage day
    Location:
      description: User location information
      type:
      - object
      - 'null'
      properties:
        lat:
          type: number
          description: latitude
          example: 45.518
        lng:
          type: number
          description: longitude
          example: -73.582
    VisitActivityCode:
      type: object
      properties:
        id:
          type: integer
          description: AlayaCare activity code ID
          example: 1
        code:
          type: string
          description: Activity code
          example: 01- Assessment
        description:
          type: string
          description: Activity code description
          example: New client assessment
      required:
      - id
      - code
    VisitIDList:
      type: object
      properties:
        alayacare_visit_ids:
          type: array
          description: List of Alayacare visit IDs (visit IDs should be listed separated by a coma)
          example:
          - 1245
          - 1246
          items:
            type: integer
            description: Alayacare visit ID.
            required:
            - alayacare_visit_ids
        visit_ids:
          type: array
          description: List of Alayacare external visit IDs
          example:
          - ext_visit_1245
          - ext_visit_1246
          items:
            type: string
            description: Alayacare external visit ID (External visit IDs should be listed separated by a coma).
            required:
            - visit_ids
    VisitList:
      allOf:
      - $ref: '#/components/schemas/PaginatedList'
      description: Paginated list of visits
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/VisitListDetails'
    VisitUpdate:
      allOf:
      - $ref: '#/components/schemas/BaseVisitUpdate'
      properties:
        client_id:
          description: External client ID
          type: string
          example: sor_client_id_1
        alayacare_client_id:
          description: AlayaCare client ID
          type: integer
          example: 1001
    NextVisitId:
      type: object
      properties:
        visit_id:
          type: integer
          description: Visit ID
          example: 1000
    VisitDetails:
      allOf:
      - $ref: '#/components/schemas/BaseVisitDetails'
      properties:
        alayacare_visit_guid:
          type: integer
          format: int64
          description: AlayaCare visit GUID
          example: 10002
        alayacare_client_id:
          type: integer
          format: int64
          description: AlayaCare client ID
          example: 1001
        client_id:
          type:
          - string
          - 'null'
          description: External client ID
          example: sor_client_id_1
        client:
          $ref: '#/components/schemas/ClientBranchDetails'
        facility:
          $ref: '#/components/schemas/VisitFacilityDetails'
        timekeeping:
          $ref: '#/components/schemas/VisitTimekeeping'
      required:
      - alayacare_client_id
      - client
    Visit:
      allOf:
      - $ref: '#/components/schemas/BaseVisit'
      properties:
        alayacare_client_id:
          type: integer
          description: AlayaCare client ID
          example: 1001
        client_id:
          type:
          - string
          - 'null'
          description: External client ID
          example: sor_client_id_1
      required:
      - alayacare_client_id
    EmployeeDetails:
      description: Visit employee details
      type:
      - object
      - 'null'
      properties:
        id:
          type: integer
          description: AlayaCare employee ID
          example: 1001
        external_id:
          type:
          - string
          - 'null'
          description: External employee ID
          example: sor_employee_id_1
        profile_id:
          type: integer
          description: AlayaCare client profile ID
          example: 7891
        full_name:
          type: string
          description: Employee full name
          example: Jane Smith
        email:
          type: string
          description: Employee email
          example: employee_1@workplace.com
        timezone:
          type: string
          description: Time Zone name in IANA format (iana.org/time-zones)
          example: America/Toronto
      required:
      - id
      - full_name
    VisitFacilityDetails:
      description: Visit facility
      type:
      - object
      - 'null'
      properties:
        id:
          type: integer
          description: AlayaCare facility ID
          example: 1
        name:
          type: string
          description: Facility name
          example: Clinic name
        external_id:
          type:
          - string
          - 'null'
          description: External facility ID
          example: sor_clinic_id_1
        timezone:
          type: string
          description: Time Zone name in IANA format (iana.org/time-zones)
          example: America/Toronto
      required:
      - id
      - name
    VisitTimekeeping:
      description: The state of the verified start and end times
      type: object
      properties:
        verified_start_time:
          description: Datetime string referring to the time the first clock in happened, or one manually overwritten
          type: string
          format: date-time
          example: '2017-07-08T13:30:00+00:00'
        verified_end_time:
          description: Datetime string referring to the time the last clock out happened, or one manually overwritten
          type: string
          format: d

# --- truncated at 32 KB (48 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/alayacare/refs/heads/main/openapi/alayacare-visits-api-openapi.yml