IntelyCare External Scheduling API

REST API for integrating a facility's scheduling, EHR or workforce system with the IntelyCare Staffing platform. Clients create, update and delete shift requests, submit and update timecards for billing reconciliation, and post clock-in/clock-out events. All requests and responses are JSON-encoded; bulk operations are not supported (one object per request). Authentication is an X-API-KEY header scoped to a single client, paired with an X-CLIENT-ID header. Real-time shift status is pushed back via HMAC-SHA256-signed webhooks (Shift Accept, Shift Release).

OpenAPI Specification

intelycare-external-scheduling-openapi.yml Raw ↑
openapi: 3.0.0
servers:
- url: //api.intelycare.com/external-scheduling/v1/
  description: Default server
- url: //api.pre.prod01.platform.intelycare.com/external-scheduling/v1/
  description: Sandbox server
info:
  description: '# Introduction

    Welcome to the IntelyCare API documentation, your gateway to seamless integration with the IntelyCare
    Staffing platform. Our REST API empowers clients to efficiently create shift requests, enabling a
    streamlined process for managing workforce scheduling. By leveraging this API, you can enhance your
    systems with real-time information about shift status, including when a shift has been filled and
    details about the assigned IntelyPro.


    # Overview


    The IntelyCare API facilitates communication between your application and the IntelyCare platform,
    enabling a seamless exchange of data. This documentation serves as a comprehensive guide to help you
    integrate your systems with our powerful RESTful API. All requests and responses are JSON-encoded,
    and use standard HTTP response codes and authentication schemes. Bulk operations are not supported.
    You can work with only one object per request.


    To get started with the IntelyCare API, refer to the detailed documentation below. We provide comprehensive
    information on authentication, endpoints, request and response formats, and error handling.


    # Authentication


    IntelyCare offers the following authentication schemes:


    | Type                      | Usage       | Description                                                    |
    Example                                                                   |

    | ------------------------- | ----------- | --------------------------------------------------------------
    | ------------------------------------------------------------------------- |

    | apiKey                    | REST APIs   | Required as `X-API-KEY` header for all RESTful calls           |
    `d1015a83-9f5f-4a4d-b5fd-4e756ed1d282`                                    |

    | HMAC Signature (SHA256)   | Webhooks    | Provided as `X-Signature-IC` header on all webhooks            |
    `bcc151a55acf3d93c097e768f2b96f82d91b56d6fe2a102818b70f0fdfd0ccd1`        |


    > :memo: **Note:** API Keys are tied to individual clients and cannot be used outside their provided
    scope


    # Support and Assistance


    If you have any questions, encounter issues, or require assistance during the integration process,
    our dedicated support team is here to help. Reach out to apisupport@intelycare.com for prompt and
    reliable assistance.


    Thank you for choosing IntelyCare. Let''s build a more efficient and connected healthcare workforce
    together!

    '
  version: 1.0.0
  title: IntelyCare API Documentation
  contact:
    name: API Support
    email: apisupport@intelycare.com
  x-logo:
    url: https://www.intelycare.com/wp-content/uploads/2023/08/ic-logo-2-1.svg
    altText: IntelyCare Logo
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
tags:
- name: Shift
  description: Integrate with the IntelyCare platform to create shift requests effortlessly. Our API allows
    you to programmatically submit and manage shift requests, providing you with the flexibility to adapt
    to your workforce scheduling needs.
- name: Timecard
  description: Simplify billing reconciliation by exchanging timecard information seamlessly. Our API
    supports the exchange of accurate timekeeping data, ensuring a smooth and efficient process for both
    you and the IntelyCare platform.
- name: Webhook Events
  description: Real-time updates on the status of submitted shifts. The API response includes valuable
    information about the assigned IntelyPro, giving you insights into the workforce handling each shift.
- name: Check In / Check Out
  description: Easily manage check-in and check-out events for shifts. Our API allows you to programmatically
    submit and manage check-in and check-out events, providing you with the flexibility to adapt to your
    workforce scheduling needs.
