x-generator: NSwag v13.18.2.0 (NJsonSchema v10.8.0.0 (Newtonsoft.Json v11.0.0.0))
swagger: '2.0'
info:
  title: Absorb Integration API
  version: v1
consumes:
  - application/json
produces:
  - application/json
paths:
  /departments:
    get:
      tags:
        - Departments
      summary: >-
        Lists all selected LMS Departments that are available to the current,
        authenticated administrator.
      operationId: Departments_GetDepartments
      parameters:
        - type: string
          name: departmentName
          in: query
          description: Query parameter for filtering Departments by the department name.
          x-nullable: true
        - type: string
          name: externalId
          in: query
          description: >-
            Query parameter for filtering Departments by the specified external
            ID.
          x-nullable: true
        - type: string
          name: limit
          in: query
          description: >-
            *(Deprecated)* The maximum number of items to return in the current
            page of the collection.
          x-nullable: true
        - type: string
          name: offset
          in: query
          description: '*(Deprecated)* The number of pages to offset into the collection.'
          x-nullable: true
        - type: string
          name: _filter
          in: query
          description: >-
            One or more filter operations to be performed on the collection.

            The referenced fields must allow filtering. See the respective
            report's schema for which fields can be filtered. 
                        
            Supports most of the [OData filter
            syntax](http://docs.oasis-open.org/odata/odata/v4.01/cs01/part2-url-conventions/odata-v4.01-cs01-part2-url-conventions.html#sec_SystemQueryOptionfilter).
                        
            Supported operations:
                * eq,
                * ne,
                * gt,
                * ge,
                * lt,
                * le,
                * and,
                * or,
                * not,
                * ()

            Supported functions:
                * substringof('value',fieldName),
                * endswith(fieldName,'value'),
                * startswith(fieldName,'value'),
                * tolower(fieldName),
                * toupper(fieldName)
                        
            Examples:

            * _filter=`firstname eq 'Jeffrey'`

            * _filter=`id eq guid'a14c149a-2ce0-41d4-b532-02189ad3cb22'`

            * _filter=`startsWith(lastname,'leb') or dateAdded ge
            datetime'1998-03-06T20:38:07Z'`
          x-nullable: true
        - type: string
          name: _sort
          in: query
          description: >-
            Optional list of comma-separated fields to sort the collection by.


            The referenced fields must allow sorting. See the respective
            report's schema for which fields can be sorted. 

            If not specified, all report fields are returned.


            To sort in a descending manner, prefix the field name with `-`. For
            example, 

            `_sort=name,-date`, sorts the collection of items by `name`
            (ascending) 

            and then by `date` (descending).
          x-nullable: true
        - type: string
          name: _limit
          in: query
          description: >-
            The maximum number of items to return in the current page of the
            collection.
          x-nullable: true
        - type: string
          name: _offset
          in: query
          description: The number of pages to offset into the collection.
          x-nullable: true
        - type: string
          name: x-api-key
          in: header
        - type: string
          name: x-api-version
          in: header
          description: '1'
      responses:
        '200':
          x-nullable: false
          description: ''
          schema:
            $ref: '#/definitions/DepartmentsResource'
        '422':
          x-nullable: false
          description: A validation error occured with the provided parameters.
          schema:
            $ref: '#/definitions/GenericErrorResponse'
      security:
        - api_key: []
    post:
      tags:
        - Departments
      summary: Create or update department.
      operationId: Departments_CreateOrUpdateDepartment
      parameters:
        - name: departmentModel
          in: body
          description: The new department's data.
          schema:
            $ref: '#/definitions/CreateOrUpdateDepartmentRequest'
          x-nullable: true
        - type: string
          name: x-api-key
          in: header
        - type: string
          name: x-api-version
          in: header
          description: '1'
      responses:
        '201':
          x-nullable: false
          description: ''
          schema:
            $ref: '#/definitions/PostDepartmentResource'
        '409':
          x-nullable: false
          description: More than one top level department.
          schema:
            $ref: '#/definitions/GenericErrorResponse'
        '422':
          x-nullable: false
          description: A validation error occured with the provided parameters.
          schema:
            $ref: '#/definitions/GenericErrorResponse'
      security:
        - api_key: []
  /departments/{id}:
    get:
      tags:
        - Departments
      summary: Get Department.
      operationId: Departments_GetDepartmentById
      parameters:
        - type: string
          name: id
          in: path
          required: true
          description: The department ID.
          format: guid
          x-nullable: false
        - type: string
          name: x-api-key
          in: header
        - type: string
          name: x-api-version
          in: header
          description: '1'
      responses:
        '200':
          x-nullable: false
          description: ''
          schema:
            $ref: '#/definitions/NonPagedDepartmentResource'
        '404':
          x-nullable: false
          description: Department not found.
          schema:
            $ref: '#/definitions/GenericErrorResponse'
      security:
        - api_key: []
  /create-department:
    post:
      tags:
        - Departments
      summary: Create or update department.
      operationId: Departments_CreateOrUpdateDepartment2
      parameters:
        - name: departmentModel
          in: body
          description: The new department's data.
          schema:
            $ref: '#/definitions/CreateOrUpdateDepartmentRequest'
          x-nullable: true
        - type: string
          name: x-api-key
          in: header
        - type: string
          name: x-api-version
          in: header
          description: '1'
      responses:
        '201':
          x-nullable: false
          description: ''
          schema:
            $ref: '#/definitions/PostDepartmentResource'
        '409':
          x-nullable: false
          description: More than one top level department.
          schema:
            $ref: '#/definitions/GenericErrorResponse'
        '422':
          x-nullable: false
          description: A validation error occured with the provided parameters.
          schema:
            $ref: '#/definitions/GenericErrorResponse'
      security:
        - api_key: []
definitions:
  DepartmentsResource:
    type: object
    description: Represents a collection of DepartmentsResource.
    properties:
      totalItems:
        type: integer
        description: The total number of items in the unbounded collection
        format: int32
      returnedItems:
        type: integer
        description: The number of items in the bound collection being returned
        format: int32
      limit:
        type: integer
        description: The current page size for the collection
        format: int32
      offset:
        type: integer
        description: The current offset for the collection
        format: int32
      departments:
        type: array
        description: The department list.
        items:
          $ref: '#/definitions/DepartmentResource'
  Link:
    type: object
    properties:
      Rel:
        $ref: '#/definitions/Relation'
      Items:
        type: array
        items:
          $ref: '#/definitions/LinkItem'
  Relation:
    type: object
    properties:
      Name:
        type: string
  LinkItem:
    type: object
    properties:
      Href:
        type: string
      Name:
        type: string
      Templated:
        type: boolean
      Type:
        type: string
      Deprecation:
        type: string
      Profile:
        type: string
      Title:
        type: string
      Hreflang:
        type: string
  IEmbeddedResource:
    type: object
    x-abstract: true
    properties:
      Name:
        type: string
      Resources:
        type: array
        items:
          $ref: '#/definitions/IResource'
  IResource:
    type: object
    x-abstract: true
    properties:
      Links:
        type: array
        items:
          $ref: '#/definitions/Link'
      EmbeddedResources:
        type: array
        items:
          $ref: '#/definitions/IEmbeddedResource'
  DepartmentResource:
    type: object
    description: Represents information about a department for an Integration API endpoint.
    properties:
      id:
        type: string
        description: |-
          `Filterable` 

          Department identifier.
        format: guid
      name:
        type: string
        description: |-
          `Default Sort` `Sortable` `Filterable` 

          The full name of the department.
      useDepartmentContactDetails:
        type: boolean
        description: |-
          `Sortable` `Filterable` 

          Can we use Department Contact Details
      companyName:
        type: string
        description: |-
          `Sortable` `Filterable` 

          The Company Name.
      phoneNumber:
        type: string
        description: |-
          `Sortable` `Filterable` 

          The Company PhoneNumber.
      emailAddress:
        type: string
        description: |-
          `Sortable` `Filterable` 

          The Company EmailAddress.
      externalId:
        type: string
        description: |-
          `Sortable` `Filterable` 

          The department unique identifier in the external system.
      parentId:
        type: string
        description: |-
          `Sortable` `Filterable` 

          The parent department unique identifier.
        format: guid
      currencyId:
        type: string
        description: |-
          `Sortable` `Filterable` 

          The currency unique identifier.
        format: guid
      dateEdited:
        type: string
        description: |-
          `Sortable` `Filterable` 

          The department's last edited date.
        format: date-time
      dateAdded:
        type: string
        description: |-
          `Sortable` `Filterable` 

          The date the department was added.
        format: date-time
  GenericErrorResponse:
    type: object
    description: |-
      This class is NOT to be used as an actual response. This is to be used as
      the return type for non-200 responses in `SwaggerResponse` attributes.
    properties:
      validations:
        type: array
        description: The validations (if any) which caused the error.
        items:
          type: string
      code:
        description: The status code returned.
        allOf:
          - $ref: '#/definitions/HttpStatusCode'
      message:
        type: string
        description: The error message.
      term:
        type: string
        description: The general error term.
      _meta:
        type: object
        description: 'A list of meta data (if any). '
        additionalProperties:
          type: string
  HttpStatusCode:
    type: integer
    description: ''
    x-enumNames:
      - Continue
      - SwitchingProtocols
      - OK
      - Created
      - Accepted
      - NonAuthoritativeInformation
      - NoContent
      - ResetContent
      - PartialContent
      - MultipleChoices
      - Ambiguous
      - MovedPermanently
      - Moved
      - Found
      - Redirect
      - SeeOther
      - RedirectMethod
      - NotModified
      - UseProxy
      - Unused
      - TemporaryRedirect
      - RedirectKeepVerb
      - BadRequest
      - Unauthorized
      - PaymentRequired
      - Forbidden
      - NotFound
      - MethodNotAllowed
      - NotAcceptable
      - ProxyAuthenticationRequired
      - RequestTimeout
      - Conflict
      - Gone
      - LengthRequired
      - PreconditionFailed
      - RequestEntityTooLarge
      - RequestUriTooLong
      - UnsupportedMediaType
      - RequestedRangeNotSatisfiable
      - ExpectationFailed
      - UpgradeRequired
      - InternalServerError
      - NotImplemented
      - BadGateway
      - ServiceUnavailable
      - GatewayTimeout
      - HttpVersionNotSupported
  NonPagedDepartmentResource:
    type: object
    description: >-
      This class is NOT to be used as an actual response. This is to be used as
      the `SwaggerResponse` return type for

      non-paginated endpoints that return DepartmentResource.
    properties:
      id:
        type: string
        description: Department identifier.
        format: guid
      name:
        type: string
        description: The full name of the department.
      useDepartmentContactDetails:
        type: boolean
        description: Can we use Department Contact Details
      companyName:
        type: string
        description: The Company Name.
      phoneNumber:
        type: string
        description: The Company PhoneNumber.
      emailAddress:
        type: string
        description: The Company EmailAddress.
      externalId:
        type: string
        description: The department unique identifier in the external system.
      parentId:
        type: string
        description: The parent department unique identifier.
        format: guid
      currencyId:
        type: string
        description: The currency unique identifier.
        format: guid
      dateEdited:
        type: string
        description: The department's last edited date.
        format: date-time
      dateAdded:
        type: string
        description: The date the department was added.
        format: date-time
  PostDepartmentResource:
    type: object
    description: Resource returned by the create or update department endpoint.
    properties:
      id:
        type: string
        description: The department Id.
        format: guid
      name:
        type: string
        description: The department name.
  CreateOrUpdateDepartmentRequest:
    type: object
    description: Request to create or update a department.
    properties:
      id:
        type: string
        description: Department identifier.
        format: guid
      name:
        type: string
        description: The full name of the department.
      useDepartmentContactDetails:
        type: boolean
        description: If true, department contact details are used.
      companyName:
        type: string
        description: The Company Name.
      phoneNumber:
        type: string
        description: The Company PhoneNumber.
      emailAddress:
        type: string
        description: The Company EmailAddress.
      externalId:
        type: string
        description: The department unique identifier in the external system.
      parentId:
        type: string
        description: The parent department unique identifier.
        format: guid
      currencyId:
        type: string
        description: The currency unique identifier.
        format: guid
securityDefinitions:
  api_key:
    type: apiKey
    name: x-api-key
    in: header
tags:
  - name: Departments
x-servers:
  - url: https://rest.myabsorb.com
    description: US
  - url: https://rest.myabsorb.ca
    description: CA
  - url: https://rest.myabsorb.eu
    description: EU
  - url: https://rest.myabsorb.com.au
    description: AU
