{
  "$schema" : "https://json-schema.org/draft/2019-09/schema",
  "$defs" : {
    "EMailNotification" : {
      "type" : "object",
      "properties" : {
        "DailySummaryOn" : {
          "description" : "On which weekdays shall the users receive a daily task summary?\nPossible values are: never, always, monday, tuesday, wednesday, thursday, friday, saturday, sunday\nAny combination of weekdays is allowed.\nYou can configure when the summary email is sent in 'EMail:DailyTaskSummary:TriggerTime'",
          "additionalProperties" : false,
          "type" : "string",
          "examples" : [ "never", "always", "monday, tuesday, wednesday, thursday, friday", "saturday, sunday" ]
        },
        "OnNewTasks" : {
          "type" : "boolean",
          "description" : "Shall users be notified by mail whenever a new task is assigned to them?"
        },
        "StandardProcess" : {
          "description" : "Standard processes are a set of predefined processes, which you can customize in your ivy project.\nTo enable these custom processes, the library id of the ivy project must be specified here.\nThe library id is <group-id>:<project-id> from the ivy project deployment definition.\nThe default is 'auto' which means auto detection of standard process in your application",
          "default" : "auto",
          "additionalProperties" : false,
          "type" : "string",
          "examples" : [ "com.axonivy.portal:portal" ]
        }
      },
      "additionalProperties" : false
    },
    "IdentityProvider" : {
      "type" : "object",
      "properties" : {
        "Name" : {
          "description" : "The Security System manages the user and roles in the system database.\nFor the Ivy Security System, no additional configuration is needed.\nFor any other Security System, further configuration is need to integrate such a system.",
          "additionalProperties" : false,
          "type" : "string",
          "examples" : [ "ivy", "microsoft-active-directory", "novell-edirectory", "azure-active-directory" ]
        }
      },
      "allOf" : [ {
        "if" : {
          "properties" : {
            "Name" : {
              "const" : "azure-active-directory"
            }
          }
        },
        "then" : {
          "properties" : {
            "Config" : {
              "$ref" : "/ivy/0.0.2/security-idp-azure.json"
            }
          }
        }
      }, {
        "if" : {
          "properties" : {
            "Name" : {
              "const" : "microsoft-active-directory"
            }
          }
        },
        "then" : {
          "properties" : {
            "Config" : {
              "$ref" : "/ivy/0.0.2/security-idp-msad.json"
            }
          }
        }
      }, {
        "if" : {
          "properties" : {
            "Name" : {
              "const" : "novell-edirectory"
            }
          }
        },
        "then" : {
          "properties" : {
            "Config" : {
              "$ref" : "/ivy/0.0.2/security-idp-novell-edir.json"
            }
          }
        }
      } ]
    },
    "Language" : {
      "type" : "object",
      "properties" : {
        "Content" : {
          "description" : "Content is displayed in this language if the content exists in this language. A locale (language[_COUNTRY])",
          "additionalProperties" : false,
          "type" : "string",
          "examples" : [ "en", "en_GB", "en_US", "de", "de_CH", "de_AT", "de_DE", "fr", "vi" ]
        },
        "Formatting" : {
          "description" : "Data like numbers, dates, times and much more are formatted according to this language. A locale (language[_COUNTRY])",
          "additionalProperties" : false,
          "type" : "string",
          "examples" : [ "en", "en_GB", "en_US", "de", "de_CH", "de_AT", "de_DE", "fr", "vi" ]
        }
      },
      "additionalProperties" : false
    },
    "Schedule" : {
      "type" : "object",
      "properties" : {
        "Cron" : {
          "description" : "Unix Cron expression for the user synchronization.\nFormat is: minutes, hours, day of month, month, day of the week. e.g. \"32 13 * * *\" is everyday at 13:32",
          "additionalProperties" : false,
          "type" : "string",
          "examples" : [ "0 0 * * *" ]
        },
        "Enabled" : {
          "type" : "boolean",
          "description" : "Shall we run the daily Identity Provider user synchronization job?\nWhen the synchronization runs is defined by 'Cron'."
        },
        "ImportUsers" : {
          "type" : "boolean",
          "description" : "Shall we import NEW users with the Identity Provider on schedule?\nThis setting does not affect synchronization of existing users.\nIf ImportUsers is set to:\ntrue:  NEW users are imported on schedule.\n       If a user has not yet been imported by the user synchronization job, she is also imported the first time she logs in.\nfalse: NEW users are not imported on schedule.\n       Instead, a NEW user is only imported the first time she logs in."
        }
      },
      "additionalProperties" : false
    },
    "UserSync" : {
      "type" : "object",
      "properties" : {
        "OnLogin" : {
          "type" : "boolean",
          "description" : "Shall we synchronize a user with the Identity Provider at login?\nIf the user does not exist yet, he will be synchronized anyway.\nIn case of slow Identity Provider connections, it can make sense to set this to false."
        },
        "OnSchedule" : {
          "$ref" : "#/$defs/Schedule"
        }
      },
      "additionalProperties" : false
    }
  },
  "type" : "object",
  "properties" : {
    "IdentityProvider" : {
      "$ref" : "#/$defs/IdentityProvider"
    },
    "UrlPath" : {
      "type" : "string",
      "description" : "The security system slug name which will be used in URL as prefix for all resources which are part of the security system.\nIf not set, then the security system name will be choosen.\nOnly for the default security context this is empty, by default."
    },
    "UserSynch" : {
      "$ref" : "#/$defs/UserSync"
    },
    "EMailNotification" : {
      "$ref" : "#/$defs/EMailNotification"
    },
    "Language" : {
      "$ref" : "#/$defs/Language",
      "description" : "The default language settings, which applies to all users, who have not explicitly set this in their profile settings."
    }
  },
  "additionalProperties" : false
}