sourcebot/schemas/v3/identityProvider.json

199 lines
6.7 KiB
JSON
Raw Normal View History

2025-10-31 04:22:25 +00:00
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "IdentityProviderConfig",
"definitions": {
"GitHubIdentityProviderConfig": {
"type": "object",
2025-11-05 03:55:25 +00:00
"additionalProperties": false,
2025-10-31 04:22:25 +00:00
"properties": {
"provider": {
"const": "github"
},
"purpose": {
2025-11-05 03:55:25 +00:00
"enum": ["sso", "account_linking"]
2025-10-31 04:22:25 +00:00
},
"clientId": {
"$ref": "./shared.json#/definitions/Token"
},
"clientSecret": {
"$ref": "./shared.json#/definitions/Token"
},
"baseUrl": {
2025-11-05 03:55:25 +00:00
"type": "string",
"format": "url",
"default": "https://github.com",
"description": "The URL of the GitHub host. Defaults to https://github.com",
"examples": [
"https://github.com",
"https://github.example.com"
],
"pattern": "^https?:\\/\\/[^\\s/$.?#].[^\\s]*$"
},
"accountLinkingRequired": {
2025-11-03 00:11:48 +00:00
"type": "boolean",
2025-11-04 05:42:35 +00:00
"default": false
2025-10-31 04:22:25 +00:00
}
},
"required": ["provider", "purpose", "clientId", "clientSecret"]
},
"GitLabIdentityProviderConfig": {
"type": "object",
2025-11-05 03:55:25 +00:00
"additionalProperties": false,
2025-10-31 04:22:25 +00:00
"properties": {
"provider": {
"const": "gitlab"
},
"purpose": {
2025-11-05 03:55:25 +00:00
"enum": ["sso", "account_linking"]
2025-10-31 04:22:25 +00:00
},
"clientId": {
"$ref": "./shared.json#/definitions/Token"
},
"clientSecret": {
"$ref": "./shared.json#/definitions/Token"
},
"baseUrl": {
2025-11-05 03:55:25 +00:00
"type": "string",
"format": "url",
"default": "https://gitlab.com",
"description": "The URL of the GitLab host. Defaults to https://gitlab.com",
"examples": [
"https://gitlab.com",
"https://gitlab.example.com"
],
"pattern": "^https?:\\/\\/[^\\s/$.?#].[^\\s]*$"
},
"accountLinkingRequired": {
2025-11-03 00:11:48 +00:00
"type": "boolean",
2025-11-05 03:55:25 +00:00
"default": false
2025-10-31 04:22:25 +00:00
}
},
2025-11-04 01:21:04 +00:00
"required": ["provider", "purpose", "clientId", "clientSecret"]
2025-10-31 04:22:25 +00:00
},
"GoogleIdentityProviderConfig": {
"type": "object",
2025-11-05 03:55:25 +00:00
"additionalProperties": false,
2025-10-31 04:22:25 +00:00
"properties": {
"provider": {
"const": "google"
},
2025-11-05 03:55:25 +00:00
"purpose": {
"const": "sso"
},
2025-10-31 04:22:25 +00:00
"clientId": {
"$ref": "./shared.json#/definitions/Token"
},
"clientSecret": {
"$ref": "./shared.json#/definitions/Token"
}
},
2025-11-05 03:55:25 +00:00
"required": ["provider", "purpose", "clientId", "clientSecret"]
2025-10-31 04:22:25 +00:00
},
"OktaIdentityProviderConfig": {
"type": "object",
2025-11-05 03:55:25 +00:00
"additionalProperties": false,
2025-10-31 04:22:25 +00:00
"properties": {
"provider": {
"const": "okta"
},
2025-11-05 03:55:25 +00:00
"purpose": {
"const": "sso"
},
2025-10-31 04:22:25 +00:00
"clientId": {
"$ref": "./shared.json#/definitions/Token"
},
"clientSecret": {
"$ref": "./shared.json#/definitions/Token"
},
"issuer": {
"$ref": "./shared.json#/definitions/Token"
}
},
2025-11-05 03:55:25 +00:00
"required": ["provider", "purpose", "clientId", "clientSecret", "issuer"]
2025-10-31 04:22:25 +00:00
},
"KeycloakIdentityProviderConfig": {
"type": "object",
2025-11-05 03:55:25 +00:00
"additionalProperties": false,
2025-10-31 04:22:25 +00:00
"properties": {
"provider": {
"const": "keycloak"
},
2025-11-05 03:55:25 +00:00
"purpose": {
"const": "sso"
},
2025-10-31 04:22:25 +00:00
"clientId": {
"$ref": "./shared.json#/definitions/Token"
},
"clientSecret": {
"$ref": "./shared.json#/definitions/Token"
},
"issuer": {
"$ref": "./shared.json#/definitions/Token"
}
},
2025-11-05 03:55:25 +00:00
"required": ["provider", "purpose", "clientId", "clientSecret", "issuer"]
2025-10-31 04:22:25 +00:00
},
"MicrosoftEntraIDIdentityProviderConfig": {
"type": "object",
2025-11-05 03:55:25 +00:00
"additionalProperties": false,
2025-10-31 04:22:25 +00:00
"properties": {
"provider": {
"const": "microsoft-entra-id"
},
2025-11-05 03:55:25 +00:00
"purpose": {
"const": "sso"
},
2025-10-31 04:22:25 +00:00
"clientId": {
"$ref": "./shared.json#/definitions/Token"
},
"clientSecret": {
"$ref": "./shared.json#/definitions/Token"
},
"issuer": {
"$ref": "./shared.json#/definitions/Token"
}
},
2025-11-05 03:55:25 +00:00
"required": ["provider", "purpose", "clientId", "clientSecret", "issuer"]
2025-10-31 04:22:25 +00:00
},
"GCPIAPIdentityProviderConfig": {
"type": "object",
2025-11-05 03:55:25 +00:00
"additionalProperties": false,
2025-10-31 04:22:25 +00:00
"properties": {
"provider": {
"const": "gcp-iap"
},
2025-11-05 03:55:25 +00:00
"purpose": {
"const": "sso"
},
2025-10-31 04:22:25 +00:00
"audience": {
"$ref": "./shared.json#/definitions/Token"
}
},
2025-11-05 03:55:25 +00:00
"required": ["provider", "purpose", "audience"]
2025-10-31 04:22:25 +00:00
}
},
"oneOf": [
{
"$ref": "#/definitions/GitHubIdentityProviderConfig"
},
{
"$ref": "#/definitions/GitLabIdentityProviderConfig"
},
{
"$ref": "#/definitions/GoogleIdentityProviderConfig"
},
{
"$ref": "#/definitions/OktaIdentityProviderConfig"
},
{
"$ref": "#/definitions/KeycloakIdentityProviderConfig"
},
{
"$ref": "#/definitions/MicrosoftEntraIDIdentityProviderConfig"
},
{
"$ref": "#/definitions/GCPIAPIdentityProviderConfig"
}
]
}