Closed keithtkl closed 3 years ago
Config Section | Partially Covered | Completed | Remarks |
---|---|---|---|
authentication | :heavy_check_mark: | Device_token not covered, identities is also not covered | |
authenticator | :heavy_check_mark: | Only covered password policy | |
database | Not supported yet | ||
forgot_password | :heavy_check_mark: | - | |
hook | :heavy_check_mark: | - | |
http | :heavy_check_mark: | public_origin and allowed_origins are supported. | |
identity | :heavy_check_mark: | OAuth SSO Provider section need update to support more than on provider of same type and order | |
localization | :heavy_check_mark: | - | |
messaging | Not supported yet | ||
oauth | :heavy_check_mark: | - | |
redis | Not supported yet | ||
session | :heavy_check_mark: | - | |
template | In progress | ||
ui | :heavy_check_mark: | - | |
verification | Not supported yet | ||
welcome_message | Not supported yet |
Full JSON Schema (09/10/2020):
{
"$defs": {
"AppConfig": {
"additionalProperties": false,
"properties": {
"authentication": {
"$ref": "#/$defs/AuthenticationConfig"
},
"authenticator": {
"$ref": "#/$defs/AuthenticatorConfig"
},
"database": {
"$ref": "#/$defs/DatabaseConfig"
},
"forgot_password": {
"$ref": "#/$defs/ForgotPasswordConfig"
},
"hook": {
"$ref": "#/$defs/HookConfig"
},
"http": {
"$ref": "#/$defs/HTTPConfig"
},
"id": {
"type": "string"
},
"identity": {
"$ref": "#/$defs/IdentityConfig"
},
"localization": {
"$ref": "#/$defs/LocalizationConfig"
},
"messaging": {
"$ref": "#/$defs/MessagingConfig"
},
"oauth": {
"$ref": "#/$defs/OAuthConfig"
},
"redis": {
"$ref": "#/$defs/RedisConfig"
},
"session": {
"$ref": "#/$defs/SessionConfig"
},
"template": {
"$ref": "#/$defs/TemplateConfig"
},
"ui": {
"$ref": "#/$defs/UIConfig"
},
"verification": {
"$ref": "#/$defs/VerificationConfig"
},
"welcome_message": {
"$ref": "#/$defs/WelcomeMessageConfig"
}
},
"required": [
"id"
],
"type": "object"
},
"AuthenticationConfig": {
"additionalProperties": false,
"properties": {
"device_token": {
"$ref": "#/$defs/DeviceTokenConfig"
},
"identities": {
"items": {
"$ref": "#/$defs/IdentityType"
},
"type": "array",
"uniqueItems": true
},
"primary_authenticators": {
"items": {
"$ref": "#/$defs/PrimaryAuthenticatorType"
},
"type": "array",
"uniqueItems": true
},
"recovery_code": {
"$ref": "#/$defs/RecoveryCodeConfig"
},
"secondary_authentication_mode": {
"$ref": "#/$defs/SecondaryAuthenticationMode"
},
"secondary_authenticators": {
"items": {
"$ref": "#/$defs/SecondaryAuthenticatorType"
},
"type": "array",
"uniqueItems": true
}
},
"type": "object"
},
"AuthenticatorConfig": {
"additionalProperties": false,
"properties": {
"oob_otp": {
"$ref": "#/$defs/AuthenticatorOOBConfig"
},
"password": {
"$ref": "#/$defs/AuthenticatorPasswordConfig"
},
"totp": {
"$ref": "#/$defs/AuthenticatorTOTPConfig"
}
},
"type": "object"
},
"AuthenticatorOOBConfig": {
"additionalProperties": false,
"properties": {
"email": {
"$ref": "#/$defs/AuthenticatorOOBEmailConfig"
},
"sms": {
"$ref": "#/$defs/AuthenticatorOOBSMSConfig"
}
},
"type": "object"
},
"AuthenticatorOOBEmailConfig": {
"additionalProperties": false,
"properties": {
"code_digits": {
"maximum": 8,
"minimum": 4,
"type": "integer"
},
"maximum": {
"type": "integer"
}
},
"type": "object"
},
"AuthenticatorOOBSMSConfig": {
"additionalProperties": false,
"properties": {
"code_digits": {
"maximum": 8,
"minimum": 4,
"type": "integer"
},
"maximum": {
"type": "integer"
}
},
"type": "object"
},
"AuthenticatorPasswordConfig": {
"additionalProperties": false,
"properties": {
"policy": {
"$ref": "#/$defs/PasswordPolicyConfig"
}
},
"type": "object"
},
"AuthenticatorTOTPConfig": {
"additionalProperties": false,
"properties": {
"maximum": {
"type": "integer"
}
},
"type": "object"
},
"DatabaseConfig": {
"additionalProperties": false,
"properties": {
"idle_connection_timeout_seconds": {
"minimum": 0,
"type": "integer"
},
"max_connection_lifetime_seconds": {
"minimum": 0,
"type": "integer"
},
"max_idle_connection": {
"minimum": 0,
"type": "integer"
},
"max_open_connection": {
"minimum": 0,
"type": "integer"
}
},
"type": "object"
},
"DeviceTokenConfig": {
"additionalProperties": false,
"properties": {
"disabled": {
"type": "boolean"
},
"expire_in_days": {
"$ref": "#/$defs/DurationDays"
}
},
"type": "object"
},
"DurationDays": {
"type": "integer"
},
"DurationSeconds": {
"type": "integer"
},
"ForgotPasswordConfig": {
"additionalProperties": false,
"properties": {
"enabled": {
"type": "boolean"
},
"reset_code_expiry_seconds": {
"$ref": "#/$defs/DurationSeconds"
}
},
"type": "object"
},
"HTTPConfig": {
"additionalProperties": false,
"properties": {
"allowed_origins": {
"items": {
"type": "string"
},
"type": "array"
},
"cookie_prefix": {
"type": "string"
},
"public_origin": {
"type": "string"
}
},
"required": [
"public_origin"
],
"type": "object"
},
"HookConfig": {
"additionalProperties": false,
"properties": {
"handlers": {
"items": {
"$ref": "#/$defs/HookHandlerConfig"
},
"type": "array"
},
"sync_hook_timeout_seconds": {
"$ref": "#/$defs/DurationSeconds"
},
"sync_hook_total_timeout_seconds": {
"$ref": "#/$defs/DurationSeconds"
}
},
"type": "object"
},
"HookHandlerConfig": {
"additionalProperties": false,
"properties": {
"event": {
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"event",
"url"
],
"type": "object"
},
"IdentityConfig": {
"additionalProperties": false,
"properties": {
"login_id": {
"$ref": "#/$defs/LoginIDConfig"
},
"oauth": {
"$ref": "#/$defs/OAuthSSOConfig"
},
"on_conflict": {
"$ref": "#/$defs/IdentityConflictConfig"
}
},
"type": "object"
},
"IdentityConflictConfig": {
"additionalProperties": false,
"properties": {
"promotion": {
"$ref": "#/$defs/PromotionConflictBehavior"
}
},
"type": "object"
},
"IdentityType": {
"enum": [
"login_id",
"oauth",
"anonymous"
],
"type": "string"
},
"LocalizationConfig": {
"additionalProperties": false,
"properties": {
"fallback_language": {
"type": "string"
}
},
"type": "object"
},
"LoginIDConfig": {
"additionalProperties": false,
"properties": {
"keys": {
"items": {
"$ref": "#/$defs/LoginIDKeyConfig"
},
"type": "array"
},
"types": {
"$ref": "#/$defs/LoginIDTypesConfig"
}
},
"type": "object"
},
"LoginIDEmailConfig": {
"additionalProperties": false,
"properties": {
"block_plus_sign": {
"type": "boolean"
},
"case_sensitive": {
"type": "boolean"
},
"ignore_dot_sign": {
"type": "boolean"
}
},
"type": "object"
},
"LoginIDKeyConfig": {
"additionalProperties": false,
"properties": {
"key": {
"type": "string"
},
"max_amount": {
"type": "integer"
},
"max_length": {
"type": "integer"
},
"type": {
"$ref": "#/$defs/LoginIDKeyType"
}
},
"required": [
"type"
],
"type": "object"
},
"LoginIDKeyType": {
"enum": [
"email",
"phone",
"username"
],
"type": "string"
},
"LoginIDTypesConfig": {
"additionalProperties": false,
"properties": {
"email": {
"$ref": "#/$defs/LoginIDEmailConfig"
},
"username": {
"$ref": "#/$defs/LoginIDUsernameConfig"
}
},
"type": "object"
},
"LoginIDUsernameConfig": {
"additionalProperties": false,
"properties": {
"ascii_only": {
"type": "boolean"
},
"block_reserved_usernames": {
"type": "boolean"
},
"case_sensitive": {
"type": "boolean"
},
"excluded_keywords": {
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"MessagingConfig": {
"additionalProperties": false,
"properties": {
"sms_provider": {
"$ref": "#/$defs/SMSProvider"
}
},
"type": "object"
},
"OAuthClientConfig": {
"additionalProperties": false,
"properties": {
"access_token_lifetime_seconds": {
"$ref": "#/$defs/DurationSeconds"
},
"client_id": {
"type": "string"
},
"client_uri": {
"format": "uri",
"type": "string"
},
"grant_types": {
"items": {
"type": "string"
},
"type": "array"
},
"post_logout_redirect_uris": {
"items": {
"format": "uri",
"type": "string"
},
"type": "array"
},
"redirect_uris": {
"items": {
"format": "uri",
"type": "string"
},
"minItems": 1,
"type": "array"
},
"refresh_token_lifetime_seconds": {
"$ref": "#/$defs/DurationSeconds"
},
"response_types": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"client_id",
"redirect_uris"
],
"type": "object"
},
"OAuthConfig": {
"additionalProperties": false,
"properties": {
"clients": {
"items": {
"$ref": "#/$defs/OAuthClientConfig"
},
"type": "array"
}
},
"type": "object"
},
"OAuthSSOConfig": {
"additionalProperties": false,
"properties": {
"providers": {
"items": {
"$ref": "#/$defs/OAuthSSOProviderConfig"
},
"type": "array"
}
},
"type": "object"
},
"OAuthSSOProviderConfig": {
"additionalProperties": false,
"allOf": [
{
"if": {
"properties": {
"type": {
"const": "apple"
}
}
},
"then": {
"required": [
"type",
"client_id",
"key_id",
"team_id"
]
}
},
{
"if": {
"properties": {
"type": {
"const": "azureadv2"
}
}
},
"then": {
"required": [
"type",
"client_id",
"tenant"
]
}
}
],
"properties": {
"alias": {
"type": "string"
},
"claims": {
"$ref": "#/$defs/VerificationOAuthClaimsConfig"
},
"client_id": {
"type": "string"
},
"key_id": {
"type": "string"
},
"team_id": {
"type": "string"
},
"tenant": {
"type": "string"
},
"type": {
"$ref": "#/$defs/OAuthSSOProviderType"
}
},
"required": [
"type",
"client_id"
],
"type": "object"
},
"OAuthSSOProviderType": {
"enum": [
"google",
"facebook",
"linkedin",
"azureadv2",
"apple"
],
"type": "string"
},
"PasswordPolicyConfig": {
"additionalProperties": false,
"properties": {
"digit_required": {
"type": "boolean"
},
"excluded_keywords": {
"items": {
"type": "string"
},
"type": "array"
},
"history_days": {
"$ref": "#/$defs/DurationDays"
},
"history_size": {
"type": "integer"
},
"lowercase_required": {
"type": "boolean"
},
"min_length": {
"type": "integer"
},
"minimum_guessable_level": {
"type": "integer"
},
"symbol_required": {
"type": "boolean"
},
"uppercase_required": {
"type": "boolean"
}
},
"type": "object"
},
"PrimaryAuthenticatorType": {
"enum": [
"password",
"oob_otp"
],
"type": "string"
},
"PromotionConflictBehavior": {
"enum": [
"error",
"login"
],
"type": "string"
},
"RecoveryCodeConfig": {
"additionalProperties": false,
"properties": {
"count": {
"type": "integer"
},
"list_enabled": {
"type": "boolean"
}
},
"type": "object"
},
"RedisConfig": {
"additionalProperties": false,
"properties": {
"idle_connection_timeout_seconds": {
"minimum": 0,
"type": "integer"
},
"max_connection_lifetime_seconds": {
"minimum": 0,
"type": "integer"
},
"max_idle_connection": {
"minimum": 0,
"type": "integer"
},
"max_open_connection": {
"minimum": 0,
"type": "integer"
}
},
"type": "object"
},
"SMSProvider": {
"enum": [
"nexmo",
"twilio"
],
"type": "string"
},
"SecondaryAuthenticationMode": {
"enum": [
"if_requested",
"if_exists",
"required"
],
"type": "string"
},
"SecondaryAuthenticatorType": {
"enum": [
"password",
"oob_otp",
"totp"
],
"type": "string"
},
"SessionConfig": {
"additionalProperties": false,
"properties": {
"cookie_domain": {
"type": "string"
},
"cookie_non_persistent": {
"type": "boolean"
},
"idle_timeout_enabled": {
"type": "boolean"
},
"idle_timeout_seconds": {
"$ref": "#/$defs/DurationSeconds"
},
"lifetime_seconds": {
"$ref": "#/$defs/DurationSeconds"
}
},
"type": "object"
},
"TemplateConfig": {
"additionalProperties": false,
"properties": {
"items": {
"items": {
"$ref": "#/$defs/TemplateItem"
},
"type": "array"
}
},
"type": "object"
},
"TemplateItem": {
"additionalProperties": false,
"properties": {
"language_tag": {
"type": "string"
},
"type": {
"$ref": "#/$defs/TemplateItemType"
},
"uri": {
"type": "string"
}
},
"required": [
"type",
"uri"
],
"type": "object"
},
"TemplateItemType": {
"type": "string"
},
"UIConfig": {
"additionalProperties": false,
"properties": {
"country_calling_code": {
"$ref": "#/$defs/UICountryCallingCodeConfig"
},
"custom_css": {
"type": "string"
}
},
"type": "object"
},
"UICountryCallingCodeConfig": {
"additionalProperties": false,
"properties": {
"default": {
"type": "string"
},
"values": {
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"VerificationClaimConfig": {
"additionalProperties": false,
"properties": {
"enabled": {
"type": "boolean"
},
"required": {
"type": "boolean"
}
},
"type": "object"
},
"VerificationClaimsConfig": {
"additionalProperties": false,
"properties": {
"email": {
"$ref": "#/$defs/VerificationClaimConfig"
},
"phone_number": {
"$ref": "#/$defs/VerificationClaimConfig"
}
},
"type": "object"
},
"VerificationConfig": {
"additionalProperties": false,
"properties": {
"claims": {
"$ref": "#/$defs/VerificationClaimsConfig"
},
"code_expiry_seconds": {
"$ref": "#/$defs/DurationSeconds"
},
"criteria": {
"$ref": "#/$defs/VerificationCriteria"
}
},
"type": "object"
},
"VerificationCriteria": {
"enum": [
"any",
"all"
],
"type": "string"
},
"VerificationOAuthClaimConfig": {
"additionalProperties": false,
"properties": {
"assume_verified": {
"type": "boolean"
}
},
"type": "object"
},
"VerificationOAuthClaimsConfig": {
"additionalProperties": false,
"properties": {
"email": {
"$ref": "#/$defs/VerificationOAuthClaimConfig"
}
},
"type": "object"
},
"WelcomeMessageConfig": {
"additionalProperties": false,
"properties": {
"destination": {
"$ref": "#/$defs/WelcomeMessageDestination"
},
"enabled": {
"type": "boolean"
}
},
"type": "object"
},
"WelcomeMessageDestination": {
"enum": [
"first",
"all"
],
"type": "string"
}
},
"$ref": "#/$defs/AppConfig"
}