type: object
properties:
  id:
    type: string
    description: ID of the OAuth client
    example: 2c9180835d2e5168015d32f890ca1581
  businessName:
    type: string
    nullable: true
    description: The name of the business the API Client should belong to
    example: Acme-Solar
  homepageUrl:
    type: string
    nullable: true
    description: The homepage URL associated with the owner of the API Client
    example: http://localhost:12345
  name:
    type: string
    description: A human-readable name for the API Client
    example: Demo API Client
  description:
    type: string
    nullable: true
    description: A description of the API Client
    example: An API client used for the authorization_code, refresh_token, and client_credentials flows
  accessTokenValiditySeconds:
    type: integer
    format: int32
    description: The number of seconds an access token generated for this API Client is valid for
    example: 750
  refreshTokenValiditySeconds:
    type: integer
    format: int32
    description: The number of seconds a refresh token generated for this API Client is valid for
    example: 86400
  redirectUris:
    type: array
    nullable: true
    items:
      type: string
    description: A list of the approved redirect URIs used with the authorization_code flow
    example: [ "http://localhost:12345" ]
  grantTypes:
    type: array
    items:
      $ref: '../schemas/GrantType.yaml'
    description: A list of OAuth 2.0 grant types this API Client can be used with
    example: [ "AUTHORIZATION_CODE", "CLIENT_CREDENTIALS", "REFRESH_TOKEN" ]
  accessType:
    $ref: '../schemas/AccessType.yaml'
    description: The access type (online or offline) of this API Client
    example: "OFFLINE"
  type:
    $ref: '../schemas/ClientType.yaml'
    description: The type of the API Client (public or confidential)
    example: "CONFIDENTIAL"
  internal:
    type: boolean
    description: An indicator of whether the API Client can be used for requests internal to IDN
    example: false
  enabled:
    type: boolean
    description: An indicator of whether the API Client is enabled for use
    example: true
  strongAuthSupported:
    type: boolean
    description: An indicator of whether the API Client supports strong authentication
    example: false
  claimsSupported:
    type: boolean
    description: An indicator of whether the API Client supports the serialization of SAML claims when used with the authorization_code flow
    example: false
  created:
    type: string
    format: 'date-time'
    description: The date and time, down to the millisecond, when the API Client was created
    example: '2017-07-11T18:45:37.098Z'
  modified:
    type: string
    format: 'date-time'
    description: The date and time, down to the millisecond, when the API Client was last updated
    example: '2018-06-25T20:22:28.104Z'
  lastUsed:
    type: string
    nullable: true
    format: 'date-time'
    description: The date and time, down to the millisecond, when this API Client was last used to generate an access token. This timestamp does not get updated on every API Client usage, but only once a day. This property can be useful for identifying which API Clients are no longer actively used and can be removed.
    example: '2017-07-11T18:45:37.098Z'
  scope:
    type: array
    nullable: true
    items:
      type: string
      default: "sp:scopes:all"
    description: Scopes of the API Client.
    example: [ "demo:api-client-scope:first", "demo:api-client-scope:second" ]
required:
  - id
  - businessName
  - homepageUrl
  - name
  - description
  - accessTokenValiditySeconds
  - refreshTokenValiditySeconds
  - redirectUris
  - grantTypes
  - accessType
  - type
  - internal
  - enabled
  - strongAuthSupported
  - claimsSupported
  - created
  - modified
  - scope
