{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "catalog": {
      "type": "object",
      "properties": {
        "providers": {
          "type": "object",
          "properties": {
            "keycloakOrg": {
              "type": "object",
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "object",
                    "required": [
                      "baseUrl",
                      "password",
                      "username"
                    ],
                    "properties": {
                      "baseUrl": {
                        "description": "Location of the Keycloak instance",
                        "type": "string"
                      },
                      "realm": {
                        "description": "Keycloak realm name. This realm is scraped and entities are",
                        "type": "string"
                      },
                      "loginRealm": {
                        "description": "Keycloak realm name. This realm is used for authentication using the credentials below.",
                        "type": "string"
                      },
                      "userQuerySize": {
                        "description": "The number of users to query at a time.",
                        "type": "number"
                      },
                      "groupQuerySize": {
                        "description": "The number of groups to query at a time.",
                        "type": "number"
                      },
                      "schedule": {},
                      "username": {
                        "description": "Keycloak credentials. Use together with \"password\".",
                        "type": "string"
                      },
                      "password": {
                        "description": "Keycloak credentials. Use together with \"username\".",
                        "visibility": "secret",
                        "type": "string"
                      }
                    }
                  },
                  {
                    "type": "object",
                    "required": [
                      "baseUrl",
                      "clientId",
                      "clientSecret"
                    ],
                    "properties": {
                      "baseUrl": {
                        "description": "Location of the Keycloak instance",
                        "type": "string"
                      },
                      "realm": {
                        "description": "Keycloak realm name. This realm is scraped and entities are",
                        "type": "string"
                      },
                      "loginRealm": {
                        "description": "Keycloak realm name. This realm is used for authentication using the credentials below.",
                        "type": "string"
                      },
                      "userQuerySize": {
                        "description": "The number of users to query at a time.",
                        "type": "number"
                      },
                      "groupQuerySize": {
                        "description": "The number of groups to query at a time.",
                        "type": "number"
                      },
                      "schedule": {},
                      "clientId": {
                        "description": "Keycloak credentials. Use together with \"clientSecret\".",
                        "type": "string"
                      },
                      "clientSecret": {
                        "description": "Keycloak credentials. Use together with \"clientId\".",
                        "visibility": "secret",
                        "type": "string"
                      }
                    }
                  }
                ]
              }
            }
          }
        }
      }
    }
  }
}
