AlayaCare Client Status API

Client status related endpoints.

OpenAPI Specification

alayacare-client-status-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  version: 1.0.19-oas3
  title: AlayaCare Accounting Accounts Client Status API
  description: '**AlayaCare IDs:**

    The following terms are used to reference IDs that identify resources in AlayaCare:

    - id

    - visit_id

    - premium_id

    - visit_premium_id

    - employee_id

    - cost_centre_id

    - client_id


    **External IDs**

    The following terms are used to reference IDs that identify resources systems external to AlayaCare:

    - employee_external_id

    - client_external_id


    External IDs are required to be unique.

    No other assumptions are made regarding their format they are treated as strings.

    '
servers:
- url: https://example.alayacare.com/ext/api/v2/accounting
security:
- basic_auth: []
tags:
- name: Client Status
  description: Client status related endpoints.
paths:
  /clients/{client_id}/status:
    parameters:
    - name: client_id
      description: AlayaCare ID of the client
      in: path
      required: true
      schema:
        type: integer
    get:
      tags:
      - Client Status
      summary: Get client status details using its AlayaCare Client ID
      operationId: listClientStatuses
      description: Returns a paginated list of client status records for a client by AlayaCare client ID.
      parameters:
      - name: status
        description: Filter by a single client status.
        in: query
        schema:
          type: string
          enum:
          - active
          - pending
          - on_hold
          - waiting_list
          - discharged
      - name: effective_date
        description: 'Filter for client status that are effective on a date greater or equal than specified value.

          Expected format is ISO 8601.

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

          '
        in: query
        schema:
          type: string
          format: date-time
      - name: filter
        in: query
        description: Substring search on client status `note` and reason `name`
        schema:
          type: string
      responses:
        '200':
          description: List of client status details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientStatusList'
        '401':
          $ref: '#/components/responses/ErrorResponseAuthentication'
        '404':
          $ref: '#/components/responses/ErrorResponseClientNotFound'
    post:
      tags:
      - Client Status
      summary: Create a client status using its AlayaCare Client ID
      operationId: createClientStatus
      description: '* `reason_id` can only be set and is mandatory for `on_hold` and `discharged` status. See resource `status_reasons` in `accounting-api-external` for a list of available client status reasons

        * `end_date` can only be set for `on_hold` status

        * Specific rules for configuring client status follow the internal AlayaCare application logic

        '
      requestBody:
        $ref: '#/components/requestBodies/ClientStatusCreate'
      responses:
        '200':
          description: Client status created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientStatusCreated'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                response:
                  value:
                    code: 400
                    message: Field 'status' is required
        '401':
          $ref: '#/components/responses/ErrorResponseAuthentication'
        '404':
          $ref: '#/components/responses/ErrorResponseClientNotFound'
        '409':
          description: Conflict
          content:
            application/json:
              examples:
                response:
                  value:
                    code: 409
                    message: 'Branch conflict: Reason cannot be assigned to the client'
  /clients/{client_id}/status/{status_id}:
    parameters:
    - name: client_id
      description: AlayaCare ID of the client
      in: path
      required: true
      schema:
        type: integer
    - name: status_id
      description: AlayaCare ID of the status
      in: path
      required: true
      schema:
        type: integer
    get:
      tags:
      - Client Status
      summary: Get a client status details using its AlayaCare Client and Status ID
      operationId: detailClientStatus
      description: Returns details for a client status by AlayaCare client ID and status ID.
      responses:
        '200':
          description: Client status details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientStatusDetails'
        '401':
          $ref: '#/components/responses/ErrorResponseAuthentication'
        '404':
          $ref: '#/components/responses/ErrorResponseClientStatusNotFound'
    put:
      tags:
      - Client Status
      summary: Update a client status using its AlayaCare Client and Status ID
      operationId: updateClientStatus
      description: '* `end_date` can only be edited for `on_hold` and `pending` status

        * `effective_date` can only be edited for `on_hold`, `discharged` and `pending` status

        * `reason_id` can only be edited and is mandatory for `on_hold` and `discharged` status. See resource `status_reasons` in `accounting-api-external` for a list of available client status reasons

        * Specific rules for configuring client status follow the internal AlayaCare application logic

        '
      requestBody:
        $ref: '#/components/requestBodies/ClientStatusUpdate'
      responses:
        '200':
          description: Client status updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientStatusCreated'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                response:
                  value:
                    code: 400
                    message: Field 'reason_id' is invalid
        '401':
          $ref: '#/components/responses/ErrorResponseAuthentication'
        '404':
          $ref: '#/components/responses/ErrorResponseClientStatusNotFound'
    delete:
      tags:
      - Client Status
      summary: Remove a client status using its AlayaCare Client and Status ID
      operationId: deleteClientStatus
      description: '* Only `on_hold`, `waiting_list` and `discharged` status can be deleted

        '
      responses:
        '204':
          description: Client status successfully deleted
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                response:
                  value:
                    code: 400
                    message: Status cannot be deleted
        '401':
          $ref: '#/components/responses/ErrorResponseAuthentication'
        '404':
          $ref: '#/components/responses/ErrorResponseClientStatusNotFound'
  /clients/by_id/{external_client_id}/status:
    parameters:
    - name: external_client_id
      description: External ID of the client
      in: path
      required: true
      schema:
        type: string
    get:
      tags:
      - Client Status
      summary: Get client status details using External Client ID
      operationId: listClientStatusesByExt
      description: Returns a paginated list of client status records for a client by external client ID.
      parameters:
      - name: status
        description: Filter by a single client status.
        in: query
        schema:
          type: string
          enum:
          - active
          - pending
          - on_hold
          - waiting_list
          - discharged
      - name: effective_date
        description: 'Filter for client status that are effective on a date greater or equal than specified value.

          Expected format is ISO 8601.

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

          '
        in: query
        schema:
          type: string
          format: date-time
      - name: filter
        in: query
        description: Substring search on client status `note` and reason `name`
        schema:
          type: string
      responses:
        '200':
          description: List of client status details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientStatusList'
        '401':
          $ref: '#/components/responses/ErrorResponseAuthentication'
        '404':
          $ref: '#/components/responses/ErrorResponseClientNotFound'
        '409':
          $ref: '#/components/responses/ErrorResponseMultipleClientsFound'
    post:
      tags:
      - Client Status
      summary: Create a client status using External Client ID
      operationId: createClientStatusByExt
      description: '* `reason_id` can only be set and is mandatory for `on_hold` and `discharged` status. See resource `status_reasons` in `accounting-api-external` for a list of available client status reasons

        * `end_date` can only be set for `on_hold` status

        * Specific rules for configuring client status follow the internal AlayaCare application logic

        '
      requestBody:
        $ref: '#/components/requestBodies/ClientStatusCreate'
      responses:
        '200':
          description: Client status created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientStatusCreated'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                response:
                  value:
                    code: 400
                    message: Field 'status' is required
        '401':
          $ref: '#/components/responses/ErrorResponseAuthentication'
        '404':
          $ref: '#/components/responses/ErrorResponseClientNotFound'
        '409':
          description: "Conflict. Possible causes:\n  1. the reason ID given in the body cannot by assigned to the client;\n  2. multiple clients share the external ID given in the path and they should be merged\n"
          content:
            application/json:
              examples:
                response:
                  value:
                    code: 409
                    message: 'Branch conflict: Reason cannot be assigned to the client'
  /clients/by_id/{external_client_id}/status/{status_id}:
    parameters:
    - name: external_client_id
      description: External ID of the client
      in: path
      required: true
      schema:
        type: string
    - name: status_id
      description: AlayaCare ID of the status
      in: path
      required: true
      schema:
        type: integer
    get:
      tags:
      - Client Status
      summary: Get a client status details using External Client ID and Status ID
      operationId: detailClientStatusByExt
      description: Returns details for a client status by external client ID and status ID.
      responses:
        '200':
          description: Client status details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientStatusDetails'
        '401':
          $ref: '#/components/responses/ErrorResponseAuthentication'
        '404':
          $ref: '#/components/responses/ErrorResponseClientStatusNotFound'
        '409':
          $ref: '#/components/responses/ErrorResponseMultipleClientsFound'
    put:
      tags:
      - Client Status
      summary: Update a client status using External Client ID and Status ID
      operationId: updateClientStatusByExt
      description: '* `end_date` can only be edited for `on_hold` and `pending` status

        * `effective_date` can only be edited for `on_hold`, `discharged` and `pending` status

        * `reason_id` can only be edited and is mandatory for `on_hold` and `discharged` status. See resource `status_reasons` in `accounting-api-external` for a list of available client status reasons

        * Specific rules for configuring client status follow the internal AlayaCare application logic

        '
      requestBody:
        $ref: '#/components/requestBodies/ClientStatusUpdate'
      responses:
        '200':
          description: Client status updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientStatusCreated'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                response:
                  value:
                    code: 400
                    message: Field 'reason_id' is invalid
        '401':
          $ref: '#/components/responses/ErrorResponseAuthentication'
        '404':
          $ref: '#/components/responses/ErrorResponseClientStatusNotFound'
        '409':
          $ref: '#/components/responses/ErrorResponseMultipleClientsFound'
    delete:
      tags:
      - Client Status
      summary: Remove a client status using External Client ID and Status ID
      operationId: deleteClientStatusByExt
      description: '* Only `on_hold`, `waiting_list` and `discharged` status can be deleted

        '
      responses:
        '204':
          description: Client status successfully deleted
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                response:
                  value:
                    code: 400
                    message: Status cannot be deleted
        '401':
          $ref: '#/components/responses/ErrorResponseAuthentication'
        '404':
          $ref: '#/components/responses/ErrorResponseClientStatusNotFound'
        '409':
          $ref: '#/components/responses/ErrorResponseMultipleClientsFound'
