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