{
  "openapi" : "3.0.1",
  "servers" : [ {
          "url" : "https://api.geoconcept.com/tsapi",
          "description" : "Production",
          "variables" : { }
        } ],
  "info" : {
    "contact" : {
      "email" : "support@nomadia-group.com",
      "name" : "Nomadia Group",
      "url" : "https://www.nomadia-group.com/contact/"
    },
    "description" : "Web APIs for TourSolver.",
    "title" : "TourSolver API",
    "version" : "2.0"
  },
  "tags" : [ {
    "description" : "Start optimizations, follow the progress, retrieve the results, etc",
    "name" : "Optimization"
  }, {
    "description" : "Publish routes on the mobile app, add visits, follow the fulfillment, etc",
    "name" : "Fulfillment"
  }, {
    "description" : "Manage the users for backoffice and mobile app",
    "name" : "User"
  }, {
    "description" : "Manage your api sub keys",
    "name" : "Sub key"
  }, {
    "description" : "Manage your client base",
    "name" : "Client"
  } ],
  "paths" : {
    "/addClients" : {
      "post" : {
        "description" : "Use this service to add clients. These clients can then be used through the\nUI.",
        "operationId" : "addClients",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddClientsRequest"
              }
            },
            "application/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddClientsRequest"
              }
            },
            "text/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddClientsRequest"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AddClientsResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AddClientsResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AddClientsResult"
                }
              }
            },
            "description" : "result with status \"OK\", or status \"ERROR\" with more information in\nthe \"message\" field"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Add clients",
        "tags" : [ "Client" ]
      }
    },
    "/addOrdersToOperationalPlanning" : {
      "post" : {
        "description" : "This service will NOT trigger message (email/sms) sending",
        "operationId" : "addOrdersToOperationalPlanning",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddOperationalOrdersRequest"
              }
            },
            "application/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddOperationalOrdersRequest"
              }
            },
            "text/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddOperationalOrdersRequest"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AddOperationalOrdersResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AddOperationalOrdersResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AddOperationalOrdersResult"
                }
              }
            },
            "description" : "ToursolverServiceResult with success or error message"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Add orders to operational planning",
        "tags" : [ "Fulfillment" ]
      }
    },
    "/addPositions" : {
      "post" : {
        "operationId" : "addPositions",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddPositionsRequest"
              }
            },
            "application/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddPositionsRequest"
              }
            },
            "text/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddPositionsRequest"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              }
            },
            "description" : "ToursolverServiceResult with success or error message"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Add tracking positions for a specific mobile user",
        "tags" : [ "Fulfillment" ]
      }
    },
    "/addUser" : {
      "post" : {
        "description" : "A user must have :\n- a login that must not be already used by another user.\n- a last name\n- an organization at least\n\nIf (and only if) the user has the MOBILE role, a password must be provided.\nNote that this password will be used only for the mobile app connection.",
        "operationId" : "addUser",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UserInfo"
              }
            },
            "application/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/UserInfo"
              }
            },
            "text/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/UserInfo"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              }
            },
            "description" : "ToursolverServiceResult with success or error message"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Get the list of defined users. Some parameters can be used to filter the  list.",
        "tags" : [ "User" ]
      }
    },
    "/addVisits" : {
      "post" : {
        "description" : "Use this service to add unplanned orders to a finished optimization. These\norders can then be planned through the UI result page, but not through the\n api.",
        "operationId" : "addVisit",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddVisitsRequest"
              }
            },
            "application/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddVisitsRequest"
              }
            },
            "text/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/AddVisitsRequest"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AddVisitsResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AddVisitsResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AddVisitsResult"
                }
              }
            },
            "description" : "AddVisitsResult with success or error message"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Add unplanned orders to a finished optimization",
        "tags" : [ "Optimization" ]
      }
    },
    "/createSubKey" : {
      "post" : {
        "description" : "Use this service to create a sub key with a name, and a positive number of credits if useCredits is true",
        "operationId" : "addSubKey",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SubKey"
              }
            },
            "application/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/SubKey"
              }
            },
            "text/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/SubKey"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubKeyResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubKeyResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubKeyResult"
                }
              }
            },
            "description" : "SubKeyResult"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Create one sub key",
        "tags" : [ "Sub key" ]
      }
    },
    "/deleteClients" : {
      "delete" : {
        "description" : "Use this service to delete clients.",
        "operationId" : "deleteClients",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DeleteClientsRequest"
              }
            },
            "application/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/DeleteClientsRequest"
              }
            },
            "text/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/DeleteClientsRequest"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DeleteClientsResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DeleteClientsResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DeleteClientsResult"
                }
              }
            },
            "description" : "result with status \"OK\", or status \"ERROR\" with more information in\nthe \"message\" field"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Delete clients",
        "tags" : [ "Client" ]
      }
    },
    "/deleteOrdersFromOperationalPlanning" : {
      "delete" : {
        "description" : "use this service to delete operational orders by ids",
        "operationId" : "deleteOrdersFromOperationalPlanning",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DeleteOperationalOrdersRequest"
              }
            },
            "application/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/DeleteOperationalOrdersRequest"
              }
            },
            "text/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/DeleteOperationalOrdersRequest"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              }
            },
            "description" : "ToursolverServiceResult with success or error message"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Delete order from operational planning",
        "tags" : [ "Fulfillment" ]
      }
    },
    "/deleteSubKey" : {
      "delete" : {
        "description" : "Use this service to permanently delete a sub key",
        "operationId" : "deleteSubKey",
        "parameters" : [ {
          "in" : "query",
          "name" : "key",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubKeyResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubKeyResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubKeyResult"
                }
              }
            },
            "description" : "SubKeyResult"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Delete one sub key",
        "tags" : [ "Sub key" ]
      }
    },
    "/deleteUser" : {
      "delete" : {
        "description" : "only the login field of the userInfo object is used here",
        "operationId" : "deleteUser",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UserInfo"
              }
            },
            "application/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/UserInfo"
              }
            },
            "text/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/UserInfo"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              }
            },
            "description" : "ToursolverServiceResult with success or error message"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Delete one user",
        "tags" : [ "User" ]
      }
    },
    "/depots" : {
      "get" : {
        "description" : "Get depots defined in ToursolverCloud GUI",
        "operationId" : "getDepots",
        "parameters" : [ {
          "description" : "if a depot name is specified only one depot will be returned",
          "in" : "query",
          "name" : "depotName",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DepotsResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DepotsResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DepotsResult"
                }
              }
            },
            "description" : "DepotsResult with a list of depots"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Get known depots",
        "tags" : [ "Optimization" ]
      }
    },
    "/disableUser" : {
      "post" : {
        "description" : "only the login field of the userInfo object is used here",
        "operationId" : "disableUser",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UserInfo"
              }
            },
            "application/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/UserInfo"
              }
            },
            "text/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/UserInfo"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              }
            },
            "description" : "ToursolverServiceResult with success or error message"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Disable one user",
        "tags" : [ "User" ]
      }
    },
    "/enableUser" : {
      "post" : {
        "description" : "only the login field of the userInfo object is used here",
        "operationId" : "enableUser",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UserInfo"
              }
            },
            "application/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/UserInfo"
              }
            },
            "text/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/UserInfo"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              }
            },
            "description" : "ToursolverServiceResult with success or error message"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Enable one user",
        "tags" : [ "User" ]
      }
    },
    "/exportToOperationalPlanning" : {
      "post" : {
        "description" : "Exports the result of an optimization to operational planning that mobile\nresources will be able to browse on the field through a mobile app.\n\nThis command only works on completed optimizations. Mobile resource\nidentifiers must have been set previously in TsCloud app. If optimization\nperiod overlaps an already existing operational planning, export will\nwork only if the force attribut has been set to true.",
        "operationId" : "exportToOperationPlanning",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/OperationalExportRequest"
              }
            },
            "application/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/OperationalExportRequest"
              }
            },
            "text/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/OperationalExportRequest"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              }
            },
            "description" : "ToursolverServiceResult with success or error message"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Export to operational planning",
        "tags" : [ "Fulfillment" ]
      }
    },
    "/findClients" : {
      "post" : {
        "description" : "Use this service to find clients.",
        "operationId" : "findClients",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/FindClientsRequest"
              }
            },
            "application/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/FindClientsRequest"
              }
            },
            "text/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/FindClientsRequest"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FindClientsResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FindClientsResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FindClientsResult"
                }
              }
            },
            "description" : "result with status \"OK\", or status \"ERROR\" with more information in\nthe \"message\" field and a list of clients"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Find clients",
        "tags" : [ "Client" ]
      }
    },
    "/fulfillment" : {
      "get" : {
        "description" : "Expected date format is \"yyyy-MM-dd'T'HH:mm:ss\"\nExpected time zone format is \"UTC\" or \"area/city\" as defined in IANA Time Zone Database (TZDB) (e.g. \"Europe/Paris\").\nThe default time zone is UTC\n\nNote that you can configure a webhook to receive the fulfillment updates automatically (see configuration in UI).",
        "operationId" : "getFullfillment",
        "parameters" : [ {
          "description" : "a mobile resource login (optional)",
          "in" : "query",
          "name" : "userLogin",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "planning period start",
          "in" : "query",
          "name" : "startDate",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "planning period end",
          "in" : "query",
          "name" : "endDate",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "if specified, only operationalOrders that have been  modified since this date will be returned",
          "in" : "query",
          "name" : "lastUpdate",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "a time zone id (optional)",
          "in" : "query",
          "name" : "zoneId",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "exclude tracking data (optional)",
          "in" : "query",
          "name" : "withoutTracking",
          "schema" : {
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FulfillmentResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FulfillmentResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FulfillmentResult"
                }
              }
            },
            "description" : " FulfillmentResult object containing a list of OperationalOrders and a list of OperationalLastKnownPositions"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Get fulfillment information for a specified period of time",
        "tags" : [ "Fulfillment" ]
      }
    },
    "/gatewayToken" : {
      "get" : {
        "description" : "Get a gateway token that can be used to get connected to Toursolver GUI\nthrough the gateway.\n\nUse this token to get connected to TsCloud GUI by passing it in the query\nlike this : https://app.geoconcept.com/ToursolverCloud/ts/login?token=xxx",
        "operationId" : "getGatewayToken",
        "parameters" : [ {
          "description" : "in multi-user context, you can specify the login. If not specified, the account main user will be used.",
          "in" : "query",
          "name" : "login",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LoginTokenResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LoginTokenResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LoginTokenResult"
                }
              }
            },
            "description" : "token object"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Get a gateway token",
        "tags" : [ "Fulfillment" ]
      }
    },
    "/getSubKey" : {
      "get" : {
        "description" : "Use this service to retrieve a sub key",
        "operationId" : "getSubKey",
        "parameters" : [ {
          "in" : "query",
          "name" : "key",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubKeyResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubKeyResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubKeyResult"
                }
              }
            },
            "description" : "SubKeyResult"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Get one subKey",
        "tags" : [ "Sub key" ]
      }
    },
    "/listSubKeys" : {
      "get" : {
        "description" : "SubKeys will be filtered to return only the ones which name contains the submitted string",
        "operationId" : "listSubKeys",
        "parameters" : [ {
          "in" : "query",
          "name" : "nameContains",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubKeyResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubKeyResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubKeyResult"
                }
              }
            },
            "description" : "SubKeyResult"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "List sub keys",
        "tags" : [ "Sub key" ]
      }
    },
    "/listUsers" : {
      "get" : {
        "description" : "Use this service to retrieve users. Some parameters can be used to filter the list.",
        "operationId" : "listUsers",
        "parameters" : [ {
          "description" : "if defined, will return only the user matching this login (and others filtering parameters will be ignored)",
          "in" : "query",
          "name" : "profile",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "if defined, only users of this profile will be returned",
          "in" : "query",
          "name" : "login",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "if defined, only users linked with this organization will be returned",
          "in" : "query",
          "name" : "organization",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ListUsersResponse"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ListUsersResponse"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ListUsersResponse"
                }
              }
            },
            "description" : "ListUsersResponse"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Get the list of defined users.",
        "tags" : [ "User" ]
      }
    },
    "/optimize" : {
      "post" : {
        "description" : "Use this method to plan tours. The process consists in assigning Orders\nobject elements to Resources object on a way that respects the\nconstraints and minimizes the cost of the computed planning. This method\nis composed of 2 processes: a data checking and optimizing process.",
        "operationId" : "optimize",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/OptimizeRequest"
              }
            },
            "application/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/OptimizeRequest"
              }
            },
            "text/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/OptimizeRequest"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OptimizeResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OptimizeResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OptimizeResult"
                }
              }
            },
            "description" : "OptimizeResult with task id"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Start an optimization",
        "tags" : [ "Optimization" ]
      }
    },
    "/readClient" : {
      "get" : {
        "description" : "Use this service to read clients.\nUse either an externalRef or an internal id (internal id will be used anyway\nif provided).",
        "operationId" : "readClient",
        "parameters" : [ {
          "description" : "externRef given at creation",
          "in" : "query",
          "name" : "externRef",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "internal id (quicker)",
          "in" : "query",
          "name" : "id",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ReadClientResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ReadClientResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ReadClientResult"
                }
              }
            },
            "description" : "result with status \"OK\", or status \"ERROR\" with more information in\nthe \"message\" field and one client if found"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Read one client",
        "tags" : [ "Client" ]
      }
    },
    "/resources" : {
      "get" : {
        "description" : "Get resources defined in ToursolverCloud GUI",
        "operationId" : "getResources",
        "parameters" : [ {
          "description" : "if a resource name is specified (team name will be ignored), only one resource will be returned",
          "in" : "query",
          "name" : "resourceName",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "if a team name is specified, only the resources of this team will returned",
          "in" : "query",
          "name" : "teamName",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourcesResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourcesResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourcesResult"
                }
              }
            },
            "description" : "ResourcesResult with a list of resources"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Get known resources",
        "tags" : [ "Optimization" ]
      }
    },
    "/result" : {
      "get" : {
        "description" : "Get the result of planning optimization. Status of the optimization must be terminated.",
        "operationId" : "getResult",
        "parameters" : [ {
          "description" : "the id of optimization task, as returned by the optimize service",
          "in" : "query",
          "name" : "taskId",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OptimResultResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OptimResultResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OptimResultResult"
                }
              }
            },
            "description" : "Result of the optimization"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Get optimization result",
        "tags" : [ "Optimization" ]
      }
    },
    "/simulation" : {
      "get" : {
        "description" : "Get simulation launched in ToursolverCloud (GUI)",
        "operationId" : "getSimulation",
        "parameters" : [ {
          "description" : "simulation ID",
          "in" : "query",
          "name" : "simulationId",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SimulationResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SimulationResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SimulationResult"
                }
              }
            },
            "description" : " SimulationResult with the simulation"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Get simulation by ID",
        "tags" : [ "Optimization" ]
      }
    },
    "/status" : {
      "get" : {
        "description" : "This service returns the status of an optimization.",
        "operationId" : "getStatus",
        "parameters" : [ {
          "description" : "the id of optimization task, as returned by the optimize service",
          "in" : "query",
          "name" : "taskId",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OptimStatusResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OptimStatusResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OptimStatusResult"
                }
              }
            },
            "description" : "Optimization status"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Get optimization status",
        "tags" : [ "Optimization" ]
      }
    },
    "/stop" : {
      "post" : {
        "description" : "This stop is asynchronous. You should use the related status function to\nknow when the optimization is truly stopped.",
        "operationId" : "stop",
        "parameters" : [ {
          "description" : "the id of optimization task, as returned by the optimize service",
          "in" : "query",
          "name" : "taskId",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OptimStopResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OptimStopResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OptimStopResult"
                }
              }
            },
            "description" : "OptimStopResult with the date of the first stop call for this taskId"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Interrupt optimization task",
        "tags" : [ "Optimization" ]
      }
    },
    "/toursResult" : {
      "get" : {
        "description" : "Get the result of planning optimization organized by tours (one tour per\nresource per day). Status of the optimization must be terminated.",
        "operationId" : "getToursResult",
        "parameters" : [ {
          "description" : "the id of optimization task, as returned by the optimize service",
          "in" : "query",
          "name" : "taskId",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OptimToursResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OptimToursResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OptimToursResult"
                }
              }
            },
            "description" : "Result of the optimization organized by tours"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Get optimization result organized by tours",
        "tags" : [ "Optimization" ]
      }
    },
    "/updateClients" : {
      "put" : {
        "description" : "Use this service to update clients. These clients can then be used through the UI.",
        "operationId" : "updateClients",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateClientsRequest"
              }
            },
            "application/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateClientsRequest"
              }
            },
            "text/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateClientsRequest"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UpdateClientsResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UpdateClientsResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UpdateClientsResult"
                }
              }
            },
            "description" : "result with status \"OK\", or status \"ERROR\" with more information\nin the \"message\" field, and the list of created clients (with\ngenerated externRef and internal id)"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Update clients",
        "tags" : [ "Client" ]
      }
    },
    "/updateOperationalOrder" : {
      "put" : {
        "description" : "Emails / Sms sending can be triggered depending on your configuration",
        "operationId" : "updateOperationalOrder",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateOperationalOrderRequest"
              }
            },
            "application/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateOperationalOrderRequest"
              }
            },
            "text/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateOperationalOrderRequest"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              }
            },
            "description" : "ToursolverServiceResult with success or error message"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Update one operational order",
        "tags" : [ "Fulfillment" ]
      }
    },
    "/updateOrdersOfOperationalPlanning" : {
      "put" : {
        "description" : "This service will NOT trigger message (email/sms) sending\n\n Chronological fulfillment order is not verified.\n",
        "operationId" : "updateOrdersOfOperationalPlanning",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateOperationalOrdersRequest"
              }
            },
            "application/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateOperationalOrdersRequest"
              }
            },
            "text/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateOperationalOrdersRequest"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              }
            },
            "description" : "ToursolverServiceResult with success or error message"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Update orders of operational planning",
        "tags" : [ "Fulfillment" ]
      }
    },
    "/updateSubKey" : {
      "put" : {
        "description" : "Increasing the value of creditsPerDay will automatically reset the daily limit. if creditsPerDay is decreased, remainingCredits will take the minimum valuebetween current remainingCredits and new creditsPerDay values.",
        "operationId" : "updateSubKey",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SubKey"
              }
            },
            "application/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/SubKey"
              }
            },
            "text/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/SubKey"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubKeyResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubKeyResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubKeyResult"
                }
              }
            },
            "description" : "SubKeyResult"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Update one sub key",
        "tags" : [ "Sub key" ]
      }
    },
    "/updateUser" : {
      "put" : {
        "description" : "login ,last name and organizations are mandatory",
        "operationId" : "updateUser",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UserInfo"
              }
            },
            "application/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/UserInfo"
              }
            },
            "text/xml" : {
              "schema" : {
                "$ref" : "#/components/schemas/UserInfo"
              }
            }
          }
        },
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              }
            },
            "description" : "ToursolverServiceResult with success or error message"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Update one user",
        "tags" : [ "User" ]
      }
    },
    "/uploadPhoto" : {
      "post" : {
        "description" : "multipart form data, each field must be an operational order id.",
        "operationId" : "uploadPhoto",
        "responses" : {
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "application/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              },
              "text/xml" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ToursolverServiceResult"
                }
              }
            },
            "description" : "ToursolverServiceResult with success or error message"
          }
        },
        "security" : [ {
          "apiKey" : [ ]
        } ],
        "servers" : [ {
          "description" : "Production",
          "url" : "https://api.geoconcept.com/tsapi",
          "variables" : { }
        } ],
        "summary" : "Upload photos to operational orders",
        "tags" : [ "Fulfillment" ]
      }
    }
  },
  "components" : {
    "schemas" : {
      "AddClientsRequest" : {
        "type" : "object",
        "properties" : {
          "clients" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ClientEntity"
            }
          }
        }
      },
      "AddClientsResult" : {
        "type" : "object",
        "properties" : {
          "clients" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ClientEntity"
            }
          },
          "errCode" : {
            "type" : "string",
            "description" : "Error code",
            "enum" : [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "200", "201", "300", "301", "400", "401", "500", "501", "502", "600", "601", "602", "603", "604", "1000", "1001", "1002", "1003", "1004", "1006", "1007", "1008", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "3000", "3001", "3002", "4000", "4001", "4002", "5000", "5001", "5002", "5003", "6000" ]
          },
          "message" : {
            "type" : "string",
            "description" : "Error message"
          },
          "status" : {
            "type" : "string",
            "description" : "OK or ERROR",
            "enum" : [ "OK", "ERROR" ]
          }
        }
      },
      "AddOperationalOrdersRequest" : {
        "type" : "object",
        "description" : "list of orders to be added",
        "properties" : {
          "orders" : {
            "type" : "array",
            "description" : "List of orders",
            "items" : {
              "$ref" : "#/components/schemas/OperationalOrder"
            }
          }
        }
      },
      "AddOperationalOrdersResult" : {
        "type" : "object",
        "properties" : {
          "errCode" : {
            "type" : "string",
            "description" : "Error code",
            "enum" : [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "200", "201", "300", "301", "400", "401", "500", "501", "502", "600", "601", "602", "603", "604", "1000", "1001", "1002", "1003", "1004", "1006", "1007", "1008", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "3000", "3001", "3002", "4000", "4001", "4002", "5000", "5001", "5002", "5003", "6000" ]
          },
          "message" : {
            "type" : "string",
            "description" : "Error message"
          },
          "orders" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OperationalOrder"
            }
          },
          "status" : {
            "type" : "string",
            "description" : "OK or ERROR",
            "enum" : [ "OK", "ERROR" ]
          }
        }
      },
      "AddPositionsRequest" : {
        "type" : "object",
        "properties" : {
          "positions" : {
            "type" : "array",
            "description" : "list of positions",
            "items" : {
              "$ref" : "#/components/schemas/GpsPositionExport"
            }
          },
          "userLogin" : {
            "type" : "string",
            "description" : "Mobile user login"
          }
        }
      },
      "AddVisitsRequest" : {
        "type" : "object",
        "description" : "visits to add, with id of target simulation or job, and language code",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "id of target simulation or job"
          },
          "language" : {
            "type" : "string",
            "description" : "language code"
          },
          "orders" : {
            "type" : "array",
            "description" : "List of orders",
            "items" : {
              "$ref" : "#/components/schemas/TSOrder"
            }
          }
        }
      },
      "AddVisitsResult" : {
        "type" : "object",
        "description" : "result with status \"OK\", or status \"ERROR\" with more information in\r\n\t *         the \"message\" field",
        "properties" : {
          "message" : {
            "type" : "string"
          },
          "status" : {
            "type" : "string"
          }
        }
      },
      "ClientEntity" : {
        "type" : "object",
        "properties" : {
          "additionalAddress" : {
            "type" : "string"
          },
          "agency" : {
            "type" : "string"
          },
          "allSkillsRequired" : {
            "type" : "boolean"
          },
          "allowedDepots" : {
            "type" : "string"
          },
          "city" : {
            "type" : "string"
          },
          "color" : {
            "type" : "string"
          },
          "countryFull" : {
            "type" : "string"
          },
          "creationDate" : {
            "type" : "string",
            "format" : "date-time"
          },
          "customData" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          },
          "description" : {
            "type" : "string"
          },
          "designation" : {
            "type" : "string"
          },
          "email" : {
            "type" : "string"
          },
          "externRef" : {
            "type" : "string"
          },
          "fixedVisitDuration" : {
            "type" : "integer",
            "format" : "int32"
          },
          "frequency" : {
            "type" : "string"
          },
          "frequencyType" : {
            "type" : "string"
          },
          "geocodeType" : {
            "type" : "string"
          },
          "getNotification" : {
            "type" : "boolean"
          },
          "givenName" : {
            "type" : "string"
          },
          "id" : {
            "type" : "string"
          },
          "isCustomer" : {
            "type" : "boolean"
          },
          "lastComment" : {
            "type" : "string"
          },
          "lastFeedback" : {
            "type" : "integer",
            "format" : "int32"
          },
          "lastUpdateUser" : {
            "type" : "string"
          },
          "lastVisitDate" : {
            "type" : "string",
            "format" : "date-time"
          },
          "lastVisitId" : {
            "type" : "string"
          },
          "manualPosition" : {
            "$ref" : "#/components/schemas/ManualPosition"
          },
          "maxSpacing" : {
            "type" : "integer",
            "format" : "int32"
          },
          "minSpacing" : {
            "type" : "integer",
            "format" : "int32"
          },
          "mobile" : {
            "type" : "string"
          },
          "nextVisitDate" : {
            "type" : "string",
            "format" : "date-time"
          },
          "occupation" : {
            "type" : "string"
          },
          "ownerId" : {
            "type" : "string"
          },
          "phone" : {
            "type" : "string"
          },
          "photoURL" : {
            "type" : "string"
          },
          "possibleVisitDays1" : {
            "type" : "string"
          },
          "possibleVisitDays2" : {
            "type" : "string"
          },
          "possibleVisitDays3" : {
            "type" : "string"
          },
          "possibleVisitDays4" : {
            "type" : "string"
          },
          "providedProducts" : {
            "type" : "string"
          },
          "quantities" : {
            "type" : "array",
            "items" : {
              "type" : "number",
              "format" : "double"
            }
          },
          "requiredSkills" : {
            "type" : "string"
          },
          "sector" : {
            "type" : "string"
          },
          "startsBefore" : {
            "type" : "string"
          },
          "stateFull" : {
            "type" : "string"
          },
          "streetAndNumber" : {
            "type" : "string"
          },
          "surName" : {
            "type" : "string"
          },
          "timeWindowBeginTime1" : {
            "type" : "integer",
            "format" : "int32"
          },
          "timeWindowBeginTime2" : {
            "type" : "integer",
            "format" : "int32"
          },
          "timeWindowBeginTime3" : {
            "type" : "integer",
            "format" : "int32"
          },
          "timeWindowBeginTime4" : {
            "type" : "integer",
            "format" : "int32"
          },
          "timeWindowEndTime1" : {
            "type" : "integer",
            "format" : "int32"
          },
          "timeWindowEndTime2" : {
            "type" : "integer",
            "format" : "int32"
          },
          "timeWindowEndTime3" : {
            "type" : "integer",
            "format" : "int32"
          },
          "timeWindowEndTime4" : {
            "type" : "integer",
            "format" : "int32"
          },
          "title" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          },
          "updateDate" : {
            "type" : "string",
            "format" : "date-time"
          },
          "useManualPositioning" : {
            "type" : "boolean"
          },
          "visitType" : {
            "type" : "integer",
            "format" : "int32"
          },
          "wholeVisitInTimeWindow" : {
            "type" : "boolean"
          },
          "x" : {
            "type" : "number",
            "format" : "double"
          },
          "y" : {
            "type" : "number",
            "format" : "double"
          },
          "zipCode" : {
            "type" : "string"
          }
        }
      },
      "Data" : {
        "type" : "object",
        "properties" : {
          "dataItem" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DataItem"
            },
            "xml" : {
              "name" : "DataItem"
            }
          },
          "detailSet" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DetailSet"
            },
            "xml" : {
              "name" : "DetailSet"
            }
          }
        }
      },
      "DataItem" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "xml" : {
              "name" : "Id"
            }
          },
          "label" : {
            "type" : "string",
            "xml" : {
              "name" : "Label"
            }
          },
          "name" : {
            "type" : "string",
            "xml" : {
              "name" : "Name"
            }
          },
          "onCancelHandling" : {
            "type" : "string",
            "default" : "writable",
            "enum" : [ "writable", "readonly", "mandatory", "unvisible" ],
            "xml" : {
              "name" : "OnCancelHandling"
            }
          },
          "onCreateHandling" : {
            "type" : "string",
            "default" : "writable",
            "enum" : [ "writable", "readonly", "mandatory", "unvisible" ],
            "xml" : {
              "name" : "OnCreateHandling"
            }
          },
          "onEndHandling" : {
            "type" : "string",
            "default" : "writable",
            "enum" : [ "writable", "readonly", "mandatory", "unvisible" ],
            "xml" : {
              "name" : "OnEndHandling"
            }
          },
          "onPlanningHandling" : {
            "type" : "string",
            "default" : "writable",
            "enum" : [ "writable", "readonly", "mandatory", "unvisible" ],
            "xml" : {
              "name" : "OnPlanningHandling"
            }
          },
          "onRejectHandling" : {
            "type" : "string",
            "default" : "writable",
            "enum" : [ "writable", "readonly", "mandatory", "unvisible" ],
            "xml" : {
              "name" : "OnRejectHandling"
            }
          },
          "onStartHandling" : {
            "type" : "string",
            "default" : "writable",
            "enum" : [ "writable", "readonly", "mandatory", "unvisible" ],
            "xml" : {
              "name" : "OnStartHandling"
            }
          },
          "possibleValues" : {
            "$ref" : "#/components/schemas/PossibleValues"
          },
          "standardHandling" : {
            "type" : "string",
            "default" : "writable",
            "enum" : [ "writable", "readonly", "mandatory", "unvisible" ],
            "xml" : {
              "name" : "StandardHandling"
            }
          },
          "taskTypes" : {
            "$ref" : "#/components/schemas/TaskTypes"
          },
          "type" : {
            "type" : "string",
            "enum" : [ "string", "multiLine", "number", "date", "checkBox", "url" ],
            "xml" : {
              "name" : "Type"
            }
          },
          "value" : {
            "type" : "string",
            "xml" : {
              "name" : "Value"
            }
          }
        },
        "required" : [ "id", "label", "type" ]
      },
      "DayOff" : {
        "type" : "object",
        "properties" : {
          "end" : {
            "type" : "string",
            "format" : "date"
          },
          "reason" : {
            "type" : "string"
          },
          "start" : {
            "type" : "string",
            "format" : "date"
          }
        }
      },
      "DeleteClientsRequest" : {
        "type" : "object",
        "description" : "ids will be used over externRef list if both are povided",
        "properties" : {
          "clientsExternRefs" : {
            "type" : "array",
            "description" : "list of clients externRef",
            "items" : {
              "type" : "string"
            }
          },
          "ids" : {
            "type" : "array",
            "description" : "list of clients internal ids (quicker)",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "DeleteClientsResult" : {
        "type" : "object",
        "properties" : {
          "errCode" : {
            "type" : "string",
            "description" : "Error code",
            "enum" : [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "200", "201", "300", "301", "400", "401", "500", "501", "502", "600", "601", "602", "603", "604", "1000", "1001", "1002", "1003", "1004", "1006", "1007", "1008", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "3000", "3001", "3002", "4000", "4001", "4002", "5000", "5001", "5002", "5003", "6000" ]
          },
          "message" : {
            "type" : "string",
            "description" : "Error message"
          },
          "status" : {
            "type" : "string",
            "description" : "OK or ERROR",
            "enum" : [ "OK", "ERROR" ]
          }
        }
      },
      "DeleteOperationalOrdersRequest" : {
        "type" : "object",
        "description" : "list of orders ids to be deleted",
        "properties" : {
          "ordersIds" : {
            "type" : "array",
            "description" : "List of order ids",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "DepotsResult" : {
        "type" : "object",
        "properties" : {
          "depots" : {
            "type" : "array",
            "description" : "List of depots",
            "items" : {
              "$ref" : "#/components/schemas/TSDepot"
            }
          },
          "errCode" : {
            "type" : "string",
            "description" : "Error code",
            "enum" : [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "200", "201", "300", "301", "400", "401", "500", "501", "502", "600", "601", "602", "603", "604", "1000", "1001", "1002", "1003", "1004", "1006", "1007", "1008", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "3000", "3001", "3002", "4000", "4001", "4002", "5000", "5001", "5002", "5003", "6000" ]
          },
          "message" : {
            "type" : "string",
            "description" : "Error message"
          },
          "status" : {
            "type" : "string",
            "description" : "OK or ERROR",
            "enum" : [ "OK", "ERROR" ]
          }
        }
      },
      "DetailSet" : {
        "type" : "object",
        "properties" : {
          "displayMode" : {
            "type" : "string",
            "default" : "application",
            "enum" : [ "none", "table", "form", "all", "application" ],
            "xml" : {
              "name" : "DisplayMode"
            }
          },
          "fields" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DetailSetField"
            },
            "xml" : {
              "name" : "Fields"
            }
          },
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DetailSetItem"
            },
            "xml" : {
              "name" : "Items"
            }
          },
          "kind" : {
            "type" : "string",
            "xml" : {
              "name" : "Kind"
            }
          },
          "title" : {
            "type" : "string",
            "xml" : {
              "name" : "Title"
            }
          }
        },
        "required" : [ "kind", "title" ]
      },
      "DetailSetField" : {
        "type" : "object",
        "properties" : {
          "access" : {
            "type" : "string",
            "enum" : [ "writable", "readonly", "mandatory", "unvisible" ],
            "xml" : {
              "name" : "Access"
            }
          },
          "datatype" : {
            "type" : "string",
            "enum" : [ "filler", "quantity", "date", "logical", "url" ],
            "xml" : {
              "name" : "Datatype"
            }
          },
          "id" : {
            "type" : "string",
            "xml" : {
              "name" : "Id"
            }
          },
          "kind" : {
            "type" : "string",
            "xml" : {
              "name" : "Kind"
            }
          },
          "label" : {
            "type" : "string",
            "xml" : {
              "name" : "Label"
            }
          },
          "name" : {
            "type" : "string",
            "xml" : {
              "name" : "Name"
            }
          },
          "possibleValues" : {
            "$ref" : "#/components/schemas/PossibleValues"
          }
        },
        "required" : [ "datatype", "label", "name" ]
      },
      "DetailSetItem" : {
        "type" : "object",
        "properties" : {
          "deleteAction" : {
            "type" : "boolean",
            "default" : false,
            "xml" : {
              "name" : "DeleteAction"
            }
          },
          "id" : {
            "type" : "string",
            "xml" : {
              "name" : "Id"
            }
          },
          "isActive" : {
            "type" : "boolean",
            "xml" : {
              "name" : "IsActive"
            }
          },
          "values" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "xml" : {
                "name" : "Values"
              }
            },
            "xml" : {
              "name" : "Values"
            }
          }
        },
        "required" : [ "id" ]
      },
      "Events" : {
        "type" : "object",
        "properties" : {
          "day" : {
            "type" : "string"
          },
          "duration" : {
            "type" : "string"
          },
          "id" : {
            "type" : "string"
          },
          "label" : {
            "type" : "string"
          },
          "resource" : {
            "type" : "string"
          },
          "routeId" : {
            "type" : "string"
          },
          "startTime" : {
            "type" : "string"
          }
        }
      },
      "FindClientsRequest" : {
        "type" : "object",
        "properties" : {
          "filters" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          },
          "maxResults" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "FindClientsResult" : {
        "type" : "object",
        "properties" : {
          "clients" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ClientEntity"
            }
          },
          "errCode" : {
            "type" : "string",
            "description" : "Error code",
            "enum" : [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "200", "201", "300", "301", "400", "401", "500", "501", "502", "600", "601", "602", "603", "604", "1000", "1001", "1002", "1003", "1004", "1006", "1007", "1008", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "3000", "3001", "3002", "4000", "4001", "4002", "5000", "5001", "5002", "5003", "6000" ]
          },
          "message" : {
            "type" : "string",
            "description" : "Error message"
          },
          "status" : {
            "type" : "string",
            "description" : "OK or ERROR",
            "enum" : [ "OK", "ERROR" ]
          }
        }
      },
      "FulfillmentResult" : {
        "type" : "object",
        "description" : "Result of the fulfillment service",
        "properties" : {
          "errCode" : {
            "type" : "string",
            "description" : "Error code",
            "enum" : [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "200", "201", "300", "301", "400", "401", "500", "501", "502", "600", "601", "602", "603", "604", "1000", "1001", "1002", "1003", "1004", "1006", "1007", "1008", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "3000", "3001", "3002", "4000", "4001", "4002", "5000", "5001", "5002", "5003", "6000" ]
          },
          "lastKnownPosition" : {
            "type" : "array",
            "description" : "List of positions",
            "items" : {
              "$ref" : "#/components/schemas/OperationalLastKnownPosition"
            }
          },
          "message" : {
            "type" : "string",
            "description" : "Error message"
          },
          "operationalOrderAchievements" : {
            "type" : "array",
            "description" : "List of orders",
            "items" : {
              "$ref" : "#/components/schemas/OperationalOrder"
            }
          },
          "status" : {
            "type" : "string",
            "description" : "OK or ERROR",
            "enum" : [ "OK", "ERROR" ]
          }
        }
      },
      "GeocodeInfos" : {
        "type" : "object",
        "description" : "Address and position info",
        "properties" : {
          "address" : {
            "type" : "string"
          },
          "addressComplement" : {
            "type" : "string"
          },
          "city" : {
            "type" : "string"
          },
          "country" : {
            "type" : "string"
          },
          "geocodeAddressLine" : {
            "type" : "string"
          },
          "geocodeCity" : {
            "type" : "string"
          },
          "geocodePostalCode" : {
            "type" : "string"
          },
          "geocodeType" : {
            "type" : "integer",
            "format" : "int32"
          },
          "postcode" : {
            "type" : "string"
          },
          "region" : {
            "type" : "string"
          },
          "score" : {
            "type" : "number",
            "format" : "double"
          }
        }
      },
      "GpsPositionExport" : {
        "type" : "object",
        "properties" : {
          "accuracy" : {
            "type" : "number",
            "format" : "double"
          },
          "batteryLevel" : {
            "type" : "number",
            "format" : "double"
          },
          "date" : {
            "type" : "string",
            "format" : "date-time"
          },
          "gpsStatus" : {
            "type" : "string",
            "enum" : [ "NO_SIGNAL", "ONLINE", "OFFLINE" ]
          },
          "heading" : {
            "type" : "number",
            "format" : "double"
          },
          "lat" : {
            "type" : "number",
            "format" : "double"
          },
          "lon" : {
            "type" : "number",
            "format" : "double"
          },
          "privateMode" : {
            "type" : "boolean"
          },
          "speed" : {
            "type" : "number",
            "format" : "double"
          }
        }
      },
      "ImminentOperationalOrderData" : {
        "type" : "object",
        "description" : "Customer satisfaction data",
        "properties" : {
          "satisfaction" : {
            "$ref" : "#/components/schemas/ImminentOrderSatisfaction"
          }
        }
      },
      "ImminentOrderSatisfaction" : {
        "type" : "object",
        "properties" : {
          "comment" : {
            "type" : "string"
          },
          "rating" : {
            "type" : "number",
            "format" : "double"
          }
        }
      },
      "ListUsersResponse" : {
        "type" : "object",
        "properties" : {
          "errCode" : {
            "type" : "string",
            "description" : "Error code",
            "enum" : [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "200", "201", "300", "301", "400", "401", "500", "501", "502", "600", "601", "602", "603", "604", "1000", "1001", "1002", "1003", "1004", "1006", "1007", "1008", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "3000", "3001", "3002", "4000", "4001", "4002", "5000", "5001", "5002", "5003", "6000" ]
          },
          "message" : {
            "type" : "string",
            "description" : "Error message"
          },
          "status" : {
            "type" : "string",
            "description" : "OK or ERROR",
            "enum" : [ "OK", "ERROR" ]
          },
          "users" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/UserInfo"
            }
          }
        }
      },
      "LocalTime" : {
        "type" : "object",
        "properties" : {
          "hour" : {
            "type" : "integer",
            "format" : "int32"
          },
          "minute" : {
            "type" : "integer",
            "format" : "int32"
          },
          "nano" : {
            "type" : "integer",
            "format" : "int32"
          },
          "second" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "LoginTokenResult" : {
        "type" : "object",
        "description" : "Result of the token service",
        "properties" : {
          "errCode" : {
            "type" : "string",
            "description" : "Error code",
            "enum" : [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "200", "201", "300", "301", "400", "401", "500", "501", "502", "600", "601", "602", "603", "604", "1000", "1001", "1002", "1003", "1004", "1006", "1007", "1008", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "3000", "3001", "3002", "4000", "4001", "4002", "5000", "5001", "5002", "5003", "6000" ]
          },
          "message" : {
            "type" : "string",
            "description" : "Error message"
          },
          "status" : {
            "type" : "string",
            "description" : "OK or ERROR",
            "enum" : [ "OK", "ERROR" ]
          },
          "token" : {
            "type" : "string",
            "description" : "Token string"
          },
          "validUntil" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "Token validity end date"
          }
        }
      },
      "ManualPosition" : {
        "type" : "object",
        "properties" : {
          "when" : {
            "type" : "string",
            "format" : "date-time"
          },
          "who" : {
            "type" : "string"
          },
          "x" : {
            "type" : "number",
            "format" : "double"
          },
          "y" : {
            "type" : "number",
            "format" : "double"
          }
        }
      },
      "OperationalExportRequest" : {
        "type" : "object",
        "description" : "Operational planning export parameters",
        "properties" : {
          "dayNums" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int32"
            },
            "uniqueItems" : true
          },
          "force" : {
            "type" : "boolean",
            "description" : "if true, any existing operational planning will be replaced\r\n if false and if optimization period overlaps any existing operational planning, export will fail."
          },
          "generateFollowingLink" : {
            "type" : "boolean",
            "description" : "if true, a following short link is generated and stored in each order.\r\nThis will make this export quite longer."
          },
          "resourceMapping" : {
            "type" : "array",
            "description" : "List of MobileResourceMapping defining relation between resource identifier in optimize request and real mobile resource identifier",
            "items" : {
              "$ref" : "#/components/schemas/OperationalResourceMapping"
            }
          },
          "startDate" : {
            "type" : "string",
            "format" : "date",
            "description" : "real date corresponding to day 1 of optimize request data"
          },
          "taskId" : {
            "type" : "string",
            "description" : "Task identifier. Must point to a completed optimization."
          },
          "waitForWeatherUpdate" : {
            "type" : "boolean",
            "description" : "if true, weather info update will be synchronously : export request will end only after weather info update\r\nif false, export request will return before  weather info update is finished.\r\nNote : if generateFollowingLink is true, export will always wait weather info update."
          },
          "zoneId" : {
            "type" : "object",
            "properties" : {
              "id" : {
                "type" : "string"
              },
              "rules" : {
                "type" : "object",
                "properties" : {
                  "fixedOffset" : {
                    "type" : "boolean"
                  },
                  "transitionRules" : {
                    "type" : "array",
                    "items" : {
                      "type" : "object",
                      "properties" : {
                        "dayOfMonthIndicator" : {
                          "type" : "integer",
                          "format" : "int32"
                        },
                        "dayOfWeek" : {
                          "type" : "string",
                          "enum" : [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ]
                        },
                        "localTime" : {
                          "$ref" : "#/components/schemas/LocalTime"
                        },
                        "midnightEndOfDay" : {
                          "type" : "boolean"
                        },
                        "month" : {
                          "type" : "string",
                          "enum" : [ "JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE", "JULY", "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER" ]
                        },
                        "offsetAfter" : {
                          "type" : "object",
                          "properties" : {
                            "id" : {
                              "type" : "string"
                            },
                            "totalSeconds" : {
                              "type" : "integer",
                              "format" : "int32"
                            }
                          }
                        },
                        "offsetBefore" : {
                          "type" : "object",
                          "properties" : {
                            "id" : {
                              "type" : "string"
                            },
                            "totalSeconds" : {
                              "type" : "integer",
                              "format" : "int32"
                            }
                          }
                        },
                        "standardOffset" : {
                          "type" : "object",
                          "properties" : {
                            "id" : {
                              "type" : "string"
                            },
                            "totalSeconds" : {
                              "type" : "integer",
                              "format" : "int32"
                            }
                          }
                        },
                        "timeDefinition" : {
                          "type" : "string",
                          "enum" : [ "UTC", "WALL", "STANDARD" ]
                        }
                      }
                    }
                  },
                  "transitions" : {
                    "type" : "array",
                    "items" : {
                      "type" : "object",
                      "properties" : {
                        "dateTimeAfter" : {
                          "type" : "string",
                          "format" : "date-time"
                        },
                        "dateTimeBefore" : {
                          "type" : "string",
                          "format" : "date-time"
                        },
                        "duration" : {
                          "type" : "object",
                          "properties" : {
                            "nano" : {
                              "type" : "integer",
                              "format" : "int32"
                            },
                            "negative" : {
                              "type" : "boolean"
                            },
                            "seconds" : {
                              "type" : "integer",
                              "format" : "int64"
                            },
                            "units" : {
                              "type" : "array",
                              "items" : {
                                "type" : "object",
                                "properties" : {
                                  "dateBased" : {
                                    "type" : "boolean"
                                  },
                                  "durationEstimated" : {
                                    "type" : "boolean"
                                  },
                                  "timeBased" : {
                                    "type" : "boolean"
                                  }
                                }
                              }
                            },
                            "zero" : {
                              "type" : "boolean"
                            }
                          }
                        },
                        "gap" : {
                          "type" : "boolean"
                        },
                        "instant" : {
                          "type" : "string",
                          "format" : "date-time"
                        },
                        "offsetAfter" : {
                          "type" : "object",
                          "properties" : {
                            "id" : {
                              "type" : "string"
                            },
                            "totalSeconds" : {
                              "type" : "integer",
                              "format" : "int32"
                            }
                          }
                        },
                        "offsetBefore" : {
                          "type" : "object",
                          "properties" : {
                            "id" : {
                              "type" : "string"
                            },
                            "totalSeconds" : {
                              "type" : "integer",
                              "format" : "int32"
                            }
                          }
                        },
                        "overlap" : {
                          "type" : "boolean"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "OperationalLastKnownPosition" : {
        "type" : "object",
        "description" : "Tracking info",
        "properties" : {
          "accuracy" : {
            "type" : "number",
            "format" : "double",
            "description" : "GPS positioning accuracy (radius in meters)"
          },
          "batteryLevel" : {
            "type" : "integer",
            "description" : "Battery level of the device"
          },
          "date" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "Last position recording date"
          },
          "gpsStatus" : {
            "type" : "string",
            "description" : "GPS status of the device",
            "enum" : [ "NO_SIGNAL", "ONLINE", "OFFLINE" ]
          },
          "id" : {
            "type" : "string",
            "xml" : {
              "attribute" : true
            }
          },
          "lat" : {
            "type" : "number",
            "format" : "double",
            "description" : "Latitude"
          },
          "lon" : {
            "type" : "number",
            "format" : "double",
            "description" : "Longitude"
          },
          "privateLife" : {
            "type" : "boolean",
            "description" : "Private life status in Mobile App.\nIf true, it means that mobile App is currently in Private life mode,\ntherefore this position is the last known position before the Private life switch."
          }
        }
      },
      "OperationalOrder" : {
        "type" : "object",
        "properties" : {
          "achievementComment" : {
            "type" : "string",
            "description" : "Achievement comment"
          },
          "achievementEnd" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "Achievement end date and time"
          },
          "achievementEndLat" : {
            "type" : "number",
            "format" : "double",
            "description" : "Achievement end latitude"
          },
          "achievementEndLon" : {
            "type" : "number",
            "format" : "double",
            "description" : "Achievement end longitude"
          },
          "achievementStart" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "Achievement start date and time"
          },
          "achievementStartLat" : {
            "type" : "number",
            "format" : "double",
            "description" : "Achievement start latitude"
          },
          "achievementStartLon" : {
            "type" : "number",
            "format" : "double",
            "description" : "Achievement start longitude"
          },
          "appointmentChanged" : {
            "type" : "boolean",
            "description" : "True if customer requested a Time window change after slot notification or visit canceling"
          },
          "appointmentFixed" : {
            "type" : "boolean",
            "description" : "True if order has been rescheduled manually in fulfillment tab in UI"
          },
          "averageFuelConsumption" : {
            "type" : "number",
            "format" : "double"
          },
          "canceledByCustomer" : {
            "type" : "boolean",
            "description" : "True if order has been canceled by customer (requesting a new time slot)"
          },
          "canceledByUser" : {
            "type" : "boolean",
            "description" : "True if order has been canceled or refused by user through the mobile app"
          },
          "customerId" : {
            "type" : "string",
            "description" : "Customer id (if using customer tab in UI)"
          },
          "data" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string",
              "description" : "fulfillment report data"
            },
            "description" : "fulfillment report data"
          },
          "date" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "Planning day"
          },
          "distance" : {
            "type" : "number",
            "format" : "double",
            "description" : "Distance from previous stop"
          },
          "documentUrls" : {
            "type" : "array",
            "description" : "List of documents urls",
            "items" : {
              "type" : "string",
              "xml" : {
                "name" : "docRef"
              }
            }
          },
          "end" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "Planned end date and time"
          },
          "etaOrderData" : {
            "$ref" : "#/components/schemas/ImminentOperationalOrderData"
          },
          "etaOrderId" : {
            "type" : "string"
          },
          "followUpShortLink" : {
            "type" : "string"
          },
          "fuelType" : {
            "type" : "string"
          },
          "geocode" : {
            "$ref" : "#/components/schemas/GeocodeInfos"
          },
          "globalScanItemsStatus" : {
            "type" : "string",
            "description" : "Global scan status",
            "enum" : [ "PickupFromDepot", "PartiallyPickupFromDepot", "DeliveryToCustomer", "PartiallyDeliveryToCustomer", "DeliveryToColleague", "MissingInDepot", "ReturnedToDepot" ]
          },
          "groupingId" : {
            "type" : "string"
          },
          "id" : {
            "type" : "string",
            "xml" : {
              "attribute" : true
            }
          },
          "invoiceSent" : {
            "type" : "boolean",
            "description" : "True if invoice has been sent"
          },
          "isLate" : {
            "type" : "boolean"
          },
          "lastSynchroStatusChange" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "Stamp of last change from mobile app"
          },
          "lat" : {
            "type" : "number",
            "format" : "double",
            "description" : "Latitude"
          },
          "lateNotificationTimeout" : {
            "type" : "integer",
            "format" : "int32"
          },
          "lateStart" : {
            "type" : "string",
            "format" : "date-time"
          },
          "lon" : {
            "type" : "number",
            "format" : "double",
            "description" : "Longitude"
          },
          "missionId" : {
            "type" : "string"
          },
          "numberOfDeliveredItems" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Total number of delivered items"
          },
          "oTPPolicy" : {
            "type" : "string",
            "enum" : [ "NONE", "PINCODE", "BARCODE", "QRCODE", "NFC" ]
          },
          "oTPValue" : {
            "type" : "string"
          },
          "operationalResourceId" : {
            "type" : "string",
            "description" : "Mobile resource identifier (mobile app login)"
          },
          "order" : {
            "$ref" : "#/components/schemas/TSOrder"
          },
          "organization" : {
            "type" : "string",
            "description" : "Organization id"
          },
          "otppolicy" : {
            "type" : "string",
            "enum" : [ "NONE", "PINCODE", "BARCODE", "QRCODE", "NFC" ]
          },
          "otpvalue" : {
            "type" : "string"
          },
          "pictures" : {
            "type" : "array",
            "description" : "List of picture relative urls. \n\nUrl root for pictures is .../api/rest/otmobile/pictures/",
            "items" : {
              "type" : "string",
              "description" : "List of picture relative urls. \n\nUrl root for pictures is .../api/rest/otmobile/pictures/"
            }
          },
          "plannedOrder" : {
            "$ref" : "#/components/schemas/TSPlanned"
          },
          "report" : {
            "$ref" : "#/components/schemas/Data"
          },
          "rescheduleCount" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Number of rescheduling"
          },
          "rescheduled" : {
            "type" : "boolean",
            "description" : "True if order has been rescheduled and shared"
          },
          "rescheduledInSimulation" : {
            "type" : "string",
            "description" : "For canceled orders : id of the simulation if it have been re-integrated"
          },
          "routeId" : {
            "type" : "string"
          },
          "scanItems" : {
            "type" : "array",
            "description" : "Scan informations",
            "items" : {
              "$ref" : "#/components/schemas/ScanItemAchievement"
            }
          },
          "senderBarcode" : {
            "type" : "string"
          },
          "signaturePicture" : {
            "type" : "string",
            "description" : "Signature, as a picture relative URL (a flavor of the reference\n'signatureSvg')\n\nIs bound and synced from the 'signaturesSvg' field. Is a relative URL, as\nalso done for the 'pictures' field (see its documentation for details)."
          },
          "signatureSvg" : {
            "type" : "string",
            "description" : "Customer signature svg"
          },
          "signerName" : {
            "type" : "string",
            "description" : "Name of the person who signed on behalf of the customer"
          },
          "simulationDayId" : {
            "type" : "string",
            "description" : "Day containing this order in the simulation used to fill the fulfillment\nplanning"
          },
          "simulationId" : {
            "type" : "string",
            "description" : "identifier of the simulation used to fill the fulfillment planning"
          },
          "start" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "Planned start date and time"
          },
          "status" : {
            "type" : "string",
            "description" : "fulfillment status",
            "enum" : [ "CANDIDATE", "FIXED", "ACCEPTED", "REFUSED", "REFUSED_BY_CUSTOMER", "STARTED", "FINISHED", "CANCELLED", "PAUSED", "RESUMED", "UNKNOWN", "TO_BE_PLANNED" ]
          },
          "synchroStatus" : {
            "type" : "string",
            "description" : "Mobile app sync status",
            "enum" : [ "PUBLISHED", "SENT", "UPDATED", "UNKNOWN" ]
          },
          "timeWindowEnd" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "End of time window communicated to customer"
          },
          "timeWindowStart" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "Start of time window communicated to customer"
          },
          "timeZone" : {
            "type" : "string"
          },
          "tourProgressNotificationSent" : {
            "type" : "boolean",
            "description" : "True is tour progress notification has been sent to customer"
          },
          "type" : {
            "type" : "string",
            "description" : "Event type",
            "enum" : [ "MISSION", "RESTBREAK", "LUNCHBREAK", "WAITBREAK", "RELOADBREAK", "START", "END", "ENDBEFORENIGHT", "STARTAFTERNIGHT", "BRIEFING", "DEBRIEFING", "WAYPOINT", "UNKNOWN" ]
          },
          "vehicleType" : {
            "type" : "string"
          },
          "weatherPrecipitationDesc" : {
            "type" : "string"
          },
          "weatherPrecipitationProbability" : {
            "type" : "number",
            "format" : "double"
          },
          "weatherRainFall" : {
            "type" : "number",
            "format" : "double"
          },
          "weatherSkyDescription" : {
            "type" : "string"
          },
          "weatherSnowCover" : {
            "type" : "number",
            "format" : "double"
          },
          "weatherSnowFall" : {
            "type" : "number",
            "format" : "double"
          },
          "weatherTemperature" : {
            "type" : "number",
            "format" : "double"
          },
          "weatherVisibility" : {
            "type" : "number",
            "format" : "double"
          },
          "weatherWindSpeed" : {
            "type" : "number",
            "format" : "double"
          },
          "wishedEnd" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "End of time window requested by customer after slot notification or visit canceling"
          },
          "wishedStart" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "Start of time window requested by customer after slot notification or visit canceling"
          },
          "workerSignaturePicture" : {
            "type" : "string",
            "description" : "Worker signature picture path"
          },
          "workerSignatureSvg" : {
            "type" : "string",
            "description" : "Worker signature svg"
          }
        }
      },
      "OperationalResourceMapping" : {
        "type" : "object",
        "description" : "The mobile resource mapping links the resource identifier used in optimized data\nand the mobile resource identifier used for operational planning export",
        "properties" : {
          "averageFuelConsumption" : {
            "type" : "number",
            "format" : "double"
          },
          "day" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Day number"
          },
          "fuelType" : {
            "type" : "string"
          },
          "id" : {
            "type" : "string",
            "description" : "resource identifier"
          },
          "operationalId" : {
            "type" : "string",
            "description" : "Mobile identifier (login)"
          },
          "vehicleType" : {
            "type" : "string"
          }
        }
      },
      "OptimResultResult" : {
        "type" : "object",
        "description" : "Result of an optimization task",
        "properties" : {
          "errCode" : {
            "type" : "string",
            "description" : "Error code",
            "enum" : [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "200", "201", "300", "301", "400", "401", "500", "501", "502", "600", "601", "602", "603", "604", "1000", "1001", "1002", "1003", "1004", "1006", "1007", "1008", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "3000", "3001", "3002", "4000", "4001", "4002", "5000", "5001", "5002", "5003", "6000" ]
          },
          "message" : {
            "type" : "string",
            "description" : "Error message"
          },
          "plannedOrders" : {
            "type" : "array",
            "description" : "the planned stops",
            "items" : {
              "$ref" : "#/components/schemas/TSPlanned"
            }
          },
          "simulationId" : {
            "type" : "string",
            "description" : "Id of the simulation associated to this task"
          },
          "status" : {
            "type" : "string",
            "description" : "OK or ERROR",
            "enum" : [ "OK", "ERROR" ]
          },
          "taskId" : {
            "type" : "string",
            "description" : "the id of the optimization task (usefull if result is automatically sent through a webhook)."
          },
          "unplannedOrders" : {
            "type" : "array",
            "description" : "The orders which has not been planned because:\r\n* it was sent by an other mail service\r\n* it was not scheduled by any resource.",
            "items" : {
              "$ref" : "#/components/schemas/TSUnplanned"
            }
          },
          "warnings" : {
            "type" : "array",
            "description" : "the list of warning messages (and associated error codes) about possible\r\nOrders and Resources elements constraints misconfiguration.",
            "items" : {
              "$ref" : "#/components/schemas/TSWarning"
            }
          }
        }
      },
      "OptimStatusResult" : {
        "type" : "object",
        "description" : "Result of status request",
        "properties" : {
          "currentCo2" : {
            "type" : "number",
            "format" : "double",
            "description" : "Remaining Kg CO2 of the current solution"
          },
          "currentCost" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Cost of the current solution"
          },
          "currentCourierCost" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Courier cost of the current solution"
          },
          "currentDeliveredQuantity" : {
            "type" : "number",
            "format" : "double",
            "description" : "Total quantity delivered of the current solution"
          },
          "currentDeliveryCost" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Delivery cost of the current solution"
          },
          "currentDriveCost" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Drive cost of the current solution"
          },
          "currentDriveDistance" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Drive distance of the current solution"
          },
          "currentDriveTime" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Drive time in seconds of the current solution"
          },
          "currentFixedCost" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Fixed cost of the current solution"
          },
          "currentLateTime" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Late time in seconds of the current solution"
          },
          "currentLongTravelCost" : {
            "type" : "number",
            "format" : "double"
          },
          "currentMaximumReloadsCost" : {
            "type" : "number",
            "format" : "double"
          },
          "currentNights" : {
            "type" : "integer",
            "format" : "int64"
          },
          "currentNightsCost" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Nights cost of the current solution"
          },
          "currentOpenTourNumber" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "initial number of open tours (tours with at least one visit)"
          },
          "currentOverWorkCost" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Overwork cost of the current solution"
          },
          "currentOverWorkTime" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Over work time in seconds of the current solution"
          },
          "currentPickUpQuantity" : {
            "type" : "number",
            "format" : "double",
            "description" : "Total quantity picked-up of the current solution"
          },
          "currentPlannedVisits" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Number of planned visits of the current solution"
          },
          "currentRestTime" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Rest time in seconds of the current solution"
          },
          "currentUnplannedVisits" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Number of visits unplanned or delivered by a courier of the current\r\nsolution"
          },
          "currentVisitsNb" : {
            "type" : "integer",
            "format" : "int64"
          },
          "currentWaitTime" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Wait time in seconds of the current solution"
          },
          "currentWorkCost" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Work cost of the current solution"
          },
          "currentWorkTime" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Work time in seconds of the current solution"
          },
          "errCode" : {
            "type" : "string",
            "description" : "Error code",
            "enum" : [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "200", "201", "300", "301", "400", "401", "500", "501", "502", "600", "601", "602", "603", "604", "1000", "1001", "1002", "1003", "1004", "1006", "1007", "1008", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "3000", "3001", "3002", "4000", "4001", "4002", "5000", "5001", "5002", "5003", "6000" ]
          },
          "initialCo2" : {
            "type" : "number",
            "format" : "double",
            "description" : "Remaining Kg CO2 of the initial solution"
          },
          "initialCost" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Cost of the initial solution"
          },
          "initialCourierCost" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Courier cost of the initial solution"
          },
          "initialDeliveredQuantity" : {
            "type" : "number",
            "format" : "double",
            "description" : "Total quantity delivered of the initial solution"
          },
          "initialDeliveryCost" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Delivery cost of the initial solution"
          },
          "initialDriveCost" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Drive cost of the initial solution"
          },
          "initialDriveDistance" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Drive distance of the initial solution"
          },
          "initialDriveTime" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Drive time in seconds of the initial solution"
          },
          "initialFixedCost" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Fixed cost of the initial solution"
          },
          "initialLateTime" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Late time in seconds of the initial solution"
          },
          "initialLongTravelCost" : {
            "type" : "number",
            "format" : "double"
          },
          "initialMaximumReloadsCost" : {
            "type" : "number",
            "format" : "double"
          },
          "initialNights" : {
            "type" : "integer",
            "format" : "int64"
          },
          "initialNightsCost" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Nights cost of the initial solution"
          },
          "initialOpenTourNumber" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "initial number of open tours (tours with at least one visit)"
          },
          "initialOverWorkCost" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Overwork cost of the initial solution"
          },
          "initialOverWorkTime" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Over work time in seconds of the initial solution"
          },
          "initialPickUpQuantity" : {
            "type" : "number",
            "format" : "double",
            "description" : "Total quantity picked-up of the initial solution"
          },
          "initialPlannedVisits" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Number of planned visits of the initial solution"
          },
          "initialRestTime" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Rest time in seconds of the initial solution"
          },
          "initialUnplannedVisits" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Number of visits unplanned or delivered by a courier of the initial\r\nsolution"
          },
          "initialVisitsNb" : {
            "type" : "integer",
            "format" : "int64"
          },
          "initialWaitTime" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Wait time in seconds of the initial solution"
          },
          "initialWorkCost" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Work cost of the initial solution"
          },
          "initialWorkTime" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Work time in seconds of the current solution"
          },
          "message" : {
            "type" : "string",
            "description" : "Error message"
          },
          "mileageChartRemainingTime" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Mileage and travel time matrix computing remaining time. This information\r\nmay not be available depending on the geographical area."
          },
          "optimizeStatus" : {
            "type" : "string",
            "description" : "Current status of the optimization process",
            "enum" : [ "UNDEFINED", "WAITING", "GEOCODING", "MILEAGE_CHART_BUILDING", "RUNNING", "ABORTED", "TERMINATED", "ERROR", "SECTORIZATION_WAITING", "SECTORIZATION_RUNNING", "SECTORIZATION_FINISHED", "SECTORIZATION_ABORTED" ]
          },
          "positionInQueue" : {
            "type" : "integer",
            "format" : "int32"
          },
          "simulationId" : {
            "type" : "string",
            "description" : "Id of the simulation associated to this task"
          },
          "startTime" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "Start time of the optimization"
          },
          "status" : {
            "type" : "string",
            "description" : "OK or ERROR",
            "enum" : [ "OK", "ERROR" ]
          },
          "subOptimAbortedNb" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Number of sub-optimizations in aborted state"
          },
          "subOptimErrorNb" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Number of sub-optimizations in error state"
          },
          "subOptimFinishedNb" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Number of sub-optimizations in finished state"
          },
          "subOptimNb" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Number of sub-optimizations created (after pre-sectorization)"
          },
          "subOptimRunningNb" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Number of sub-optimizations in running state"
          },
          "subOptimWaitingNb" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Number of sub-optimizations in waiting state"
          }
        }
      },
      "OptimStopResult" : {
        "type" : "object",
        "description" : "Result of status request",
        "properties" : {
          "errCode" : {
            "type" : "string",
            "description" : "Error code",
            "enum" : [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "200", "201", "300", "301", "400", "401", "500", "501", "502", "600", "601", "602", "603", "604", "1000", "1001", "1002", "1003", "1004", "1006", "1007", "1008", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "3000", "3001", "3002", "4000", "4001", "4002", "5000", "5001", "5002", "5003", "6000" ]
          },
          "firstStopAsked" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "First stop demand stamp"
          },
          "message" : {
            "type" : "string",
            "description" : "Error message"
          },
          "status" : {
            "type" : "string",
            "description" : "OK or ERROR",
            "enum" : [ "OK", "ERROR" ]
          }
        }
      },
      "OptimToursResult" : {
        "type" : "object",
        "description" : "Result of an optimization task. Planned visists are grouped by tour.",
        "properties" : {
          "errCode" : {
            "type" : "string",
            "description" : "Error code",
            "enum" : [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "200", "201", "300", "301", "400", "401", "500", "501", "502", "600", "601", "602", "603", "604", "1000", "1001", "1002", "1003", "1004", "1006", "1007", "1008", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "3000", "3001", "3002", "4000", "4001", "4002", "5000", "5001", "5002", "5003", "6000" ]
          },
          "message" : {
            "type" : "string",
            "description" : "Error message"
          },
          "status" : {
            "type" : "string",
            "description" : "OK or ERROR",
            "enum" : [ "OK", "ERROR" ]
          },
          "taskId" : {
            "type" : "string",
            "description" : "the id of the optimization task (usefull if result is automatically sent through a webhook)."
          },
          "tours" : {
            "type" : "array",
            "description" : "List of tours (one tour per resource per day)",
            "items" : {
              "$ref" : "#/components/schemas/TSTour"
            }
          },
          "unplannedOrders" : {
            "type" : "array",
            "description" : "the orders which has not been planned because: <li>it was sent by an\r\n\tother mail service <li>it was not scheduled by any resource.",
            "items" : {
              "$ref" : "#/components/schemas/TSUnplanned"
            }
          },
          "warnings" : {
            "type" : "array",
            "description" : "the list of warning messages (and associated error codes) about possible\r\n\tOrders and Resources elements constraints misconfiguration.",
            "items" : {
              "$ref" : "#/components/schemas/TSWarning"
            }
          }
        }
      },
      "OptimizeRequest" : {
        "type" : "object",
        "description" : "Optimization request",
        "properties" : {
          "beginDate" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "This date will be used if you try to export the optimization result\r\nthrough TsCloud GUI.\r\n\r\n**Format:** YYYY-MM-DD\r\n\r\n**Default:** day+1."
          },
          "beginLocalDate" : {
            "type" : "string",
            "format" : "date",
            "writeOnly" : true
          },
          "countryCode" : {
            "type" : "string",
            "description" : "Main country code used to route the optimization to the good optimization\r\nserver farm."
          },
          "depots" : {
            "type" : "array",
            "description" : "list of depots (for reloading or starting tours)",
            "items" : {
              "$ref" : "#/components/schemas/TSDepot"
            }
          },
          "language" : {
            "type" : "string",
            "description" : "Language to use for message localization"
          },
          "options" : {
            "$ref" : "#/components/schemas/TSOptions"
          },
          "orders" : {
            "type" : "array",
            "description" : "list of orders (visits to do)",
            "items" : {
              "$ref" : "#/components/schemas/TSOrder"
            }
          },
          "organization" : {
            "type" : "string",
            "description" : "In multi-user content, you generally create various organizations that\r\nallows to define who sees what. If you set the organization here, only\r\nusers that can see this organization will see the result of this\r\noptimization in the UI.\r\n\r\nNote that if you specified a teamId instead of sending the resources in\r\nthe optimization data, the organization will be guessed from the team.\r\n\r\nIf no organization is set, all users will see the result.\r\n\r\nOrganization is also used to determine time zone, if not organization is provided,\r\nserver will guess the time zone from first visit coordinates."
          },
          "resources" : {
            "type" : "array",
            "description" : "collection of resources, the elements which will perform deliveries,\r\npick-ups, commercial visit, etc.",
            "items" : {
              "$ref" : "#/components/schemas/TSResource"
            }
          },
          "simulationName" : {
            "type" : "string",
            "description" : "Simulation name\r\n\r\nOptional : generated automatically if not provided"
          },
          "userLogin" : {
            "type" : "string",
            "description" : "In multi-user content, you can specify a user login you. The simulation\r\nwill be owned by this user. By default, the owner of the simulation is\r\nthe default user of the account."
          }
        }
      },
      "OptimizeResult" : {
        "type" : "object",
        "description" : "Result of the optimize service",
        "properties" : {
          "creditsResetDate" : {
            "type" : "string",
            "format" : "date-time",
            "description" : " Date of the next credit reset (24 hours after the first credit usage).\r\n \r\n Computed and returned only when using a SubKey with credits"
          },
          "errCode" : {
            "type" : "string",
            "description" : "Error code",
            "enum" : [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "200", "201", "300", "301", "400", "401", "500", "501", "502", "600", "601", "602", "603", "604", "1000", "1001", "1002", "1003", "1004", "1006", "1007", "1008", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "3000", "3001", "3002", "4000", "4001", "4002", "5000", "5001", "5002", "5003", "6000" ]
          },
          "message" : {
            "type" : "string",
            "description" : "Error message"
          },
          "optimCredits" : {
            "type" : "integer",
            "format" : "int64",
            "description" : " Credits used by this optimization.\r\nIt's computed like this : \r\n* 1 credit per order\r\n* 10 credits per resource\r\n \r\n Computed and returned only when using a SubKey with credits"
          },
          "remainingCredits" : {
            "type" : "integer",
            "format" : "int64",
            "description" : " Remaining credits for the current period.\r\n If there is enough remaining credits before the optim, the returned value is the remaining credits after the optimization.\r\n Otherwise, the returned value is the current value for the specified subKey\r\n \r\n Computed and returned only when using a SubKey with credits"
          },
          "status" : {
            "type" : "string",
            "description" : "OK or ERROR",
            "enum" : [ "OK", "ERROR" ]
          },
          "taskId" : {
            "type" : "string",
            "description" : "the id of the optimization task that was launched"
          },
          "token" : {
            "type" : "string",
            "description" : "Unique token that can be used to retrieve the status without exposing the api key"
          }
        }
      },
      "PossibleValues" : {
        "type" : "object",
        "properties" : {
          "value" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "xml" : {
                "name" : "Value"
              }
            },
            "xml" : {
              "name" : "Value"
            }
          }
        },
        "required" : [ "value" ]
      },
      "ReadClientResult" : {
        "type" : "object",
        "properties" : {
          "client" : {
            "$ref" : "#/components/schemas/ClientEntity"
          },
          "errCode" : {
            "type" : "string",
            "description" : "Error code",
            "enum" : [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "200", "201", "300", "301", "400", "401", "500", "501", "502", "600", "601", "602", "603", "604", "1000", "1001", "1002", "1003", "1004", "1006", "1007", "1008", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "3000", "3001", "3002", "4000", "4001", "4002", "5000", "5001", "5002", "5003", "6000" ]
          },
          "message" : {
            "type" : "string",
            "description" : "Error message"
          },
          "status" : {
            "type" : "string",
            "description" : "OK or ERROR",
            "enum" : [ "OK", "ERROR" ]
          }
        }
      },
      "ResourcesResult" : {
        "type" : "object",
        "description" : "ResourcesResult with a list of resources",
        "properties" : {
          "errCode" : {
            "type" : "string",
            "description" : "Error code",
            "enum" : [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "200", "201", "300", "301", "400", "401", "500", "501", "502", "600", "601", "602", "603", "604", "1000", "1001", "1002", "1003", "1004", "1006", "1007", "1008", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "3000", "3001", "3002", "4000", "4001", "4002", "5000", "5001", "5002", "5003", "6000" ]
          },
          "message" : {
            "type" : "string",
            "description" : "Error message"
          },
          "resources" : {
            "type" : "array",
            "description" : "List of resources",
            "items" : {
              "$ref" : "#/components/schemas/TSResource"
            }
          },
          "status" : {
            "type" : "string",
            "description" : "OK or ERROR",
            "enum" : [ "OK", "ERROR" ]
          }
        }
      },
      "ScanItem" : {
        "type" : "object",
        "description" : "A scan item holds the information to enable the scanning feature of the mobile app.",
        "properties" : {
          "description" : {
            "type" : "string",
            "description" : "A longer description.\n\n**Example : ** \"Washing machine\""
          },
          "id" : {
            "type" : "string",
            "description" : "The barcode number. Must be unique whithin the route.\n\n**Example : ** 123456"
          },
          "order" : {
            "type" : "string",
            "description" : "A short label.\n\n**Example : ** \"Parcel 1\""
          }
        }
      },
      "ScanItemAchievement" : {
        "type" : "object",
        "description" : "Scan informations",
        "properties" : {
          "comment" : {
            "type" : "string"
          },
          "datetimeDeliveryToColleague" : {
            "type" : "string",
            "format" : "date-time"
          },
          "datetimeDeliveryToCustomer" : {
            "type" : "string",
            "format" : "date-time"
          },
          "datetimeDeliveryToDepot" : {
            "type" : "string",
            "format" : "date-time"
          },
          "datetimePickupFromColleague" : {
            "type" : "string",
            "format" : "date-time"
          },
          "datetimePickupFromCustomer" : {
            "type" : "string",
            "format" : "date-time"
          },
          "datetimePickupFromDepot" : {
            "type" : "string",
            "format" : "date-time"
          },
          "description" : {
            "type" : "string",
            "description" : "A longer description.\n\n**Example : ** \"Washing machine\""
          },
          "id" : {
            "type" : "string",
            "description" : "The barcode number. Must be unique whithin the route.\n\n**Example : ** 123456"
          },
          "latitudeDeliveryToColleague" : {
            "type" : "number",
            "format" : "double"
          },
          "latitudeDeliveryToCustomer" : {
            "type" : "number",
            "format" : "double"
          },
          "latitudeDeliveryToDepot" : {
            "type" : "number",
            "format" : "double"
          },
          "latitudePickupFromColleague" : {
            "type" : "number",
            "format" : "double"
          },
          "latitudePickupFromCustomer" : {
            "type" : "number",
            "format" : "double"
          },
          "latitudePickupFromDepot" : {
            "type" : "number",
            "format" : "double"
          },
          "longitudeDeliveryToColleague" : {
            "type" : "number",
            "format" : "double"
          },
          "longitudeDeliveryToCustomer" : {
            "type" : "number",
            "format" : "double"
          },
          "longitudeDeliveryToDepot" : {
            "type" : "number",
            "format" : "double"
          },
          "longitudePickupFromColleague" : {
            "type" : "number",
            "format" : "double"
          },
          "longitudePickupFromCustomer" : {
            "type" : "number",
            "format" : "double"
          },
          "longitudePickupFromDepot" : {
            "type" : "number",
            "format" : "double"
          },
          "order" : {
            "type" : "string",
            "description" : "A short label.\n\n**Example : ** \"Parcel 1\""
          },
          "pictures" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "xml" : {
                "name" : "Values"
              }
            }
          },
          "status" : {
            "type" : "string",
            "enum" : [ "PickupFromDepot", "DeliveryToCustomer", "PickupFromCustomer", "PickupFromColleague", "DeliveryToDepot", "DeliveryToColleague", "MissingInDepot", "MissingParcel" ]
          }
        }
      },
      "SimulationResult" : {
        "type" : "object",
        "properties" : {
          "errCode" : {
            "type" : "string",
            "description" : "Error code",
            "enum" : [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "200", "201", "300", "301", "400", "401", "500", "501", "502", "600", "601", "602", "603", "604", "1000", "1001", "1002", "1003", "1004", "1006", "1007", "1008", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "3000", "3001", "3002", "4000", "4001", "4002", "5000", "5001", "5002", "5003", "6000" ]
          },
          "message" : {
            "type" : "string",
            "description" : "Error message"
          },
          "simulation" : {
            "$ref" : "#/components/schemas/TSSimulation"
          },
          "status" : {
            "type" : "string",
            "description" : "OK or ERROR",
            "enum" : [ "OK", "ERROR" ]
          }
        }
      },
      "SubKey" : {
        "type" : "object",
        "description" : "Api sub key definition",
        "properties" : {
          "creationDate" : {
            "type" : "string",
            "format" : "date-time"
          },
          "creditResetDate" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "Credits usage are fully reset after 24 hours. Reset is done only when an\noptimization is started. When the first optimization of the period is\nstarted, creditResetDate is set to now+24h. This date is reset only when\nstarting a new optimization and when creditResetDate is in the past."
          },
          "creditsPerDay" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Max usable credits per day. It must be positive if useCredits = true "
          },
          "description" : {
            "type" : "string"
          },
          "enabled" : {
            "type" : "boolean",
            "description" : "If false, using this subkey will result in a 403 response."
          },
          "expirationDate" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "Subkey expiration date. Using this subkey after this date will result in a 403 response."
          },
          "key" : {
            "type" : "string",
            "description" : "Read only value, it will be generated automatically"
          },
          "modificationDate" : {
            "type" : "string",
            "format" : "date-time"
          },
          "name" : {
            "type" : "string",
            "description" : " This name can be used to filter the list of subKeys  "
          },
          "remainingCredits" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Number of remaining credits (if used). This value is decreased after each\noptimization. It will be reset to \"creditsPerDay\" value after 24 hours.\nThe reset action is triggered by a new optimization launch if\ncreditResetDate is in the past."
          },
          "totalUsedCredits" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Read only value, incremented for each optimization."
          },
          "useCredits" : {
            "type" : "boolean",
            "description" : "If true, creditsParDay must be positive"
          }
        }
      },
      "SubKeyResult" : {
        "type" : "object",
        "properties" : {
          "errCode" : {
            "type" : "string",
            "description" : "Error code",
            "enum" : [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "200", "201", "300", "301", "400", "401", "500", "501", "502", "600", "601", "602", "603", "604", "1000", "1001", "1002", "1003", "1004", "1006", "1007", "1008", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "3000", "3001", "3002", "4000", "4001", "4002", "5000", "5001", "5002", "5003", "6000" ]
          },
          "message" : {
            "type" : "string",
            "description" : "Error message"
          },
          "status" : {
            "type" : "string",
            "description" : "OK or ERROR",
            "enum" : [ "OK", "ERROR" ]
          },
          "subKeys" : {
            "type" : "array",
            "description" : "list of subKeys",
            "items" : {
              "$ref" : "#/components/schemas/SubKey"
            }
          }
        }
      },
      "TSAdditionalCost" : {
        "type" : "object",
        "description" : "List of additional cost (cost per order type).",
        "properties" : {
          "type" : {
            "type" : "string"
          },
          "value" : {
            "type" : "number",
            "format" : "double"
          }
        }
      },
      "TSDepot" : {
        "type" : "object",
        "description" : "The Depots object stores depots data. They are composed of X, Y coordinates,\nidentity tags, and a set of constraints.\n\nIf you want to specify depot locations or allow a resource to reload at\nseveral depots, use the Depots object to add and configure your depot data.\nThe Depots object contains zero or more elements. If it contains no elements,\nthe base location of each resource acts as a depot location. Once a depot is\nassociated with a resource, its base location is no longer used as a depot\nlocation.",
        "properties" : {
          "allProductsRequired" : {
            "type" : "boolean",
            "description" : "Indicates whether a resource must provide all required products or at least one.\nSet it to True to indicate that a resource must provide all the depot required products.\nSet it to False to indicate that a resource must provide at least one of the depot required products.\n\n**Type:** boolean\n\n**Default:** True"
          },
          "availability" : {
            "type" : "boolean",
            "description" : "Indicates whether a depot is included in the planning process or not.\n\nThis constraint enables you to easily modify your optimization problem configuration without having to add nor delete your original data.\n\n* Set it to True to include a depot element in the planning process.\n\n* Set it to False to ignore it: it will not be used in the planning."
          },
          "deliveryQuantities" : {
            "type" : "array",
            "description" : "The available quantities of products at the depot.\nYou can specify up to 24 quantities.\n\n**Type:** float array",
            "items" : {
              "type" : "integer",
              "format" : "int32"
            },
            "maxItems" : 24,
            "minItems" : 0
          },
          "excludeResources" : {
            "type" : "string",
            "description" : "The list of resources excluded from the depot.\n\nUse this constraint to specify a list of resources that cannot use the depot.\n\n**Type:** string array.\n\n**Default:** Empty array: no resource is excluded from the depot."
          },
          "fixedLoadingDuration" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "id" : {
            "type" : "string",
            "description" : "The unique identifier of the depot."
          },
          "loadingDurationPerUnit" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "openingDays" : {
            "type" : "array",
            "description" : "The depot days of opening, related to the nth depot time window.\n\nUse this constraint to specify the days of operation of a depot referring to a depot time window. It must be related to the tsResourceWorkDays constraint of the resources, as resources work days define the planning period. Depot may be opened on a 64-day long period max, from day 1 to day 64.\n\n**Type:** string value containing days separated with commas (like \"1, 2, 5\" or \"4, 20/05/2010\") or intervals (like \"1-10\", \"2=>5\" or \"22/05/2010=>03/06/2010\"). For day intervals, prefer the \"=>\" separator. 1 is the first day of the planning period, the corresponding date, if any, is defined by the oldest date, for all resources, in the tsResourceWorkDays constraint. No date in the depots days of opening description can precede the first day of the planning period defined by the resources (which is day 1). **Default:** 1=>64.\n\n**Example:**\n\n* Set it to \"1\" (or \"14/05/2010\") when a depot is opened on the first day of the planning period. Set it to \"1, 2, 4, 5\" (or \"14/05/2010,15/05/2010,17/05/2010,18/05/2010\") if the depot may not be visited on the third day of a five-day planning period.\n\n* Set it to \"1=>5\" (or \"14/05/2010=>18/05/2010\") to define a 5-day long period during which the depot is opened.",
            "items" : {
              "type" : "string"
            },
            "xml" : {
              "wrapped" : true
            }
          },
          "pickupQuantities" : {
            "type" : "array",
            "description" : "The available space for a product at the depot.\nYou can specify up to 24 values.\n\n**Type:** float array",
            "items" : {
              "type" : "integer",
              "format" : "int32"
            },
            "maxItems" : 24,
            "minItems" : 0
          },
          "priority" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Depot priority.\nUse this constraint to specify a priority on the depot.\nIf two depots are nearby, the system considers the one with the highest priority.\n\n**Type:** integer"
          },
          "requiredProducts" : {
            "type" : "string",
            "description" : "The list of products a depot contains.\nUse this constraint when a depot must be assigned to a specific\nkind of resource: these resources will need to provide the required\nproducts to be able to load at the depot.\n\n**Type:** string (as a list of products separated with commas).\n\n**Default:** none"
          },
          "resourceNames" : {
            "type" : "string",
            "description" : "Lists the resources that can use the depot.\n\n**Type:** string array.\n\n**Default:** Empty array: no resource can use the depot.\n\n**Example:** Specify [\"Vehicle 1\", \"Vehicle 2\"] to allow only the resources with tags \"Vehicle 1\" and \"Vehicle 2\" to use the depot."
          },
          "supportedProducts" : {
            "type" : "string",
            "description" : "The list of products a depot can receive.\nUse this constraint when a depot must be assigned to a specific\nkind of order (TSORDERPROVIDEDPRODUCTS constraint): these orders will need to provide the specified\nproducts to be able to drop at the depot.\n\n**Type:** string (as a list of products separated with commas).\n\n**Default:** none"
          },
          "timeWindows" : {
            "type" : "array",
            "description" : "The depot time windows.\n\nUse this constraint to specify a depot time window during which the depot is opened. A depot time window is defined by its start time, its end time and days of opening. The start time of a depot time window is the first instant when a resource can enter the depot. Its end time is the last instant when a resource can enter the depot (but it may leave it afterward). You can specify up to 10 depot time windows for each depot.\n\n**Type:** \"hh:mm:ss\", DateTime. **Default:** \"00:00:00\".",
            "items" : {
              "$ref" : "#/components/schemas/TSTimeWindow"
            },
            "xml" : {
              "wrapped" : true
            }
          },
          "travelTimeModifier" : {
            "$ref" : "#/components/schemas/TSTravelTimeModifier"
          },
          "x" : {
            "type" : "number",
            "format" : "double",
            "description" : "Longitude WGS84 of the depot."
          },
          "y" : {
            "type" : "number",
            "format" : "double",
            "description" : "Latitude WGS84 of the depot."
          }
        },
        "required" : [ "id", "x", "y" ]
      },
      "TSEvaluationInfos" : {
        "type" : "object",
        "description" : "Info used to evaluate the routes built manually or with another tool. It allows to assign the visits to resources and days, and to give the order of the visits in routes.",
        "properties" : {
          "orderOriginalResourceId" : {
            "type" : "string",
            "description" : "The identity of the resource which visits the customer when evaluating an\nexisting planning.\n* Use this constraint when you want to 'evaluate' an existing planning.\n* Use the orderOriginalVisitDay constraint to specify the working day\nwhen the visit must be planned.\n* Use the orderPosition constraint to specify the position of a visit\nin the tour.\n\n**Type:** string (storing a unique resource tag).\n\n**Default:** not used."
          },
          "orderOriginalVisitDay" : {
            "type" : "string",
            "description" : "Indicates the work day when the resource which visits the customer when\nevaluating an existing planning.\n* Use this constraint when you want to 'evaluate' an existing planning.\n* Use the orderOriginalResourceID to specify the resource which visits\nthe customer.\n* Use the orderPosition to specify the position of a visit in the\ntour.\n\n**Type:** integer between 1 and 64 or string representing a date.\n1 is the first day of the planning period, the corresponding date, if\nany, is defined by the oldest date, for all resources, in the\ntsResourceWorkDays constraint. If the original visit day is in the date\nformat, this date cannot precede the first day of the planning period\ndefined by the resources (which is day 1).\n\n**Default:** not used if the tsOrderOriginalResourceID is not used, 1 otherwise."
          },
          "orderPosition" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "The position of a customer in a resource tour.\nUse this constraint when you want to evaluate a tour.\n\n**Type:** integer.\n\n**Default:** not used."
          }
        }
      },
      "TSOptions" : {
        "type" : "object",
        "description" : "Options for optimization request",
        "properties" : {
          "advancedSettings" : {
            "type" : "array",
            "description" : "List of the advanced settings for standard engine\n\nUse this to override the advanced settings set in the UI.\n\n**Type:** Array of strings\n\n**Example:** [\"FirstSolutionStrategy=NEAREST\", \"ParkingTime=30\"]",
            "items" : {
              "type" : "string",
              "description" : "List of the advanced settings for standard engine\n\nUse this to override the advanced settings set in the UI.\n\n**Type:** Array of strings\n\n**Example:** [\"FirstSolutionStrategy=NEAREST\", \"ParkingTime=30\"]"
            }
          },
          "allowBoatFerry" : {
            "type" : "boolean",
            "description" : "Allow ferry boats (standard solver only)\n\nIf false, all ferry boats junctions will be avoided.\n\n**Default:** true."
          },
          "allowBridge" : {
            "type" : "boolean",
            "description" : "Allow bridge\n\nIf false, all bridges will be avoided.\n\n**Default:** true."
          },
          "allowLowEmissionZones" : {
            "type" : "boolean",
            "description" : "Allow traveling through Low Emission Zones (standard solver only)\n\nIf false, all low emission zones will be avoided.\n\n**Default:** true."
          },
          "allowToll" : {
            "type" : "boolean",
            "description" : "Allow toll\n\nIf false, all toll ways will be avoided.\n\n**Default:** true."
          },
          "allowTunnel" : {
            "type" : "boolean",
            "description" : "Allow tunnel\n\nIf false, all tunnels will be avoided.\n\n**Default:** true."
          },
          "autoSectorization" : {
            "type" : "boolean",
            "description" : "Whether to enable the automatic sectorization or not\n\nThis parameter is considered only if each order is assigned to one resource only.\n\nIf omitted, default to false."
          },
          "balanceType" : {
            "type" : "string",
            "description" : "Route plans balancing type\n\n* NONE : no balancing\n\n* ORDERS : balance the number of orders (to be used with balanceValue)\n\n* HOURS : balance the route plans duration\n\n* QUANTITY : balance the route plans delivered quantity\n\nOnly available with standard engine",
            "enum" : [ "NONE", "ORDERS", "HOURS", "QUANTITY" ]
          },
          "balanceValue" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Route plans balancing target (to be used with balanceType)\n\nLocked route plans are not considered.\n\nOnly available with standard engine"
          },
          "countDepotsInDeliveryCost" : {
            "type" : "string",
            "description" : "Depot cost configuration for tour delivery cost. Specifies how depot stops are counted in tour delivery cost (using PenaltyPerVisit defined on resources). Possible values are: * NONE: depot stops are not counted in tour delivery cost.\n * ALL: each depot stop counts as one \nvisit in tour delivery cost. * ALLBUTFIRST: first depot stop is ignored but each following depot stop will count as one visit in tour delivery cost. \n* FIRST: only first depot stop is counted in tour delivery cost. \n**Default:** NONE.",
            "enum" : [ "NONE", "ALL", "FIRST", "ALLBUTFIRST" ]
          },
          "countVisitCostOnceIfSameLocation" : {
            "type" : "boolean",
            "description" : "If true, PenalPerVisit will be counted only once in tour delivery cost if several visits at the same location are planned consecutively."
          },
          "distanceType" : {
            "type" : "string",
            "description" : "Set the distance unit (meters, feet, km or miles), default is meters.",
            "enum" : [ "KILOMETERS", "MILES", "METERS", "FEET" ]
          },
          "driveSideSnap" : {
            "type" : "boolean",
            "description" : "Whether to forbid street side change or not\n\nSpecify true to forbid street side change, and false to allow it.\n\nIf omitted, default to false.\n\nCaution, when using this, routes may contain U-turns at the end of the streets, which is not very suitable for trucks."
          },
          "evaluation" : {
            "type" : "boolean",
            "default" : false,
            "description" : "Enable this if you just want to evaluate (get cost, distances, etc) a set of tours.\n\n Therefore, you must fill the evaluationInfos objects in orders (see TSEvaluationInfos).\n\n **Default:** false."
          },
          "excludeVisitCostIfMaxAdditionalCost" : {
            "type" : "boolean",
            "description" : "Exclude visit delivery cost for visits having the maximum additional cost."
          },
          "fuelCode" : {
            "type" : "string",
            "description" : "Vehicles fuel type. Possible values are:\n\n* diesel\n\n* undefined\n\n* unleaded\n\n"
          },
          "maxDepotDepth" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Maximum number of depots visited on route start.\n\nUse this parameter if your depots are specialized on specific materials and your vehicles need\nto go to distinct depots to load all the needed materials to perform the deliveries.\n\nIf omitted, default to 1.\n\nAllowed value : 1 to 5.",
            "maximum" : 5,
            "minimum" : 1
          },
          "maxOptimDuration" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "noReload" : {
            "type" : "boolean",
            "default" : false,
            "description" : "Use it to forbid/allow reloads. \n\n **Default:** false."
          },
          "optimEngine" : {
            "type" : "string",
            "description" : "Which optimization engine to use.\nPossible values: OTSOLVER(default), OTSOLVER_LOGISTIC.\n\nOTSOLVER is the standard generic optimization engine handling many constraints.\n\nOTSOLVER_LOGISTIC an optimization engine dedicated for logistic. It handles fewer constraints but is quicker for very dense optimizations.",
            "enum" : [ "OTSOLVER", "OTSOLVER_LOGISTIC", "TSDK" ]
          },
          "rejectFlags" : {
            "type" : "array",
            "description" : "List of reject flag impacting the roads. See compute options in configuration tab of back office UI to get the possible flags.",
            "items" : {
              "type" : "string",
              "xml" : {
                "name" : "docRef"
              }
            }
          },
          "reloadDuration" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "routingMethod" : {
            "type" : "string",
            "description" : "Routing method\n\nSpecifies routing method used for travel time and distance matrix computation\n\nPossible values are :\n\n* TIME : routes minimizing travel time are used\n\n* DISTANCE : routes minimizing travel distance are used\n\n**Default:** TIME.",
            "enum" : [ "TIME", "DISTANCE" ]
          },
          "sendResultToWebhook" : {
            "type" : "string",
            "description" : "Enable result export to webhook\n\nIf enabled, optimization result will be sent to the webhook you defined in Toursolver Cloud configuration.\n\nPossible values are :\n\n* NONE : result will not be sent automatically when optimization finishes. You will have to call the result or toursResult service to retrieve it.\n\n* ORDERS : the \"orders\" result will be sent to the specified webhook. See OptimResultResult object for details.\n\n* TOURS : the \"tours\" result will be sent to the specified webhook. See OptimToursResult object for details.\n\n**Default:** NONE.",
            "enum" : [ "NONE", "ORDERS", "TOURS" ]
          },
          "sendResultToWeebhook" : {
            "type" : "string",
            "enum" : [ "NONE", "ORDERS", "TOURS" ],
            "writeOnly" : true
          },
          "speedPattern" : {
            "type" : "string",
            "description" : "Speed pattern name\n\nSpecifies the speed pattern to be used for this optimization. \"default_profile\" is the internal name for the default speed pattern (its actual name in UI depends on your locale).\n\nYou can use your own speed pattern (defined in Toursolver UI) but you will have to use its internal name: if you created a pattern called \"Paris august speed pattern\", its internal name will be \"paris_august_speed_pattern\".\n\nIf set to null (or not defined), no speed pattern will be used at all (same speeds for whole day)."
          },
          "startFromEvaluationInfo" : {
            "type" : "boolean",
            "default" : false,
            "description" : "Enable this if you want the optimization to start from a specified initial configuration.\n\n Therefore, you must fill the evaluationInfos objects in orders (see TSEvaluationInfos). \n\n**Default:** false."
          },
          "teamId" : {
            "type" : "string",
            "description" : "If you did not specify any resource in your request, all resources defined in your tenant will be used for this optimization. If you specify a team identifier, only the resources of this team will be used."
          },
          "useForbiddenTransitAreas" : {
            "type" : "boolean",
            "description" : "Whether to use forbidden transit areas\n\nSpecify true to use forbidden transit areas, and false to ignore forbidden transit areas\n\nIf omitted, default to true, but has no effect if no forbidden transit areas are supplied."
          },
          "vehicleCode" : {
            "type" : "string",
            "description" : "Vehicles regulations.\n\nPossible values are:\n\n* bicycle\n\n* bus\n\n* car\n\n* deliveryIntermediateVehicle\n\n* deliveryLightCommercialVehicle\n\n* emergencyTruck\n\n* emergencyVehicle\n\n* intermediateVehicle\n\n* lightCommercialVehicle\n\n* pedestrian\n\n* taxi\n\n* truck\n\nIf not specified, vehicle type defined in UI will be used."
          }
        }
      },
      "TSOrder" : {
        "type" : "object",
        "description" : "The Order object stores order data.\n\r\nOrder is composed of X,Y coordinates, identity tags, a set of constraints and status reports.\n\r\nUse the Orders object to specify your orders data. These elements can be considered as\r\ndeliveries, pick-ups or commercial visits occuring at specific locations.\n\r\nThe optimization process consists in assigning Orders elements to Resources elements in a\r\nway that respects the constraints of every element and minimizes the total cost of the planning.",
        "properties" : {
          "active" : {
            "type" : "boolean",
            "default" : true,
            "description" : "Indicates whether the order should be scheduled or not.\r\n**Default:** True."
          },
          "allSkillsRequired" : {
            "type" : "boolean",
            "default" : true,
            "description" : "Indicates whether a resource must provide all required skills or one at least.\n\r\n* Set it to True to indicate that a resource must provide all the customer required skills.\n\r\n* Set it to False to indicate that a resource must provide at least one of the customer\r\nrequired skills.\n\r\n**Default:** True."
          },
          "allowedDepots" : {
            "type" : "string",
            "description" : "The list of depots where orders collected products can be dropped (standard\r\nsolver only, with advanced setting \"HealthDelivery=true\").\r\nThis constraint is linked with tsOrder maxDurationBeforeDepotDrop constraint:\r\nif a return to depot is enabled on an order, it will be done only at one\r\nof the specified depots.\r\n**Type:** string as a list of depot ids separated with commas.\r\n**Default:** not used.\r\n**Example:** \"DEPOT_PARIS,DEPOT_ORLEANS\"."
          },
          "assignCosts" : {
            "type" : "array",
            "description" : "The assignment cost of the resources that can deliver a customer (standard solver only).\n\r\nUse this constraint in conjunction with assignResources if you want to set preferences between the resources.\r\nIf you set assignResources=['R1','R2'] and assignCosts=[10,100], it is very likely that the order will be assigned\r\nto the resource R1 which has a lower assignment cost.\n\r\nIf you specified several resources in assignResources, you must specify the same number of costs (or none).\n\r\n**Type:** int array containing cost values.\n\r\n**Default:** not used.",
            "items" : {
              "type" : "integer",
              "format" : "int32",
              "xml" : {
                "name" : "cost"
              }
            },
            "xml" : {
              "wrapped" : true
            }
          },
          "assignResources" : {
            "type" : "array",
            "description" : "The identities of the resources that can deliver a customer.\n\r\nUse this constraint when you want some customers to be delivered by specific resources.\n\r\n**Type:** string array containing resources tag ID\n\r\n**Default:** not used.",
            "items" : {
              "type" : "string",
              "xml" : {
                "name" : "resource"
              }
            },
            "xml" : {
              "wrapped" : true
            }
          },
          "courierPenalty" : {
            "type" : "number",
            "format" : "double",
            "description" : "The cost of the order delivered by an independent transport device.\n\r\nUse this constraint when an order can be delivered independently to specify the cost of the device.\r\nThe solver engine will assign it to a courier device or integrate it in a tour according to the least cost.\n\r\n**Type:** float.\n\r\n**Default:** not used."
          },
          "customDataMap" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string",
              "description" : "Private feature data.\n\r\nUse this feature when you need to keep accessible private data about customers. For instance if you\r\nneed to export the address of an element in a planning report, store it there. These informations\r\ncan also be exported to the mobile app.\n\r\nmax 50 fields\n\r\n**Default:** empty."
            },
            "description" : "Private feature data.\n\r\nUse this feature when you need to keep accessible private data about customers. For instance if you\r\nneed to export the address of an element in a planning report, store it there. These informations\r\ncan also be exported to the mobile app.\n\r\nmax 50 fields\n\r\n**Default:** empty."
          },
          "customerId" : {
            "type" : "string"
          },
          "delayPenaltyPerHour" : {
            "type" : "number",
            "format" : "double",
            "description" : "The penalty per hour for being late at a customer.\n\r\nUse this constraint to allow a smarter control, with respect to time windows, than with the use\r\nof the tsOrderPunctuality constraint.\n\r\n**Type:** float.\n\r\n**Default:** not used."
          },
          "documentReferences" : {
            "type" : "array",
            "description" : "List of document references to be attached in mobile app.\r\nThose documents must have been uploaded in the document library, in the configuration tab of the back office UI.",
            "items" : {
              "type" : "string",
              "xml" : {
                "name" : "docRef"
              }
            },
            "xml" : {
              "wrapped" : true
            }
          },
          "email" : {
            "type" : "string"
          },
          "evaluationInfos" : {
            "$ref" : "#/components/schemas/TSEvaluationInfos"
          },
          "excludeResources" : {
            "type" : "array",
            "description" : "The identities of the resources which must not deliver a customer.\n\r\nUse this constraint when you want to prevent some customers from being delivered by specific resources.",
            "items" : {
              "type" : "string",
              "xml" : {
                "name" : "resource"
              }
            },
            "xml" : {
              "wrapped" : true
            }
          },
          "fixedVisitDuration" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "frequency" : {
            "type" : "string",
            "description" : "The visit occurrence within a defined period.\n\r\nUse this constraint to plan multiple visits at a customer during a period.\n\r\n**Type:** string value describing the number of visits over a period.\n\r\n**Default:** not used.\n\r\n**Example:**\n\r\nFrequency = \"3/5\" means a customer must be visited 3 times within a 5-days long period.\r\nThe solver engine will create and optimize routes respecting an optimal duration between\r\nconsecutive visits. Thus, back to the example, the computed period is 5/3 rounded = 2.\r\nThe best solution will respect, as far as possible, a 2-days long period between each visit\r\n(ex: day1, day3, day5 is a good solution)."
          },
          "getNotifications" : {
            "type" : "boolean",
            "default" : true,
            "description" : "True if a visit can receive notification email/sms."
          },
          "id" : {
            "type" : "string",
            "description" : "The unique identifier of the order."
          },
          "invoiceId" : {
            "type" : "string",
            "description" : "invoice identifier"
          },
          "label" : {
            "type" : "string"
          },
          "maxDelayTime" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "maxDurationBeforeDepotDrop" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "minDuration" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "minPartDuration" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "phone" : {
            "type" : "string"
          },
          "possibleVisitDays" : {
            "type" : "array",
            "description" : "The possible visit days related to each visit time window.\r\nUse this constraint to specify the possible visit days of a customer\r\nreferring to a visit time window. It must be related to the\r\ntsResourceWorkDays constraint of the resources, as resources work days\r\ndefine the planning period. You can plan visits on a 64-days-long period\r\nmax.\r\n**Type:** array of string values containing visit days separated with\r\ncommas (like \"1, 2, 5\" or \"4, 20/05/2010\") or intervals (like \"1-10\",\r\n\"2=>5\" or \"22/05/2010=>03/06/2010\"). For day intervals, prefer the \"=>\"\r\nseparator. Be careful, if the separator of date is - then \"1-5\"\r\ncorresponds to May the 1st of the current year. 1 is the first day of the\r\nplanning period, the corresponding date, if any, is defined by the oldest\r\ndate, for all resources, in the tsResourceWorkDays constraint. No date in\r\nthe possible visit days description can precede the first day of the\r\nplanning period defined by the resources (which is day 1). Default:\r\n1=>64.\r\nYou can set up to 10 sets of visit days in this array. If you define\r\nseveral time windows, each time window will apply to corresponding set of\r\npossible days: first time window applies to first possible days set,\r\nsecond time window applies to second possible days set, etc.\r\n**Example:**\r\n- Set it to \"1\" (or \"14/05/2010\") when a customer must be visited on the\r\nfirst day of the planning period.\r\n- Set it to \"1, 2, 4, 5\" (or\r\n\"14/05/2010,15/05/2010,17/05/2010,18/05/2010\") if the customer cannot be\r\nvisited on the third day of a five days planning period.\r\n- Set it to \"1=>5\" (or \"14/05/2010=>18/05/2010\") to define a 5-days long\r\nperiod during which the customer can be visited.",
            "items" : {
              "type" : "string",
              "xml" : {
                "name" : "docRef"
              }
            },
            "xml" : {
              "wrapped" : true
            }
          },
          "providedProducts" : {
            "type" : "string",
            "description" : "The list of products collected during this order (standard solver only, with\r\nadvanced setting \"HealthDelivery=true\").\r\nThis constraint is linked with tsDepot supportedProducts constraint and\r\ntsOrder maxDurationBeforeDepotDrop constraint: an order collecting products\r\nand requiring a return to depot will be planned only if a depot supporting\r\nthose products is available, and the return will be done only to a depot\r\nsupporting those products.\r\n**Type:** string as a list of products separated with commas.\r\n**Default:** not used.\r\n**Example:** Specify \"blood\" in the order picked blood sample."
          },
          "punctuality" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "The priority for a customer to be delivered on time.\r\nWith the standard engine, use maxDelaytime and delayPenaltyPerHour instead.\n\r\nUse this constraint to introduce different priority levels for the respect of visit time windows\r\n(when defined). Specify a value from 1 to 5 to set the priority: customers with a punctuality set to 5\r\nwill have less risk of delayed deliveries than a customer with a punctuality set to 1. You can specify\r\nmore precisely punctuality requirements to enforce delay control by using the tsOrderDelayPenaltyPerHour\r\nconstraint instead of the tsOrderPunctuality constraint.\n\r\n**Type:** integer value from 1 to 5.\n\r\n**Default:** 1."
          },
          "quantities" : {
            "type" : "array",
            "description" : "The requested product quantities for an order.\r\nUse this constraint to specify the product quantities ordered by a\r\ncustomer, for instance. Up to 24 quantities can be used to order\r\ndifferent products. Useless when planning commercial tours.\r\n**Type:** float array (maximum of 3 significant digits after decimal\r\nseparator).\r\n**Default:** 0 **Max:** 2,147,483.\r\n**Example:**\r\n* Use this constraint to store the number of ordered packages, when\r\nworking with packages.\r\n* Use this constraint to store the number of ordered liters, when working\r\nwith liquids.\r\n* Use multiple dimensions when working with multiple products: when\r\ndelivering fuels for instance, you will use as many dimensions as types\r\nof fuels.\r\nWarning: The quantity constraint of the *Orders* elements must be\r\nrelated to the corresponding capacity constraint of the *Resources*\r\nelements: thus, an order will not be planned whenever no resource with\r\nthe related capacity has been defined.",
            "items" : {
              "type" : "number",
              "format" : "double",
              "xml" : {
                "name" : "quantity"
              }
            },
            "maxItems" : 1000,
            "minItems" : 0,
            "xml" : {
              "wrapped" : true
            }
          },
          "requiredSkills" : {
            "type" : "array",
            "description" : "The list of the skills a customer requires to be visited.\r\nUse this constraint when an order must be affected to a specific kind of\r\nresource: these resources will have to provide the required skills to be\r\nable to visit the customer.\r\n**Type:** string array.\r\n**Default:** none.\r\n**Example:**\r\n* Specify the word \"Maintenance\" as a required skill for a maintenance\r\nvisit. Only the resources providing the \"Maintenance\" skill can perform\r\nthe visit.\r\n* Specify \"Small vehicle\" as a required skill for a customer living down town.",
            "items" : {
              "type" : "string",
              "xml" : {
                "name" : "requiredSkill"
              }
            },
            "xml" : {
              "wrapped" : true
            }
          },
          "resourceCompatibility" : {
            "type" : "number",
            "format" : "double",
            "description" : "Value for compatibility with resources.\r\nIf the order has a compatibility constraint value, a resource is\r\ncompatible with the order if its compatibility value is either\r\nnon-existent either larger or equal to the order's one. See\r\ntsResourceOrderCompatibility.\n\r\n**Example:**\r\n* Set tsOrderResourceCompatibility to 254.18 and\r\ntsResourceOrderCompatibility to 260.12: order and resource are compatible.\r\n* Set tsOrderResourceCompatibility to 254.18 and\r\ntsResourceOrderCompatibility to 200: the order can not be affected to the\r\nresource.\r\n* Set tsOrderResourceCompatibility to 254.18 and\r\ntsResourceOrderCompatibility empty: order and resource are compatible.\r\n* Set tsOrderResourceCompatibility empty and tsResourceOrderCompatibility\r\nto 260.12: order and resource are compatible.\n\r\n**Type:** double.\r\n**Default:** -1."
          },
          "scanItems" : {
            "type" : "array",
            "description" : "list of scan items.",
            "items" : {
              "$ref" : "#/components/schemas/ScanItem"
            }
          },
          "sequenceNumber" : {
            "type" : "integer",
            "format" : "int32"
          },
          "timeWindows" : {
            "type" : "array",
            "description" : "The visit time windows.\r\nUse this constraint to specify a visit time window during which the order\r\ncan be delivered. A visit time window is defined by its start time, its\r\nend time and possible visit days. You can specify up to 10 visit time windows\r\nfor a customer.\r\n**Type:** array of time windows.\r\n**Default:** \"00:00:00\".\r\n**Example:** A customer can only be delivered:\r\n* on Monday from 11:00:00 to 12:00:00 AM and from 04:00:00 to 05:00:00\r\nPM,\r\n* on Tuesday, Wednesday, Thursday from 08:00:00 to 09:00:00 AM and from\r\n04:00:00 to 05:00:00 PM,\r\n* on Friday from 08:00:00 to 09:00:00 AM.\r\nIts visit time windows will be specified as follows:\r\n* first time window StartTime = \"08:00:00\", EndTime = \"09:00:00\", first\r\nset of possible days = \"2=>5\",\r\n* second time window StartTime = \"11:00:00\", EndTime = \"12:00:00\", second\r\nset of possible days = 1,\r\n* third time window StartTime = \"16:00:00\", EndTime = \"17:00:00\", third\r\nset of possible days = \"1=>4\".",
            "items" : {
              "$ref" : "#/components/schemas/TSTimeWindow"
            },
            "maxItems" : 10,
            "minItems" : 0,
            "xml" : {
              "wrapped" : true
            }
          },
          "travelTimeModifier" : {
            "$ref" : "#/components/schemas/TSTravelTimeModifier"
          },
          "tsOrderBefore" : {
            "type" : "string",
            "description" : "This constraint lets you chain visits. Two chained visits will be performed\r\nthe same day by the same driver. The visit on which this constraint is\r\ndefined will be placed after the one it defines. If a visit from the chain\r\ncannot be placed, then none will be. You can specify one order id or\r\nseveral order ids (comma separated string)."
          },
          "tsOrderBeforeMaxTimeSpacing" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "tsOrderBeforeMinTimeSpacing" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "tsOrderDisjoint" : {
            "type" : "boolean",
            "description" : "Use this constraint to force a return to depot between each repetition. Works only if the advanced parameters HealthDelivery=true and TSORDERONEVISITPERTIMEWINDOW=true are set, or if tsOrderOneVisitPerTimeWindow is set to true."
          },
          "tsOrderFixed" : {
            "type" : "boolean",
            "default" : false,
            "description" : "If true, the order will be planned with priority over other orders, forcing\r\nthe use of the specified day, resource and start time if specified.\r\nYou can specify orderOriginalResourceId and orderOriginalVisitDay of\r\nevaluationInfo and set the time window to the exact time (respecting the\r\nduration) if you want the visit to be planned at a specific time."
          },
          "tsOrderFrequencyIgnore" : {
            "type" : "boolean",
            "default" : false,
            "description" : "Use this constraint to ignore the repetition of the visit and avoid duplicating it."
          },
          "tsOrderLastVisit" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0,
            "description" : "The number of days before the beginning of the planning the last visit\r\nbelonging to the order has been performed.\r\nUse this constraint in case of a frequency order to specify from how many\r\ndays the last visit was performed before starting the current planning.\r\nThe default value indicates this constraint is to be unused in the\r\nplanning.\r\n**Type:** negative integer.\r\n**Default:** 0.\r\nMin: -2,147,483.\r\n**Example:** If *tsOrderLastVisit* = -2, the last visit of the same order has been\r\nperformed two days ago.\r\nWarning: if the number of occurrences of the frequency is more than\r\none, the constraints tsOrderLastVisit and tsOrderMinimumSpacing are not\r\nconsidered.\r\n@see tsOrderFrequency, tsOrderMinimumSpacing",
            "minimum" : -2147483
          },
          "tsOrderMaxDropHours" : {
            "type" : "array",
            "description" : "Use this constraint to specify a maximum drop hour corresponding to each time window.\r\nWorks only if the advanced parameter HealthDelivery=true is set and if advanced parameter HealthFrequency=true is set or if tsOrderOneVisitPerTimeWindow=true constraint is set. \r\nYou must give the same number of values as defined time windows (limited to 10 values then). **Type:** Time (\"hh:mm\" or \"hh:mm:ss\"). \r\n**Default:** not used. \r\n**Example:** \r\nYou defined 2 time windows: from 08:00 to 10:00 and from 14:00 to 16:00. \r\nIf you give this value for tsOrderMaxDropHours: ['11:00','17:00'], a return to depot will be generated before 11:00 for the visit corresponding to the first time window (08:00 to 10:00), another one will be generated before 17:00 for the visit corresponding to the second time window (14:00 to 16:00).",
            "items" : {
              "type" : "string",
              "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
            }
          },
          "tsOrderMaximumSpacing" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "The maximum number of days required between two visits of a same order.\r\nUse this constraint in case of frequency order to specify how many days\r\nat most should be left between two visits of the order.\r\n**Type:** integer.\r\nMax: 2,147,483.",
            "maximum" : 2147483
          },
          "tsOrderMinimumSpacing" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0,
            "description" : "The minimum number of days required between two visits of a same order.\r\nUse this constraint in case of frequency order to specify how many days\r\nat least should be left between two visits of the order.\r\n**Type:** integer.\r\n**Default:** 0.\r\nMax: 2,147,483.\r\nWarning: if the number of occurrences of the frequency is more than\r\none, the constraints tsOrderLastVisit and tsOrderMinimumSpacing are not\r\nconsidered.\r\n@see tsOrderFrequency, tsOrderLastVisit",
            "maximum" : 2147483
          },
          "tsOrderOneVisitPerTimeWindow" : {
            "type" : "boolean",
            "description" : "Use this constraint to generate several instances of this visit in the same route (one per time window)."
          },
          "type" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "The type of visit at a customer.\r\n* 0 (Delivery): the resource will deliver related quantities.\r\n* 1 (PickUp): the resource will pick-up related quantities.\r\n* 2 (DeliveryFirst): the resource will not mix deliveries and pick-ups in\r\na same rotation.\r\nIt is possible to mix pickups and 0 type deliveries in the same rotation.\r\nHowever, the delivered products will come from the depot and the pickup\r\nproducts will be unloaded at the depot. No product delivered to a\r\ncustomer can come from a pickup at another customer's.\r\n**Type:** Integer.\r\n**Default:** 0 (Delivery)."
          },
          "unloadingDurationPerUnit" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "wholeVisitInTimeWindow" : {
            "type" : "boolean",
            "default" : false,
            "description" : "Whole visit ends before time window end.\r\nUse this constraint if you want that a visit ends before the end of the\r\ntime window.\r\n**Default:** false."
          },
          "x" : {
            "type" : "number",
            "format" : "double",
            "description" : "Longitude of order location."
          },
          "y" : {
            "type" : "number",
            "format" : "double",
            "description" : "Latitude of order location."
          }
        },
        "required" : [ "id" ]
      },
      "TSPause" : {
        "type" : "object",
        "description" : "The lunch break.\n\n**Default:** no lunch break.",
        "properties" : {
          "duration" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "durationEnabled" : {
            "type" : "boolean"
          },
          "end" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "endEnabled" : {
            "type" : "boolean"
          },
          "start" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "startEnabled" : {
            "type" : "boolean"
          }
        },
        "xml" : {
          "name" : "pause"
        }
      },
      "TSPlanned" : {
        "type" : "object",
        "description" : "Details of a stop within a resource tour.",
        "properties" : {
          "dayId" : {
            "type" : "string",
            "description" : "day of the stop"
          },
          "frequencyCount" : {
            "type" : "string",
            "description" : "When using frequencies, the total number of instances"
          },
          "frequencyNumber" : {
            "type" : "string",
            "description" : "When using frequencies, the instance number"
          },
          "resourceId" : {
            "type" : "string",
            "description" : "Assigned resource identifier"
          },
          "stopDriveDistance" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "The drive distance from the previous to the current stop."
          },
          "stopDriveTime" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "stopDuration" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "stopElapsedDistance" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "The tour cumulated driven distance at the stop."
          },
          "stopId" : {
            "type" : "string",
            "description" : "the ID of the stop or order"
          },
          "stopPosition" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "The position of the stop in the resource tour."
          },
          "stopStartTime" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "stopStatus" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "The status of the stop.\n\nAn order can be on time, late, waited, impossible (non compliant). It can\nalso be a courier service delivery and not planned. See\nStopStatusConstants for more information about stop status.\n\n**Type:** integer.\n\n* 0 = OnTime: The stop begins into the specified visit time window.\n\n* 1 = Late: The stop begins after the specified visit time window.\n\n* 2 = Waited: The resource waits at the stop for the specified stop\nstart time.\n\n* 3 = Impossible: The stop cannot be planned.\n\n* 4 = BadDay: The stop is planned without respect of frequency.\n\n* NotPlanned: The courier service is in charge of a stop or the stop\nis not included in the planning process.\n\n* BadPrevious: When the visits are split, the parts should follow\none another. This status is that of a part following another visit\ninstead of the previous part of the split visit."
          },
          "stopType" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "The stop type\n\nA tour is composed of stops, which can be either customers visits or\nbreaks, like reload breaks, lunch breaks, or even night breaks.\n\nStopTypeConstants are\n\n* 0 = Visit: The stop is an element of the Orders object.\n\n* 1 = Start: The stop is the initial stage (departure) of the tour,\noccurring at the resource's start location.\n\n* 2 = End: The stop is the the last stage (arrival) of the tour,\noccurring at the resource's stop location.\n\n* 3 = EndBeforeOvernight: The stop is the the last stage (arrival) of\nthe tour, occurring where the resource stopped for the night.\n\n* 4 = ReloadBreak: The stop is a reload break within the tour,\noccurring at a depot location.\n\n* 5 = LunchBreak: The stop is the lunch break within the tour,\noccurring anywhere between two other located stops.\n\n* 6 = RestBreak: The stop is a rest break within the tour, occurring\nanywhere between two located stops.\n\n* 7 = WaitBreak: The stop is a wait break within the tour, occurring\nbefore a visit.\n\n* 8 = StartAfterOvernight: The stop is the last stage (arrival) of\nthe tour, it occurs where the resource stopped for the night.\n\n* 9 = Briefing: The stop is a briefing break within the tour,\noccurring right after the departure of the tour.\n\n* 10 = DeBriefing: The stop is a wait break within the tour, occurring\nright before the arrival of the tour."
          },
          "stopX" : {
            "type" : "number",
            "format" : "double",
            "description" : "The X coordinate of the stop (longitude)."
          },
          "stopY" : {
            "type" : "number",
            "format" : "double",
            "description" : "The Y coordinate of the stop (latitude)."
          }
        }
      },
      "TSResource" : {
        "type" : "object",
        "description" : "The Resources object stores the collection of elements which will perform\ndeliveries, pick-ups, commercial visits, etc.\n\nEach element can be seen as a driver/vehicle pair and their related driving\nand working constraints.\n\nIt is composed of an identity tag, and location coordinates (base or depot,\ndeparture, arrival location). Eventually, each element can be configured\nthrough a set of constraints which store information like capacity, driver\nwork time, penalties, and so on.",
        "properties" : {
          "additionalCostOperator" : {
            "type" : "string",
            "description" : "Operator used to compute additional cost (see toursResult object).\n\nPossible values are:\n\n* SUM: tour additional cost will be the sum of additional costs of planned orders.\n\n* MAX: tour additional cost will be the maximum value of additional costs of planned orders.\n\n* MIN: tour additional cost will be the minimum value of additional costs of planned orders.\n\n* AVERAGE: tour additional cost will be the average of additional costs of planned orders.",
            "enum" : [ "SUM", "MAX", "MIN", "AVERAGE" ]
          },
          "additionalCostOrderCustomDataName" : {
            "type" : "string",
            "description" : "Name of TSOrder customData that will contain the TSOrder type used for\nadditional cost computation (see toursResult object)."
          },
          "additionalCosts" : {
            "type" : "array",
            "description" : "List of additional cost (cost per order type).",
            "items" : {
              "$ref" : "#/components/schemas/TSAdditionalCost"
            }
          },
          "allowedNights" : {
            "type" : "string"
          },
          "available" : {
            "type" : "boolean",
            "description" : "Indicates whether a resource is included in the planning process or not.\nThis constraint enables you to easily modify your optimization problem\nconfiguration without having to add or delete original data.\n\n* Set it to True to include a resource element in the planning process.\n\n* Set it to False to ignore it: it will not be used in the planning.\n\n**Type:** Boolean. **Default:** not used.\n\n**Example:** true"
          },
          "avgConsumption" : {
            "type" : "number",
            "format" : "double",
            "description" : "Average consumption of the resource.\nUse this constraint to specify the average consumption of the resource.\nThis consumption must be defined in liters per 100 distance unit (km or miles).\n\n**Default:** The consumption indicated in the VehicleProfile.Consumption property.\n\n@documentationExample 8.0"
          },
          "briefingDuration" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "capacities" : {
            "type" : "array",
            "description" : "The total product capacity a resource can carry.\nUse this constraint to specify the amount of product a resource can deliver or pick-up.\nIt must be linked with the customers' related quantity constraint.\n23 more dimensions can be used in order to specify various products.\nThey must be linked with the customers' related dimensions.\n\n**Type:** float (maximum of 3 significant digits after decimal separator).\n**Default:** None. **Max:** 2,147,483.\n\n**Example:**\n\n* Use it to store the total number of packages a resource can deliver before reloading,\nwhen working with packages.\n\n* Use it to store the total number of litres a resource can deliver before reloading,\nwhen working with liquids.\n\n* Use multiple capacity dimensions when working with multiple products:\nwhen delivering fuels, you will use as many capacities as types of fuels.\n\n**Example:** 12.0",
            "items" : {
              "type" : "number",
              "format" : "double",
              "xml" : {
                "name" : "capacity"
              }
            },
            "maxItems" : 24,
            "minItems" : 0,
            "xml" : {
              "wrapped" : true
            }
          },
          "customDataMap" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string",
              "description" : "Private custom data.\nUse this feature when you need to keep attributes values of your own into the optimization context.\nFor instance, if you need the address of an element, store it there."
            },
            "description" : "Private custom data.\nUse this feature when you need to keep attributes values of your own into the optimization context.\nFor instance, if you need the address of an element, store it there.",
            "xml" : {
              "name" : "customData",
              "wrapped" : true
            }
          },
          "dailyWorkTime" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "daysOff" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DayOff"
            }
          },
          "debriefingDuration" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "driveRestAtCustomer" : {
            "type" : "boolean",
            "description" : "Indicates whether time spent at customer during deliveries can be considered as a rest break.\n\n* Set it to True if a visit can be considered as a rest break, as soon as its duration is equal or higher than the legalMinRestDuration constraint.\n\n* Set it to False if not.\n\n**Type:** Boolean. **Default:** False."
          },
          "driveRestAtDepot" : {
            "type" : "boolean",
            "description" : "Indicates whether time spent at depot during a reload break can be considered as drive break or not.\n\nUse this constraint to take into account drive time legislation in your planning results.\n\n* Set it to True if load breaks can be considered as drive breaks, as soon as their duration is equal or higher than the legalMinRestDuration constraint.\n\n* Set it to False if not.\n\n**Type:** Boolean. **Default:** False."
          },
          "endX" : {
            "type" : "number",
            "format" : "double",
            "description" : "Longitude of resource arrival.\n\nSpecify it only if arrival and start are not the same."
          },
          "endY" : {
            "type" : "number",
            "format" : "double"
          },
          "extraTravelPenalties" : {
            "type" : "array",
            "description" : "The costs for a resource of driving for one distance unit.",
            "items" : {
              "$ref" : "#/components/schemas/TSTravelPenalty"
            },
            "xml" : {
              "wrapped" : true
            }
          },
          "fixedLoadingDuration" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "fixedUnloadingDuration" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "fuelCode" : {
            "type" : "string",
            "description" : "Vehicles fuel type. Possible values are:\n\n* diesel\n\n* undefined\n\n* unleaded."
          },
          "fuelType" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "The fuel type of the resource.\n\nUse this constraint to specify the fuel type of the resource. Available fuel types are:\n\n* 0: Unknown fuel type\n\n* 1: No fuel type (pedestrian)\n\n* 2: Diesel\n\n* 3: Unleaded fuel\n\n* 4: LPG\n\n**Type:** Integer. **Default:** The fuel type indicated in the VehicleProfile.FuelType property."
          },
          "globalCapacity" : {
            "type" : "number",
            "format" : "double",
            "description" : "Global capacity for a resource. This constraint unables to set a maximum\ncapacity on a resource, whatever product is carried. If both global capacity and capacity\nper product are to be used, set True for the value of *useAllCapacities*.\n\n**Type:** Float **Default:** None **Max:** 2,147,483.\n\n**Example:** Set globalCapacity = 15 and useAllCapacities = False.\nThe global capacity only is considered: the vehicle can carry 15 quantities of products,\nwhatever product is to be carried."
          },
          "id" : {
            "type" : "string",
            "description" : "The unique identifier of the resource.\n\nThis id can not contain special characters like '=' or ':'"
          },
          "legalDailyDriveDuration" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "legalDailyRestDuration" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "legalDriveRestDuration" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "legalMaxDriveDuration" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "legalMinRestDuration" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "legalWorkDuration" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "loadBeforeDeparture" : {
            "type" : "boolean",
            "description" : "Indicates whether a resource must load before starting a tour or not.\n\n* Set this constraint to True to insert a load break at depot before the tour starts.\n\n* Set it to False to consider the vehicle loaded.\n\n**Type:** Boolean. **Default:** False."
          },
          "loadOnReturn" : {
            "type" : "boolean",
            "description" : "Indicates whether a resource must reload after a tour or not.\n\n* Set this constraint to True to insert a load break at depot after the tour ends.\n\n* Set it to False to not reload the vehicle.\n\n**Type:** Boolean. **Default:** False."
          },
          "loadingDurationPerUnit" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "lunch" : {
            "$ref" : "#/components/schemas/TSPause"
          },
          "maxNightsOutPerJourney" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "The number of nights a resource can spend out to perform deliveries before coming back to base.\n\nUse this constraint to enable night breaks trip: it will store how many days a resource can drive away from depot. Unless the vehicle needs to reload, it will not come back before.\n\n**Type:** integer. **Default:** not used.\n\n**Example: ** maxNightsOutPerJourney = 4, workDays = 1=>5. The resource can perform deliveries during 5 days (and 4 nights) without coming back to depot. Starting on day 1, it must come back to depot on day 5."
          },
          "maxNightsOutPerWeek" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "The number of nights a resource can spend out to perform deliveries before coming back to base in a week.\n\n**Type:** integer. **Default:** not used."
          },
          "maximumDistance" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "The maximum distance the resource should travel per day.\n\nUse this constraint to specify the distance the resource should not exceed in one day.\n\n**Type:** integer **Default:** -1 (no limit)"
          },
          "maximumReloads" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Value for maximum number of reloads per day.\n\n@see maximumReloadsPenalty"
          },
          "maximumReloadsPenalty" : {
            "type" : "number",
            "format" : "double",
            "description" : "Value of the penalty if the resource exceeds the maximum number of\nreloads per day.\n\nIf the resource exceeds the maximum number of reloads per day, it will be\npenalized by the maximum reloads penalty multiplied by the number of\nreloads' overtaking. The default value is 1024 if the constraint\nmaximumReloads is set. See also maximumReloads.\n\n@see maximumReloads"
          },
          "maximumVisits" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "The maximum number of visits the resource can perform in one day.\n\n**Type:** integer **Default:** -1 (no limit) **Max:** 2,147,483."
          },
          "minDriveDuration" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "minimumQuantity" : {
            "type" : "number",
            "format" : "double",
            "description" : "Value for minimum quantity to deliver.\n\nIf the resource has a non-null minimum quantity to deliver constraint\nvalue, the resource can visit an order only if the quantity to be\npicked-up or delivered at this order is higher than the constraint value.\n\n**Example:**\n\n* set order *quantity* to 3 and resource *minimumQuantity* to 2:\nresource might visit the order\n\n* set order *quantity* to 3 and resource *minimumQuantity* to 5:\nresource cannot visit the order\n\n**Type:** float"
          },
          "mobileLogin" : {
            "type" : "string",
            "description" : "Mobile login to be specified only if you need to be able to export the\noptimization result to operation planning from TsCloud GUI. If you trigger operational\nplanning export from the API, you will still need to specify the mapping between resource\nname and login."
          },
          "nightPenalty" : {
            "type" : "number",
            "format" : "double",
            "description" : "The night cost of a resource when planning night breaks.\n\nUse this constraint to specify how much a night out costs (lunch, bed, breakfast...) for a resource when night breaks are allowed.\n\n**Type:** float. **Default:** 0."
          },
          "noReload" : {
            "type" : "boolean",
            "description" : "Constraint providing resource to reload at depot during a tour.\n\nIf none of the constraints loadBeforeDeparture and loadOnReturn is\nactivated, the resource is never loading at depot. If one of these\nconstraints is activated the resource is loading once per tour, either at\nthe beginning of the tour or at the end of it. If both constraints are\nactivated then the resource is loading twice a tour, at the beginning and\nat the end.\n\nWith standard solver only: solver always works with solution cost\ncomparison, so it may allow reloads even if you set noReload to true if\nthe solution cost is really lower. The only way to totally prevent\nreloads is to set fixedLoadingDuration to a very long duration (20:00:00\nfor instance). The solver will warn you about this long duration but will\nnot add reloads to the tours. Caution: Don't do this if you are using\nloadOnReturn or loadBeforeDeparture.\n\n**Default:** False"
          },
          "nonUsePenalty" : {
            "type" : "number",
            "format" : "double",
            "description" : "A cost paid for NOT using a resource in the computed planning.\n\nUse this constraint to penalize the fact that an available resource is not used in the planning. It proves useful when you must use all the resources in the Resources collection: you will prevent the solver from optimizing the number of resources, as using them would be too expensive a solution.\n\n**Type:** float. **Default:** not used.\n\n**Example:** Use it to specify parking taxes when a vehicle performs no tour."
          },
          "openDistanceStart" : {
            "type" : "boolean"
          },
          "openDistanceStop" : {
            "type" : "boolean"
          },
          "openStart" : {
            "type" : "boolean",
            "description" : "Indicates whether or not a tour evaluation starts from the resource start location or from the first customer's place.\n\n* Set it to True to begin the tour at the first customer (no cost will be computed between the resource start location and the first customer).\n\n* Set it to False to begin the tour at the resource start location.\n\n**Type:** Boolean. **Default:** False."
          },
          "openStop" : {
            "type" : "boolean",
            "description" : "Indicates whether or not a tour evaluation ends at the last customer's place or at the resource end location.\n\n* Set it to True to finish the tour at the last customer location (no cost will be computed between the last customer and the resource end location).\n\n* Set it to False to finish the tour at the resource end location.\n\n**Type:** Boolean. **Default:** False."
          },
          "openTimeStart" : {
            "type" : "boolean"
          },
          "openTimeStop" : {
            "type" : "boolean"
          },
          "optimumStartTime" : {
            "type" : "boolean",
            "description" : "Adapts the resource start time to the best solution.\n\n* Set this constraint to False to start the tour at the time indicated by the workStartTime constraint.\n\n* Set this constraint to True to optimize the resource start time and enable the use of the dailyWorkTime constraint.\n\nNotice that, in both cases, the tour will not start before the time stored in the workStartTime constraint and that the use of the weeklyWorkTime constraint is enabled.\n\n**Type:** Boolean. **Default:** False."
          },
          "otherWorkDaysList" : {
            "type" : "array",
            "description" : "Other working days (see workingDays)\n\nYou can define up to 9 different working days slots. If you do so, you\ncan then specify distinct work start and end times with\notherWorkStartTimes and otherWorkEndTimes.\n\n**Type:** List of string (see workingDays format) **Example:**\n[\"2\",\"3=>5\"]",
            "items" : {
              "type" : "string",
              "xml" : {
                "name" : "otherWorkingDay"
              }
            },
            "maxItems" : 9,
            "minItems" : 0,
            "xml" : {
              "name" : "otherWorkingDays",
              "wrapped" : true
            }
          },
          "otherWorkEndTimes" : {
            "type" : "array",
            "description" : "The end time of the resource work time window for the \"other working\ndays\" (see otherWorkDaysList).\n\nIf you defined other working days, use this constraint to specify the\ntime at which the tour must end. These times can be adjusted using the\noptimumStartTime parameter.\n\nYou can define up to 9 different end times here, corresponding to the\ndifferent \"other working days\" slots.\n\n**Type:** List of \"hh:mm:ss\", DateTime. **Example:**\n[\"18:00:00\",\"19:00:00\"]",
            "items" : {
              "type" : "string",
              "description" : "Time, can be expressed in minutes or in hh:mm:ss format.",
              "xml" : {
                "name" : "otherWorkEndTime"
              }
            },
            "maxItems" : 9,
            "minItems" : 0,
            "xml" : {
              "wrapped" : true
            }
          },
          "otherWorkStartTimes" : {
            "type" : "array",
            "description" : "The start time of the resource work time window for the \"other working\ndays\" (see otherWorkDaysList).\n\nIf you defined other working days, use this constraint to specify the\ntime at which the tour must start. These times can be adjusted using the\noptimumStartTime parameter.\n\nYou can define up to 9 different start times here, corresponding to the\ndifferent \"other working days\" slots.\n\n**Type:** List of \"hh:mm:ss\", DateTime. **Example:**\n[\"08:00:00\",\"09:00:00\"]",
            "items" : {
              "type" : "string",
              "description" : "Time, can be expressed in minutes or in hh:mm:ss format.",
              "xml" : {
                "name" : "otherWorkStartTime"
              }
            },
            "maxItems" : 9,
            "minItems" : 0,
            "xml" : {
              "wrapped" : true
            }
          },
          "overnightMinDriving" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "overtimeDurations" : {
            "type" : "array",
            "description" : "The duration of the resource overwork periods. (max 2 periods)\n\nUse this constraint when you need to define 2 different overwork periods with regard to daily work time and their related surcharge. No overwork period can be defined with regard to weekly work time.\n\n**Type:** \"hh:mm:ss\", DateTime. **Default:** not used (no second overtime period).\n\n**Example:**\n\nworkPenalty = 10, first overtime duration = \"02:00:00\", first overtime penalty = 5, second overtime duration = \"01:00:00\", second overtime penalty = 10.\n\nThe cost of the resource during the daily working time is 10 euros per hour. The resource can work during 3 more hours and each overworked hour will cost 10 + 5 euros for 2 hours and 10 + 10 euros for the last hour.",
            "items" : {
              "type" : "string",
              "description" : "Time, can be expressed in minutes or in hh:mm:ss format.",
              "xml" : {
                "name" : "overtimeDuration"
              }
            },
            "xml" : {
              "wrapped" : true
            }
          },
          "overtimePenalties" : {
            "type" : "array",
            "description" : "A surcharge for a resource's overwork period (max 2 periods).\n\nUse this constraint to specify additional cost to workPenalty as overwork time. You can define up to 2 overwork periods with regard to daily work time and their related surcharge. No overwork period can be defined with regard to weekly work time.\n\n**Type:** float. **Default:** not used.\n\n**Example:**\n\nworkPenalty = 10, first overtime duration = \"02:00:00\", first overtime penalty = 5.\n\nThe cost of the resource during the daily working time is 10 euros per hour. The resource can work during 2 hours after the daily working time and each overworked hour will cost 15 (10 + 5) euros.",
            "items" : {
              "type" : "number",
              "format" : "double",
              "xml" : {
                "name" : "overtimePenalty"
              }
            },
            "maxItems" : 2,
            "minItems" : 0,
            "xml" : {
              "wrapped" : true
            }
          },
          "parkingTime" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Parking time in seconds added to the travel time before each order.\n\nThis parking time is applied only once for a group of aggregated orders."
          },
          "payWholeDay" : {
            "type" : "boolean",
            "description" : "Indicates whether a whole workday cost is computed as soon as a resource works even a few hours.\n\n* Set this constraint to True to account for a whole day cost.\n\n* Set it to False to account only for effective worked hours.\n\n**Type:** Boolean. **Default:** False."
          },
          "penaltyPerVisit" : {
            "type" : "number",
            "format" : "double",
            "description" : "An additional fixed cost applied each time the resource performs a visit.\n\nUse this constraint when the cost of a resource may vary according to the\nnumber of visits it performs.\n\n**Type:** float. **Default:** 0."
          },
          "providedProducts" : {
            "type" : "string",
            "description" : "The list of products provided by a resource.\n\nThis constraint is linked with tsDepot requiredProducts constraint: a depot with a required product can only be visited by a resource providing it.\n\n**Type:** string as a list of products separated with commas. **Default:** not used.\n\n**Example:** Specify \"Oxygen\" in the resource can provide oxygen."
          },
          "providedSkills" : {
            "type" : "string",
            "description" : "The list of characteristics provided by a resource.\nThis constraint is linked with the same order constraint:\na customer with a required skill can only be delivered by a resource providing it.\n\nCaution: use only alphanumeric characters (and _) in your characteristics values,\notherwise the skill will be ignored.\n\n**Type:** string as a list of characteristics separated with commas.\n**Default:** not used.\n\n**Example:**\n\n* Specify \"Maintenance\" in the provided skills of a resource designed to perform maintenance visits.\n\n* Specify \"Small vehicle\" to the provided skills of a resource able to perform downtown visits."
          },
          "speedAdjustment" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "A factor to increase or decrease the vehicle speed.\n\nWhenever users observe a significant gap between estimated speeds and the\nreal ones, they can adjust them by using this factor. It is expressed as\na percentage of the used speed.\n\n**Type:** float. **Default:** not used.\n\n**Example:**\n\n* speedAdjustment = 110: resource speeds will be 10% higher than the used\nspeeds.\n\n* speedAdjustment = 80: resource speeds will be 20% lower than the used\nspeeds."
          },
          "startTravelTimeModifier" : {
            "$ref" : "#/components/schemas/TSTravelTimeModifier"
          },
          "startX" : {
            "type" : "number",
            "format" : "double",
            "description" : "Longitude of resource start (and arrival if no endX provided)."
          },
          "startY" : {
            "type" : "number",
            "format" : "double",
            "description" : "Latitude of resource start (and arrival if no endY provided)."
          },
          "stopTravelTimeModifier" : {
            "$ref" : "#/components/schemas/TSTravelTimeModifier"
          },
          "tomTomWebFleetIdentifier" : {
            "type" : "string"
          },
          "travelPenalty" : {
            "type" : "number",
            "format" : "double",
            "description" : "The cost for a resource of driving for one distance unit.\n\nUse this constraint to specify the average resource taxes (gasoline,\nwear,...) when driving one distance unit.\n\n**Type:** float **Default:** 1.5\n\n**Example:** if travelPenalty = 0.5 (euro per distance unit) and the\ndriven distance is about 100 units (km or miles), the total distance cost\nis 0.5 * 100 = 50 euros."
          },
          "travelTimeModifier" : {
            "$ref" : "#/components/schemas/TSTravelTimeModifier"
          },
          "unloadingDurationPerUnit" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "useAllCapacities" : {
            "type" : "boolean",
            "description" : "Determines if both global capacity and capacities per product should be\nconsidered in the optimization or only global capacity.\n\n**Type:** Boolean **Default:** False\n\n**Example:** Set globalCapacity = 15 and useAllCapacities = False.\nThe global capacity only is considered: the vehicle can carry 15 quantities of products,\nwhatever product is to be carried."
          },
          "useInPlanningPenalty" : {
            "type" : "number",
            "format" : "double",
            "description" : "Penalty value if the resource is used in the planning.\n\nUse this constraint to specify the penalty if the resource is used at least one day in the planning.\n\n**Type:** float **Default:** 0"
          },
          "usePenalty" : {
            "type" : "number",
            "format" : "double",
            "description" : "A cost paid for using the resource in the computed planning. Use this\nconstraint to ponderate the cost of using a resource element of the\nResources collection, when working with rented vehicle for instance. You\ncan use it as well to reduce the number of resources used to perform the\ndeliveries.\n\n**Type:** float. **Default:** not used.\n\n**Example:**\n\nAdd the cost of use to the distance and hourly costs when working with a\nservice provider. The solver, aiming at cost reduction, will try to\neliminate this resource first, as it is the most expensive."
          },
          "vehicleCode" : {
            "type" : "string",
            "description" : "Vehicles regulations.\n\nPossible values are:\n\n* bicycle\n\n* bus\n\n* car\n\n* deliveryIntermediateVehicle\n\n* deliveryLightCommercialVehicle\n\n* emergencyTruck\n\n* emergencyVehicle\n\n* intermediateVehicle\n\n* lightCommercialVehicle\n\n* pedestrian\n\n* taxi\n\n* truck\n\nIf not specified, vehicle type defined in UI will be used."
          },
          "weeklyWorkTime" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "workEndTime" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "workPenalty" : {
            "type" : "number",
            "format" : "double",
            "description" : "The cost of a resource working for an hour.\n\nUse this constraint to specify the resource wages when working for an\nhour.\n\n**Type:** float. **Default:** 9.\n\n**Example:**\n\nIf workPenalty = 10 (euros per hour) and daily work time is about 8\nhours, the total daily work cost is 10 * 8 = 80 euros."
          },
          "workStartTime" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "workingDays" : {
            "type" : "string",
            "description" : "The resource's work days. Use this constraint to specify the days a\nresource works in the planning period. This constraint is linked with the\norders possible visit days constraints of Orders object elements and with\nthe depot days of opening constraints of Depots object elements. Thus,\ncustomers and resources must have matching days for deliveries to be\npossible, and depots must be opened on resources working days to be used.\nA maximum of 64 days can be defined as work days. Working days can be\nwritten as integers (1,2...) or dates (14/05/2010, 15/05/2010, ...). If\nyou are using dates, the oldest date in the workDays constraint defines\nday 1.\n\n**Type:** string values containing days separated with commas (like \"1,\n2, 5\" or \"14/05/2010, 15/05/2010, 18/05/2010\" to specify day 1, day 2 and\nday 5) or intervals (like \"1-10\", \"2=>5\" or \"14/05/2010=>24/05/2010\")\nwhere 1 (or 14/05/2010) is the first day of the planning period. For day\nintervals, prefer the \"=>\" separator. Be careful, if the separator of\ndate is - then \"1-5\" corresponds to May 1st of the current year. If you\nmix integer and date formats, beware that day 1 will all the same be\ndefined by the oldest available date.\n\n**Default:** \"1\".\n\n**Example:**\n\nYou can define a single working day: Specify \"1\", \"3\" or \"10\" for the\nresource to work on day 1, day 3 or day 10 of the planning period. You\ncan also define working periods. Specify \"1-5\" or \"1=>5\" or\n\"14/05/2010=>18/05/2010\" for the resource to work on a 5-days period\n(from day 1 to day 5 included).\n\nYou can also mix single day and periods. Specify \"1, 3=>5\" for the\nresource to work on day 1 and from day 3 to 5 of the planning period."
          }
        },
        "required" : [ "id", "startX", "startY" ]
      },
      "TSSimulation" : {
        "type" : "object",
        "properties" : {
          "depotProperties" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "uniqueItems" : true
          },
          "depots" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TSDepot"
            }
          },
          "events" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Events"
            }
          },
          "nbCapacities" : {
            "type" : "integer",
            "format" : "int32"
          },
          "nbExtraTravelPenalties" : {
            "type" : "integer",
            "format" : "int32"
          },
          "nbQuantities" : {
            "type" : "integer",
            "format" : "int32"
          },
          "nbTimeWindows" : {
            "type" : "integer",
            "format" : "int32"
          },
          "options" : {
            "$ref" : "#/components/schemas/TSOptions"
          },
          "orderProperties" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "uniqueItems" : true
          },
          "orders" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TSOrder"
            }
          },
          "planningProperties" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "uniqueItems" : true
          },
          "reoptimization" : {
            "type" : "boolean"
          },
          "resourceProperties" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "uniqueItems" : true
          },
          "resources" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TSResource"
            }
          }
        }
      },
      "TSTimeWindow" : {
        "type" : "object",
        "description" : "Time window expressed with a begin and end times",
        "properties" : {
          "beginTime" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "endTime" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          }
        },
        "xml" : {
          "name" : "timeWindow"
        }
      },
      "TSTour" : {
        "type" : "object",
        "description" : "Details of a stop within a resource tour.",
        "properties" : {
          "additionalCost" : {
            "type" : "number",
            "format" : "double",
            "description" : "Additional cost\n\nAdditional cost depends on additional cost configuration specified on\nresources and orders"
          },
          "dayId" : {
            "type" : "string",
            "description" : "The day of the tour."
          },
          "deliveryCost" : {
            "type" : "number",
            "format" : "double",
            "description" : "Total delivery cost of the tour\n\nDelivery cost depends on PenaltyPerVisit defined on resources and\nconfiguration specified in options (see countDepotsInDeliveryCost and\ncountVisitCostOnceIfSameLocation)"
          },
          "plannedOrders" : {
            "type" : "array",
            "description" : "Orders planned in this tour.",
            "items" : {
              "$ref" : "#/components/schemas/TSPlanned"
            }
          },
          "reloadNb" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Number of reloads during this tour."
          },
          "resourceCapacities" : {
            "type" : "array",
            "description" : "List of resource capacities.",
            "items" : {
              "type" : "number",
              "format" : "double",
              "description" : "List of resource capacities."
            }
          },
          "resourceId" : {
            "type" : "string",
            "description" : "Assigned resource identifier."
          },
          "totalCost" : {
            "type" : "number",
            "format" : "double",
            "description" : "Total cost.\n\nTotal cost = (delivery cost) + (additional cost)"
          },
          "travelDistance" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Drive distance for this tour."
          },
          "travelDuration" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "usedCapacities" : {
            "type" : "array",
            "description" : "List of used capacities\n\nTour used capacities can exceed resource capacities if the tour contains\none or several stops to a depot.",
            "items" : {
              "type" : "number",
              "format" : "double",
              "description" : "List of used capacities\n\nTour used capacities can exceed resource capacities if the tour contains\none or several stops to a depot."
            }
          }
        }
      },
      "TSTravelPenalty" : {
        "type" : "object",
        "properties" : {
          "distance" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "The driven distance (in the solver's measurement system unit) from which distance cost will be applied.\n\nUse this constraint when you need to specify a distance cost which can vary according to the covered distance.\n\nUp to 4 different distance costs can be specified. Each one must be related to the corresponding distance threshold, from which it will be applied."
          },
          "penalty" : {
            "type" : "number",
            "format" : "double",
            "description" : "The cost for a resource of driving for one distance unit.\n\nUse this constraint to specify the average resource taxes (gazoline, wear,...) when driving one distance unit.\n\n**Type : ** float **Default : ** 1.5\n\n**Example : ** if penalty = 0.5 (euro per distance unit) and the driven distance is about 100 unit (km or miles), the total distance cost is 0,5 * 100 = 50 euros."
          }
        }
      },
      "TSTravelTimeModifier" : {
        "type" : "object",
        "description" : "Indicates the value of the travel time modifier.\r\nWhen reaching a location situated in a large city, one may want to take\r\ninto account driving difficulties, such as narrow streets and congestion.\r\nThe travel time modifier enables to increase the travel times around a\r\nlocation. It is described by three values. The value by which multiply\r\nthe travel times around the location (tsOrderTravelTimeModifierValue),\r\nthe portion of the travel time on which the modifier applies\r\n(tsOrderTravelTimeModifierLength) an offset to add to any travel duration\r\nleaving or reaching the location (tsOrderTravelTimeModifierOffSet).\r\n**Example:**\r\n* Set tsOrderTravelTimeModifierValue to 1.5,\r\ntsOrderTravelTimeModifierLength to 300 and\r\ntsOrderTravelTimeModifierOffSet to 60 for Order 1.\r\n* Set tsOrderTravelTimeModifierValue to 2,\r\ntsOrderTravelTimeModifierLength to 420 and\r\ntsOrderTravelTimeModifierOffSet to 0 for Order 2. If the initial travel\r\nduration between Order 1 and Order 2 was 1000, one obtains a travel time\r\n360 * 1.5 + 60 + 280 + 420 * 2 + 0 = 1660.\r\n**Type:** float.\r\n**Default:** 1.",
        "properties" : {
          "length" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "offset" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "value" : {
            "type" : "number",
            "format" : "double",
            "description" : "Indicates the value of the travel time modifier.\n\nWhen reaching a location situated in a large city, one may want to take into account driving difficulties, such as narrow streets and congestion.\n\nThe travel time modifier enables to increase the travel times around a location. It is described by three values. The value by which multiply the travel times around the location (tsDepotTravelTimeModifierValue), the portion of the travel time on which the modifier applies (*length*) an offset to add to any travel duration leaving or reaching the location (*offSet*).\n\n**Example:**\n\n* Set tsResource TravelTimeModifier Value to 1.5, tsResource TravelTime Modifier Length to 300 and tsResource TravelTimeModifier OffSet to 60 for Resource 1\n\n* Set tsDepot TravelTimeModifier Value to 2, tsDepot TravelTimeModifier Length to 420 and tsDepot TravelTimeModifier OffSet to 0 for Depot 1\n\nIf the initial travel duration between Resource 1 and Depot 1 was 1000, one obtains a travel time 360 * 1.5 + 60 + 280 + 420 * 2 + 0 = 1660\n\n**Type:** float \n\n**Default:** 1"
          }
        }
      },
      "TSUnplanned" : {
        "type" : "object",
        "description" : "Unplanned order",
        "properties" : {
          "frequencyNumber" : {
            "type" : "string",
            "description" : "when using frequencies, the instance number."
          },
          "reason" : {
            "type" : "string",
            "description" : "The reason why it was not planned."
          },
          "stopID" : {
            "type" : "string",
            "description" : "The ID of the stop."
          }
        }
      },
      "TSWarning" : {
        "type" : "object",
        "properties" : {
          "constraint" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "The ID of the constraint causing the warning."
          },
          "constraintName" : {
            "type" : "string",
            "description" : "The name of the constraint causing the warning."
          },
          "i18nMessageCode" : {
            "type" : "string"
          },
          "id" : {
            "type" : "string",
            "description" : "The ID of the object causing the warning."
          },
          "message" : {
            "type" : "string",
            "description" : "Warning message."
          },
          "messageId" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "The id of the message."
          },
          "objectType" : {
            "type" : "string",
            "description" : "The type of object causing the warning."
          },
          "value" : {
            "type" : "string"
          }
        }
      },
      "TaskType" : {
        "type" : "object",
        "properties" : {
          "defaultDuration" : {
            "type" : "integer",
            "xml" : {
              "name" : "DefaultDuration"
            }
          },
          "isInProject" : {
            "type" : "boolean",
            "default" : false,
            "xml" : {
              "name" : "IsInProject"
            }
          },
          "taskTypeId" : {
            "type" : "string",
            "xml" : {
              "name" : "TaskTypeId"
            }
          },
          "taskTypeName" : {
            "type" : "string",
            "xml" : {
              "name" : "TaskTypeName"
            }
          }
        },
        "required" : [ "taskTypeId" ]
      },
      "TaskTypes" : {
        "type" : "object",
        "properties" : {
          "taskType" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TaskType"
            },
            "xml" : {
              "name" : "TaskType"
            }
          }
        }
      },
      "TimeRange" : {
        "type" : "object",
        "properties" : {
          "end" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          },
          "start" : {
            "type" : "string",
            "description" : "Time, can be expressed in minutes or in hh:mm:ss format."
          }
        }
      },
      "ToursolverServiceResult" : {
        "type" : "object",
        "description" : "generic result of service",
        "properties" : {
          "errCode" : {
            "type" : "string",
            "description" : "Error code",
            "enum" : [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "200", "201", "300", "301", "400", "401", "500", "501", "502", "600", "601", "602", "603", "604", "1000", "1001", "1002", "1003", "1004", "1006", "1007", "1008", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "3000", "3001", "3002", "4000", "4001", "4002", "5000", "5001", "5002", "5003", "6000" ]
          },
          "message" : {
            "type" : "string",
            "description" : "Error message"
          },
          "status" : {
            "type" : "string",
            "description" : "OK or ERROR",
            "enum" : [ "OK", "ERROR" ]
          }
        }
      },
      "UpdateClientsRequest" : {
        "type" : "object",
        "properties" : {
          "clients" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ClientEntity"
            }
          }
        }
      },
      "UpdateClientsResult" : {
        "type" : "object",
        "properties" : {
          "errCode" : {
            "type" : "string",
            "description" : "Error code",
            "enum" : [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "200", "201", "300", "301", "400", "401", "500", "501", "502", "600", "601", "602", "603", "604", "1000", "1001", "1002", "1003", "1004", "1006", "1007", "1008", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "3000", "3001", "3002", "4000", "4001", "4002", "5000", "5001", "5002", "5003", "6000" ]
          },
          "message" : {
            "type" : "string",
            "description" : "Error message"
          },
          "status" : {
            "type" : "string",
            "description" : "OK or ERROR",
            "enum" : [ "OK", "ERROR" ]
          }
        }
      },
      "UpdateOperationalOrderRequest" : {
        "type" : "object",
        "description" : "fulfillment info",
        "properties" : {
          "achievedEndDate" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "Date/time of the order actual end"
          },
          "achievedEndPositionLat" : {
            "type" : "number",
            "format" : "double",
            "description" : "Latitude registered during order actual end.\r\n\r\nused only if achievedEndDate is filled"
          },
          "achievedEndPositionLon" : {
            "type" : "number",
            "format" : "double",
            "description" : "Longitude registered during order actual end.\r\n\r\nused only if achievedEndDate is filled"
          },
          "achievedStartDate" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "Date/time of the order actual start"
          },
          "achievedStartPositionLat" : {
            "type" : "number",
            "format" : "double",
            "description" : "Latitude registered during order actual start.\r\n\r\nused only if achievedStartDate is filled"
          },
          "achievedStartPositionLon" : {
            "type" : "number",
            "format" : "double",
            "description" : "Longitude registered during order actual start.\r\n\r\nused only if achievedStartDate is filled"
          },
          "data" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string",
              "description" : "Report data values"
            },
            "description" : "Report data values"
          },
          "operationalOrderId" : {
            "type" : "string",
            "description" : "Id of the operational order"
          },
          "scans" : {
            "type" : "array",
            "description" : "List of ScanItemAchievement",
            "items" : {
              "$ref" : "#/components/schemas/ScanItemAchievement"
            }
          },
          "status" : {
            "type" : "string",
            "description" : "New status of the order",
            "enum" : [ "CANDIDATE", "FIXED", "ACCEPTED", "REFUSED", "REFUSED_BY_CUSTOMER", "STARTED", "FINISHED", "CANCELLED", "PAUSED", "RESUMED", "UNKNOWN", "TO_BE_PLANNED" ]
          },
          "svgSignature" : {
            "type" : "string",
            "description" : "Svg signature"
          },
          "userLogin" : {
            "type" : "string",
            "description" : "Login of the user who performed this update"
          }
        }
      },
      "UpdateOperationalOrdersRequest" : {
        "type" : "object",
        "description" : "list of orders to be updated",
        "properties" : {
          "orders" : {
            "type" : "array",
            "description" : "List of operationnal orders",
            "items" : {
              "$ref" : "#/components/schemas/OperationalOrder"
            }
          }
        }
      },
      "UserInfo" : {
        "type" : "object",
        "properties" : {
          "daysOff" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DayOff"
            }
          },
          "enabled" : {
            "type" : "boolean"
          },
          "firstName" : {
            "type" : "string"
          },
          "lastName" : {
            "type" : "string"
          },
          "login" : {
            "type" : "string"
          },
          "organizations" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "password" : {
            "type" : "string"
          },
          "phoneNumber" : {
            "type" : "string"
          },
          "profile" : {
            "type" : "string"
          },
          "roles" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "enum" : [ "ADMINISTRATION", "PLANNING", "MOBILE", "FULFILMENT", "FULFILMENTDELETEROUTES", "FULFILMENTDELETEOTHERSROUTES", "FULFILMENTUPDATE", "FULFILMENTUPDATEOFOTHERS", "SEEOTHERSPLANNINGS", "CLIENTREAD", "CLIENTWRITE", "CLIENTIMPORT", "HANDLERESOURCES", "HANDLEDEPOTS", "MODIFYOPTIMIZATIONSETTINGS", "SEEOTHERSSIMULATIONS", "EDITOTHERSSIMULATIONS", "MODIFYMAPPINGS", "MODIFYRESOURCECONSTRAINT", "DASHBOARD", "WEBACCESS" ]
            }
          },
          "useGlobalDaysOff" : {
            "type" : "boolean"
          },
          "useSSO" : {
            "type" : "boolean"
          },
          "workPatterns" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/WorkPattern"
            }
          }
        }
      },
      "WorkPattern" : {
        "type" : "object",
        "properties" : {
          "days" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int32"
            }
          },
          "range" : {
            "$ref" : "#/components/schemas/TimeRange"
          }
        }
      }
    },
    "securitySchemes" : {
      "apiKey" : {
        "description" : "The api key can be passed through an header or in the query.",
        "in" : "header",
        "name" : "apiKey",
        "type" : "apiKey"
      }
    }
  }
}
