{
  "openapi": "3.0.1",
  "info": {
    "title": "Integration API",
    "version": "v1"
  },
  "paths": {
    "/{apiKey}/api/appUserRoles": {
      "get": {
        "tags": [
          "AppUserRoles"
        ],
        "summary": "Gets all App-User Roles for the solution",
        "parameters": [
          {
            "name": "apiKey",
            "in": "path",
            "description": "The API Key to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "550c26a864617400a40f0000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AppUserRoleCompositeValue"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          },
          "400": {
            "description": "BadRequest"
          },
          "404": {
            "description": "NotFound"
          }
        }
      }
    },
    "/{apiKey}/api/categories": {
      "get": {
        "tags": [
          "Categories"
        ],
        "summary": "List all categories in the dataset",
        "parameters": [
          {
            "name": "apiKey",
            "in": "path",
            "description": "The API Key to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "550c26a864617400a40f0000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GeoDataGroup"
                  }
                }
              }
            }
          },
          "400": {
            "description": "BadRequest"
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          },
          "404": {
            "description": "NotFound"
          }
        }
      },
      "post": {
        "tags": [
          "Categories"
        ],
        "summary": "Create a new category object",
        "description": "  \r\n  \r\n## Oauth2 Roles ##  \r\n - Requires user to have one of the following roles: admin, editor, owner, service",
        "parameters": [
          {
            "name": "apiKey",
            "in": "path",
            "description": "The API Key to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "550c26a864617400a40f0000"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/GeoDataGroup"
                }
              },
              "example": [{"key":"ENTRANCE","name":{"en":"Entrance","da":"Indgang"}}]
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "BadRequest"
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          },
          "409": {
            "description": "Conflict"
          }
        },
        "security": [
          {
            "account": [
              "account"
            ]
          }
        ]
      },
      "put": {
        "tags": [
          "Categories"
        ],
        "summary": "Update a number of existing categories.",
        "description": "  \r\n  \r\n## Oauth2 Roles ##  \r\n - Requires user to have one of the following roles: admin, editor, owner, service",
        "parameters": [
          {
            "name": "apiKey",
            "in": "path",
            "description": "The API Key to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "550c26a864617400a40f0000"
            }
          }
        ],
        "requestBody": {
          "description": "A list of updated geodata",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/GeoDataGroup"
                }
              },
              "example": [{"id":"5823246d07215b23a02e3cdd","key":"ENTRANCE","name":{"en":"Entrance","da":"Indgang"}}]
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "204": {
            "description": "NoContent"
          },
          "400": {
            "description": "BadRequest"
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          },
          "404": {
            "description": "NotFound"
          },
          "409": {
            "description": "Conflict"
          }
        },
        "security": [
          {
            "account": [
              "account"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "Categories"
        ],
        "summary": "Delete existing categories",
        "description": "  \r\n  \r\n## Oauth2 Roles ##  \r\n - Requires user to have one of the following roles: admin, editor, owner, service",
        "parameters": [
          {
            "name": "apiKey",
            "in": "path",
            "description": "The API Key to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "550c26a864617400a40f0000"
            }
          }
        ],
        "requestBody": {
          "description": "An array of Category IDs",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "example": ["db6b07b3f4dd41fba865a5a6"]
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "BadRequest"
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          },
          "403": {
            "description": "Forbidden (Authenticed but now allowed to do the requested action)"
          }
        },
        "security": [
          {
            "account": [
              "account"
            ]
          }
        ]
      }
    },
    "/api/dataset": {
      "get": {
        "tags": [
          "Dataset"
        ],
        "summary": "Get all dataset objects",
        "description": "  \r\n  \r\n## Oauth2 Roles ##  \r\n - Requires user to have one of the following roles: admin, editor, owner, service",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Dataset"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          }
        },
        "security": [
          {
            "account": [
              "account"
            ]
          }
        ]
      }
    },
    "/{apiKey}/api/dataset": {
      "get": {
        "tags": [
          "Dataset"
        ],
        "summary": "Get a dataset object with a specific API Key",
        "parameters": [
          {
            "name": "apiKey",
            "in": "path",
            "description": "The API Key to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "550c26a864617400a40f0000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Dataset"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          }
        }
      }
    },
    "/api/dataset/customer": {
      "get": {
        "tags": [
          "Dataset"
        ],
        "summary": "Get all dataset Ids for a given customer",
        "description": "  \r\n  \r\n## Oauth2 Roles ##  \r\n - Requires user to have one of the following roles: owner, service",
        "parameters": [
          {
            "name": "customerId",
            "in": "query",
            "description": "The customer ID to use",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "example": ["db6b07b3f4dd41fba865a5a6"]
              }
            }
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          },
          "403": {
            "description": "Forbidden. User does not have the reqired role(s)."
          }
        },
        "security": [
          {
            "account": [
              "account"
            ]
          }
        ]
      }
    },
    "/": {
      "get": {
        "tags": [
          "Default"
        ],
        "summary": "Default route. Can be used for testing if the service is running.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VersionResponse"
                }
              }
            }
          }
        }
      }
    },
    "/{apiKey}/api/displaytypes": {
      "get": {
        "tags": [
          "DisplayTypes"
        ],
        "summary": "Get a location type objects from a given solution",
        "parameters": [
          {
            "name": "apiKey",
            "in": "path",
            "description": "The API Key to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "550c26a864617400a40f0000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DisplayType"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          }
        }
      },
      "post": {
        "tags": [
          "DisplayTypes"
        ],
        "summary": "Create a new display type object",
        "description": "  \r\n  \r\n## Oauth2 Roles ##  \r\n - Requires user to have one of the following roles: admin, editor, owner, service",
        "parameters": [
          {
            "name": "apiKey",
            "in": "path",
            "description": "The API Key to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "550c26a864617400a40f0000"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/DisplayType"
                }
              },
              "example": [{"name":"Entrance","displayRules":[{"name":"default","iconUrl":"https://app.mapsindoors.com/mapsindoors/gfx/bella/80/Entrance.png","visible":true,"zoomFrom":17.0,"zoomTo":21.0,"labelZoomFrom":17.0,"labelZoomTo":21.0}],"properties":{"name@en":"Entrance","name@da":"Indgang"}}]
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "BadRequest"
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          },
          "409": {
            "description": "Conflict"
          }
        },
        "security": [
          {
            "account": [
              "account"
            ]
          }
        ]
      },
      "put": {
        "tags": [
          "DisplayTypes"
        ],
        "summary": "Update a number of existing DisplayTypes.",
        "description": "  \r\n  \r\n## Oauth2 Roles ##  \r\n - Requires user to have one of the following roles: admin, editor, owner, service",
        "parameters": [
          {
            "name": "apiKey",
            "in": "path",
            "description": "The API Key to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "550c26a864617400a40f0000"
            }
          }
        ],
        "requestBody": {
          "description": "A list of updated geodata",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/DisplayType"
                }
              },
              "example": [{"id":"0a7533a062e84ed0a72a621a","name":"Entrance","displayRules":[{"name":"default","iconUrl":"https://app.mapsindoors.com/mapsindoors/gfx/bella/80/Entrance.png","visible":true,"zoomFrom":17.0,"zoomTo":21.0,"labelZoomFrom":17.0,"labelZoomTo":21.0}],"properties":{"name@en":"Entrance","name@da":"Indgang"}}]
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "204": {
            "description": "NoContent"
          },
          "400": {
            "description": "BadRequest"
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          },
          "404": {
            "description": "NotFound"
          },
          "409": {
            "description": "Conflict"
          }
        },
        "security": [
          {
            "account": [
              "account"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "DisplayTypes"
        ],
        "summary": "Delete existing DisplayTypes",
        "description": "  \r\n  \r\n## Oauth2 Roles ##  \r\n - Requires user to have one of the following roles: admin, editor, owner, service",
        "parameters": [
          {
            "name": "apiKey",
            "in": "path",
            "description": "The API Key to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "550c26a864617400a40f0000"
            }
          }
        ],
        "requestBody": {
          "description": "An array of DisplayType IDs",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "example": ["db6b07b3f4dd41fba865a5a6"]
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "BadRequest"
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          },
          "403": {
            "description": "Forbidden (Authenticed but now allowed to do the requested action)"
          }
        },
        "security": [
          {
            "account": [
              "account"
            ]
          }
        ]
      }
    },
    "/{datasetId}/api/geodata/mapExternalId": {
      "get": {
        "tags": [
          "ExternalMapping"
        ],
        "summary": "Get a mapping for a specific solution",
        "parameters": [
          {
            "name": "datasetId",
            "in": "path",
            "description": "The dataset ID to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "92553b2f03794e9ea1521227"
            }
          },
          {
            "name": "originId",
            "in": "query",
            "description": "(Optional) If not given id's will only match geodata with matching externalId. If set IDs will be found from the mapExternalId table",
            "schema": {
              "type": "string",
              "default": "ubiqisense"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/PathMapping"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "BadRequest. (Missing or malformed datasetId)"
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          }
        }
      }
    },
    "/api/geodata/mapExternalId/customer": {
      "get": {
        "tags": [
          "ExternalMapping"
        ],
        "summary": "Get a mapping from Ids to Paths for all datasets for a customer. Will go though all solutions for the given customer.",
        "description": "  \r\n  \r\n## Oauth2 Roles ##  \r\n - Requires user to have one of the following roles: owner, service",
        "parameters": [
          {
            "name": "customerId",
            "in": "query",
            "description": "The customer ID to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "5583d3582a91e00f1cc4ecb1"
            }
          },
          {
            "name": "originId",
            "in": "query",
            "description": "(Optional) Livedata source origin (eg. \"ubiqisense\"). If not given id's will only match geodata with matching externalId. If set IDs will be found from the mapExternalId table",
            "schema": {
              "type": "string",
              "default": "ubiqisense"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PathMapping"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "BadRequest. (Missing or malformed datasetId)"
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          }
        },
        "security": [
          {
            "account": [
              "account"
            ]
          }
        ]
      }
    },
    "/{apiKey}/api/geocode": {
      "get": {
        "tags": [
          "GeoCode"
        ],
        "summary": "Get a reverse geopoint: Figure out which geodata is at a given point (if any)",
        "parameters": [
          {
            "name": "apiKey",
            "in": "path",
            "description": "API Key",
            "required": true,
            "schema": {
              "type": "string",
              "default": "550c26a864617400a40f0000"
            }
          },
          {
            "name": "lat",
            "in": "query",
            "description": "Latitude of the point to examine. Valid range: +/- 90",
            "required": true,
            "schema": {
              "type": "number",
              "format": "double",
              "default": "57.086001"
            }
          },
          {
            "name": "lng",
            "in": "query",
            "description": "Longitude of the point to examine. Valid range: +/- 180",
            "required": true,
            "schema": {
              "type": "number",
              "format": "double",
              "default": "9.957824"
            }
          },
          {
            "name": "floor",
            "in": "query",
            "description": "Floor index to examine",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": "0"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GeodataCompositeValue"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request (Malformed API Key given)"
          },
          "403": {
            "description": "Forbidden (Invalid API Key)"
          },
          "404": {
            "description": "NotFound (Unknown API Key)"
          }
        }
      }
    },
    "/{apiKey}/api/geodata": {
      "get": {
        "tags": [
          "Geodata"
        ],
        "summary": "Get geodata objects from a given dataset.",
        "parameters": [
          {
            "name": "apiKey",
            "in": "path",
            "description": "The API key to use.",
            "required": true,
            "schema": {
              "type": "string",
              "default": "550c26a864617400a40f0000"
            }
          },
          {
            "name": "rootElements",
            "in": "query",
            "description": "(Optional) A comma-separated list of geodata identifiers, that filter the output so that\r\nonly elements that have ancestors with a matching root element are returned.",
            "schema": {
              "type": "string",
              "default": "5548c6583eb3c3080c4a92da"
            }
          },
          {
            "name": "baseTypes",
            "in": "query",
            "description": "(Optional) A comma-separated list of base types, that filter the output so that only\r\nelements of the given base types are returned. Supported values: \"poi\", \"room\", \"floor\",\r\n\"building\", \"venue\", and \"area\".",
            "schema": {
              "type": "string",
              "default": "poi"
            }
          },
          {
            "name": "externalIds",
            "in": "query",
            "description": "(Optional) A comma-separated list of external identifiers, that filter the output so that\r\nonly elements with the given external identifiers are returned.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "displayTypeNames",
            "in": "query",
            "description": "(Optional) A comma-separated list of display type names, that filter the output so that only\r\nelements with the given display type names (case-insensitive) are returned. Display type\r\nnames are also known as location type administrative identifiers in the MapsIndoors CMS.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GeodataCompositeValue"
                  }
                }
              }
            }
          },
          "400": {
            "description": "BadRequest: Malformed root element identifier."
          },
          "401": {
            "description": "Unauthorized: Authentication is required and the bearer token is missing, invalid, or\r\nexpired."
          },
          "403": {
            "description": "Forbidden: Invalid API key."
          },
          "406": {
            "description": "NotAcceptable: Invalid base type."
          }
        }
      },
      "post": {
        "tags": [
          "Geodata"
        ],
        "summary": "Create one or more new geodata objects",
        "description": "  \r\n  \r\n## Oauth2 Roles ##  \r\n - Requires user to have one of the following roles: admin, editor, owner, service",
        "parameters": [
          {
            "name": "apiKey",
            "in": "path",
            "description": "The API Key to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "550c26a864617400a40f0000"
            }
          }
        ],
        "requestBody": {
          "description": "The data for the new geodata",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Geodata"
                }
              },
              "example": [{"parentId":"34c588fecbee45f199e8d67c","datasetId":"550c26a864617400a40f0000","solutionId":"550c26a864617400a40f0000","baseType":"poi","displayTypeId":"b6356efe8f044766979f70cf","displaySetting":{"name":"default"},"geometry":{"coordinates":[9.957280663317908,57.08613355600178],"type":"Point"},"anchor":{"coordinates":[9.957280663317908,57.08613355600178],"type":"Point"},"aliases":[],"categories":["5823246d07215b23a02e3cd8"],"status":3,"baseTypeProperties":{"administrativeid":"9213bd5a-e335-4ee4-8465-2a7ef3491e94","imageurl":"https://tiles.mapsindoors.com/tiles/indoor/rtx/mapspeople.png","capacity":"0"},"properties":{"website@da":"my.website.com","email@da":"sample@sample.com","phone@da":"555 1234567","samplekey@da":"samplevalue","name@da":"Sample infodesk (Danish)","description@da":"Sample description for this information desk (Danish)","website@en":"my.website.com","email@en":"sample@sample.com","phone@en":"555 1234567","samplekey@en":"samplevalue","name@en":"Sample infodesk (English)","description@en":"Sample description for this information desk (English)"},"additionalDetails":[{"key":"email-1","detailType":"email","value":"test@example.com","active":true,"displayText":{"da":"Email eksempel","en":"Sample email"}},{"key":"link-1","detailType":"url","value":"www.example.com","active":true,"displayText":{"da":"Link eksempel","en":"Sample link"}},{"key":"phone-1","detailType":"phone","value":"+45 12 34 56 78","active":true,"displayText":{"da":"Telefonnummer eksempel","en":"Sample phone number"}},{"key":"openinghours-1","detailType":"openinghours","active":true,"displayText":{"da":"Eksempel åbningstider","en":"Sample opening hours"},"openingHours":{"standardOpeningHours":{"monday":{"closedAllDay":false,"startTime":"08:00","endTime":"16:00"},"tuesday":{"closedAllDay":false,"startTime":"08:00","endTime":"16:00"},"wednesday":{"closedAllDay":false,"startTime":"08:00","endTime":"16:00"},"thursday":{"closedAllDay":false,"startTime":"08:00","endTime":"16:00"},"friday":{"closedAllDay":false,"startTime":"08:00","endTime":"16:00"},"saturday":{"closedAllDay":false,"startTime":"10:00","endTime":"14:30"},"sunday":{"closedAllDay":true}}}}]}]
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "example": ["db6b07b3f4dd41fba865a5a6"]
              }
            }
          },
          "201": {
            "description": "Created"
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          },
          "400": {
            "description": "BadRequest"
          }
        },
        "security": [
          {
            "account": [
              "account"
            ]
          }
        ]
      },
      "put": {
        "tags": [
          "Geodata"
        ],
        "summary": "Update a number of existing geodata.",
        "description": "  \r\n  \r\n## Oauth2 Roles ##  \r\n - Requires user to have one of the following roles: admin, editor, owner, service",
        "parameters": [
          {
            "name": "apiKey",
            "in": "path",
            "description": "The API Key to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "550c26a864617400a40f0000"
            }
          }
        ],
        "requestBody": {
          "description": "A list of updated geodata",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "#/components/schemas/GeodataCompositeValue"
                  }
                }
              },
              "example": [{"parentId":"34c588fecbee45f199e8d67c","datasetId":"550c26a864617400a40f0000","solutionId":"550c26a864617400a40f0000","baseType":"poi","displayTypeId":"b6356efe8f044766979f70cf","displaySetting":{"name":"default"},"geometry":{"coordinates":[9.957280663317908,57.08613355600178],"type":"Point"},"anchor":{"coordinates":[9.957280663317908,57.08613355600178],"type":"Point"},"aliases":[],"categories":["5823246d07215b23a02e3cd8"],"status":3,"baseTypeProperties":{"administrativeid":"9213bd5a-e335-4ee4-8465-2a7ef3491e94","imageurl":"https://tiles.mapsindoors.com/tiles/indoor/rtx/mapspeople.png","capacity":"0"},"properties":{"website@da":"my.website.com","email@da":"sample@sample.com","phone@da":"555 1234567","samplekey@da":"samplevalue","name@da":"Sample infodesk (Danish)","description@da":"Sample description for this information desk (Danish)","website@en":"my.website.com","email@en":"sample@sample.com","phone@en":"555 1234567","samplekey@en":"samplevalue","name@en":"Sample infodesk (English)","description@en":"Sample description for this information desk (English)"},"additionalDetails":[{"key":"email-1","detailType":"email","value":"test@example.com","active":true,"displayText":{"da":"Email eksempel","en":"Sample email"}},{"key":"link-1","detailType":"url","value":"www.example.com","active":true,"displayText":{"da":"Link eksempel","en":"Sample link"}},{"key":"phone-1","detailType":"phone","value":"+45 12 34 56 78","active":true,"displayText":{"da":"Telefonnummer eksempel","en":"Sample phone number"}},{"key":"openinghours-1","detailType":"openinghours","active":true,"displayText":{"da":"Eksempel åbningstider","en":"Sample opening hours"},"openingHours":{"standardOpeningHours":{"monday":{"closedAllDay":false,"startTime":"08:00","endTime":"16:00"},"tuesday":{"closedAllDay":false,"startTime":"08:00","endTime":"16:00"},"wednesday":{"closedAllDay":false,"startTime":"08:00","endTime":"16:00"},"thursday":{"closedAllDay":false,"startTime":"08:00","endTime":"16:00"},"friday":{"closedAllDay":false,"startTime":"08:00","endTime":"16:00"},"saturday":{"closedAllDay":false,"startTime":"10:00","endTime":"14:30"},"sunday":{"closedAllDay":true}}}}],"id":"f441e4799b0f4c1ea2ea042b"}]
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "204": {
            "description": "NoContent"
          },
          "400": {
            "description": "BadRequest"
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          },
          "404": {
            "description": "NotFound"
          },
          "409": {
            "description": "Conflict"
          }
        },
        "security": [
          {
            "account": [
              "account"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "Geodata"
        ],
        "summary": "Delete existing geodata",
        "description": "  \r\n  \r\n## Oauth2 Roles ##  \r\n - Requires user to have one of the following roles: admin, editor, owner, service",
        "parameters": [
          {
            "name": "apiKey",
            "in": "path",
            "description": "The API Key to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "550c26a864617400a40f0000"
            }
          }
        ],
        "requestBody": {
          "description": "An array of Geodata IDs",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "example": ["db6b07b3f4dd41fba865a5a6"]
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "BadRequest"
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          },
          "403": {
            "description": "Forbidden (Authenticed but now allowed to do the requested action)"
          }
        },
        "security": [
          {
            "account": [
              "account"
            ]
          }
        ]
      }
    },
    "/{apiKey}/api/geodata/place2dmodel": {
      "post": {
        "tags": [
          "Geodata"
        ],
        "summary": "Place 2d models for rooms and area geodata",
        "description": "A 2d model must be available in the geodata referenced to before it can be placed  \r\n  \r\n## Oauth2 Roles ##  \r\n - Requires user to have one of the following roles: admin, editor, owner, service",
        "parameters": [
          {
            "name": "apiKey",
            "in": "path",
            "description": "The API Key to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "550c26a864617400a40f0000"
            }
          },
          {
            "name": "rectFitMode",
            "in": "query",
            "description": "(Optional) The method for placing the model. Will use trending angle if not set.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/RectFitMode"
                }
              ],
              "oneOf": [
                {
                  "enum": [
                    0,
                    1
                  ],
                  "type": "integer",
                  "format": "int32"
                },
                {
                  "enum": [
                    "trendingAngle",
                    "maxSize"
                  ],
                  "type": "string"
                }
              ],
              "description": "A number of ways to fit an image to a given polygon.",
              "default": "trendingAngle"
            }
          }
        ],
        "requestBody": {
          "description": "An array of Geodata IDs",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Placement2DModel"
                }
              },
              "example": [{"id":"6691bf61342c46c8a039397c","width":98.0,"height":514.0}]
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "BadRequest"
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          },
          "403": {
            "description": "Forbidden (Authenticed but now allowed to do the requested action)"
          }
        },
        "security": [
          {
            "account": [
              "account"
            ]
          }
        ]
      }
    },
    "/{apiKey}/api/graphs/graph": {
      "delete": {
        "tags": [
          "Graphs"
        ],
        "summary": "Drops all (generated) graphs for a given solution causing the graph for these to be re-calculated",
        "description": "  \r\n  \r\n## Oauth2 Roles ##  \r\n - Requires user to have the role: owner",
        "parameters": [
          {
            "name": "apiKey",
            "in": "path",
            "description": "The API Key to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "e718136997bb479b801d7146"
            }
          },
          {
            "name": "graphId",
            "in": "query",
            "description": "(Optional) If set, only this graph will be deleted",
            "schema": {
              "type": "string",
              "default": null
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "security": [
          {
            "account": [
              "account"
            ]
          }
        ]
      }
    },
    "/{apiKey}/api/routing/graphs": {
      "get": {
        "tags": [
          "Routing"
        ],
        "summary": "Get a list of graphs in a solution",
        "parameters": [
          {
            "name": "apiKey",
            "in": "path",
            "description": "The API Key to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "550c26a864617400a40f0000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "example": ["db6b07b3f4dd41fba865a5a6"]
              }
            }
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          },
          "400": {
            "description": "BadRequest (Malformed solutionId)"
          },
          "404": {
            "description": "NotFound"
          }
        }
      }
    },
    "/{apiKey}/api/routing/routeelements": {
      "get": {
        "tags": [
          "Routing"
        ],
        "summary": "Get a list of route elements for a given graph",
        "parameters": [
          {
            "name": "apiKey",
            "in": "path",
            "description": "The API Key to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "550c26a864617400a40f0000"
            }
          },
          {
            "name": "graphId",
            "in": "query",
            "description": "The graphId to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "RTX_Graph"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RouteElementCompositeValue"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          },
          "400": {
            "description": "BadRequest (Malformed solutionId)"
          },
          "404": {
            "description": "NotFound"
          }
        }
      },
      "put": {
        "tags": [
          "Routing"
        ],
        "summary": "Update WaitTime, Restrictions and OnewayDirection data for a number of route element(s)",
        "description": "  \r\n  \r\n## Oauth2 Roles ##  \r\n - Requires user to have one of the following roles: admin, editor, owner, service",
        "parameters": [
          {
            "name": "apiKey",
            "in": "path",
            "description": "The API Key to use",
            "required": true,
            "schema": {
              "type": "string",
              "default": "550c26a864617400a40f0000"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/RouteElementCompositeValue"
                }
              },
              "example": [{"id":"79edd6bb64724381bbf43923","datasetId":"550c26a864617400a40f0000","geometry":{"coordinates":[9.95721348677762,57.0860020274923],"type":"Point"},"restrictions":["locked"],"waitTime":0}]
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/RouteElementCompositeValue"
                }
              },
              "example": [{"id":"79edd6bb64724381bbf43923","datasetId":"550c26a864617400a40f0000","geometry":{"coordinates":[9.95721348677762,57.0860020274923],"type":"Point"},"restrictions":["locked"],"waitTime":0}]
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/RouteElementCompositeValue"
                }
              },
              "example": [{"id":"79edd6bb64724381bbf43923","datasetId":"550c26a864617400a40f0000","geometry":{"coordinates":[9.95721348677762,57.0860020274923],"type":"Point"},"restrictions":["locked"],"waitTime":0}]
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/RouteElementCompositeValue"
                }
              },
              "example": [{"id":"79edd6bb64724381bbf43923","datasetId":"550c26a864617400a40f0000","geometry":{"coordinates":[9.95721348677762,57.0860020274923],"type":"Point"},"restrictions":["locked"],"waitTime":0}]
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Unauthorized. User needs to login first."
          },
          "400": {
            "description": "BadRequest (Malformed solutionId)"
          },
          "404": {
            "description": "NotFound"
          }
        },
        "security": [
          {
            "account": [
              "account"
            ]
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "AppUserRoleCompositeValue": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "names": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NamedTranslation"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BadgeDisplayRule": {
        "type": "object",
        "properties": {
          "visible": {
            "type": "boolean",
            "nullable": true
          },
          "zoomFrom": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "zoomTo": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "radius": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "strokeWidth": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "strokeColor": {
            "type": "string",
            "nullable": true
          },
          "fillColor": {
            "type": "string",
            "nullable": true
          },
          "scale": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "position": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BadgePosition"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BadgePosition": {
        "oneOf": [
          {
            "enum": [
              0,
              1,
              2,
              3
            ],
            "type": "integer",
            "format": "int32"
          },
          {
            "enum": [
              "TOP_LEFT",
              "TOP_RIGHT",
              "BOTTOM_LEFT",
              "BOTTOM_RIGHT"
            ],
            "type": "string"
          }
        ]
      },
      "Data3D": {
        "type": "object",
        "properties": {
          "visible": {
            "type": "boolean",
            "nullable": true
          },
          "height": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "zoomFrom": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "zoomTo": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "lightnessFactor": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Dataset": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "customerId": {
            "type": "string",
            "nullable": true
          },
          "availableLanguages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "baseLanguage": {
            "type": "string",
            "nullable": true
          },
          "rootObjects": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DetailType": {
        "oneOf": [
          {
            "enum": [
              0,
              1,
              2,
              3
            ],
            "type": "integer",
            "format": "int32"
          },
          {
            "enum": [
              "email",
              "phone",
              "url",
              "openinghours"
            ],
            "type": "string"
          }
        ]
      },
      "DisplayPolygon": {
        "type": "object",
        "properties": {
          "visible": {
            "type": "boolean",
            "nullable": true
          },
          "zoomFrom": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "zoomTo": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "strokeWidth": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "strokeColor": {
            "type": "string",
            "nullable": true
          },
          "strokeOpacity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "fillColor": {
            "type": "string",
            "nullable": true
          },
          "fillOpacity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "lightnessFactor": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DisplaySetting": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "iconUrl": {
            "type": "string",
            "nullable": true
          },
          "iconScale": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "iconSize": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IconSize"
              }
            ],
            "nullable": true
          },
          "iconPlacement": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IconPlacementRule"
              }
            ],
            "nullable": true
          },
          "labelTemplate": {
            "type": "string",
            "nullable": true
          },
          "visible": {
            "type": "boolean",
            "nullable": true
          },
          "zoomFrom": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "zoomTo": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "labelZoomFrom": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "labelZoomTo": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "labelMaxWidth": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "iconVisible": {
            "type": "boolean",
            "nullable": true
          },
          "labelVisible": {
            "type": "boolean",
            "nullable": true
          },
          "polygon": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DisplayPolygon"
              }
            ],
            "nullable": true
          },
          "markerElevation": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "walls": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Data3D"
              }
            ],
            "nullable": true
          },
          "extrusion": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Data3D"
              }
            ],
            "nullable": true
          },
          "model3D": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Model3d"
              }
            ],
            "nullable": true
          },
          "model2D": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Model2d"
              }
            ],
            "nullable": true
          },
          "badge": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BadgeDisplayRule"
              }
            ],
            "nullable": true
          },
          "labelStyle": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LabelDisplayRule"
              }
            ],
            "nullable": true
          },
          "labelType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LabelTypeOption"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DisplayType": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "displayRules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DisplaySetting"
            },
            "nullable": true
          },
          "propertyTemplates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PropertyTemplate"
            },
            "nullable": true
          },
          "aliases": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "properties": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "restrictions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GeoDataGroup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "key": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "icon": {
            "type": "string",
            "nullable": true
          },
          "imageUrl": {
            "type": "string",
            "nullable": true
          },
          "properties": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Geodata": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "lastModified": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastModifiedBy": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "nullable": true
          },
          "parentId": {
            "type": "string",
            "nullable": true
          },
          "datasetId": {
            "type": "string",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "nullable": true
          },
          "solutionId": {
            "type": "string",
            "nullable": true
          },
          "baseType": {
            "type": "string",
            "nullable": true
          },
          "displayTypeId": {
            "type": "string",
            "nullable": true
          },
          "displaySetting": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DisplaySetting"
              }
            ],
            "nullable": true
          },
          "geometry": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Geometry"
              }
            ],
            "nullable": true
          },
          "anchor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Point"
              }
            ],
            "nullable": true
          },
          "aliases": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Status"
              }
            ],
            "description": "Bit 1: Active. Bit 2: Searchable. For Locations Status.Active is not used in never SDKs, it is overwritten with bool from evaluating if the current time is between ActiveFrom-ActiveTo. Searchable is used",
            "format": "bitfield"
          },
          "baseTypeProperties": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "properties": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "tilesUrl": {
            "type": "string",
            "nullable": true
          },
          "tileStyles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TileStyle"
            },
            "nullable": true
          },
          "additionalDetails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GeodataDetail"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GeodataCompositeValue": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "parentId": {
            "type": "string",
            "nullable": true
          },
          "datasetId": {
            "type": "string",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "nullable": true
          },
          "baseType": {
            "type": "string",
            "nullable": true
          },
          "displayTypeId": {
            "type": "string",
            "nullable": true
          },
          "displaySetting": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DisplaySetting"
              }
            ],
            "nullable": true
          },
          "geometry": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Geometry"
              }
            ],
            "nullable": true
          },
          "anchor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Point"
              }
            ],
            "nullable": true
          },
          "aliases": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Status"
              }
            ],
            "description": "Bit 1: Active. Bit 2: Searchable. For Locations Status.Active is not used in never SDKs, it is overwritten with bool from evaluating if the current time is between ActiveFrom-ActiveTo. Searchable is used",
            "format": "bitfield"
          },
          "baseTypeProperties": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "properties": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          },
          "tilesUrl": {
            "type": "string",
            "nullable": true
          },
          "tileStyles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TileStyle"
            },
            "nullable": true
          },
          "additionalDetails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GeodataDetail"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GeodataDetail": {
        "required": [
          "detailType",
          "key"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "nullable": true
          },
          "detailType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DetailType"
              }
            ],
            "oneOf": [
              {
                "enum": [
                  0,
                  1,
                  2,
                  3
                ],
                "type": "integer",
                "format": "int32"
              },
              {
                "enum": [
                  "email",
                  "phone",
                  "url",
                  "openinghours"
                ],
                "type": "string"
              }
            ]
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "active": {
            "type": "boolean",
            "nullable": true
          },
          "icon": {
            "type": "string",
            "nullable": true
          },
          "displayText": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "nullable": true
          },
          "openingHours": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OpeningHourInfo"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Geometry": {
        "type": "object",
        "properties": {
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GeometryType"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "GeometryType": {
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6
        ],
        "type": "integer",
        "format": "int32"
      },
      "GraphicsLabel": {
        "type": "object",
        "properties": {
          "backgroundImage": {
            "type": "string",
            "nullable": true
          },
          "stretchX": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            },
            "nullable": true
          },
          "stretchY": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            },
            "nullable": true
          },
          "content": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "IconPlacementRule": {
        "oneOf": [
          {
            "enum": [
              0,
              1,
              2,
              3,
              4
            ],
            "type": "integer",
            "format": "int32"
          },
          {
            "enum": [
              "ABOVE",
              "BELOW",
              "LEFT",
              "RIGHT",
              "CENTER"
            ],
            "type": "string"
          }
        ]
      },
      "IconSize": {
        "type": "object",
        "properties": {
          "width": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "height": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "LabelDisplayRule": {
        "type": "object",
        "properties": {
          "textSize": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "textColor": {
            "type": "string",
            "nullable": true
          },
          "textOpacity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "haloColor": {
            "type": "string",
            "nullable": true
          },
          "haloWidth": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "haloBlur": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "bearing": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "graphic": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GraphicsLabel"
              }
            ],
            "nullable": true
          },
          "labelPosition": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LabelPosition"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "LabelPosition": {
        "oneOf": [
          {
            "enum": [
              0,
              1,
              2,
              3
            ],
            "type": "integer",
            "format": "int32"
          },
          {
            "enum": [
              "TOP",
              "BOTTOM",
              "LEFT",
              "RIGHT"
            ],
            "type": "string"
          }
        ]
      },
      "LabelTypeOption": {
        "oneOf": [
          {
            "enum": [
              0,
              1,
              2
            ],
            "type": "integer",
            "format": "int32"
          },
          {
            "enum": [
              "FLOATING",
              "FLAT",
              "GRAPHIC"
            ],
            "type": "string"
          }
        ]
      },
      "Model2d": {
        "type": "object",
        "properties": {
          "visible": {
            "type": "boolean",
            "nullable": true
          },
          "zoomFrom": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "zoomTo": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "model": {
            "type": "string",
            "nullable": true
          },
          "widthMeters": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "heightMeters": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "bearing": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Model3d": {
        "type": "object",
        "properties": {
          "visible": {
            "type": "boolean",
            "nullable": true
          },
          "zoomFrom": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "zoomTo": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "model": {
            "type": "string",
            "nullable": true
          },
          "rotationX": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "rotationY": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "rotationZ": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "scale": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NamedTranslation": {
        "type": "object",
        "properties": {
          "language": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OpeningHourInfo": {
        "type": "object",
        "properties": {
          "standardOpeningHours": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StandardOpeningHours"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OpeningHours": {
        "type": "object",
        "properties": {
          "closedAllDay": {
            "type": "boolean"
          },
          "startTime": {
            "type": "string",
            "format": "time",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "format": "time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Path": {
        "type": "object",
        "properties": {
          "datasetId": {
            "type": "string",
            "nullable": true
          },
          "venueId": {
            "type": "string",
            "nullable": true
          },
          "buildingId": {
            "type": "string",
            "nullable": true
          },
          "floorId": {
            "type": "string",
            "nullable": true
          },
          "floorIndex": {
            "type": "string",
            "nullable": true
          },
          "roomId": {
            "type": "string",
            "nullable": true
          },
          "locationId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PathMapping": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "path": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Path"
              }
            ],
            "nullable": true
          },
          "baseType": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Placement2DModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "width": {
            "type": "number",
            "format": "double"
          },
          "height": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "Point": {
        "type": "object",
        "properties": {
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GeometryType"
              }
            ]
          },
          "coordinates": {
            "type": "array",
            "items": {
              "type": "number",
              "format": "double"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PropertyTemplate": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "defaultValue": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RectFitMode": {
        "oneOf": [
          {
            "enum": [
              0,
              1
            ],
            "type": "integer",
            "format": "int32"
          },
          {
            "enum": [
              "trendingAngle",
              "maxSize"
            ],
            "type": "string"
          }
        ],
        "description": "A number of ways to fit an image to a given polygon."
      },
      "RouteElementCompositeValue": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "datasetId": {
            "type": "string",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "description": "UUID of this element as an extern ID",
            "nullable": true
          },
          "geometry": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Geometry"
              }
            ],
            "description": "geoJSON point where this element is placed",
            "nullable": true
          },
          "restrictions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "(Optional) IF set - one or more of these tokens will be needed to traverse this area",
            "nullable": true
          },
          "onewayDirection": {
            "type": "number",
            "description": "(Optional) IF set - end users may only walk in the direction stated within the area (+/- 90 degrees)",
            "format": "double",
            "nullable": true
          },
          "waitTime": {
            "type": "integer",
            "description": "(Optional) IF set (to a positive number) end users will be asked to wait this additional amount of seconds here.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "StandardOpeningHours": {
        "type": "object",
        "properties": {
          "monday": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OpeningHours"
              }
            ],
            "nullable": true
          },
          "tuesday": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OpeningHours"
              }
            ],
            "nullable": true
          },
          "wednesday": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OpeningHours"
              }
            ],
            "nullable": true
          },
          "thursday": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OpeningHours"
              }
            ],
            "nullable": true
          },
          "friday": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OpeningHours"
              }
            ],
            "nullable": true
          },
          "saturday": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OpeningHours"
              }
            ],
            "nullable": true
          },
          "sunday": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OpeningHours"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Status": {
        "enum": [
          0,
          1,
          2
        ],
        "type": "integer",
        "description": "Bit 1: Active. Bit 2: Searchable. For Locations Status.Active is not used in never SDKs, it is overwritten with bool from evaluating if the current time is between ActiveFrom-ActiveTo. Searchable is used",
        "format": "bitfield"
      },
      "TileStyle": {
        "type": "object",
        "properties": {
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "style": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "VersionResponse": {
        "type": "object",
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "account": {
        "type": "oauth2",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://auth.mapsindoors.com/connect/authorize",
            "tokenUrl": "https://auth.mapsindoors.com/connect/token",
            "scopes": {
              "integration": ""
            }
          }
        }
      }
    }
  }
}