components:
  schemas:
    PaginatedList:
      description: Base model of all paginated lists
      type: object
      properties:
        count:
          type: integer
          description: Number of items in the response
          example: 1
        page:
          type: integer
          description: Current page number
          example: 1
        total_pages:
          type: integer
          description: Total number of pages available
          example: 1
        items:
          type: array
          items:
            type: object
      required:
      - count
      - page
      - total_pages
      - items
    ClientStatusDetails:
      description: AlayaCare client status entity
      type: object
      properties:
        id:
          type: integer
          description: AlayaCare client status ID
          example: 1001
        effective_date:
          type: string
          description: Date the status will become in effect. Expected format is ISO 8601.
          example: '2018-07-08T00:00:00+00:00'
        status:
          description: Updatable status of a client
          type: string
          example: on_hold
          enum:
          - active
          - pending
          - on_hold
          - discharged
          - waiting_list
        reason:
          $ref: '#/components/schemas/ReasonDetails'
        note:
          description: Note attached to the client status.
          type: string
          example: On hold due to hospitalization.
        created_at:
          type: string
          format: date-time
          description: Date the record was created (ISO 8601) - Time saved at `T00:00:00+00:00`
          example: '2019-07-08T00:00:00+00:00'
        updated_at:
          type: string
          format: date-time
          description: Date the record was updated (ISO 8601) - Time saved at `T00:00:00+00:00`
          example: '2020-07-08T00:00:00+00:00'
        created_by:
          $ref: '#/components/schemas/CreatedByDetails'
        updated_by:
          $ref: '#/components/schemas/UpdatedByDetails'
    ClientServicesStatus:
      description: 'Client service statuses update details if this block is not sent,

        it is defaulted to FALSE, meaning the services statuses are not updated

        '
      type: object
      properties:
        update_services:
          type: boolean
          description: Whether or not to apply the client status change to their associated services.
          example: true
        service_status:
          type: string
          description: The status change will be applied to services with this specific services_status only.
          enum:
          - on_hold
          - active
          - discharged
          - waiting_list
          example: on_hold
        service_status_reason:
          type: integer
          description: The status change will be applied to services with this specific service_status_reason only.
          example: 9
    ClientStatusCreated:
      description: AlayaCare client status entity
      type: object
      properties:
        id:
          type: integer
          description: AlayaCare client status ID
          example: 1001
    ClientStatusCreate:
      description: AlayaCare client status entity to create
      type: object
      properties:
        effective_date:
          type: string
          description: Date the status will become in effect. Expected format is ISO 8601.
          example: '2018-07-08T00:00:00+00:00'
          format: date-time
        status:
          description: Updatable status of a client
          type: string
          example: on_hold
          enum:
          - active
          - on_hold
          - discharged
          - waiting_list
        reason_id:
          description: Client status change reason ID. Available and mandatory for 'On Hold' or 'Discharged' status.
          type: integer
          example: 1
        note:
          description: Note attached to the client status. Max 255 characters.
          type: string
          example: On hold due to hospitalization.
        end_date:
          description: Adding an `end_date` will automatically create an `active` status with an `effective_date` equal to the `end_date`. Expected format is ISO 8601.
          type: string
          example: '2018-07-08T00:00:00+00:00'
          format: date-time
        services:
          $ref: '#/components/schemas/ClientServicesStatus'
      required:
      - effective_date
      - status
    ClientStatusList:
      allOf:
      - $ref: '#/components/schemas/PaginatedList'
      - type: object
        description: Paginated list of client status
        properties:
          items:
            type: array
            items:
              $ref: '#/components/schemas/ClientStatusDetails'
    ClientStatusUpdate:
      description: AlayaCare client status entity to create
      type: object
      properties:
        effective_date:
          type: string
          description: Date the status will become in effect. Expected format is ISO 8601.
          example: '2018-07-08T00:00:00+00:00'
          format: date-time
        reason_id:
          description: Client status change reason ID. Available and mandatory for 'On Hold' or 'Discharged' status.
          type: string
          example: '1'
        note:
          description: Note attached to the client status. Max 255 characters.
          type: string
          example: On hold due to hospitalization.
        end_date:
          description: Adding an `end_date` will automatically create an `active` status with an `effective_date` equal to the `end_date`. Expected format is ISO 8601.
          type: string
          example: '2018-07-08T00:00:00+00:00'
          format: date-time
        services:
          $ref: '#/components/schemas/ClientServicesStatus'
    CreatedByDetails:
      type: object
      description: User who created the record
      properties:
        id:
          type: integer
          description: Id of the employee who created the record
          example: 284
        external_id:
          type: string
          description: External ID of the employee who created the record
          example: '450'
        name:
          type: string
          description: Name of the employee who created the record
          example: John Smith
    ReasonDetails:
      description: AlayaCare Status Change Details
      type: object
      properties:
        id:
          type: integer
          description: AlayaCare status reason ID.
          example: 1
        name:
          type: string
          description: AlayaCare status reason name
          example: Vacation
      required:
      - id
      - name
    ErrorResponse:
      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
    UpdatedByDetails:
      type: object
      description: User who updated the record
      properties:
        id:
          type: integer
          description: Id of the employee who updated the record
          example: 284
        external_id:
          type: string
          description: External ID of the employee who updated the record
          example: '450'
        name:
          type: string
          description: Name of the employee who updated the record
          example: John Smith
  requestBodies:
    ClientStatusCreate:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClientStatusCreate'
      description: Client status data in JSON format
      required: true
    ClientStatusUpdate:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClientStatusUpdate'
      description: Client status data in JSON format
      required: true
  responses:
    ErrorResponseMultipleClientsFound:
      description: Conflict. Multiple clients share the external ID given in the path and they should be merged
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            response:
              value:
                code: 409
                message: Multiple clients found
    ErrorResponseAuthentication:
      description: Authorization required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            response:
              value:
                code: 401
                message: Authorization required.
    ErrorResponseClientStatusNotFound:
      description: Client status relationship not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            response:
              value:
                code: 404
                message: Client status relationship not found
    ErrorResponseClientNotFound:
      description: Client not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            response:
              value:
                code: 404
                message: Client not found.
  securitySchemes:
    basic_auth:
      type: http
      description: Basic HTTP auth over https
      scheme: basic