{
  "openapi": "3.0.1",
  "info": {
    "title": "Plan B Route Service Api",
    "version": "0.1.0"
  },
  "paths": {
    "/api/command/completeDelivery": {
      "post": {
        "tags": [
          "completeDelivery"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompleteDeliveryCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CompleteDeliveryCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CompleteDeliveryCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/command/createDeliveryTerritory": {
      "post": {
        "tags": [
          "createDeliveryTerritory"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateDeliveryTerritoryCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateDeliveryTerritoryCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateDeliveryTerritoryCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateDeliveryTerritoryCommandResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/command/defineRouteRouting": {
      "post": {
        "tags": [
          "defineRouteRouting"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DefineRouteRoutingCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DefineRouteRoutingCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DefineRouteRoutingCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/command/deleteDeliveryTerritory": {
      "post": {
        "tags": [
          "deleteDeliveryTerritory"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteDeliveryTerritoryCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteDeliveryTerritoryCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteDeliveryTerritoryCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/command/deleteDeliveryZone": {
      "post": {
        "tags": [
          "deleteDeliveryZone"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteDeliveryZoneCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteDeliveryZoneCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteDeliveryZoneCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/command/deleteRoute": {
      "post": {
        "tags": [
          "deleteRoute"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteRouteCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteRouteCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteRouteCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/delivery/uploadDeliveryPicture": {
      "post": {
        "tags": [
          "Delivery"
        ],
        "parameters": [
          {
            "name": "deliveryId",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/query/deliveryRoute": {
      "post": {
        "tags": [
          "deliveryRoute"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeliveryRouteQuery"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DeliveryRouteQuery"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DeliveryRouteQuery"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeliveryRouteItem"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "deliveryRoute"
        ],
        "parameters": [
          {
            "name": "RouteId",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeliveryRouteItem"
                }
              }
            }
          }
        }
      }
    },
    "/api/query/deliveryTerritoryItems": {
      "post": {
        "tags": [
          "deliveryTerritoryItems"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeliveryTerritoryItemDeliveryTerritoryItemDynamicQuery"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DeliveryTerritoryItemDeliveryTerritoryItemDynamicQuery"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DeliveryTerritoryItemDeliveryTerritoryItemDynamicQuery"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/DeliveryTerritoryItemIQueryExecutionResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeliveryTerritoryItemIQueryExecutionResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeliveryTerritoryItemIQueryExecutionResult"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "deliveryTerritoryItems"
        ],
        "parameters": [
          {
            "name": "Page",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Sort"
              }
            }
          },
          {
            "name": "Aggregates",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DynamicQueryAggregate"
              }
            }
          },
          {
            "name": "Groups",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Group"
              }
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DynamicQueryFilter"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/DeliveryTerritoryItemIQueryExecutionResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeliveryTerritoryItemIQueryExecutionResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeliveryTerritoryItemIQueryExecutionResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/query/deliveryZoneItems": {
      "post": {
        "tags": [
          "deliveryZoneItems"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeliveryZoneItemDeliveryZoneItemDynamicQuery"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DeliveryZoneItemDeliveryZoneItemDynamicQuery"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DeliveryZoneItemDeliveryZoneItemDynamicQuery"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/DeliveryZoneItemIQueryExecutionResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeliveryZoneItemIQueryExecutionResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeliveryZoneItemIQueryExecutionResult"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "deliveryZoneItems"
        ],
        "parameters": [
          {
            "name": "Page",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Sort"
              }
            }
          },
          {
            "name": "Aggregates",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DynamicQueryAggregate"
              }
            }
          },
          {
            "name": "Groups",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Group"
              }
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DynamicQueryFilter"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/DeliveryZoneItemIQueryExecutionResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeliveryZoneItemIQueryExecutionResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeliveryZoneItemIQueryExecutionResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/query/downloadRouteCsv": {
      "post": {
        "tags": [
          "downloadRouteCsv"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DownloadRouteCsvQuery"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DownloadRouteCsvQuery"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DownloadRouteCsvQuery"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DownloadRouteCsvResult"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "downloadRouteCsv"
        ],
        "parameters": [
          {
            "name": "RouteId",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DownloadRouteCsvResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/command/generateInvoicesReport": {
      "post": {
        "tags": [
          "generateInvoicesReport"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateInvoicesReportCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateInvoicesReportCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateInvoicesReportCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateReportResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/command/generateRouteHeatMap": {
      "post": {
        "tags": [
          "generateRouteHeatMap"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateRouteHeatMapCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateRouteHeatMapCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateRouteHeatMapCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/query/health": {
      "post": {
        "tags": [
          "health"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HealthQuery"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/HealthQuery"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/HealthQuery"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthQueryResult"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "health"
        ],
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "style": "form",
            "schema": {
              "$ref": "#/components/schemas/HealthQuery"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthQueryResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/command/importAdditionalStops": {
      "post": {
        "tags": [
          "importAdditionalStops"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportAdditionalStopsCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportAdditionalStopsCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ImportAdditionalStopsCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/command/importDeliveryZones": {
      "post": {
        "tags": [
          "importDeliveryZones"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportDeliveryZonesCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportDeliveryZonesCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ImportDeliveryZonesCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/command/importRouteFromCsv": {
      "post": {
        "tags": [
          "importRouteFromCsv"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportRouteFromCsvCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportRouteFromCsvCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ImportRouteFromCsvCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/command/markDeliveryAsUncompleted": {
      "post": {
        "tags": [
          "markDeliveryAsUncompleted"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MarkDeliveryAsUncompletedCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MarkDeliveryAsUncompletedCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MarkDeliveryAsUncompletedCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/command/optimizeRouteByZones": {
      "post": {
        "tags": [
          "optimizeRouteByZones"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OptimizeRouteByZonesCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/OptimizeRouteByZonesCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/OptimizeRouteByZonesCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/command/reassignDeliveryZone": {
      "post": {
        "tags": [
          "reassignDeliveryZone"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReassignDeliveryZoneCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReassignDeliveryZoneCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReassignDeliveryZoneCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/command/reorderZonePriorities": {
      "post": {
        "tags": [
          "reorderZonePriorities"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderZonePrioritiesCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderZonePrioritiesCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderZonePrioritiesCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/route/importFromOrdersCsvFile": {
      "post": {
        "tags": [
          "Route"
        ],
        "parameters": [
          {
            "name": "routeName",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fileDelimiter",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/route/importDeliveryZones": {
      "post": {
        "tags": [
          "Route"
        ],
        "parameters": [
          {
            "name": "deliveryTerritoryId",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/route/{routeId}/csv": {
      "get": {
        "tags": [
          "Route"
        ],
        "parameters": [
          {
            "name": "routeId",
            "in": "path",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/route/{routeId}": {
      "delete": {
        "tags": [
          "Route"
        ],
        "parameters": [
          {
            "name": "routeId",
            "in": "path",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/route/{routeId}/importStops": {
      "post": {
        "tags": [
          "Route"
        ],
        "parameters": [
          {
            "name": "routeId",
            "in": "path",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "fileDelimiter",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "file": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/query/routeHeatMap": {
      "post": {
        "tags": [
          "routeHeatMap"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RouteHeatMapQuery"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RouteHeatMapQuery"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RouteHeatMapQuery"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteHeatMapResult"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "routeHeatMap"
        ],
        "parameters": [
          {
            "name": "RouteId",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "GeneratedAfter",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteHeatMapResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/query/routeItems": {
      "post": {
        "tags": [
          "routeItems"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RouteItemRouteItemDynamicQuery"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RouteItemRouteItemDynamicQuery"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RouteItemRouteItemDynamicQuery"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RouteItemIQueryExecutionResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteItemIQueryExecutionResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteItemIQueryExecutionResult"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "routeItems"
        ],
        "parameters": [
          {
            "name": "Page",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Sort"
              }
            }
          },
          {
            "name": "Aggregates",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DynamicQueryAggregate"
              }
            }
          },
          {
            "name": "Groups",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Group"
              }
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DynamicQueryFilter"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RouteItemIQueryExecutionResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteItemIQueryExecutionResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteItemIQueryExecutionResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/command/setDeliveryZoneExitWaypoint": {
      "post": {
        "tags": [
          "setDeliveryZoneExitWaypoint"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetDeliveryZoneExitWaypointCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SetDeliveryZoneExitWaypointCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SetDeliveryZoneExitWaypointCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/command/setDeliveryZoneStartWaypoint": {
      "post": {
        "tags": [
          "setDeliveryZoneStartWaypoint"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetDeliveryZoneStartWaypointCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SetDeliveryZoneStartWaypointCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SetDeliveryZoneStartWaypointCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/query/simpleDeliveriesQueryItems": {
      "post": {
        "tags": [
          "simpleDeliveriesQueryItems"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SimpleDeliveriesQueryItemSimpleDeliveriesQueryItemSimpleDeliveriesQueryParamsDynamicQuery"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SimpleDeliveriesQueryItemSimpleDeliveriesQueryItemSimpleDeliveriesQueryParamsDynamicQuery"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SimpleDeliveriesQueryItemSimpleDeliveriesQueryItemSimpleDeliveriesQueryParamsDynamicQuery"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleDeliveriesQueryItemIQueryExecutionResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleDeliveriesQueryItemIQueryExecutionResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleDeliveriesQueryItemIQueryExecutionResult"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "simpleDeliveriesQueryItems"
        ],
        "parameters": [
          {
            "name": "Params.RouteFragmentId",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Sort"
              }
            }
          },
          {
            "name": "Aggregates",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DynamicQueryAggregate"
              }
            }
          },
          {
            "name": "Groups",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Group"
              }
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DynamicQueryFilter"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleDeliveriesQueryItemIQueryExecutionResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleDeliveriesQueryItemIQueryExecutionResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleDeliveriesQueryItemIQueryExecutionResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/query/simpleDeliveryRouteQueryItems": {
      "post": {
        "tags": [
          "simpleDeliveryRouteQueryItems"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SimpleDeliveryRouteQueryItemSimpleDeliveryRouteQueryItemSimpleDeliveryRouteQueryParamsDynamicQuery"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SimpleDeliveryRouteQueryItemSimpleDeliveryRouteQueryItemSimpleDeliveryRouteQueryParamsDynamicQuery"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SimpleDeliveryRouteQueryItemSimpleDeliveryRouteQueryItemSimpleDeliveryRouteQueryParamsDynamicQuery"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleDeliveryRouteQueryItemIQueryExecutionResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleDeliveryRouteQueryItemIQueryExecutionResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleDeliveryRouteQueryItemIQueryExecutionResult"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "simpleDeliveryRouteQueryItems"
        ],
        "parameters": [
          {
            "name": "Params",
            "in": "query",
            "style": "form",
            "schema": {
              "$ref": "#/components/schemas/SimpleDeliveryRouteQueryParams"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Sort"
              }
            }
          },
          {
            "name": "Aggregates",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DynamicQueryAggregate"
              }
            }
          },
          {
            "name": "Groups",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Group"
              }
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/DynamicQueryFilter"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleDeliveryRouteQueryItemIQueryExecutionResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleDeliveryRouteQueryItemIQueryExecutionResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleDeliveryRouteQueryItemIQueryExecutionResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/command/skipDelivery": {
      "post": {
        "tags": [
          "skipDelivery"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SkipDeliveryCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SkipDeliveryCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SkipDeliveryCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/query/territoryWithZones": {
      "post": {
        "tags": [
          "territoryWithZones"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TerritoryWithZonesQuery"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TerritoryWithZonesQuery"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TerritoryWithZonesQuery"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerritoryWithZonesResult"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "territoryWithZones"
        ],
        "parameters": [
          {
            "name": "TerritoryId",
            "in": "query",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerritoryWithZonesResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/command/updateDeliveryTerritory": {
      "post": {
        "tags": [
          "updateDeliveryTerritory"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDeliveryTerritoryCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDeliveryTerritoryCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDeliveryTerritoryCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/command/updateDeliveryZone": {
      "post": {
        "tags": [
          "updateDeliveryZone"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDeliveryZoneCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDeliveryZoneCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDeliveryZoneCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    },
    "/api/command/uploadDeliveryPicture": {
      "post": {
        "tags": [
          "uploadDeliveryPicture"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UploadDeliveryPictureCommand"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UploadDeliveryPictureCommand"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UploadDeliveryPictureCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AggregateType": {
        "enum": [
          "Count",
          "Sum",
          "Avg",
          "LongCount",
          "Min",
          "Max",
          "First",
          "FirstOrDefault",
          "Last",
          "LastOrDefault"
        ],
        "type": "string"
      },
      "CompleteDeliveryCommand": {
        "type": "object",
        "properties": {
          "deliveryId": {
            "type": "integer",
            "format": "int64"
          },
          "deliveredAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CreateDeliveryTerritoryCommand": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "priority": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "CreateDeliveryTerritoryCommandResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "DefineFragment": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "deliveries": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DefineRouteRoutingCommand": {
        "type": "object",
        "properties": {
          "routeId": {
            "type": "integer",
            "format": "int64"
          },
          "fragments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DefineFragment"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DeleteDeliveryTerritoryCommand": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "cascadeDeleteZones": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "DeleteDeliveryZoneCommand": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "DeleteRouteCommand": {
        "type": "object",
        "properties": {
          "routeId": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "DeliveryAddressItem": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "formattedAddress": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DeliveryItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "orders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderItem"
            },
            "nullable": true
          },
          "deliveryAddress": {
            "$ref": "#/components/schemas/DeliveryAddressItem"
          },
          "fragmentId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "routeOrderIndex": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DeliveryRouteItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "warehouseLocation": {
            "$ref": "#/components/schemas/GeoPoint"
          },
          "deliveries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeliveryItem"
            },
            "nullable": true
          },
          "fragments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RouteFragmentItem"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DeliveryRouteQuery": {
        "type": "object",
        "properties": {
          "routeId": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "DeliveryTerritoryItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "priority": {
            "type": "integer",
            "format": "int32"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "zoneCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "DeliveryTerritoryItemDeliveryTerritoryItemDynamicQuery": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pageSize": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "sorts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Sort"
            },
            "nullable": true
          },
          "aggregates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DynamicQueryAggregate"
            },
            "nullable": true
          },
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Group"
            },
            "nullable": true
          },
          "filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DynamicQueryFilter"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DeliveryTerritoryItemIQueryExecutionResult": {
        "type": "object",
        "properties": {
          "aggregates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IAggregateResult"
            },
            "nullable": true,
            "readOnly": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeliveryTerritoryItem"
            },
            "nullable": true,
            "readOnly": true
          },
          "totalRecords": {
            "type": "integer",
            "format": "int64"
          },
          "numberOfPages": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DeliveryZoneItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "priority": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isReverse": {
            "type": "boolean"
          },
          "startFromWarehouse": {
            "type": "boolean"
          },
          "polygon": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NpgsqlPoint"
            }
          },
          "startWaypoint": {
            "$ref": "#/components/schemas/GeoPoint"
          },
          "exitWaypoint": {
            "$ref": "#/components/schemas/GeoPoint"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "deliveryTerritoryId": {
            "type": "integer",
            "format": "int64"
          },
          "deliveryTerritoryName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DeliveryZoneItemDeliveryZoneItemDynamicQuery": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pageSize": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "sorts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Sort"
            },
            "nullable": true
          },
          "aggregates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DynamicQueryAggregate"
            },
            "nullable": true
          },
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Group"
            },
            "nullable": true
          },
          "filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DynamicQueryFilter"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DeliveryZoneItemIQueryExecutionResult": {
        "type": "object",
        "properties": {
          "aggregates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IAggregateResult"
            },
            "nullable": true,
            "readOnly": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeliveryZoneItem"
            },
            "nullable": true,
            "readOnly": true
          },
          "totalRecords": {
            "type": "integer",
            "format": "int64"
          },
          "numberOfPages": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DownloadRouteCsvQuery": {
        "type": "object",
        "properties": {
          "routeId": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "DownloadRouteCsvResult": {
        "type": "object",
        "properties": {
          "fileStream": {
            "$ref": "#/components/schemas/Stream"
          },
          "fileName": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DynamicQueryAggregate": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DynamicQueryFilter": {
        "type": "object",
        "properties": {
          "filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DynamicQueryFilter"
            },
            "nullable": true
          },
          "and": {
            "type": "boolean",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "not": {
            "type": "boolean",
            "nullable": true
          },
          "path": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "nullable": true
          },
          "queryValue": {
            "type": "string",
            "nullable": true
          },
          "caseInsensitive": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GenerateInvoicesReportCommand": {
        "type": "object",
        "properties": {
          "routeId": {
            "type": "integer",
            "format": "int64"
          },
          "filter": {
            "$ref": "#/components/schemas/InvoiceReportFilter"
          }
        },
        "additionalProperties": false
      },
      "GenerateReportResult": {
        "type": "object",
        "properties": {
          "reportFileId": {
            "type": "integer",
            "format": "int64"
          },
          "fileUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GenerateRouteHeatMapCommand": {
        "type": "object",
        "properties": {
          "routeId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "clusterRadiusMeters": {
            "type": "number",
            "format": "double"
          },
          "periodStart": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "periodEnd": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "clearExisting": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "GeoPoint": {
        "type": "object",
        "properties": {
          "longitude": {
            "type": "number",
            "format": "double"
          },
          "latitude": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "Group": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "HealthQuery": {
        "type": "object",
        "additionalProperties": false
      },
      "HealthQueryResult": {
        "type": "object",
        "properties": {
          "apiStatus": {
            "type": "boolean"
          },
          "databaseStatus": {
            "type": "boolean"
          },
          "databaseLatency": {
            "type": "string",
            "nullable": true
          },
          "routeOptimizationStatus": {
            "type": "boolean"
          },
          "routeOptimizationLatency": {
            "type": "string",
            "nullable": true
          },
          "geoDecodingStatus": {
            "type": "boolean"
          },
          "geoDecodingLatency": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "HeatMapPoint": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "format": "double"
          },
          "longitude": {
            "type": "number",
            "format": "double"
          },
          "intensity": {
            "type": "integer",
            "format": "int32"
          },
          "clusterRadiusMeters": {
            "type": "number",
            "format": "double"
          },
          "generatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "IAggregateResult": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/AggregateType"
          },
          "value": {
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ImportAdditionalStopsCommand": {
        "type": "object",
        "properties": {
          "routeId": {
            "type": "integer",
            "format": "int64"
          },
          "fileName": {
            "type": "string",
            "nullable": true
          },
          "fileStream": {
            "$ref": "#/components/schemas/Stream"
          },
          "fileDelimiter": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ImportDeliveryZonesCommand": {
        "type": "object",
        "properties": {
          "fileStream": {
            "$ref": "#/components/schemas/Stream"
          },
          "deliveryTerritoryId": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "ImportRouteFromCsvCommand": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "fileName": {
            "type": "string",
            "nullable": true
          },
          "fileStream": {
            "$ref": "#/components/schemas/Stream"
          },
          "fileDelimiter": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InvoiceReportFilter": {
        "enum": [
          "Delivery",
          "Others",
          "All"
        ],
        "type": "string"
      },
      "MarkDeliveryAsUncompletedCommand": {
        "type": "object",
        "properties": {
          "deliveryId": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "NpgsqlPoint": {
        "type": "object",
        "properties": {
          "x": {
            "type": "number",
            "format": "double"
          },
          "y": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "OptimizeRouteByZonesCommand": {
        "type": "object",
        "properties": {
          "routeId": {
            "type": "integer",
            "format": "int64"
          },
          "deliveryTerritoryId": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "OrderItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "customerName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReassignDeliveryZoneCommand": {
        "type": "object",
        "properties": {
          "zoneId": {
            "type": "integer",
            "format": "int64"
          },
          "newDeliveryTerritoryId": {
            "type": "integer",
            "format": "int64"
          },
          "newPriority": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReorderZonePrioritiesCommand": {
        "type": "object",
        "properties": {
          "deliveryTerritoryId": {
            "type": "integer",
            "format": "int64"
          },
          "priorities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ZonePriorityItem"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RouteFragmentItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RouteHeatMapQuery": {
        "type": "object",
        "properties": {
          "routeId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "generatedAfter": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RouteHeatMapResult": {
        "type": "object",
        "properties": {
          "routeId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "points": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HeatMapPoint"
            },
            "nullable": true
          },
          "totalPoints": {
            "type": "integer",
            "format": "int32"
          },
          "maxIntensity": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "RouteItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "deliveriesCount": {
            "type": "integer",
            "format": "int32"
          },
          "optimizedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "fragmentsCount": {
            "type": "integer",
            "format": "int32"
          },
          "fragmentIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RouteItemIQueryExecutionResult": {
        "type": "object",
        "properties": {
          "aggregates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IAggregateResult"
            },
            "nullable": true,
            "readOnly": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RouteItem"
            },
            "nullable": true,
            "readOnly": true
          },
          "totalRecords": {
            "type": "integer",
            "format": "int64"
          },
          "numberOfPages": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RouteItemRouteItemDynamicQuery": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pageSize": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "sorts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Sort"
            },
            "nullable": true
          },
          "aggregates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DynamicQueryAggregate"
            },
            "nullable": true
          },
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Group"
            },
            "nullable": true
          },
          "filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DynamicQueryFilter"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SetDeliveryZoneExitWaypointCommand": {
        "type": "object",
        "properties": {
          "deliveryZoneId": {
            "type": "integer",
            "format": "int64"
          },
          "latitude": {
            "type": "number",
            "format": "double"
          },
          "longitude": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "SetDeliveryZoneStartWaypointCommand": {
        "type": "object",
        "properties": {
          "deliveryZoneId": {
            "type": "integer",
            "format": "int64"
          },
          "latitude": {
            "type": "number",
            "format": "double"
          },
          "longitude": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "SimpleDeliveriesQueryItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "routeFragmentId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "deliveryIndex": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "orders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SimpleDeliveryOrder"
            },
            "nullable": true
          },
          "deliveredBy": {
            "$ref": "#/components/schemas/SimpleUserInfo"
          },
          "deliveryAddress": {
            "$ref": "#/components/schemas/SimpleDeliveryAddress"
          },
          "deliveredAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "skippedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "delivered": {
            "type": "boolean",
            "readOnly": true
          },
          "hasBeenSkipped": {
            "type": "boolean",
            "readOnly": true
          },
          "isSkipped": {
            "type": "boolean",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "SimpleDeliveriesQueryItemIQueryExecutionResult": {
        "type": "object",
        "properties": {
          "aggregates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IAggregateResult"
            },
            "nullable": true,
            "readOnly": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SimpleDeliveriesQueryItem"
            },
            "nullable": true,
            "readOnly": true
          },
          "totalRecords": {
            "type": "integer",
            "format": "int64"
          },
          "numberOfPages": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SimpleDeliveriesQueryItemSimpleDeliveriesQueryItemSimpleDeliveriesQueryParamsDynamicQuery": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pageSize": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "sorts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Sort"
            },
            "nullable": true
          },
          "aggregates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DynamicQueryAggregate"
            },
            "nullable": true
          },
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Group"
            },
            "nullable": true
          },
          "filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DynamicQueryFilter"
            },
            "nullable": true
          },
          "params": {
            "$ref": "#/components/schemas/SimpleDeliveriesQueryParams"
          }
        },
        "additionalProperties": false
      },
      "SimpleDeliveriesQueryParams": {
        "type": "object",
        "properties": {
          "routeFragmentId": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "SimpleDeliveryAddress": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "line1": {
            "type": "string",
            "nullable": true
          },
          "line2": {
            "type": "string",
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "subdivision": {
            "type": "string",
            "nullable": true
          },
          "countryCode": {
            "type": "string",
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "formattedAddress": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SimpleDeliveryContact": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "nullable": true
          },
          "fullName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "SimpleDeliveryOrder": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "isNewCustomer": {
            "type": "boolean"
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "totalAmount": {
            "type": "number",
            "format": "double"
          },
          "totalPaid": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "totalItems": {
            "type": "integer",
            "format": "int32"
          },
          "contacts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SimpleDeliveryContact"
            },
            "nullable": true
          },
          "contact": {
            "$ref": "#/components/schemas/SimpleDeliveryContact"
          }
        },
        "additionalProperties": false
      },
      "SimpleDeliveryRouteQueryItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "routeId": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "routeName": {
            "type": "string",
            "nullable": true
          },
          "deliveriesCount": {
            "type": "integer",
            "format": "int32"
          },
          "deliveredCount": {
            "type": "integer",
            "format": "int32"
          },
          "completed": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "SimpleDeliveryRouteQueryItemIQueryExecutionResult": {
        "type": "object",
        "properties": {
          "aggregates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IAggregateResult"
            },
            "nullable": true,
            "readOnly": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SimpleDeliveryRouteQueryItem"
            },
            "nullable": true,
            "readOnly": true
          },
          "totalRecords": {
            "type": "integer",
            "format": "int64"
          },
          "numberOfPages": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SimpleDeliveryRouteQueryItemSimpleDeliveryRouteQueryItemSimpleDeliveryRouteQueryParamsDynamicQuery": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pageSize": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "sorts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Sort"
            },
            "nullable": true
          },
          "aggregates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DynamicQueryAggregate"
            },
            "nullable": true
          },
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Group"
            },
            "nullable": true
          },
          "filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DynamicQueryFilter"
            },
            "nullable": true
          },
          "params": {
            "$ref": "#/components/schemas/SimpleDeliveryRouteQueryParams"
          }
        },
        "additionalProperties": false
      },
      "SimpleDeliveryRouteQueryParams": {
        "type": "object",
        "additionalProperties": false
      },
      "SimpleUserInfo": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "fullName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "SkipDeliveryCommand": {
        "type": "object",
        "properties": {
          "deliveryId": {
            "type": "integer",
            "format": "int64"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "skippedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Sort": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "nullable": true
          },
          "ascending": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Stream": {
        "type": "object",
        "properties": {
          "canRead": {
            "type": "boolean",
            "readOnly": true
          },
          "canWrite": {
            "type": "boolean",
            "readOnly": true
          },
          "canSeek": {
            "type": "boolean",
            "readOnly": true
          },
          "canTimeout": {
            "type": "boolean",
            "readOnly": true
          },
          "length": {
            "type": "integer",
            "format": "int64",
            "readOnly": true
          },
          "position": {
            "type": "integer",
            "format": "int64"
          },
          "readTimeout": {
            "type": "integer",
            "format": "int32"
          },
          "writeTimeout": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "TerritoryWithZonesQuery": {
        "type": "object",
        "properties": {
          "territoryId": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "TerritoryWithZonesResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "zones": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TerritoryZoneItem"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TerritoryZoneItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "priority": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isReverse": {
            "type": "boolean"
          },
          "startFromWarehouse": {
            "type": "boolean"
          },
          "polygon": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NpgsqlPoint"
            }
          },
          "startWaypoint": {
            "$ref": "#/components/schemas/GeoPoint"
          },
          "exitWaypoint": {
            "$ref": "#/components/schemas/GeoPoint"
          }
        },
        "additionalProperties": false
      },
      "UpdateDeliveryTerritoryCommand": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "priority": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "UpdateDeliveryZoneCommand": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "priority": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isReverse": {
            "type": "boolean"
          },
          "startFromWarehouse": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "UploadDeliveryPictureCommand": {
        "type": "object",
        "properties": {
          "deliveryId": {
            "type": "integer",
            "format": "int64"
          },
          "fileName": {
            "type": "string",
            "nullable": true
          },
          "file": {
            "$ref": "#/components/schemas/Stream"
          }
        },
        "additionalProperties": false
      },
      "ZonePriorityItem": {
        "type": "object",
        "properties": {
          "zoneId": {
            "type": "integer",
            "format": "int64"
          },
          "priority": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "oauth2": {
        "type": "oauth2",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://auth.goutezplanb.com/realms/dev/protocol/openid-connect/auth",
            "tokenUrl": "https://auth.goutezplanb.com/realms/dev/protocol/openid-connect/token",
            "scopes": {
              "email": "Email"
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "oauth2": [
        "email"
      ]
    }
  ]
}