Schema for Caesar Provider Settings

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

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

title: Provider Settings
description: "`ProviderApplication.provider_settings` are used to store provider-specific settings such as API keys."

type: object
additionalProperties: false

anyOf:
  - required: [acuity]
  - required: [calendly]
  - required: [google_calendar]
  - required: [hummingbird]
  - required: [icalendar]
  - required: [mandaya]
  - required: [cleo]
  - required: [noop]

properties:
  acuity:
    title: Acuity
    description: Settings for `AcuityProvider`.

    $ref: "#/definitions/Acuity"

  calendly:
    title: Calendly
    description: Settings for `CalendlyProvider`.

    $ref: "#/definitions/Calendly"

  cleo:
    title: Cleo
    description: Settings for `CleoProvider`.

    $ref: "#/definitions/Cleo"

  google_calendar:
    title: Google Calendar
    description: Settings for `GoogleCalendarProvider`.

    $ref: "#/definitions/Google Calendar"

  hummingbird:
    title: HummingBird
    description: Settings for `HummingBirdProvider`.

    $ref: "#/definitions/HummingBird"

  icalendar:
    title: iCalendar
    description: Settings for `ICalendarProvider`.

    $ref: "#/definitions/iCalendar"

  mandaya:
    title: Mandaya
    description: Settings for `MandayaProvider`.

    $ref: "#/definitions/Mandaya"

  noop:
    title: Noop
    description: Settings for `NoopProvider`.

    type: object
    additionalProperties: false

  qa_parser:
    $ref: "/onform/QAParserSettings.schema"
#end properties

definitions:
  Acuity:
    type: object
    additionalProperties: false
    required: [user_id, api_key]

    properties:
      user_id:
        title: User ID
        description: User ID generated by actuity. Obtain this information in Acuity Dashboard -> Integrations -> API -> Credentials.
        type: string
        minLength: 1

      api_key:
        title: API Key
        description: API Key generated by actuity. Obtain this information in Acuity Dashboard -> Integrations -> API -> Credentials.
        type: string
        minLength: 1

  Cleo:
    type: object
    additionalProperties: false
    required: [api_key]

    properties:
      api_key:
        title: API Key
        description: API Key generated for cleo provider to decrypt webhook payload.
        type: string
        minLength: 1

  Mandaya:
    type: object
    additionalProperties: false
    required: [api_key]

    properties:
      api_key:
        title: API Key
        description: API Key generated by mandaya. This key will be used to decrypt webhook payload.
        type: string
        minLength: 1

  Calendly:
    type: object
    additionalProperties: false
    required: [personal_access_token, signing_key, organization_uri, user_uri]

    properties:
      personal_access_token:
        title: Personal Access Token
        description: "Personal access token for accessing the Calendly API obtained from [API Integrations](https://calendly.com/integrations/api_webhooks). We currently do not handle the OAuth 2.0 flow and will use the generated token in the [`Authorization: Bearer` header](https://developer.calendly.com/how-to-authenticate-with-personal-access-tokens)"
        type: string
        minLength: 1

      signing_key:
        title: Signing key
        description: Signing key used to validate incoming webhook payload. This is a randomly generated string by the user.

        type: string
        minLength: 16

      organization_uri:
        title: Organization URI
        description: The unique reference to the `organization`. Get it via the API from [here](https://developer.calendly.com/api-docs/005832c83aeae-get-current-user).

        type: string
        format: uri

      user_uri:
        title: User URI
        description: The unique reference to the `user`. Get it via the API from [here](https://developer.calendly.com/api-docs/005832c83aeae-get-current-user).

        type: string
        format: uri

      scope:
        title: Scope
        description: Whether to use the Calendly API as a `user` or `organization`. Defaults to `user`.
        enum: [user, organization]
    #end properties
  #end Calendly

  Google Calendar:
    type: object
    additionalProperties: false
    required: [calendar_id, token]

    properties:
      calendar_id:
        title: Calendar ID
        description: Calendar identifier. You can get this via [API (or the API explorer)](https://developers.google.com/calendar/api/v3/reference/calendarList/list).
        type: string
        minLength: 1
      #end calendar_id

      token:
        title: Token
        description: An arbitrary string delivered to the target address with each notification.
        type: string
        minLength: 1
      #end token

      all_day_event:
        $ref: "#/definitions/All Day Event"
      #end all_day_event

      credentials:
        title: Google Cloud Credentials
        description: The service account credentials.
        type: object
        required: [type, private_key]
        additionalProperties: true

        properties:
          type:
            title: Type
            description: Credential type. Must be `service_account`.
            const: service_account

          private_key:
            title: Private Key
            description: Private key associated with the credential.
            type: string
            minLength: 1
      #end credentials

      resource_id:
        title: Resource ID
        description: Resource ID returned by calendar events watch API. This can be found in the `X-Goog-Resource-Id` header of watch incoming webhooks and is also populated during the `upsert_webhook` call. This value is required during webhook deletion.
        type: string
        minLength: 1
      #end resource_id

      sync_window:
        $ref: "#/definitions/Sync Window"
      #end sync_window

      sync_token:
        title: Sync Token (Unused)
        description: Sync token stored during the initial sync according to [Synchronize Resources Efficiently](https://developers.google.com/calendar/api/guides/sync) guide. This is currently not used.
        type: string
        minLength: 1
      #end sync_token

      sync_token_updated_on:
        title: Sync Token Updated On (Unused)
        description: Date/time the sync token was updated. This is currently not used.
        type: string
        format: date-time
      #end sync_token
  #end Google Calendar

  HummingBird:
    type: object
    additionalProperties: false
    required: [api_key, api_url, token_url]

    properties:
      api_key:
        title: API Key
        description: API Key generated by HummingBird.
        type: string
        minLength: 1

      api_url:
        title: API URL
        description: URL of HummingBird API server.
        type: string
        minLength: 1
        format: uri

      token_url:
        title: Token URL
        description: URL to get verification token from HummingBird server.
        type: string
        minLength: 1
        format: uri

  iCalendar:
    type: object
    additionalProperties: false
    required: [url]

    properties:
      url:
        title: URL
        description: URL to download the calendar file from.
        type: string
        minLength: 1
      #end url

      token:
        title: Token
        description: Token for triggering a sync via webhook.
        type: string
        minLength: 16

      all_day_event:
        $ref: "#/definitions/All Day Event"
      #end all_day_event

      sync_window:
        $ref: "#/definitions/Sync Window"
      #end sync_window
    #end properties
  #end iCalendar

  All Day Event:
    title: All Day Event
    description: Specifies default start/end time for all day events.

    type: object
    additionalProperties: false
    required: []

    properties:
      timezone:
        title: Timezone
        description: Timezone for the all day event. Defaults to UTC.
        type: string
        minLength: 1

      start_time:
        title: Start Time
        description: Start time in the calendar timezone. Defaults to `00:00`.
        type: string
        format: time

      end_time:
        title: End Time
        description: End time in the calendar timezone. Defaults to `00:00`.
        type: string
        format: time
    #end properties
  #end All Day Event

  Sync Window:
    title: Sync Window
    description: Events within this window will be synced.

    type: object
    additionalProperties: false
    required: [before, after]

    properties:
      before:
        title: Before
        description: Number of seconds before now to sync events. Defaults to `604800` (i.e., 7 days).
        type: integer
        minimum: 1

      after:
        title: Before
        description: Number of seconds after now to sync events. Defaults to `2592000` (i.e., 30 days).
        type: integer
        minimum: 1
  #end Sync Window
#end definitions

[Main Page] [Schema Documentation] [Examples]