x-tagGroups:
- name: APIs
  tags:
  - Shift
  - Timecard
  - Webhook Events
  - Check In / Check Out
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY
    HMACSignature:
      type: apiKey
      in: header
      name: X-Signature-IC
  responses:
    UnauthorizedError:
      description: Unauthorized
      headers:
        WWW_Authenticate:
          schema:
            type: string
      content:
        application/json:
          examples:
            foo:
              value:
                message: Unauthorized
  schemas:
    TimecardAttribute:
      description: Attribute associated with Timecard
      type: string
      enum:
      - CHECK_IN
      - CHECK_OUT
      - BREAK_START
      - BREAK_END
      - SKIP_BREAK
      - CHECK_IN_SUPERVISOR
      - CHECK_IN_SIGNATURE
      - CHECK_OUT_SUPERVISOR
      - CHECK_OUT_SIGNATURE
    IC-CorrelationID:
      description: Unique uuid that can be used for debugging purposes
      type: string
security:
- ApiKeyAuth: []
- HMACSignature: []
paths:
  /api/shifts:
    post:
      tags:
      - Shift
      operationId: shift_create_api_v1
      summary: Create
      security:
      - ApiKeyAuth: []
      parameters:
      - name: X-API-KEY
        in: header
        description: API key issued to a specific client. This can only be used to access data within
          the client scope.
        example: d1015a839f5f
        required: true
        schema:
          type: string
      - name: X-CLIENT-ID
        in: header
        description: Intelycare's Unique identifier of the client.
        example: '1234'
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - externalShiftId
              - shiftStartTime
              - shiftEndTime
              - shiftUnit
              - healthcareProfessionalType
              - shiftSource
              properties:
                externalShiftId:
                  description: Unique identifier for the shift
                  type: string
                shiftStartTime:
                  description: Shift start date/time can be in the UTC timezone in ISO 8601 format ex.
                    "2024-01-24T05:04:34Z" OR Local Time by omitting the "Z" at the end. ex. "2024-01-24T05:04:34".
                    The local time will be based on the configuration of the facility in the IntelyCare
                    system.
                  type: string
                  example: 'UTC: 2024-01-24T05:04:34Z, local time: 2024-01-24T05:04:34'
                shiftEndTime:
                  description: Shift end date/time can be in the UTC timezone in ISO 8601 format ex. "2024-01-24T05:04:34Z"
                    OR Local Time by omitting the "Z" at the end. ex. "2024-01-24T05:04:34". The local
                    time will be based on the configuration of the facility in the IntelyCare system.
                  type: string
                  example: 'UTC: 2024-01-24T05:04:34Z, local time: 2024-01-24T05:04:34'
                shiftUnit:
                  description: Facility unit where the care should be delivered by the healthcare professional
                  type: string
                healthcareProfessionalType:
                  description: 'Healthcare professional qualification needed for the given shift. For
                    example: “CNA”,”LPN”,”RN”.'
                  type: string
                shiftSource:
                  description: Shift origination point
                  type: string
                timezone:
                  description: Timezone for the shifts
                  type: string
                shiftBoostPercentage:
                  description: Percentage amount for boosting the shift
                  type: integer
                  default: 0
            example:
              externalShiftId: '2546810'
              shiftStartTime: '2024-01-16T23:00:00'
              shiftEndTime: '2024-01-17T07:00:00'
              shiftUnit: 1st Floor
              healthcareProfessionalType: LPN
              shiftSource: qwerty
              shiftBoostPercentage: 10
              timezone: ET
            x-codeSamples:
            - lang: cURL
              label: CLI
              source: 'curl --request POST \

                --url ''https://data.apiexample.com/api/example/batch_query/json?format=json'' \

                --header ''content-type: application/octet-stream: '' \

                --data ''{}''

                '
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              example:
                data:
                  clientId: 1234
                  internalShiftId: 10174202
                  externalShiftId: '2546810'
                  shiftStartTime: '2024-01-16T23:00:00'
                  shiftEndTime: '2024-01-17T07:00:00'
                  shiftDate: '2024-01-16'
                  shiftUnit: 1st Floor
                  healthcareProfessionalType: LPN
                  shiftSource: qwerty
                  shiftBoostPercentage: 10
                  timezone: ET
        '400':
          description: 400 Bad Request
          headers:
            IC-CorrelationID:
              $ref: '#/components/schemas/IC-CorrelationID'
          content:
            application/json:
              examples:
                foo:
                  value:
                    message: Invalid input- Shift end time must be later than the shift start time.
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '422':
          description: 422 Unprocessable Entity
          headers:
            IC-CorrelationID:
              $ref: '#/components/schemas/IC-CorrelationID'
          content:
            application/json:
              examples:
                foo:
                  value:
                    message: Invalid input- shiftEndTime must be a date in the present or in the future.
  /api/shifts/{shiftId}:
    put:
      tags:
      - Shift
      operationId: shift_update_api_v1
      summary: Update
      security:
      - ApiKeyAuth: []
      parameters:
      - name: X-API-KEY
        in: header
        description: API key issued to a specific client. This can only be used to access data within
          the client scope.
        example: d1015a83-9f5f-4a4d-b5fd-4e756ed1d282
        required: true
        schema:
          type: string
      - name: X-CLIENT-ID
        in: header
        description: Intelycare's Unique identifier of the client.
        example: '1234'
        required: true
        schema:
          type: string
      - name: shiftId
        in: path
        description: Intelycare's Unique identifier of the shift.
        example: '10174202'
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - externalShiftId
              - shiftStartTime
              - shiftEndTime
              - shiftUnit
              - healthcareProfessionalType
              - shiftSource
              properties:
                shiftStartTime:
                  description: Shift start date/time can be in the UTC timezone in ISO 8601 format ex.
                    "2024-01-24T05:04:34Z" OR Local Time by omitting the "Z" at the end. ex. "2024-01-24T05:04:34".
                    The local time will be based on the configuration of the facility in the IntelyCare
                    system.
                  type: string
                  example: 'UTC: 2024-01-24T05:04:34Z, local time: 2024-01-24T05:04:34'
                shiftEndTime:
                  description: Shift end date/time can be in the UTC timezone in ISO 8601 format ex. "2024-01-24T05:04:34Z"
                    OR Local Time by omitting the "Z" at the end. ex. "2024-01-24T05:04:34". The local
                    time will be based on the configuration of the facility in the IntelyCare system.
                  type: string
                  example: 'UTC: 2024-01-24T05:04:34Z, local time: 2024-01-24T05:04:34'
                shiftUnit:
                  description: Facility unit where the care should be delivered by the healthcare professional
                  type: string
                healthcareProfessionalType:
                  description: 'Healthcare professional qualification needed for the given shift. For
                    example: “CNA”,”LPN”,”RN”.'
                  type: string
                shiftSource:
                  description: Shift origination point
                  type: string
                shiftBoostPercentage:
                  description: Percentage amount for boosting the shift
                  type: integer
                  default: 0
                timezone:
                  description: Timezone for the shifts
                  type: string
            example:
              shiftStartTime: '2024-01-16T23:00:00'
              shiftEndTime: '2024-01-17T07:00:00'
              shiftUnit: 1st Floor
              healthcareProfessionalType: LPN
              shiftSource: qwerty
              shiftBoostPercentage: 10
              timezone: ET
            x-codeSamples:
            - lang: cURL
              label: CLI
              source: 'curl --request POST \

                --url ''https://data.apiexample.com/api/example/batch_query/json?format=json'' \

                --header ''content-type: application/octet-stream: '' \

                --data ''{}''

                '
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              example:
                data:
                  clientId: 1234
                  internalShiftId: 10174202
                  externalShiftId: '2546810'
                  shiftStartTime: '2024-01-16T23:00:00'
                  shiftEndTime: '2024-01-17T07:00:00'
                  shiftDate: '2024-01-16'
                  shiftUnit: 1st Floor
                  healthcareProfessionalType: LPN
                  shiftSource: qwerty
                  shiftBoostPercentage: 10
                  timezone: ET
        '400':
          description: 400 Bad Request
          headers:
            IC-CorrelationID:
              $ref: '#/components/schemas/IC-CorrelationID'
          content:
            application/json:
              examples:
                foo:
                  value:
                    message: Shift ID is not valid!
        '401':
          $ref: '#/components/responses/UnauthorizedError'
    delete:
      tags:
      - Shift
      operationId: shift_delete_api_v1
      summary: Delete
      security:
      - ApiKeyAuth: []
      parameters:
      - name: X-API-KEY
        in: header
        description: API key issued to a specific client. This can only be used to access data within
          the client scope.
        example: d1015a83-9f5f-4a4d-b5fd-4e756ed1d282
        required: true
        schema:
          type: string
      - name: X-CLIENT-ID
        in: header
        description: Intelycare's Unique identifier of the client.
        example: '1234'
        required: true
        schema:
          type: string
      - name: shiftId
        in: path
        description: Intelycare's Unique identifier of the shift.
        example: '10174202'
        required: true
        schema:
          type: string
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              example:
                data:
                  internalShiftId: 10174202
                  shiftDate: '2024-01-16'
                  removed: 1
        '400':
          description: 400 Bad Request
          headers:
            IC-CorrelationID:
              $ref: '#/components/schemas/IC-CorrelationID'
          content:
            application/json:
              examples:
                foo:
                  value:
                    message: Shift ID is not valid!
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /api/timecards:
    post:
      tags:
      - Timecard
      operationId: timecard_create_api_v1
      summary: Create
      security:
      - ApiKeyAuth: []
      parameters:
      - name: X-API-KEY
        in: header
        description: API key issued to a specific client. This can only be used to access data within
          the client scope.
        example: d1015a83-9f5f-4a4d-b5fd-4e756ed1d282
        required: true
        schema:
          type: string
      - name: X-CLIENT-ID
        in: header
        description: Intelycare's Unique identifier of the client.
        example: '1234'
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - externalShiftId
              - checkIn
              - checkOut
              - breakDuration
              properties:
                externalShiftId:
                  description: Unique identifier for the shift
                  type: string
                checkIn:
                  description: Shift check-in timestamp in ISO 8601 format and in UTC timezone
                  type: string
                  example: '2024-01-17T07:00:00'
                checkOut:
                  description: Shift check-out timestamp in ISO 8601 format and in UTC timezone
                  type: string
                  example: '2024-01-17T15:00:00'
                breakDuration:
                  description: Duration (in minutes) of shift break
                  type: integer
                  example: 30
            example:
              externalShiftId: '2546810'
              checkIn: '2024-01-17T07:00:00'
              checkOut: '2024-01-17T15:00:00'
              breakDuration: 30
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              example:
                clientId: 1234
                externalShiftId: '2546810'
                checkIn: '2024-01-17T07:00:00'
                checkOut: '2024-01-17T15:00:00'
                breakDuration: 30
                errors: null
                createdAt: '2024-01-17T15:01:00'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
    put:
      tags:
      - Timecard
      operationId: update_timecard_api_v1
      summary: Update
      security:
      - ApiKeyAuth: []
      parameters:
      - name: X-API-KEY
        in: header
        description: API key issued to a specific client. This can only be used to access data within
          the client scope.
        example: d1015a83-9f5f-4a4d-b5fd-4e756ed1d282
        required: true
        schema:
          type: string
      - name: X-CLIENT-ID
        in: header
        description: Intelycare's Unique identifier of the client.
        example: '1234'
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - externalShiftId
              - checkIn
              - checkOut
              - breakDuration
              properties:
                externalShiftId:
                  description: Unique identifier for the shift
                  type: integer
                checkIn:
                  description: Shift check-in timestamp in ISO 8601 format and in UTC timezone
                  type: string
                  example: '2024-01-17T07:00:00'
                checkOut:
                  description: Shift check-out timestamp in ISO 8601 format and in UTC timezone
                  type: string
                  example: '2024-01-17T15:00:00'
                breakDuration:
                  description: Duration (in minutes) of shift break
                  type: integer
                  example: 30
            example:
              externalShiftId: '2546810'
              checkIn: '2024-01-17T07:00:00'
              checkOut: '2024-01-17T15:00:00'
              breakDuration: 30
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              example:
                clientId: 1234
                externalShiftId: '2546810'
                checkIn: '2024-01-17T07:00:00'
                checkOut: '2024-01-17T15:00:00'
                breakDuration: 30
                errors: null
                updatedAt: '2024-01-17T15:01:00'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /api/clockinout/{platform_type}:
    post:
      tags:
      - Check In / Check Out
      operationId: check_in_out_api_v1
      summary: Check-in / Check-out
      security:
      - ApiKeyAuth: []
      parameters:
      - name: X-API-KEY
        in: header
        description: API key issued to a specific client. This can only be used to access data within
          the client scope.
        example: d1015a83-9f5f-4a4d-b5fd-4e756ed1d282
        required: true
        schema:
          type: string
      - name: X-CLIENT-ID
        in: header
        description: Intelycare's Unique identifier of the client.
        example: '1234'
        required: true
        schema:
          type: string
      - name: platform_type
        in: path
        description: Intelycare's Unique identifier of the platform using this API.
        example: intelycare
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - nurseId
              - clockTime
              - shiftId
              - facilityId
              - event
              properties:
                nurseId:
                  description: Unique identifier for the caregiver
                  type: integer
                  example: 67798
                clockTime:
                  description: Shift check-in or check-out timestamp in ISO 8601 format and in UTC timezone
                  type: string
                  example: '2024-02-23T07:34:00.000Z'
                shiftId:
                  description: Unique identifier for the shift
                  type: integer
                  example: 98847575
                facilityId:
                  description: Unique identifier for the client
                  type: integer
                  example: 77666555
                event:
                  description: The type of event to be processed
                  type: string
                  enum:
                  - CLOCK_OUT
                  - CLOCK_IN
            example:
              nurseId: '67798'
              clockTime: '2024-02-23T07:34:00.000Z'
              shiftId: '98847575'
              facilityId: '77666555'
              event: CLOCK_IN
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              example:
                nurseId: '67798'
                clockTime: '2024-02-23T07:34:00.000Z'
                shiftId: '98847575'
                facilityId: '77666555'
                event: CLOCK_IN
                additionalProperties:
                  CLOCK_IN:
                    shiftId: 98847575
                    message: Thanks for Checking in.
                    providerId: 67798
                    discipline: null
                    dateCreated: '2024-02-23T07:34:00.000Z'
                    clientId: 77666555
                    checkIn: null
                    checkOut: null
                    isSuccess: null
                  CLOCK_OUT:
                    shiftId: 98847575
                    message: Thanks for Checking out.
                    providerId: 67798
                    discipline: null
                    dateCreated: '2024-02-23T07:34:00.000Z'
                    clientId: 1077
                    checkIn: '2024-02-23T07:34:00.000Z'
                    checkOut: null
                    isSuccess: null
        '401':
          $ref: '#/components/responses/UnauthorizedError'
