{
  "$schema" : "https://json-schema.org/draft/2019-09/schema",
  "$defs" : {
    "Proxy" : {
      "type" : "object",
      "properties" : {
        "Password" : {
          "description" : "Password to authenticate against the forward proxy",
          "format" : "password",
          "additionalProperties" : false,
          "type" : "string",
          "examples" : [ "proxyPassword" ]
        },
        "Url" : {
          "description" : "Url of the forward proxy",
          "additionalProperties" : false,
          "type" : "string",
          "examples" : [ "https://myproxy.com" ]
        },
        "UserName" : {
          "description" : "Username to authenticate against the forward proxy ",
          "additionalProperties" : false,
          "type" : "string",
          "examples" : [ "proxyUser" ]
        }
      },
      "additionalProperties" : false
    },
    "UserAttribute" : {
      "type" : "object",
      "properties" : {
        "Properties" : {
          "description" : "User property mapping of Keycloak attributes that are imported and available as user properties (IUser.getProperty).\nThe left side, e.g. phone, specifies the unique name of the user property in Axon Ivy.\nOn the right side, e.g. mobilePhone, the name of the attribute of a user in Keycloak\n[keyvalue:User Property,Keycloak Attribute Name]",
          "additionalProperties" : {
            "type" : "string"
          },
          "type" : "object",
          "examples" : [ "phoneNumber: mobilePhone" ]
        }
      },
      "additionalProperties" : false
    }
  },
  "type" : "object",
  "properties" : {
    "BackendUrl" : {
      "type" : "string",
      "description" : "Keycloak backend URL is used to synchronize the users. If not set fallback to Url."
    },
    "ClientId" : {
      "type" : "string",
      "description" : "Client ID provided by Keycloak when registering the application"
    },
    "ClientSecret" : {
      "type" : "string",
      "description" : "Client key provided by Keycloak when registering the application"
    },
    "Proxy" : {
      "$ref" : "#/$defs/Proxy"
    },
    "Realm" : {
      "type" : "string",
      "description" : "Keycloak realm"
    },
    "Roles" : {
      "description" : "Role mapping that is considered by the user synchronization.\nUsers are added to the roles to which they are assigned.\nThe left side, e.g. Manager, specifies the unique name of the role defined in Axon Ivy.\nOn the right side, e.g. 208e37b6-f34c-4026-bae5-c3aa40bec705, the UUID of the role in Keycloak.\nThe synchronization adds all users to Manager that are assigned to 208e37b6-f34c-4026-bae5-c3aa40bec705\n[keyvalue:Ivy Role,Keycloak Group ID]",
      "additionalProperties" : {
        "type" : "string"
      },
      "type" : "object",
      "examples" : [ "Manager: 208e37b6-f34c-4026-bae5-c3aa40bec705" ]
    },
    "Url" : {
      "type" : "string",
      "description" : "Keycloak URL is used to redirect the user to the login page."
    },
    "UserAttribute" : {
      "$ref" : "#/$defs/UserAttribute"
    }
  },
  "additionalProperties" : false
}
