Schema for Heimdall Provider Settings

From ProviderSettings.schema.yaml (heimdall/ProviderSettings.schema)

---
$id: https://skeleton.botmd.io/heimdall/ProviderSettings.schema
$schema: http://json-schema.org/draft-07/schema#

title: Provider Settings
description: >-
  `ProviderApplication.provider_settings` are used by backend to communicate with the authentication providers.
  This field will not be exposed to frontend.

type: object
additionalProperties: false
properties:
  azure:
    $ref: "#/definitions/azure"

  auth0:
    $ref: "#/definitions/auth0"

  sgid:
    $ref: "#/definitions/sgid"

  otp:
    $ref: "#/definitions/otp"

  maxicare:
    $ref: "#/definitions/maxicare"

  public_service:
    $ref: "#/definitions/public_service"
#end properties

definitions:
  azure:
    title: AzureProvider
    description: Provider settings for `AzureProvider`.

    type: object
    required: [api_url]

    properties:
      api_url:
        title:
        description: The identity provider root URL (ex. `graph.microsoft.com/v2`).
        type: string
      #end api_url

  auth0:
    title: Auth0Provider
    description: Provider settings for `Auth0Provider`.

    type: object
    additionalProperties: false
    required: [domain, client_id, client_secret]
    properties:
      domain:
        title: Domain
        description: Your Auth0 account domain (ex. `auth.botmd.io`).
        type: string
        format: hostname
      #end domain

      client_id:
        title: Client ID
        description: Your Auth0 client ID.
        type: string
        minLength: 1
      #end client_id

      client_secret:
        title: Client Secret
        description: Auth0 client secret for using the Auth0 management API.
        type: string
        minLength: 1
    #end properties
  #end auth0

  sgid:
    title: SgidProvider
    description: Provider Settings for 'SgidProvider'

    type: object
    additionalProperties: false
    required: [client_id, client_secret, private_key, scope]
    properties:
      client_id:
        title: Client ID
        description: Client id obtained from sgid developer portal.
        type: string
        minLength: 1

      client_secret:
        title: Client Secret
        description: Client secret obtained from sgid developer portal.
        type: string
        minLength: 1

      private_key:
        title: Private Key
        description: Private key obtained from sgid developer portal.
        type: string
        minLength: 1

      scope:
        title: Scope
        description: Scope for Sgid. "openid" must be provided as a scope.
        type: string
        minLength: 1

      session_as_identifier:
        titile: Session as identifier
        description: Use session as identifier for heimdall application. Defaults to `false`.
        type: boolean

  otp:
    title: OTPProvider
    description: Provider Settings for 'OTPProvider'

    type: object
    additionalProperties: false
    required: [ratatoskr_providers]
    properties:
      ratatoskr_providers:
        title: Ratatoskr Providers
        description: Ratatoskr providers to use for delivering OTP.

        type: array
        minItems: 1
        items:
          type: object
          additionalProperties: false
          anyOf:
            - required: [ii_type, uid]
            - required: [ii_type, name]

          properties:
            ii_type:
              title: Identifiable Information Type
              description: The II type to use this provider with.
              enum: [phone, email]

            uid:
              title: UID
              description: The Ratatoskr provider application UID.
              type: string
              minLength: 1

            name:
              title: Name
              description: The Ratatoskr provider application name.
              type: string
              minLength: 1
          #end properties
      #end ratatoskr_providers

      otp_settings:
        title: OTP Settings
        description: Settings for configuring the `pyotp.TOTP` object.

        type: object
        required: []
        additionalProperties: false

        properties:
          secret:
            title: Secret (Hex)
            description: Hexadecimal secret key for generating and verifying OTPs. Defaults to `settings.HEIMDALL_HMAC_KEY`.
            type: string
            pattern: "^[a-z0-9]{64}$"
          #end secret

          digits:
            title: Digits
            description: Number of OTP digits.
            type: integer
            minimum: 4
          #end digits

          name:
            title: Name
            description: Name of OTP application. Defaults to `OTP (<environment>)`.
            type: string
            minLength: 1
          #end name

          issuer:
            title: Issuer
            description: Issuer of OTP application. Defaults to `Bot MD`.
            type: string
            minLength: 1
          #end issuer

          interval:
            title: Interval
            description: Interval that the OTP is valid for. Since we are doing a time-based thing with validity window size of 1 interval, this means that the OTP may sometimes be valid for up to `2 * interval` seconds; other times it could be valid for only `interval` seconds. Defaults to `300`.
            type: integer
            minimum: 1
          #end interval
      #end otp_settings
  #end otp

  maxicare:
    title: CleoMaxicareProvider
    description: Provider Settings for 'CleoMaxicareProvider'
    type: object
    required: [token]
    properties:
      token:
        title: Token
        description: Token that used for validate access.
        type: string
        minLength: 1

      url:
        title: URL
        description: URL of Maxicare service
        type: string
        format: uri

  public_service:
    title: PublicServiceProvider
    description: Provider Settings for 'PublicServiceProvider'

    type: object
    additionalProperties: false
    required: [access_token]
    properties:
      access_token:
        title: Access Token
        description: Token that used for validate access.
        type: string
        minLength: 1
  #end public_service
#end definitions

[Main Page] [Schema Documentation] [Examples]