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:
  /certificates/{id}:
    get:
      tags:
        - Certificates
      summary: Get certificate.
      operationId: Certificates_GetCertificateById
      parameters:
        - type: string
          name: id
          in: path
          required: true
          description: The ID of the certificate.
          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/NonPagedCertificateResource'
        '404':
          x-nullable: false
          description: Certificate could not be found.
          schema:
            $ref: '#/definitions/GenericErrorResponse'
      security:
        - api_key: []
  /users/{userId}/certificates:
    get:
      tags:
        - Certificates
      summary: Lists certificates for the user.
      operationId: Certificates_GetCertificateByUserId
      parameters:
        - type: string
          name: userId
          in: path
          required: true
          description: The user's ID.
          format: guid
          x-nullable: false
        - 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/CertificatesResource'
        '404':
          x-nullable: false
          description: The user could not be found.
          schema:
            $ref: '#/definitions/GenericErrorResponse'
        '422':
          x-nullable: false
          description: A validation error occured with the provided parameters.
          schema:
            $ref: '#/definitions/GenericErrorResponse'
      security:
        - api_key: []
  /users/{userId}/certificates/{id}:
    get:
      tags:
        - Certificates
      summary: Get certificate for the user.
      operationId: Certificates_GetCertificateByUserIdAndCertificateId
      parameters:
        - type: string
          name: id
          in: path
          required: true
          description: The ID of the certificate.
          format: guid
          x-nullable: false
        - type: string
          name: userId
          in: path
          required: true
          description: The user's unique identifier.
          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/NonPagedCertificateResource'
        '404':
          x-nullable: false
          description: User could not be found.
          schema:
            $ref: '#/definitions/GenericErrorResponse'
      security:
        - api_key: []
  /courses/{courseId}/certificates:
    get:
      tags:
        - Certificates
      summary: Lists certificates for a course.
      operationId: Certificates_GetCourseCertificates
      parameters:
        - type: string
          name: courseId
          in: path
          required: true
          description: The ID of the course.
          format: guid
          x-nullable: false
        - type: boolean
          name: includeExpired
          in: query
          description: True if expired certificates are requested, false otherwise.
          x-nullable: false
        - type: string
          name: acquiredDate
          in: query
          description: >-
            Filters the list of certificates by the acquired date (yyyy-mm-dd)
            if specified.
          format: date-time
          x-nullable: true
        - type: string
          name: expiryDate
          in: query
          description: >-
            Filters the list of certificates by the expiry date (yyyy-mm-dd) if
            specified.
          format: date-time
          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:
            type: array
            items:
              $ref: '#/definitions/CertificateResource'
        '404':
          x-nullable: false
          description: Course could not be found.
          schema:
            $ref: '#/definitions/GenericErrorResponse'
        '422':
          x-nullable: false
          description: A validation error occured with the provided parameters.
          schema:
            $ref: '#/definitions/GenericErrorResponse'
      security:
        - api_key: []
  /courses/{courseId}/certificates/{certificateId}:
    get:
      tags:
        - Certificates
      summary: Get certificate for a course.
      operationId: Certificates_GetCertificateByCourseIdAndCertificateId
      parameters:
        - type: string
          name: certificateId
          in: path
          required: true
          description: The ID of the certificate.
          format: guid
          x-nullable: false
        - type: string
          name: courseId
          in: path
          required: true
          description: The course's unique identifier.
          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/NonPagedCertificateResource'
        '404':
          x-nullable: false
          description: Course or certificate could not be found.
          schema:
            $ref: '#/definitions/GenericErrorResponse'
      security:
        - api_key: []
definitions:
  NonPagedCertificateResource:
    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 CertificateResource.
    properties:
      id:
        type: string
        description: Certificate identifier.
        format: guid
      enrollmentId:
        type: string
        description: Enrollment identifier.
        format: guid
      fullName:
        type: string
        description: The full name of the user.
      courseName:
        type: string
        description: The name of the course.
      acquiredDate:
        type: string
        description: The acquired date of the certificate.
        format: date-time
      expiryDate:
        type: string
        description: The expiry date of the certificate.
        format: date-time
      notes:
        type: string
        description: The notes on the certificate.
      dateAdded:
        type: string
        description: The date the certificate was added.
        format: date-time
      dateEdited:
        type: string
        description: The date the certificate was last edited.
        format: date-time
  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'
  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
  CertificatesResource:
    type: object
    description: Represents a collection of CertificateResource.
    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
      certificates:
        type: array
        items:
          $ref: '#/definitions/CertificateResource'
  CertificateResource:
    type: object
    description: >-
      Represents information about a certificate for an Integration API
      endpoint.
    properties:
      id:
        type: string
        description: |-
          `Filterable` 

          Certificate identifier.
        format: guid
      enrollmentId:
        type: string
        description: |-
          `Filterable` 

          Enrollment identifier.
        format: guid
      fullName:
        type: string
        description: |-
          `Sortable` `Filterable` 

          The full name of the user.
      courseName:
        type: string
        description: |-
          `Default Sort` `Sortable` `Filterable` 

          The name of the course.
      acquiredDate:
        type: string
        description: |-
          `Sortable` `Filterable` 

          The acquired date of the certificate.
        format: date-time
      expiryDate:
        type: string
        description: |-
          `Sortable` `Filterable` 

          The expiry date of the certificate.
        format: date-time
      notes:
        type: string
        description: |-
          `Filterable` 

          The notes on the certificate.
      dateAdded:
        type: string
        description: |-
          `Sortable` `Filterable` 

          The date the certificate was added.
        format: date-time
      dateEdited:
        type: string
        description: |-
          `Sortable` `Filterable` 

          The date the certificate was last edited.
        format: date-time
securityDefinitions:
  api_key:
    type: apiKey
    name: x-api-key
    in: header
tags:
  - name: Certificates
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
