{
  "openapi": "3.0.3",
  "info": {
    "version": "",
    "title": "Continuity-Service",
    "description": "REST service to maintain Retarus Email Continuity mailboxes and control failover routing"
  },
  "externalDocs": {
    "description": "Find out more about Retarus Email Continuity",
    "url": "https://www.retarus.com/services/email-infrastructure/email-continuity/"
  },
  "servers": [
    {
      "url": "https://api.retarus.com/email/continuity/v2/",
      "description": "Public Endpoint"
    }
  ],
  "tags": [
    {
      "name": "Customer",
      "description": "Bulk request, update or delete user information for all users belonging to the {CUSTOMER} number specified in the path of a request"
    },
    {
      "name": "Customer Flag",
      "description": "Update or delete flag for all users belonging to the {CUSTOMER} number specified in the path of a request, e.g. activate the Email Continuity failover or access to the web mailbox for all users"
    },
    {
      "name": "User",
      "description": "Request, update or delete user information for a single user belonging to the {CUSTOMER} number specified in the path of a request"
    },
    {
      "name": "User Flag",
      "description": "Update or delete flag for a single user belonging to the {CUSTOMER} number specified in the path of a request, e.g. activate the Email Continuity failover or the access to the web mailbox"
    },
    {
      "name": "Token",
      "description": "Request a security token required for account activation and password reset"
    },
    {
      "name": "Password",
      "description": "Update user password using a security token"
    }
  ],
  "paths": {
    "/{CUSTOMER}": {
      "head": {
        "summary": "Request user count information for all users belonging to the {CUSTOMER} specified in the URL path",
        "tags": [
          "Customer"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/CUSTOMER"
          },
          {
            "$ref": "#/components/parameters/activationFlag"
          },
          {
            "$ref": "#/components/parameters/accessFlag"
          },
          {
            "$ref": "#/components/parameters/failoverFlag"
          },
          {
            "$ref": "#/components/parameters/failoverGroups"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "User-Count": {
                "description": "The number of users belonging to the customer",
                "required": true,
                "schema": {
                  "type": "integer",
                  "minimum": 0
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameter",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Database request failed OR Keycloak request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "get": {
        "summary": "Request user information for all users belonging to the {CUSTOMER} specified in the URL path",
        "tags": [
          "Customer"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/CUSTOMER"
          },
          {
            "$ref": "#/components/parameters/activationFlag"
          },
          {
            "$ref": "#/components/parameters/accessFlag"
          },
          {
            "$ref": "#/components/parameters/failoverFlag"
          },
          {
            "$ref": "#/components/parameters/offset"
          },
          {
            "$ref": "#/components/parameters/size"
          },
          {
            "$ref": "#/components/parameters/failoverGroups"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "id",
                    "timestamp",
                    "offset",
                    "size",
                    "filter",
                    "total",
                    "count",
                    "users"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string"
                    },
                    "offset": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "size": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "filter": {
                      "type": "object",
                      "required": [
                        "activation",
                        "access",
                        "failover"
                      ],
                      "properties": {
                        "activation": {
                          "type": "boolean"
                        },
                        "access": {
                          "type": "boolean"
                        },
                        "failover": {
                          "type": "boolean"
                        }
                      }
                    },
                    "total": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "count": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "users": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "customer",
                          "domain",
                          "user",
                          "displayName",
                          "givenName",
                          "surName",
                          "language",
                          "timezone",
                          "status"
                        ],
                        "properties": {
                          "customer": {
                            "$ref": "#/components/schemas/customer"
                          },
                          "domain": {
                            "$ref": "#/components/schemas/domain_v2"
                          },
                          "user": {
                            "$ref": "#/components/schemas/user_v2"
                          },
                          "displayName": {
                            "$ref": "#/components/schemas/displayName"
                          },
                          "givenName": {
                            "$ref": "#/components/schemas/givenName"
                          },
                          "surName": {
                            "$ref": "#/components/schemas/surName"
                          },
                          "language": {
                            "$ref": "#/components/schemas/language"
                          },
                          "timezone": {
                            "$ref": "#/components/schemas/timezone"
                          },
                          "department": {
                            "$ref": "#/components/schemas/department_v2"
                          },
                          "costcenter": {
                            "$ref": "#/components/schemas/costcenter_v2"
                          },
                          "phone": {
                            "$ref": "#/components/schemas/phone"
                          },
                          "mobile": {
                            "$ref": "#/components/schemas/mobile"
                          },
                          "failoverGroups": {
                            "$ref": "#/components/schemas/failoverGroups"
                          },
                          "status": {
                            "type": "object",
                            "required": [
                              "activation",
                              "access",
                              "failover"
                            ],
                            "properties": {
                              "activation": {
                                "type": "boolean"
                              },
                              "access": {
                                "type": "boolean"
                              },
                              "failover": {
                                "type": "boolean"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameter",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Database request failed OR Keycloak request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "put": {
        "summary": "Create several users belonging to the {CUSTOMER} specified in the URL path",
        "tags": [
          "Customer"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/CUSTOMER"
          },
          {
            "$ref": "#/components/parameters/mailNotification"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "user",
                    "displayName",
                    "givenName",
                    "surName"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "user": {
                      "$ref": "#/components/schemas/user_v2"
                    },
                    "displayName": {
                      "$ref": "#/components/schemas/displayName"
                    },
                    "givenName": {
                      "$ref": "#/components/schemas/givenName"
                    },
                    "surName": {
                      "$ref": "#/components/schemas/surName"
                    },
                    "language": {
                      "$ref": "#/components/schemas/language"
                    },
                    "timezone": {
                      "$ref": "#/components/schemas/timezone"
                    },
                    "department": {
                      "$ref": "#/components/schemas/department_v2"
                    },
                    "costcenter": {
                      "$ref": "#/components/schemas/costcenter_v2"
                    },
                    "phone": {
                      "$ref": "#/components/schemas/phone"
                    },
                    "mobile": {
                      "$ref": "#/components/schemas/mobile"
                    },
                    "failoverGroups": {
                      "$ref": "#/components/schemas/failoverGroups"
                    }
                  }
                },
                "minItems": 1,
                "maxItems": 1000
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "id",
                    "timestamp",
                    "count",
                    "users"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string"
                    },
                    "count": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "users": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/user_v2"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Unknown encoding OR Invalid JSON request OR Invalid API request OR Invalid user, domain {DOMAIN} does not belong to customer {CUSTOMER}",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "413": {
            "description": "Batch size too large",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Database request failed OR Keycloak request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "patch": {
        "summary": "Update existing users belonging to the {CUSTOMER} specified in the URL path",
        "tags": [
          "Customer"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/CUSTOMER"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "user"
                  ],
                  "minProperties": 2,
                  "additionalProperties": false,
                  "properties": {
                    "user": {
                      "$ref": "#/components/schemas/user_v2"
                    },
                    "displayName": {
                      "$ref": "#/components/schemas/displayName"
                    },
                    "givenName": {
                      "$ref": "#/components/schemas/givenName"
                    },
                    "surName": {
                      "$ref": "#/components/schemas/surName"
                    },
                    "language": {
                      "$ref": "#/components/schemas/language"
                    },
                    "timezone": {
                      "$ref": "#/components/schemas/timezone"
                    },
                    "department": {
                      "$ref": "#/components/schemas/department_v2"
                    },
                    "costcenter": {
                      "$ref": "#/components/schemas/costcenter_v2"
                    },
                    "phone": {
                      "$ref": "#/components/schemas/phone"
                    },
                    "mobile": {
                      "$ref": "#/components/schemas/mobile"
                    },
                    "failoverGroups": {
                      "$ref": "#/components/schemas/failoverGroups"
                    }
                  }
                },
                "minItems": 1,
                "maxItems": 1000
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "id",
                    "timestamp",
                    "count",
                    "users"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string"
                    },
                    "count": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "users": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/user_v2"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Unknown encoding OR Invalid JSON request OR Invalid API request OR Invalid user, domain {DOMAIN} does not belong to customer {CUSTOMER}",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "413": {
            "description": "Batch size too large",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Database request failed OR Keycloak request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "delete": {
        "summary": "Delete existing users",
        "tags": [
          "Customer"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/CUSTOMER"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/user_v2"
                },
                "minItems": 1,
                "maxItems": 1000
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "id",
                    "timestamp",
                    "count",
                    "users"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string"
                    },
                    "count": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "users": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/user_v2"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Unknown encoding OR Invalid JSON request OR Invalid API request OR Invalid user, domain {DOMAIN} does not belong to customer {CUSTOMER}",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "413": {
            "description": "Batch size too large",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Database request failed OR Keycloak request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/{CUSTOMER}/{FLAG}": {
      "put": {
        "summary": "Set flag for all users belonging to the {CUSTOMER} specified in the URL path",
        "tags": [
          "Customer Flag"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/CUSTOMER"
          },
          {
            "$ref": "#/components/parameters/v2_FLAG"
          },
          {
            "$ref": "#/components/parameters/failoverGroups"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "id",
                    "timestamp",
                    "affectedUsers"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string"
                    },
                    "affectedUsers": {
                      "type": "integer",
                      "minimum": 0
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Database request failed OR Keycloak request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "delete": {
        "summary": "Remove flag for all users belonging to the {CUSTOMER} specified in the URL path",
        "tags": [
          "Customer Flag"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/CUSTOMER"
          },
          {
            "$ref": "#/components/parameters/v2_FLAG"
          },
          {
            "$ref": "#/components/parameters/failoverGroups"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "id",
                    "timestamp",
                    "affectedUsers"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string"
                    },
                    "affectedUsers": {
                      "type": "integer",
                      "minimum": 0
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Database request failed OR Keycloak request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/{CUSTOMER}/{USER}": {
      "get": {
        "summary": "Request user information",
        "tags": [
          "User"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/CUSTOMER"
          },
          {
            "$ref": "#/components/parameters/USER"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "id",
                    "timestamp",
                    "user"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string"
                    },
                    "user": {
                      "type": "object",
                      "required": [
                        "customer",
                        "domain",
                        "user",
                        "displayName",
                        "givenName",
                        "surName",
                        "language",
                        "timezone",
                        "status"
                      ],
                      "properties": {
                        "customer": {
                          "$ref": "#/components/schemas/customer"
                        },
                        "domain": {
                          "$ref": "#/components/schemas/domain_v2"
                        },
                        "user": {
                          "$ref": "#/components/schemas/user_v2"
                        },
                        "displayName": {
                          "$ref": "#/components/schemas/displayName"
                        },
                        "givenName": {
                          "$ref": "#/components/schemas/givenName"
                        },
                        "surName": {
                          "$ref": "#/components/schemas/surName"
                        },
                        "language": {
                          "$ref": "#/components/schemas/language"
                        },
                        "timezone": {
                          "$ref": "#/components/schemas/timezone"
                        },
                        "department": {
                          "$ref": "#/components/schemas/department_v2"
                        },
                        "costcenter": {
                          "$ref": "#/components/schemas/costcenter_v2"
                        },
                        "phone": {
                          "$ref": "#/components/schemas/phone"
                        },
                        "mobile": {
                          "$ref": "#/components/schemas/mobile"
                        },
                        "failoverGroups": {
                          "$ref": "#/components/schemas/failoverGroups"
                        },
                        "status": {
                          "type": "object",
                          "required": [
                            "activation",
                            "access",
                            "failover"
                          ],
                          "properties": {
                            "activation": {
                              "type": "boolean"
                            },
                            "access": {
                              "type": "boolean"
                            },
                            "failover": {
                              "type": "boolean"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid user, domain does not belong to customer {CUSTOMER}",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "404": {
            "description": "User not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Database request failed OR Keycloak request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "put": {
        "summary": "Create new user",
        "tags": [
          "User"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/CUSTOMER"
          },
          {
            "$ref": "#/components/parameters/USER"
          },
          {
            "$ref": "#/components/parameters/mailNotification"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "displayName",
                  "givenName",
                  "surName"
                ],
                "additionalProperties": false,
                "properties": {
                  "displayName": {
                    "$ref": "#/components/schemas/displayName"
                  },
                  "givenName": {
                    "$ref": "#/components/schemas/givenName"
                  },
                  "surName": {
                    "$ref": "#/components/schemas/surName"
                  },
                  "language": {
                    "$ref": "#/components/schemas/language"
                  },
                  "timezone": {
                    "$ref": "#/components/schemas/timezone"
                  },
                  "department": {
                    "$ref": "#/components/schemas/department_v2"
                  },
                  "costcenter": {
                    "$ref": "#/components/schemas/costcenter_v2"
                  },
                  "phone": {
                    "$ref": "#/components/schemas/phone"
                  },
                  "mobile": {
                    "$ref": "#/components/schemas/mobile"
                  },
                  "failoverGroups": {
                    "$ref": "#/components/schemas/failoverGroups"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "id",
                    "timestamp"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Unknown encoding OR Invalid JSON request OR Invalid API request OR Invalid user, domain does not belong to customer {CUSTOMER} OR Invalid user address. Reason: address does not match pattern OR Invalid user address. Reason: address too long",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "409": {
            "description": "User conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Database request failed OR Keycloak request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "patch": {
        "summary": "Update existing user",
        "tags": [
          "User"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/CUSTOMER"
          },
          {
            "$ref": "#/components/parameters/USER"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "minProperties": 1,
                "additionalProperties": false,
                "properties": {
                  "displayName": {
                    "$ref": "#/components/schemas/displayName"
                  },
                  "givenName": {
                    "$ref": "#/components/schemas/givenName"
                  },
                  "surName": {
                    "$ref": "#/components/schemas/surName"
                  },
                  "language": {
                    "$ref": "#/components/schemas/language"
                  },
                  "timezone": {
                    "$ref": "#/components/schemas/timezone"
                  },
                  "department": {
                    "$ref": "#/components/schemas/department_v2"
                  },
                  "costcenter": {
                    "$ref": "#/components/schemas/costcenter_v2"
                  },
                  "phone": {
                    "$ref": "#/components/schemas/phone"
                  },
                  "mobile": {
                    "$ref": "#/components/schemas/mobile"
                  },
                  "failoverGroups": {
                    "$ref": "#/components/schemas/failoverGroups"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "id",
                    "timestamp"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Unknown encoding OR Invalid JSON request OR Invalid API request OR Invalid user, domain does not belong to customer {CUSTOMER}",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "404": {
            "description": "User not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Database request failed OR Keycloak request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "delete": {
        "summary": "Delete existing user",
        "tags": [
          "User"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/CUSTOMER"
          },
          {
            "$ref": "#/components/parameters/USER"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "id",
                    "timestamp"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Unknown encoding OR Invalid JSON request OR Invalid API request OR Invalid user, domain does not belong to customer {CUSTOMER}",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "404": {
            "description": "User not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Database request failed OR Keycloak request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/{CUSTOMER}/{USER}/{FLAG}": {
      "put": {
        "summary": "Set flag for a single user",
        "tags": [
          "User Flag"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/CUSTOMER"
          },
          {
            "$ref": "#/components/parameters/USER"
          },
          {
            "$ref": "#/components/parameters/v2_FLAG"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "id",
                    "timestamp"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Unknown encoding OR Invalid JSON request OR Invalid API request OR Invalid user, domain does not belong to customer {CUSTOMER} OR User not activated OR Access not granted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "404": {
            "description": "User not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Database request failed OR Keycloak request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "delete": {
        "summary": "Remove flag for a single user",
        "tags": [
          "User Flag"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/CUSTOMER"
          },
          {
            "$ref": "#/components/parameters/USER"
          },
          {
            "$ref": "#/components/parameters/v2_FLAG"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "id",
                    "timestamp"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "timestamp": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Unknown encoding OR Invalid JSON request OR Invalid API request OR Invalid user, domain does not belong to customer {CUSTOMER} OR Failover enabled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "404": {
            "description": "User not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Database request failed OR Keycloak request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/{CUSTOMER}/{USER}/token": {
      "post": {
        "summary": "Create password token",
        "description": "Create new password token for account activation or password reset. The response contains an URL directing the user to a web frontend where the user can set or reset the password. The URL consists of base part and token. The base part is subject to static configuration and may contain an individual path component for each customer",
        "tags": [
          "Token"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/CUSTOMER"
          },
          {
            "$ref": "#/components/parameters/USER"
          },
          {
            "$ref": "#/components/parameters/mailNotification"
          }
        ],
        "responses": {
          "201": {
            "$ref": "#/components/responses/shared_token_post_201"
          },
          "400": {
            "description": "Invalid user, domain does not belong to customer {CUSTOMER}",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "404": {
            "description": "User not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Database request failed OR Keycloak request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/{USER}/password": {
      "put": {
        "summary": "Set user password (requires no authentication)",
        "tags": [
          "Password"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/USER"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/shared_password_put"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/shared_password_put_200"
          },
          "400": {
            "description": "Unknown encoding OR Invalid JSON request OR Invalid API request OR The password does not match the following criteria",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          },
          "503": {
            "description": "Database request failed OR Keycloak request failed OR OpenXchange request failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/errorResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "basicAuth": {
        "type": "http",
        "scheme": "basic"
      }
    },
    "schemas": {
      "customer": {
        "type": "string",
        "minLength": 5,
        "maxLength": 7,
        "pattern": "[0-9]{5}([A-Z]{2})?",
        "example": "44444"
      },
      "domain_v2": {
        "type": "string",
        "maxLength": 128,
        "pattern": "([a-zA-Z0-9]+[-]+)*[a-zA-Z0-9]+\\.(([a-zA-Z0-9]+[-]+)*[a-zA-Z0-9]+\\.)*[a-zA-Z0-9]+$",
        "example": "domain.com"
      },
      "user_v2": {
        "type": "string",
        "maxLength": 256,
        "pattern": "^([!#$%&'*+/=?^_`{|}~a-zA-Z0-9-]+\\.)*[!#$%&'*+/=?^_`{|}~a-zA-Z0-9-]+@([a-zA-Z0-9]+[-]+)*[a-zA-Z0-9]+\\.(([a-zA-Z0-9]+[-]+)*[a-zA-Z0-9]+\\.)*[a-zA-Z0-9]+$",
        "example": "customer@domain.com"
      },
      "displayName": {
        "type": "string",
        "minLength": 1,
        "maxLength": 256,
        "example": "R. Meyer"
      },
      "givenName": {
        "type": "string",
        "minLength": 1,
        "maxLength": 128,
        "example": "Robert"
      },
      "surName": {
        "type": "string",
        "minLength": 1,
        "maxLength": 128,
        "example": "Meyer"
      },
      "department_v2": {
        "type": "string",
        "nullable": true,
        "minLength": 1,
        "maxLength": 256,
        "example": "Sales"
      },
      "costcenter_v2": {
        "type": "string",
        "nullable": true,
        "minLength": 1,
        "maxLength": 256,
        "example": "01"
      },
      "phone": {
        "type": "string",
        "nullable": true,
        "minLength": 1,
        "maxLength": 64,
        "example": "+49 30 67242-33"
      },
      "mobile": {
        "type": "string",
        "nullable": true,
        "minLength": 1,
        "maxLength": 64,
        "example": "+49 175 424222"
      },
      "failoverGroups": {
        "type": "array",
        "nullable": true,
        "maxItems": 16,
        "items": {
          "type": "string",
          "minLength": 1,
          "maxLength": 64,
          "pattern": "^[a-zA-Z0-9_-]*$",
          "example": "germany"
        },
        "example": [
          "emea",
          "germany"
        ]
      },
      "language": {
        "type": "string",
        "maxLength": 8,
        "enum": [
          "cs_CZ",
          "da_DK",
          "de_DE",
          "en_GB",
          "en_US",
          "es_ES",
          "es_MX",
          "fi_FI",
          "fr_FR",
          "hu_HU",
          "it_IT",
          "ja_JP",
          "lv_LV",
          "nl_NL",
          "pl_PL",
          "pt_BR",
          "ro_RO",
          "ru_RU",
          "sk_SK",
          "sv_SE",
          "tr_TR",
          "zh_CN",
          "zh_TW"
        ],
        "example": "de_DE"
      },
      "timezone": {
        "type": "string",
        "maxLength": 32,
        "enum": [
          "Africa/Abidjan",
          "Africa/Accra",
          "Africa/Addis_Ababa",
          "Africa/Algiers",
          "Africa/Asmara",
          "Africa/Asmera",
          "Africa/Bamako",
          "Africa/Bangui",
          "Africa/Banjul",
          "Africa/Bissau",
          "Africa/Blantyre",
          "Africa/Brazzaville",
          "Africa/Bujumbura",
          "Africa/Cairo",
          "Africa/Casablanca",
          "Africa/Ceuta",
          "Africa/Conakry",
          "Africa/Dakar",
          "Africa/Dar_es_Salaam",
          "Africa/Djibouti",
          "Africa/Douala",
          "Africa/El_Aaiun",
          "Africa/Freetown",
          "Africa/Gaborone",
          "Africa/Harare",
          "Africa/Johannesburg",
          "Africa/Juba",
          "Africa/Kampala",
          "Africa/Khartoum",
          "Africa/Kigali",
          "Africa/Kinshasa",
          "Africa/Lagos",
          "Africa/Libreville",
          "Africa/Lome",
          "Africa/Luanda",
          "Africa/Lubumbashi",
          "Africa/Lusaka",
          "Africa/Malabo",
          "Africa/Maputo",
          "Africa/Maseru",
          "Africa/Mbabane",
          "Africa/Mogadishu",
          "Africa/Monrovia",
          "Africa/Nairobi",
          "Africa/Ndjamena",
          "Africa/Niamey",
          "Africa/Nouakchott",
          "Africa/Ouagadougou",
          "Africa/Porto-Novo",
          "Africa/Sao_Tome",
          "Africa/Timbuktu",
          "Africa/Tripoli",
          "Africa/Tunis",
          "Africa/Windhoek",
          "America/Adak",
          "America/Anchorage",
          "America/Anguilla",
          "America/Antigua",
          "America/Araguaina",
          "America/Argentina/Buenos_Aires",
          "America/Argentina/Catamarca",
          "America/Argentina/ComodRivadavia",
          "America/Argentina/Cordoba",
          "America/Argentina/Jujuy",
          "America/Argentina/La_Rioja",
          "America/Argentina/Mendoza",
          "America/Argentina/Rio_Gallegos",
          "America/Argentina/Salta",
          "America/Argentina/San_Juan",
          "America/Argentina/San_Luis",
          "America/Argentina/Tucuman",
          "America/Argentina/Ushuaia",
          "America/Aruba",
          "America/Asuncion",
          "America/Atikokan",
          "America/Atka",
          "America/Bahia",
          "America/Bahia_Banderas",
          "America/Barbados",
          "America/Belem",
          "America/Belize",
          "America/Blanc-Sablon",
          "America/Boa_Vista",
          "America/Bogota",
          "America/Boise",
          "America/Buenos_Aires",
          "America/Cambridge_Bay",
          "America/Campo_Grande",
          "America/Cancun",
          "America/Caracas",
          "America/Catamarca",
          "America/Cayenne",
          "America/Cayman",
          "America/Chicago",
          "America/Chihuahua",
          "America/Coral_Harbour",
          "America/Cordoba",
          "America/Costa_Rica",
          "America/Creston",
          "America/Cuiaba",
          "America/Curacao",
          "America/Danmarkshavn",
          "America/Dawson",
          "America/Dawson_Creek",
          "America/Denver",
          "America/Detroit",
          "America/Dominica",
          "America/Edmonton",
          "America/Eirunepe",
          "America/El_Salvador",
          "America/Ensenada",
          "America/Fort_Nelson",
          "America/Fort_Wayne",
          "America/Fortaleza",
          "America/Glace_Bay",
          "America/Godthab",
          "America/Goose_Bay",
          "America/Grand_Turk",
          "America/Grenada",
          "America/Guadeloupe",
          "America/Guatemala",
          "America/Guayaquil",
          "America/Guyana",
          "America/Halifax",
          "America/Havana",
          "America/Hermosillo",
          "America/Indiana/Indianapolis",
          "America/Indiana/Knox",
          "America/Indiana/Marengo",
          "America/Indiana/Petersburg",
          "America/Indiana/Tell_City",
          "America/Indiana/Vevay",
          "America/Indiana/Vincennes",
          "America/Indiana/Winamac",
          "America/Indianapolis",
          "America/Inuvik",
          "America/Iqaluit",
          "America/Jamaica",
          "America/Jujuy",
          "America/Juneau",
          "America/Kentucky/Louisville",
          "America/Kentucky/Monticello",
          "America/Knox_IN",
          "America/Kralendijk",
          "America/La_Paz",
          "America/Lima",
          "America/Los_Angeles",
          "America/Louisville",
          "America/Lower_Princes",
          "America/Maceio",
          "America/Managua",
          "America/Manaus",
          "America/Marigot",
          "America/Martinique",
          "America/Matamoros",
          "America/Mazatlan",
          "America/Mendoza",
          "America/Menominee",
          "America/Merida",
          "America/Metlakatla",
          "America/Mexico_City",
          "America/Miquelon",
          "America/Moncton",
          "America/Monterrey",
          "America/Montevideo",
          "America/Montreal",
          "America/Montserrat",
          "America/Nassau",
          "America/New_York",
          "America/Nipigon",
          "America/Nome",
          "America/Noronha",
          "America/North_Dakota/Beulah",
          "America/North_Dakota/Center",
          "America/North_Dakota/New_Salem",
          "America/Ojinaga",
          "America/Panama",
          "America/Pangnirtung",
          "America/Paramaribo",
          "America/Phoenix",
          "America/Port-au-Prince",
          "America/Port_of_Spain",
          "America/Porto_Acre",
          "America/Porto_Velho",
          "America/Puerto_Rico",
          "America/Punta_Arenas",
          "America/Rainy_River",
          "America/Rankin_Inlet",
          "America/Recife",
          "America/Regina",
          "America/Resolute",
          "America/Rio_Branco",
          "America/Rosario",
          "America/Santa_Isabel",
          "America/Santarem",
          "America/Santiago",
          "America/Santo_Domingo",
          "America/Sao_Paulo",
          "America/Scoresbysund",
          "America/Shiprock",
          "America/Sitka",
          "America/St_Barthelemy",
          "America/St_Johns",
          "America/St_Kitts",
          "America/St_Lucia",
          "America/St_Thomas",
          "America/St_Vincent",
          "America/Swift_Current",
          "America/Tegucigalpa",
          "America/Thule",
          "America/Thunder_Bay",
          "America/Tijuana",
          "America/Toronto",
          "America/Tortola",
          "America/Vancouver",
          "America/Virgin",
          "America/Whitehorse",
          "America/Winnipeg",
          "America/Yakutat",
          "America/Yellowknife",
          "Antarctica/Casey",
          "Antarctica/Davis",
          "Antarctica/DumontDUrville",
          "Antarctica/Macquarie",
          "Antarctica/Mawson",
          "Antarctica/McMurdo",
          "Antarctica/Palmer",
          "Antarctica/Rothera",
          "Antarctica/South_Pole",
          "Antarctica/Syowa",
          "Antarctica/Troll",
          "Antarctica/Vostok",
          "Arctic/Longyearbyen",
          "Asia/Aden",
          "Asia/Almaty",
          "Asia/Amman",
          "Asia/Anadyr",
          "Asia/Aqtau",
          "Asia/Aqtobe",
          "Asia/Ashgabat",
          "Asia/Ashkhabad",
          "Asia/Atyrau",
          "Asia/Baghdad",
          "Asia/Bahrain",
          "Asia/Baku",
          "Asia/Bangkok",
          "Asia/Barnaul",
          "Asia/Beirut",
          "Asia/Bishkek",
          "Asia/Brunei",
          "Asia/Calcutta",
          "Asia/Chita",
          "Asia/Choibalsan",
          "Asia/Chongqing",
          "Asia/Chungking",
          "Asia/Colombo",
          "Asia/Dacca",
          "Asia/Damascus",
          "Asia/Dhaka",
          "Asia/Dili",
          "Asia/Dubai",
          "Asia/Dushanbe",
          "Asia/Famagusta",
          "Asia/Gaza",
          "Asia/Harbin",
          "Asia/Hebron",
          "Asia/Ho_Chi_Minh",
          "Asia/Hong_Kong",
          "Asia/Hovd",
          "Asia/Irkutsk",
          "Asia/Istanbul",
          "Asia/Jakarta",
          "Asia/Jayapura",
          "Asia/Jerusalem",
          "Asia/Kabul",
          "Asia/Kamchatka",
          "Asia/Karachi",
          "Asia/Kashgar",
          "Asia/Kathmandu",
          "Asia/Katmandu",
          "Asia/Khandyga",
          "Asia/Kolkata",
          "Asia/Krasnoyarsk",
          "Asia/Kuala_Lumpur",
          "Asia/Kuching",
          "Asia/Kuwait",
          "Asia/Macao",
          "Asia/Macau",
          "Asia/Magadan",
          "Asia/Makassar",
          "Asia/Manila",
          "Asia/Muscat",
          "Asia/Nicosia",
          "Asia/Novokuznetsk",
          "Asia/Novosibirsk",
          "Asia/Omsk",
          "Asia/Oral",
          "Asia/Phnom_Penh",
          "Asia/Pontianak",
          "Asia/Pyongyang",
          "Asia/Qatar",
          "Asia/Qostanay",
          "Asia/Qyzylorda",
          "Asia/Rangoon",
          "Asia/Riyadh",
          "Asia/Saigon",
          "Asia/Sakhalin",
          "Asia/Samarkand",
          "Asia/Seoul",
          "Asia/Shanghai",
          "Asia/Singapore",
          "Asia/Srednekolymsk",
          "Asia/Taipei",
          "Asia/Tashkent",
          "Asia/Tbilisi",
          "Asia/Tehran",
          "Asia/Tel_Aviv",
          "Asia/Thimbu",
          "Asia/Thimphu",
          "Asia/Tokyo",
          "Asia/Tomsk",
          "Asia/Ujung_Pandang",
          "Asia/Ulaanbaatar",
          "Asia/Ulan_Bator",
          "Asia/Urumqi",
          "Asia/Ust-Nera",
          "Asia/Vientiane",
          "Asia/Vladivostok",
          "Asia/Yakutsk",
          "Asia/Yangon",
          "Asia/Yekaterinburg",
          "Asia/Yerevan",
          "Atlantic/Azores",
          "Atlantic/Bermuda",
          "Atlantic/Canary",
          "Atlantic/Cape_Verde",
          "Atlantic/Faeroe",
          "Atlantic/Faroe",
          "Atlantic/Jan_Mayen",
          "Atlantic/Madeira",
          "Atlantic/Reykjavik",
          "Atlantic/South_Georgia",
          "Atlantic/St_Helena",
          "Atlantic/Stanley",
          "Australia/ACT",
          "Australia/Adelaide",
          "Australia/Brisbane",
          "Australia/Broken_Hill",
          "Australia/Canberra",
          "Australia/Currie",
          "Australia/Darwin",
          "Australia/Eucla",
          "Australia/Hobart",
          "Australia/LHI",
          "Australia/Lindeman",
          "Australia/Lord_Howe",
          "Australia/Melbourne",
          "Australia/NSW",
          "Australia/North",
          "Australia/Perth",
          "Australia/Queensland",
          "Australia/South",
          "Australia/Sydney",
          "Australia/Tasmania",
          "Australia/Victoria",
          "Australia/West",
          "Australia/Yancowinna",
          "Brazil/Acre",
          "Brazil/DeNoronha",
          "Brazil/East",
          "Brazil/West",
          "Canada/Atlantic",
          "Canada/Central",
          "Canada/Eastern",
          "Canada/Mountain",
          "Canada/Newfoundland",
          "Canada/Pacific",
          "Canada/Saskatchewan",
          "Canada/Yukon",
          "Chile/Continental",
          "Chile/EasterIsland",
          "Cuba",
          "Egypt",
          "Eire",
          "Europe/Amsterdam",
          "Europe/Andorra",
          "Europe/Astrakhan",
          "Europe/Athens",
          "Europe/Belfast",
          "Europe/Belgrade",
          "Europe/Berlin",
          "Europe/Bratislava",
          "Europe/Brussels",
          "Europe/Bucharest",
          "Europe/Budapest",
          "Europe/Busingen",
          "Europe/Chisinau",
          "Europe/Copenhagen",
          "Europe/Dublin",
          "Europe/Gibraltar",
          "Europe/Guernsey",
          "Europe/Helsinki",
          "Europe/Isle_of_Man",
          "Europe/Istanbul",
          "Europe/Jersey",
          "Europe/Kaliningrad",
          "Europe/Kiev",
          "Europe/Kirov",
          "Europe/Lisbon",
          "Europe/Ljubljana",
          "Europe/London",
          "Europe/Luxembourg",
          "Europe/Madrid",
          "Europe/Malta",
          "Europe/Mariehamn",
          "Europe/Minsk",
          "Europe/Monaco",
          "Europe/Moscow",
          "Europe/Nicosia",
          "Europe/Oslo",
          "Europe/Paris",
          "Europe/Podgorica",
          "Europe/Prague",
          "Europe/Riga",
          "Europe/Rome",
          "Europe/Samara",
          "Europe/San_Marino",
          "Europe/Sarajevo",
          "Europe/Saratov",
          "Europe/Simferopol",
          "Europe/Skopje",
          "Europe/Sofia",
          "Europe/Stockholm",
          "Europe/Tallinn",
          "Europe/Tirane",
          "Europe/Tiraspol",
          "Europe/Ulyanovsk",
          "Europe/Uzhgorod",
          "Europe/Vaduz",
          "Europe/Vatican",
          "Europe/Vienna",
          "Europe/Vilnius",
          "Europe/Volgograd",
          "Europe/Warsaw",
          "Europe/Zagreb",
          "Europe/Zaporozhye",
          "Europe/Zurich",
          "GB-Eire",
          "GMT",
          "Greenwich",
          "Hongkong",
          "Iceland",
          "Indian/Antananarivo",
          "Indian/Chagos",
          "Indian/Christmas",
          "Indian/Cocos",
          "Indian/Comoro",
          "Indian/Kerguelen",
          "Indian/Mahe",
          "Indian/Maldives",
          "Indian/Mauritius",
          "Indian/Mayotte",
          "Indian/Reunion",
          "Iran",
          "Israel",
          "Jamaica",
          "Japan",
          "Kwajalein",
          "Libya",
          "Mexico/BajaNorte",
          "Mexico/BajaSur",
          "Mexico/General",
          "NZ-CHAT",
          "Navajo",
          "Pacific/Apia",
          "Pacific/Auckland",
          "Pacific/Bougainville",
          "Pacific/Chatham",
          "Pacific/Chuuk",
          "Pacific/Easter",
          "Pacific/Efate",
          "Pacific/Enderbury",
          "Pacific/Fakaofo",
          "Pacific/Fiji",
          "Pacific/Funafuti",
          "Pacific/Galapagos",
          "Pacific/Gambier",
          "Pacific/Guadalcanal",
          "Pacific/Guam",
          "Pacific/Honolulu",
          "Pacific/Johnston",
          "Pacific/Kiritimati",
          "Pacific/Kosrae",
          "Pacific/Kwajalein",
          "Pacific/Majuro",
          "Pacific/Marquesas",
          "Pacific/Midway",
          "Pacific/Nauru",
          "Pacific/Niue",
          "Pacific/Norfolk",
          "Pacific/Noumea",
          "Pacific/Pago_Pago",
          "Pacific/Palau",
          "Pacific/Pitcairn",
          "Pacific/Pohnpei",
          "Pacific/Ponape",
          "Pacific/Port_Moresby",
          "Pacific/Rarotonga",
          "Pacific/Saipan",
          "Pacific/Samoa",
          "Pacific/Tahiti",
          "Pacific/Tarawa",
          "Pacific/Tongatapu",
          "Pacific/Truk",
          "Pacific/Wake",
          "Pacific/Wallis",
          "Pacific/Yap",
          "Poland",
          "Portugal",
          "Singapore",
          "Turkey",
          "US/Alaska",
          "US/Aleutian",
          "US/Arizona",
          "US/Central",
          "US/East-Indiana",
          "US/Eastern",
          "US/Hawaii",
          "US/Indiana-Starke",
          "US/Michigan",
          "US/Mountain",
          "US/Pacific",
          "US/Pacific-New",
          "US/Samoa",
          "UTC"
        ],
        "example": "Europe/Berlin"
      },
      "password": {
        "type": "string",
        "minLength": 8,
        "maxLength": 256,
        "allOf": [
          {
            "pattern": "[a-z]"
          },
          {
            "pattern": "[A-Z]"
          },
          {
            "pattern": "[0-9]"
          },
          {
            "pattern": "[@$!%*?&]"
          },
          {
            "pattern": "^[a-zA-Z0-9@$!%*?&]*$"
          }
        ]
      },
      "errorResponse": {
        "type": "object",
        "required": [
          "id",
          "timestamp",
          "status",
          "message"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "timestamp": {
            "type": "string"
          },
          "status": {
            "type": "integer",
            "example": 403
          },
          "message": {
            "type": "string",
            "example": "Forbidden"
          }
        }
      }
    },
    "requestBodies": {
      "shared_password_put": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "required": [
                "token",
                "password"
              ],
              "additionalProperties": false,
              "properties": {
                "token": {
                  "type": "string"
                },
                "password": {
                  "$ref": "#/components/schemas/password"
                }
              }
            }
          }
        }
      }
    },
    "responses": {
      "shared_token_post_201": {
        "description": "OK",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "required": [
                "id",
                "timestamp",
                "token",
                "expiryTimestamp",
                "url"
              ],
              "properties": {
                "id": {
                  "type": "string"
                },
                "timestamp": {
                  "type": "string"
                },
                "token": {
                  "type": "string"
                },
                "expiryTimestamp": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "shared_password_put_200": {
        "description": "OK",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "required": [
                "id",
                "timestamp"
              ],
              "properties": {
                "id": {
                  "type": "string"
                },
                "timestamp": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "shared_customernumbers_get_200": {
        "description": "OK",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "required": [
                "id",
                "timestamp",
                "customers"
              ],
              "properties": {
                "id": {
                  "type": "string"
                },
                "timestamp": {
                  "type": "string"
                },
                "customers": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/customer"
                  }
                }
              }
            }
          }
        }
      }
    },
    "parameters": {
      "activationFlag": {
        "name": "activation",
        "in": "query",
        "description": "Filters response according to state of activation flag",
        "required": false,
        "schema": {
          "type": "boolean",
          "example": false
        }
      },
      "accessFlag": {
        "name": "access",
        "in": "query",
        "description": "Filters response according to state of access flag",
        "required": false,
        "schema": {
          "type": "boolean",
          "example": false
        }
      },
      "failoverFlag": {
        "name": "failover",
        "in": "query",
        "description": "Filters response according to state of failover flag",
        "required": false,
        "schema": {
          "type": "boolean",
          "example": false
        }
      },
      "offset": {
        "name": "offset",
        "in": "query",
        "description": "Offset used for pagination",
        "required": false,
        "schema": {
          "type": "integer",
          "minimum": 0,
          "default": 0
        }
      },
      "size": {
        "name": "size",
        "in": "query",
        "description": "Limits size of response",
        "required": false,
        "schema": {
          "type": "integer",
          "minimum": 0,
          "default": 1000
        }
      },
      "failoverGroups": {
        "name": "group",
        "in": "query",
        "description": "Restricts the operation to users who are a member of at least one of the given failover groups. If this parameter is absent, the operation will be applied to all users of the customer {CUSTOMER}.",
        "required": false,
        "schema": {
          "$ref": "#/components/schemas/failoverGroups"
        },
        "example": "group=emea&group=germany"
      },
      "mailNotification": {
        "name": "mailNotification",
        "in": "query",
        "description": "If set to `true` or `1`, an email notification is sent to the end user automatically",
        "required": false,
        "schema": {
          "type": "string",
          "example": "true"
        }
      },
      "CUSTOMER": {
        "name": "CUSTOMER",
        "in": "path",
        "required": true,
        "schema": {
          "$ref": "#/components/schemas/customer"
        }
      },
      "USER": {
        "name": "USER",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string",
          "pattern": "[^/]+(?:@|%40)[^/]+",
          "example": "customer@domain.com"
        }
      },
      "v2_FLAG": {
        "name": "FLAG",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string",
          "enum": [
            "failover",
            "access"
          ]
        }
      }
    }
  }
}