x-webhooks:
  ShiftAccept:
    post:
      tags:
      - Webhook Events
      operationId: shift_accept_webhook_v1
      summary: Shift Accept
      description: Webhook event for shift accept
      security:
      - HMACSignature: []
      parameters:
      - name: X-Signature-IC
        in: header
        description: The hash signature of the payload. IntelyCare webhooks uses a HMAC hex digest (SHA256)
          to compute the signature of the body payload with the webhook secret.
        example: a0b1c1d2e3f5a8b13c21d34e55f89a144b233c377d610e987f1597a2584b4181
        required: true
        schema:
          type: string
      requestBody:
        description: Webhook event for shift accept
        content:
          application/json:
            schema:
              type: object
              required:
              - clientId
              - externalShiftId
              - shiftStatus
              - healthcareProfessional
              - statusTimestamp
              properties:
                clientId:
                  description: Unique identifier of the client
                  type: integer
                externalShiftId:
                  description: Unique identifier for the shift
                  type: integer
                shiftStatus:
                  description: Status of the shift
                  type: string
                  enum:
                  - Accepted
                  - Completed
                  - Released
                  - Deleted
                healthcareProfessional:
                  description: Healthcare Professional object containing all information about the assigned
                    worker
                  type: object
                  required:
                  - id
                  - externalId
                  - lastName
                  - firstName
                  - healthcareProfessionalType
                  - phoneNumber
                  - email
                  optional:
                  - profilePicture
                  properties:
                    id:
                      description: Unique identifier of the shift
                      type: integer
                    externalId:
                      description: External identifier for the shift
                      type: integer
                    lastName:
                      description: Last name of the assigned worker
                      type: string
                    firstName:
                      description: First name of the assigned worker
                      type: string
                    healthcareProfessionalType:
                      description: Healthcare professional qualification needed for the given shift
                      type: string
                    phoneNumber:
                      description: Phone number for the assigned worker
                      type: string
                      example: (800) 900-1234
                    email:
                      description: Email for the assigned worker
                      type: string
                    profilePicture:
                      description: Base64 encoded string of the assigned workers profile image
                      type: string
                      example: XfPy2KmGiZTQySSS3OHCWw==
                statusTimestamp:
                  description: Status timestamp in ISO 8601 format and in UTC timezone
                  type: string
                  example: '2024-01-17T15:01:00'
            example:
              clientId: 1234
              externalShiftId: '2546810'
              shiftStatus: Accepted
              healthcareProfessional:
                id: '456789'
                externalId: '111124'
                lastName: Nightengale
                firstName: Florence
                healthcareProfessionalType: LPN
                phoneNumber: (800) 900-1234
                email: florence.nightengale@gmail.com
                profilePicture: XfPy2KmGiZTQySSS3OHCWw==
              statusTimestamp: '2024-01-17T15:01:00'
  ShiftRelease:
    post:
      tags:
      - Webhook Events
      operationId: shift_release_webhook_v1
      summary: Shift Release
      description: Webhook event for shift release
      security:
      - HMACSignature: []
      parameters:
      - name: X-Signature-IC
        in: header
        description: The hash signature of the payload. IntelyCare webhooks uses a HMAC hex digest (SHA256)
          to compute the signature of the body payload with the webhook secret.
        example: a0b1c1d2e3f5a8b13c21d34e55f89a144b233c377d610e987f1597a2584b4181
        required: true
        schema:
          type: string
      requestBody:
        description: Webhook event for shift release
        content:
          application/json:
            schema:
              type: object
              required:
              - clientId
              - externalShiftId
              - shiftStatus
              - statusTimestamp
              properties:
                clientId:
                  description: Unique identifier of the client
                  type: integer
                externalShiftId:
                  description: Unique identifier for the shift
                  type: integer
                shiftStatus:
                  description: Status of the shift
                  type: string
                  enum:
                  - Accepted
                  - Completed
                  - Released
                  - Deleted
                statusTimestamp:
                  description: Status timestamp in ISO 8601 format and in UTC timezone
                  type: string
                  example: '2024-01-17T15:01:00'
            example:
              clientId: 1234
              externalShiftId: '2546810'
              shiftStatus: Released
              statusTimestamp: '2024-01-17T15:01:00'