type: object
properties:
  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
    nullable: true
    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:
    description:
      The number of seconds an access token generated for this API Client is
      valid for
    type: integer
    format: int32
    example: 750
  refreshTokenValiditySeconds:
    description:
      The number of seconds a refresh token generated for this API Client is
      valid for
    example: 86400
    type: integer
    format: int32
  redirectUris:
    type: array
    nullable: true
    items:
      type: string
    description:
      A list of the approved redirect URIs. Provide one or more URIs when
      assigning the AUTHORIZATION_CODE grant type to a new OAuth Client.
    example: [ "http://localhost:12345" ]
  grantTypes:
    type: array
    nullable: true
    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
      within the product.
    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
  scope:
    type: array
    nullable: true
    items:
      type: string
      default: "sp:scopes:all"
    description: Scopes of the API Client. If no scope is specified, the client will be created with the default scope "sp:scopes:all". This means the API Client will have all the rights of the owner who created it.
    example: [ "demo:api-client-scope:first", "demo:api-client-scope:second" ]
required:
  - name
  - description
  - accessTokenValiditySeconds
  - grantTypes
  - accessType
  - enabled
