{
  "$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" : {
        "FullName" : {
          "description" : "# Microsoft Entra ID property which will be mapped to the Ivy User FullName\n# You also can concatenate multiple Microsoft Entra ID properties here, like \"surname givename\"\n# Attributes are described here: https://learn.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0",
          "additionalProperties" : false,
          "type" : "string",
          "examples" : [ "displayName", "givenName", "givenName surname" ]
        },
        "Properties" : {
          "description" : "User property mapping of Microsoft Entra ID 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 Microsoft Entra ID. All available\nattributes are described here: https://learn.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0\n[keyvalue:User Property,Microsoft Entra ID Property]",
          "additionalProperties" : {
            "type" : "string"
          },
          "type" : "object",
          "examples" : [ "phoneNumber: mobilePhone" ]
        }
      },
      "additionalProperties" : false
    }
  },
  "type" : "object",
  "properties" : {
    "ClientId" : {
      "type" : "string",
      "description" : "Client ID provided by Microsoft Entra ID when registering the application"
    },
    "ClientSecret" : {
      "type" : "string",
      "description" : "Client key provided by Microsoft Entra ID when registering the application"
    },
    "GroupFilter" : {
      "type" : "string",
      "description" : "Object ID of a group which users needs to belong to"
    },
    "Proxy" : {
      "$ref" : "#/$defs/Proxy"
    },
    "Roles" : {
      "description" : "Role mapping that is considered by the user synchronization.\nUsers are added to the roles to which they are assigned in.\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 Microsoft Entra ID.\nThe synchronization adds all users to Manager that are assigned to 208e37b6-f34c-4026-bae5-c3aa40bec705\n[keyvalue:Ivy Role,Microsoft Entra ID Group GUID]",
      "additionalProperties" : {
        "type" : "string"
      },
      "type" : "object",
      "examples" : [ "Manager: 208e37b6-f34c-4026-bae5-c3aa40bec705" ]
    },
    "TenantId" : {
      "type" : "string",
      "description" : "Microsoft Entra ID Tenant ID"
    },
    "UserAttribute" : {
      "$ref" : "#/$defs/UserAttribute"
    }
  },
  "additionalProperties" : false
}
