{
  "openapi": "3.0.0",
  "info": {
    "title": "BREEZY Application",
    "version": "1.0.1",
    "description": "BREEZY BackEnd",
    "contact": {
      "name": "Breezy TMS"
    }
  },
  "paths": {
    "/app/add-comment/{ticketId}": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "addCommentToTicket",
        "tags": [
          "AppController"
        ],
        "summary": "Add comment to ticket",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "ticketId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DriverCommentForTicketDto"
              }
            }
          },
          "required": true,
          "x-parameter-index": 1
        },
        "operationId": "AppController.addCommentToTicket"
      }
    },
    "/app/ai-update/create/{loadId}": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "createAiUpdate",
        "tags": [
          "AppController"
        ],
        "summary": "Driver submits an AI Updater check-in",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "loadId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AppLoadAiUpdateCreateDto"
              }
            }
          },
          "required": true,
          "x-parameter-index": 1
        },
        "operationId": "AppController.createAiUpdate"
      }
    },
    "/app/application/upload-document": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "driverApplicationUploadDocument",
        "tags": [
          "AppController"
        ],
        "summary": "Upload driver application document GRPC FILE",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "x-parser": "stream",
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          },
          "description": "Request body for multipart/form-data based file upload",
          "required": true
        },
        "operationId": "AppController.driverApplicationUploadDocument"
      }
    },
    "/app/clearinghouse-query": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "clearinghouseQuery",
        "tags": [
          "AppController"
        ],
        "summary": "Upload clearinghouse query document GRPC FILE",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "expirationDate",
            "in": "query",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "name": "issueDate",
            "in": "query",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "x-parser": "stream",
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          },
          "description": "Request body for multipart/form-data based file upload",
          "required": true,
          "x-parameter-index": 2
        },
        "operationId": "AppController.clearinghouseQuery"
      }
    },
    "/app/collection-sites/search": {
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "searchCollectionSite",
        "tags": [
          "AppController"
        ],
        "summary": "Search collection sites for Quest Order",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "lat",
            "in": "query",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "lng",
            "in": "query",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "radius",
            "in": "query",
            "schema": {
              "enum": [
                "5",
                "10",
                "15",
                "20",
                "25",
                "10_closest"
              ],
              "type": "string"
            },
            "description": "Radius in miles",
            "required": true
          },
          {
            "name": "zip",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "observedCollection",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "electronic",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "eBreathAlcohol",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "testTypes",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "drug",
                  "alcohol"
                ]
              }
            }
          }
        ],
        "operationId": "AppController.searchCollectionSite"
      }
    },
    "/app/collection-sites/select/{questOrderId}": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "selectCollectionSite",
        "tags": [
          "AppController"
        ],
        "summary": "Select collection site for Quest Order",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "questOrderId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CollectionSiteSelectDto"
              }
            }
          },
          "required": true,
          "x-parameter-index": 1
        },
        "operationId": "AppController.selectCollectionSite"
      }
    },
    "/app/create-license": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "createDriverLicense",
        "tags": [
          "AppController"
        ],
        "summary": "Add driver license (CDL) to the driver's recruitment by extracting data from an uploaded CDL file",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "x-parser": "stream",
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          },
          "description": "Request body for multipart/form-data based file upload",
          "required": true
        },
        "operationId": "AppController.createDriverLicense"
      }
    },
    "/app/delete-comment/{id}": {
      "delete": {
        "x-controller-name": "AppController",
        "x-operation-name": "deleteComment",
        "tags": [
          "AppController"
        ],
        "summary": "Delete ticket comment",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.deleteComment"
      }
    },
    "/app/document/document-status": {
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "checkDriverDocumentsStatus",
        "tags": [
          "AppController"
        ],
        "summary": "For checking whether the driver has uploaded two essential documents: SSN card and CDL",
        "responses": {
          "200": {
            "description": "Driver document status",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ssnCardExists": {
                      "type": "boolean",
                      "example": true
                    },
                    "cdlExists": {
                      "type": "boolean",
                      "example": false
                    }
                  }
                }
              }
            }
          }
        },
        "operationId": "AppController.checkDriverDocumentsStatus"
      }
    },
    "/app/document/{id}": {
      "delete": {
        "x-controller-name": "AppController",
        "x-operation-name": "deletePersonalDocument",
        "tags": [
          "AppController"
        ],
        "summary": "Delete personal document by ID",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.deletePersonalDocument"
      }
    },
    "/app/documents": {
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "listDriverDocuments",
        "tags": [
          "AppController"
        ],
        "summary": "List user's documents",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "schema": {
              "enum": [
                "application",
                "clearinghouse_consent",
                "clearinghouse_results",
                "test_result",
                "test_form",
                "psp",
                "employment_verifications",
                "driver_med_certification",
                "road_test",
                "other",
                "mvr",
                "road_test_certification_pdf",
                "road_test_certificate",
                "road_test_pdf",
                "road_test_signature",
                "road_test_certificate_signature",
                "cdl",
                "cdl_backside",
                "ssn_card",
                "agreement"
              ],
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "minimum": 1,
              "type": "number"
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "schema": {
              "minimum": 1,
              "default": 30,
              "type": "number"
            }
          }
        ],
        "operationId": "AppController.listDriverDocuments"
      }
    },
    "/app/drug-test/pre-employment": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "createDrugTest",
        "tags": [
          "AppController"
        ],
        "summary": "Create pre-employment drug test",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DriverPreEmploymentDrugTestDto"
              }
            }
          },
          "required": true
        },
        "operationId": "AppController.createDrugTest"
      }
    },
    "/app/drug-test/upload-document/chain-custody/{driverDrugTestId}": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "uploadDrugTestChainOfCustodyDocument",
        "tags": [
          "AppController"
        ],
        "summary": "Upload drug test chain of custody document GRPC FILE",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "driverDrugTestId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "x-parser": "stream",
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          },
          "description": "Request body for multipart/form-data based file upload",
          "required": true,
          "x-parameter-index": 1
        },
        "operationId": "AppController.uploadDrugTestChainOfCustodyDocument"
      }
    },
    "/app/drug-test/upload-document/{driverDrugTestId}": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "uploadDrugTestResultDocument",
        "tags": [
          "AppController"
        ],
        "summary": "Upload drug test result document GRPC FILE",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "driverDrugTestId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "x-parser": "stream",
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          },
          "description": "Request body for multipart/form-data based file upload",
          "required": true,
          "x-parameter-index": 1
        },
        "operationId": "AppController.uploadDrugTestResultDocument"
      }
    },
    "/app/dwolla-setup": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "dwollaSetup",
        "tags": [
          "AppController"
        ],
        "summary": "Set up dwolla for driver via mobile application",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FundingSourceCreateData"
              }
            }
          },
          "required": true
        },
        "operationId": "AppController.dwollaSetup"
      }
    },
    "/app/edit-comment/{commentId}": {
      "patch": {
        "x-controller-name": "AppController",
        "x-operation-name": "editTicketComment",
        "tags": [
          "AppController"
        ],
        "summary": "Edit ticket comment",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "commentId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DriverCommentForTicketDto"
              }
            }
          },
          "required": true,
          "x-parameter-index": 1
        },
        "operationId": "AppController.editTicketComment"
      }
    },
    "/app/feedback": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "sendFeedback",
        "tags": [
          "AppController"
        ],
        "summary": "Send feedback",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DriverAppFeedbackDto"
              }
            }
          },
          "required": true
        },
        "operationId": "AppController.sendFeedback"
      }
    },
    "/app/funding-sources": {
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "listFundingSources",
        "tags": [
          "AppController"
        ],
        "summary": "List bank accounts of a user",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "operationId": "AppController.listFundingSources"
      }
    },
    "/app/load/accept/{loadId}": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "acceptLoad",
        "tags": [
          "AppController"
        ],
        "summary": "Accept the upcoming load",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "loadId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.acceptLoad"
      }
    },
    "/app/load/begin-work/{loadId}": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "beginWork",
        "tags": [
          "AppController"
        ],
        "summary": "Used when driver is about to start the load",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "loadId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.beginWork"
      }
    },
    "/app/load/files/delete/{loadFileId}": {
      "delete": {
        "x-controller-name": "AppController",
        "x-operation-name": "deleteLoadFile",
        "tags": [
          "AppController"
        ],
        "summary": "Delete load file by ID",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "loadFileId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.deleteLoadFile"
      }
    },
    "/app/load/files/{loadId}": {
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "fetchLoadFiles",
        "tags": [
          "AppController"
        ],
        "summary": "Fetch all load files",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "loadId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.fetchLoadFiles"
      }
    },
    "/app/load/reject/{loadId}": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "rejectLoad",
        "tags": [
          "AppController"
        ],
        "summary": "Reject the upcoming load",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "loadId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.rejectLoad"
      }
    },
    "/app/load/{id}": {
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "getLoadById",
        "tags": [
          "AppController"
        ],
        "summary": "Get load by ID",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.getLoadById"
      }
    },
    "/app/load-history/{id}": {
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "getAppLoadById",
        "tags": [
          "AppController"
        ],
        "summary": "Get load history by ID",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.getAppLoadById"
      }
    },
    "/app/loads": {
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "userActiveLoadsList",
        "tags": [
          "AppController"
        ],
        "summary": "List all active loads for driver with statuses (In Progress and Dispatched)",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "enum": [
                "in-progress",
                "dispatched"
              ],
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "minimum": 1,
              "type": "number"
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "schema": {
              "minimum": 1,
              "default": 30,
              "type": "number"
            }
          }
        ],
        "operationId": "AppController.userActiveLoadsList"
      }
    },
    "/app/loads-history": {
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "userInactiveLoadsList",
        "tags": [
          "AppController"
        ],
        "summary": "List all inactive loads for driver with statuses (Completed, Cancelled or Rejected)",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "enum": [
                "cancelled",
                "completed",
                "rejected"
              ],
              "type": "string"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fromCost",
            "in": "query",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "toCost",
            "in": "query",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "minimum": 1,
              "type": "number"
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "schema": {
              "minimum": 1,
              "default": 30,
              "type": "number"
            }
          }
        ],
        "operationId": "AppController.userInactiveLoadsList"
      }
    },
    "/app/medical-card/upload-document/{medicalCardId}": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "uploadMedicalCardDocument",
        "tags": [
          "AppController"
        ],
        "summary": "Upload medical card document GRPC FILE",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "medicalCardId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "x-parser": "stream",
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          },
          "description": "Request body for multipart/form-data based file upload",
          "required": true,
          "x-parameter-index": 1
        },
        "operationId": "AppController.uploadMedicalCardDocument"
      }
    },
    "/app/medical-card": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "createMedicalCard",
        "tags": [
          "AppController"
        ],
        "summary": "Create driver medical card",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DriverMedicalCardDto"
              }
            }
          },
          "required": true
        },
        "operationId": "AppController.createMedicalCard"
      }
    },
    "/app/mvr/upload": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "manualUploadMvr",
        "tags": [
          "AppController"
        ],
        "summary": "Manually upload MVR GRPC FILE",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "notes",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "x-parser": "stream",
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          },
          "description": "Request body for multipart/form-data based file upload",
          "required": true
        },
        "operationId": "AppController.manualUploadMvr"
      }
    },
    "/app/notes/create/{loadId}": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "createLoadNote",
        "tags": [
          "AppController"
        ],
        "summary": "Create a note for load",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "loadId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AppLoadNoteCreateDto"
              }
            }
          },
          "required": true,
          "x-parameter-index": 1
        },
        "operationId": "AppController.createLoadNote"
      }
    },
    "/app/notes/{loadId}": {
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "fetchLoadNotes",
        "tags": [
          "AppController"
        ],
        "summary": "Fetch all load notes",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "loadId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "minimum": 1,
              "type": "number"
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "schema": {
              "minimum": 1,
              "default": 30,
              "type": "number"
            }
          }
        ],
        "operationId": "AppController.fetchLoadNotes"
      }
    },
    "/app/notes/{id}": {
      "delete": {
        "x-controller-name": "AppController",
        "x-operation-name": "deleteLoadNote",
        "tags": [
          "AppController"
        ],
        "summary": "Delete a note",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.deleteLoadNote"
      }
    },
    "/app/request-callback": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "requestCallback",
        "tags": [
          "AppController"
        ],
        "summary": "Make a callback request",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "specialistType",
            "in": "query",
            "schema": {
              "enum": [
                "maintenance",
                "dispatcher",
                "company_manager",
                "operation_manager",
                "accounting"
              ],
              "type": "string"
            }
          }
        ],
        "operationId": "AppController.requestCallback"
      }
    },
    "/app/settlements/accept/{id}": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "acceptSettlement",
        "tags": [
          "AppController"
        ],
        "summary": "Accept settlement",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.acceptSettlement"
      }
    },
    "/app/settlements/list": {
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "fetchSettlements",
        "tags": [
          "AppController"
        ],
        "summary": "List driver's settlements",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "minimum": 1,
              "type": "number"
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "schema": {
              "minimum": 1,
              "default": 30,
              "type": "number"
            }
          }
        ],
        "operationId": "AppController.fetchSettlements"
      }
    },
    "/app/settlements/preview-settlement/{settlementId}": {
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "settlementPreview",
        "tags": [
          "AppController"
        ],
        "summary": "Download settlement by ID",
        "responses": {
          "200": {
            "description": "The file content",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              },
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "settlementId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.settlementPreview"
      }
    },
    "/app/settlements/reject/{id}": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "rejectSettlement",
        "tags": [
          "AppController"
        ],
        "summary": "Reject settlement",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SettlementRejectDto"
              }
            }
          },
          "required": false,
          "x-parameter-index": 1
        },
        "operationId": "AppController.rejectSettlement"
      }
    },
    "/app/status/change": {
      "patch": {
        "x-controller-name": "AppController",
        "x-operation-name": "changeStatus",
        "tags": [
          "AppController"
        ],
        "summary": "Updates the driver's current status (working or sleeping)",
        "responses": {
          "200": {
            "description": "Driver status change",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "Successfully updated"
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StatusChangeData"
              }
            }
          },
          "required": true
        },
        "operationId": "AppController.changeStatus"
      }
    },
    "/app/status/check": {
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "getCurrentStatus",
        "tags": [
          "AppController"
        ],
        "summary": "Check driver's current status",
        "responses": {
          "200": {
            "description": "Current driver's status",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "activityStatus": {
                      "type": "string",
                      "example": "sleeping"
                    }
                  }
                }
              }
            }
          }
        },
        "operationId": "AppController.getCurrentStatus"
      }
    },
    "/app/stop/check-in/{stopId}": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "stopCheckIn",
        "tags": [
          "AppController"
        ],
        "summary": "Stop check-in",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "stopId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.stopCheckIn"
      }
    },
    "/app/stop/check-out/{stopId}": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "stopCheckOut",
        "tags": [
          "AppController"
        ],
        "summary": "Stop check-out",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "stopId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.stopCheckOut"
      }
    },
    "/app/stop/check-out-v2/{stopId}": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "stopCheckOutV2",
        "tags": [
          "AppController"
        ],
        "summary": "Stop check-out version 2",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "stopId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "x-parser": "stream",
              "schema": {
                "type": "object",
                "properties": {
                  "receiverName": {
                    "type": "string",
                    "maxLength": 256
                  },
                  "receiverPhone": {
                    "type": "string",
                    "maxLength": 256
                  },
                  "note": {
                    "type": "string",
                    "maxLength": 256
                  },
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          },
          "required": true,
          "x-parameter-index": 1
        },
        "operationId": "AppController.stopCheckOutV2"
      }
    },
    "/app/tickets/{id}": {
      "patch": {
        "x-controller-name": "AppController",
        "x-operation-name": "editTicket",
        "tags": [
          "AppController"
        ],
        "summary": "Edit ticket by ID",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DriverTicketEditDto"
              }
            }
          },
          "required": true,
          "x-parameter-index": 1
        },
        "operationId": "AppController.editTicket"
      },
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "getTicket",
        "tags": [
          "AppController"
        ],
        "summary": "Fetch ticket",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.getTicket"
      },
      "delete": {
        "x-controller-name": "AppController",
        "x-operation-name": "deleteTicket",
        "tags": [
          "AppController"
        ],
        "summary": "Delete ticket by ID",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.deleteTicket"
      }
    },
    "/app/tickets": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "createTicket",
        "tags": [
          "AppController"
        ],
        "summary": "Create a ticket",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DriverTicketCreateDto"
              }
            }
          },
          "required": true
        },
        "operationId": "AppController.createTicket"
      },
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "listDriverTickets",
        "tags": [
          "AppController"
        ],
        "summary": "List driver's tickets",
        "responses": {
          "200": {
            "description": "List all tickets that belong to driver's unit",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Ticket"
                      }
                    },
                    "total": {
                      "type": "number",
                      "example": 20
                    },
                    "statusOpenCount": {
                      "type": "number",
                      "example": 13
                    },
                    "statusClosedCount": {
                      "type": "number",
                      "example": 7
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "example": "No truck attached to you"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "statusCode": {
                      "type": "number",
                      "example": 401
                    },
                    "name": {
                      "type": "string",
                      "example": "UnauthorizedError"
                    },
                    "message": {
                      "type": "string",
                      "example": "Authorization is missing"
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "minimum": 1,
              "type": "number"
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "schema": {
              "minimum": 1,
              "default": 30,
              "type": "number"
            }
          }
        ],
        "operationId": "AppController.listDriverTickets"
      }
    },
    "/app/tracking": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "sendTracking",
        "tags": [
          "AppController"
        ],
        "summary": "Send tracking data",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendTrackingData"
              }
            }
          },
          "required": true
        },
        "operationId": "AppController.sendTracking"
      }
    },
    "/app/transfers": {
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "listDwollaTransfers",
        "tags": [
          "AppController"
        ],
        "summary": "List transfers for a user",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "startAmount",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endAmount",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "enum": [
                "pending",
                "processed",
                "failed",
                "canceled"
              ],
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "operationId": "AppController.listDwollaTransfers"
      }
    },
    "/app/update-fcm/{deviceId}": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "updateFcm",
        "tags": [
          "AppController"
        ],
        "responses": {
          "200": {
            "description": "Return value of AppController.updateFcm"
          }
        },
        "parameters": [
          {
            "name": "deviceId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateFcmDto"
              }
            }
          },
          "required": true,
          "x-parameter-index": 1
        },
        "operationId": "AppController.updateFcm"
      }
    },
    "/app/upload-document": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "uploadRecruitmentDocument",
        "tags": [
          "AppController"
        ],
        "summary": "Upload a document GRPC FILE [SSN, CDL, ...]",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "schema": {
              "enum": [
                "application",
                "clearinghouse_consent",
                "clearinghouse_results",
                "test_result",
                "test_form",
                "psp",
                "employment_verifications",
                "driver_med_certification",
                "road_test",
                "other",
                "mvr",
                "road_test_certification_pdf",
                "road_test_certificate",
                "road_test_pdf",
                "road_test_signature",
                "road_test_certificate_signature",
                "cdl",
                "cdl_backside",
                "ssn_card",
                "agreement"
              ],
              "type": "string"
            },
            "required": true
          },
          {
            "name": "expirationDate",
            "in": "query",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "name": "issueDate",
            "in": "query",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "x-parser": "stream",
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          },
          "description": "Request body for multipart/form-data based file upload",
          "required": true
        },
        "operationId": "AppController.uploadRecruitmentDocument"
      }
    },
    "/app/v2/delete-file/{id}": {
      "delete": {
        "x-controller-name": "AppController",
        "x-operation-name": "deletePersonalDocumentV2",
        "tags": [
          "AppController"
        ],
        "summary": "Delete personal document by ID GRPC FILE",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.deletePersonalDocumentV2"
      }
    },
    "/app/v2/get-file/{documentId}": {
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "documentDownloadV2",
        "tags": [
          "AppController"
        ],
        "summary": "Download document by ID GRPC FILE",
        "responses": {
          "200": {
            "description": "The file content",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              },
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.documentDownloadV2"
      }
    },
    "/app/v2/load/file-delete/{loadFileId}": {
      "delete": {
        "x-controller-name": "AppController",
        "x-operation-name": "deleteLoadFileV2",
        "tags": [
          "AppController"
        ],
        "summary": "Delete load file by ID GRPC FILE",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "loadFileId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.deleteLoadFileV2"
      }
    },
    "/app/v2/load/get-file/{loadFileId}": {
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "loadFileDownloadV2",
        "tags": [
          "AppController"
        ],
        "summary": "Download load file by ID GRPC FILE",
        "responses": {
          "200": {
            "description": "The file content",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              },
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "loadFileId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.loadFileDownloadV2"
      }
    },
    "/app/v2/load/preview-file/{loadFileId}": {
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "loadPreviewFileV2",
        "tags": [
          "AppController"
        ],
        "summary": "Fetch load file by ID GRPC FILE",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "loadFileId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "isCompress",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "operationId": "AppController.loadPreviewFileV2"
      }
    },
    "/app/v2/load/upload-file/{loadId}": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "loadFileUploadV2",
        "tags": [
          "AppController"
        ],
        "summary": "Upload a load file GRPC FILE",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "loadId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "attachType",
            "in": "query",
            "schema": {
              "enum": [
                "bill_of_lading",
                "accident_photo",
                "rate_confirmation",
                "citation",
                "fuel_receipt",
                "invoice",
                "manifest",
                "packing_list",
                "signed_delivery",
                "other_document"
              ],
              "type": "string"
            }
          },
          {
            "name": "stopNo",
            "in": "query",
            "schema": {
              "type": "number"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "x-parser": "stream",
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    }
                  }
                }
              }
            }
          },
          "x-parameter-index": 3
        },
        "operationId": "AppController.loadFileUploadV2"
      }
    },
    "/app/v2/load/upload-pod/{loadId}": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "loadPodUploadV2",
        "tags": [
          "AppController"
        ],
        "summary": "Upload POD (proof of delivery) for a load GRPC FILE",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "loadId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "stopNo",
            "in": "query",
            "schema": {
              "type": "number"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "x-parser": "stream",
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    }
                  }
                }
              }
            }
          },
          "x-parameter-index": 2
        },
        "operationId": "AppController.loadPodUploadV2"
      }
    },
    "/app/v2/preview-file/{documentId}": {
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "previewDocumentV2",
        "tags": [
          "AppController"
        ],
        "summary": "Download document by ID GRPC FILE",
        "responses": {
          "200": {
            "description": "The file content",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              },
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "isCompress",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "operationId": "AppController.previewDocumentV2"
      }
    },
    "/app/v2/ticket/delete-file/{attachmentId}": {
      "delete": {
        "x-controller-name": "AppController",
        "x-operation-name": "deleteTicketAttachmentV2",
        "tags": [
          "AppController"
        ],
        "summary": "Delete ticket attachment by ID GRPC FILE",
        "responses": {
          "200": {
            "description": "The file content",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              },
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "attachmentId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "AppController.deleteTicketAttachmentV2"
      }
    },
    "/app/v2/ticket/preview-file/{attachmentId}": {
      "get": {
        "x-controller-name": "AppController",
        "x-operation-name": "ticketAttachmentPreviewV2",
        "tags": [
          "AppController"
        ],
        "summary": "Download ticket attachment by ID GRPC FILE",
        "responses": {
          "200": {
            "description": "The file content",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              },
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "attachmentId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "isCompress",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "operationId": "AppController.ticketAttachmentPreviewV2"
      }
    },
    "/app/v2/ticket/upload-file": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "uploadAttachmentForTicketV2",
        "tags": [
          "AppController"
        ],
        "summary": "Upload attachment(s) for ticket GRPC FILE",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "ticketId",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "x-parser": "stream",
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    }
                  }
                }
              }
            }
          },
          "x-parameter-index": 1
        },
        "operationId": "AppController.uploadAttachmentForTicketV2"
      }
    },
    "/app/v2/upload-document": {
      "post": {
        "x-controller-name": "AppController",
        "x-operation-name": "uploadDocumentV2",
        "tags": [
          "AppController"
        ],
        "summary": "Upload a personal document GRPC FILE",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "schema": {
              "enum": [
                "application",
                "clearinghouse_consent",
                "clearinghouse_results",
                "test_result",
                "test_form",
                "psp",
                "employment_verifications",
                "driver_med_certification",
                "road_test",
                "other",
                "mvr",
                "road_test_certification_pdf",
                "road_test_certificate",
                "road_test_pdf",
                "road_test_signature",
                "road_test_certificate_signature",
                "cdl",
                "cdl_backside",
                "ssn_card",
                "agreement"
              ],
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "x-parser": "stream",
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          },
          "description": "Request body for multipart/form-data based file upload",
          "required": true,
          "x-parameter-index": 1
        },
        "operationId": "AppController.uploadDocumentV2"
      }
    },
    "/auth-user/accept-reject-invite/{token}": {
      "post": {
        "x-controller-name": "UserAuthController",
        "x-operation-name": "acceptRejectInvite",
        "tags": [
          "UserAuthController"
        ],
        "summary": "Accept or reject company invite",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "action",
            "in": "query",
            "schema": {
              "enum": [
                "accepted",
                "rejected"
              ],
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "UserAuthController.acceptRejectInvite"
      }
    },
    "/auth-user/change-password": {
      "post": {
        "x-controller-name": "UserAuthController",
        "x-operation-name": "changePassword",
        "tags": [
          "UserAuthController"
        ],
        "summary": "Password change",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AppPasswordChangeDto"
              }
            }
          },
          "required": true
        },
        "operationId": "UserAuthController.changePassword"
      }
    },
    "/auth-user/check-verification-code": {
      "post": {
        "x-controller-name": "UserAuthController",
        "x-operation-name": "checkVerificationCode",
        "tags": [
          "UserAuthController"
        ],
        "summary": "Checks verification code sent for resetting password",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerificationCodeCheckDto"
              }
            }
          },
          "required": true
        },
        "operationId": "UserAuthController.checkVerificationCode"
      }
    },
    "/auth-user/company-list": {
      "get": {
        "x-controller-name": "UserAuthController",
        "x-operation-name": "companyList",
        "tags": [
          "UserAuthController"
        ],
        "summary": "List all companies that driver belongs to",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "operationId": "UserAuthController.companyList"
      }
    },
    "/auth-user/complete-invite-process/{token}": {
      "post": {
        "x-controller-name": "UserAuthController",
        "x-operation-name": "completeInviteProcess",
        "tags": [
          "UserAuthController"
        ],
        "summary": "Completion invite process",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthInvitedTDriver"
              }
            }
          },
          "required": true,
          "x-parameter-index": 1
        },
        "operationId": "UserAuthController.completeInviteProcess"
      }
    },
    "/auth-user/forgot-password": {
      "post": {
        "x-controller-name": "UserAuthController",
        "x-operation-name": "forgotPassword",
        "tags": [
          "UserAuthController"
        ],
        "summary": "User Forgot Password Logic",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForgotPasswordDto"
              }
            }
          },
          "required": true
        },
        "operationId": "UserAuthController.forgotPassword"
      }
    },
    "/auth-user/location/{place_id}/{token}": {
      "get": {
        "x-controller-name": "UserAuthController",
        "x-operation-name": "getByPlaceId",
        "tags": [
          "UserAuthController"
        ],
        "responses": {
          "200": {
            "description": "Return value of UserAuthController.getByPlaceId"
          }
        },
        "parameters": [
          {
            "name": "place_id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "token",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "UserAuthController.getByPlaceId"
      }
    },
    "/auth-user/location-search/{search}/{token}": {
      "get": {
        "x-controller-name": "UserAuthController",
        "x-operation-name": "searchLocation",
        "tags": [
          "UserAuthController"
        ],
        "responses": {
          "200": {
            "description": "Return value of UserAuthController.searchLocation"
          }
        },
        "parameters": [
          {
            "name": "search",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "token",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "UserAuthController.searchLocation"
      }
    },
    "/auth-user/me": {
      "patch": {
        "x-controller-name": "UserAuthController",
        "x-operation-name": "editProfile",
        "tags": [
          "UserAuthController"
        ],
        "summary": "Edit driver's own profile",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DriverProfileEditDto"
              }
            }
          },
          "required": true
        },
        "operationId": "UserAuthController.editProfile"
      },
      "get": {
        "x-controller-name": "UserAuthController",
        "x-operation-name": "aboutMe",
        "tags": [
          "UserAuthController"
        ],
        "summary": "Fetch data about driver himself",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "operationId": "UserAuthController.aboutMe"
      }
    },
    "/auth-user/refresh-token": {
      "post": {
        "x-controller-name": "UserAuthController",
        "x-operation-name": "refreshToken",
        "tags": [
          "UserAuthController"
        ],
        "summary": "Refresh token when access token is expired",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefreshTokenBody"
              }
            }
          },
          "required": true
        },
        "operationId": "UserAuthController.refreshToken"
      }
    },
    "/auth-user/reset-password": {
      "post": {
        "x-controller-name": "UserAuthController",
        "x-operation-name": "resetPassword",
        "tags": [
          "UserAuthController"
        ],
        "summary": "Change password after code is verified",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserResetDto"
              }
            }
          },
          "required": true
        },
        "operationId": "UserAuthController.resetPassword"
      }
    },
    "/auth-user/sign-in": {
      "post": {
        "x-controller-name": "UserAuthController",
        "x-operation-name": "signIn",
        "tags": [
          "UserAuthController"
        ],
        "summary": "Sign in with email and password",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SignInBodyForUser"
              }
            }
          },
          "required": true
        },
        "operationId": "UserAuthController.signIn"
      }
    },
    "/auth-user/sign-out/all": {
      "post": {
        "x-controller-name": "UserAuthController",
        "x-operation-name": "signOutFromAllDevices",
        "tags": [
          "UserAuthController"
        ],
        "summary": "Sign out from all devices",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "operationId": "UserAuthController.signOutFromAllDevices"
      }
    },
    "/auth-user/sign-out": {
      "post": {
        "x-controller-name": "UserAuthController",
        "x-operation-name": "signOut",
        "tags": [
          "UserAuthController"
        ],
        "summary": "Sign out",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SignOutBodyForUser"
              }
            }
          },
          "required": true
        },
        "operationId": "UserAuthController.signOut"
      }
    },
    "/auth-user/sign-up": {
      "post": {
        "x-controller-name": "UserAuthController",
        "x-operation-name": "signUp",
        "tags": [
          "UserAuthController"
        ],
        "summary": "Sign up",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SignUpBodyForUser"
              }
            }
          },
          "required": true
        },
        "operationId": "UserAuthController.signUp"
      }
    },
    "/auth-user/verify-invite/{token}": {
      "get": {
        "x-controller-name": "UserAuthController",
        "x-operation-name": "verifyInvite",
        "tags": [
          "UserAuthController"
        ],
        "summary": "Invite verification after the driver's invited to company",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "UserAuthController.verifyInvite"
      }
    }
  },
  "components": {
    "securitySchemes": {
      "jwt": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "companyId": {
        "type": "apiKey",
        "name": "companyId",
        "in": "header"
      },
      "developerApiKey": {
        "type": "apiKey",
        "name": "x-api-key",
        "in": "header"
      },
      "ProtruxApiKey": {
        "type": "apiKey",
        "name": "X-Protrux-Api-Key",
        "in": "header"
      }
    },
    "schemas": {
      "DeviceDto": {
        "title": "DeviceDto",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "errorMessage": {
              "enum": "Id must be one of these options: \nundefined",
              "maxLength": "Id must not exceed undefined characters",
              "minLength": "Id must contain at least undefined characters",
              "type": "Id must be string "
            }
          },
          "fcmToken": {
            "type": "string",
            "errorMessage": {
              "enum": "Fcm Token must be one of these options: \nundefined",
              "maxLength": "Fcm Token must not exceed undefined characters",
              "minLength": "Fcm Token must contain at least undefined characters",
              "type": "Fcm Token must be string "
            }
          },
          "type": {
            "type": "string",
            "enum": [
              "android",
              "ios"
            ],
            "errorMessage": {
              "enum": "Type must be one of these options: \nandroid, ios",
              "maxLength": "Type must not exceed undefined characters",
              "minLength": "Type must contain at least undefined characters",
              "type": "Type must be string "
            }
          },
          "model": {
            "type": "string",
            "maxLength": 55,
            "nullable": true,
            "errorMessage": {
              "enum": "Model must be one of these options: \nundefined",
              "maxLength": "Model must not exceed 55 characters",
              "minLength": "Model must contain at least undefined characters",
              "type": "Model must be string or null"
            }
          },
          "osVersion": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "errorMessage": {
              "enum": "Os Version must be one of these options: \nundefined",
              "maxLength": "Os Version must not exceed 20 characters",
              "minLength": "Os Version must contain at least undefined characters",
              "type": "Os Version must be string or null"
            }
          },
          "appVersion": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "errorMessage": {
              "enum": "App Version must be one of these options: \nundefined",
              "maxLength": "App Version must not exceed 50 characters",
              "minLength": "App Version must contain at least undefined characters",
              "type": "App Version must be string or null"
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "fcmToken",
          "type",
          "model",
          "osVersion",
          "appVersion"
        ]
      },
      "SignInBodyForUser": {
        "title": "SignInBodyForUser",
        "type": "object",
        "properties": {
          "login": {
            "type": "string",
            "minLength": 4,
            "errorMessage": {
              "enum": "Login must be one of these options: \nundefined",
              "maxLength": "Login must not exceed undefined characters",
              "minLength": "Login must contain at least 4 characters",
              "type": "Login must be string "
            }
          },
          "password": {
            "type": "string",
            "minLength": 6,
            "errorMessage": {
              "enum": "Password must be one of these options: \nundefined",
              "maxLength": "Password must not exceed undefined characters",
              "minLength": "Password must contain at least 6 characters",
              "type": "Password must be string "
            }
          },
          "device": {
            "$ref": "#/components/schemas/DeviceDto"
          }
        },
        "additionalProperties": false,
        "required": [
          "login",
          "password",
          "device"
        ],
        "errorMessage": {
          "required": {
            "login": "Login is required",
            "password": "Password is required",
            "device": "Device is required"
          }
        }
      },
      "RefreshTokenBody": {
        "title": "RefreshTokenBody",
        "type": "object",
        "properties": {
          "refreshToken": {
            "type": "string",
            "errorMessage": {
              "enum": "Refresh Token must be one of these options: \nundefined",
              "maxLength": "Refresh Token must not exceed undefined characters",
              "minLength": "Refresh Token must contain at least undefined characters",
              "type": "Refresh Token must be string "
            }
          },
          "deviceId": {
            "type": "string",
            "errorMessage": {
              "enum": "Device Id must be one of these options: \nundefined",
              "maxLength": "Device Id must not exceed undefined characters",
              "minLength": "Device Id must contain at least undefined characters",
              "type": "Device Id must be string "
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "refreshToken"
        ],
        "errorMessage": {
          "required": {
            "refreshToken": "Refresh token is required"
          }
        }
      },
      "SignOutBodyForUser": {
        "title": "SignOutBodyForUser",
        "type": "object",
        "properties": {
          "deviceId": {
            "type": "string",
            "errorMessage": {
              "enum": "Device Id must be one of these options: \nundefined",
              "maxLength": "Device Id must not exceed undefined characters",
              "minLength": "Device Id must contain at least undefined characters",
              "type": "Device Id must be string "
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "deviceId"
        ],
        "errorMessage": {
          "required": {
            "deviceId": "Device ID is required"
          }
        }
      },
      "SignUpBodyForUser": {
        "title": "SignUpBodyForUser",
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "maxLength": 255,
            "errorMessage": {
              "enum": "First Name must be one of these options: \nundefined",
              "maxLength": "First Name must not exceed 255 characters",
              "minLength": "First Name must contain at least undefined characters",
              "type": "First Name must be string "
            }
          },
          "secondName": {
            "type": "string",
            "maxLength": 255,
            "errorMessage": {
              "enum": "Second Name must be one of these options: \nundefined",
              "maxLength": "Second Name must not exceed 255 characters",
              "minLength": "Second Name must contain at least undefined characters",
              "type": "Second Name must be string "
            }
          },
          "email": {
            "type": "string",
            "format": "email",
            "maxLength": 120,
            "errorMessage": {
              "enum": "Email must be one of these options: \nundefined",
              "maxLength": "Email must not exceed 120 characters",
              "minLength": "Email must contain at least undefined characters",
              "type": "Email must be string ",
              "format": "Email must be a valid email address"
            }
          },
          "address": {
            "type": "string",
            "maxLength": 255,
            "errorMessage": {
              "enum": "Address must be one of these options: \nundefined",
              "maxLength": "Address must not exceed 255 characters",
              "minLength": "Address must contain at least undefined characters",
              "type": "Address must be string "
            }
          },
          "address2": {
            "type": "string",
            "maxLength": 255,
            "errorMessage": {
              "enum": "Address2 must be one of these options: \nundefined",
              "maxLength": "Address2 must not exceed 255 characters",
              "minLength": "Address2 must contain at least undefined characters",
              "type": "Address2 must be string "
            }
          },
          "phone": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "pattern": "^\\([0-9]{3}\\) [0-9]{3}-[0-9]{4}$",
            "errorMessage": {
              "enum": "Phone must be one of these options: \nundefined",
              "maxLength": "Phone must not exceed 20 characters",
              "minLength": "Phone must contain at least undefined characters",
              "type": "Phone must be string or null",
              "pattern": "Phone must follow the '(###) ###-####' pattern"
            }
          },
          "city": {
            "type": "string",
            "maxLength": 150,
            "errorMessage": {
              "enum": "City must be one of these options: \nundefined",
              "maxLength": "City must not exceed 150 characters",
              "minLength": "City must contain at least undefined characters",
              "type": "City must be string "
            }
          },
          "state": {
            "type": "string",
            "maxLength": 55,
            "errorMessage": {
              "enum": "State must be one of these options: \nundefined",
              "maxLength": "State must not exceed 55 characters",
              "minLength": "State must contain at least undefined characters",
              "type": "State must be string "
            }
          },
          "zipCode": {
            "type": "string",
            "maxLength": 32,
            "errorMessage": {
              "enum": "Zip Code must be one of these options: \nundefined",
              "maxLength": "Zip Code must not exceed 32 characters",
              "minLength": "Zip Code must contain at least undefined characters",
              "type": "Zip Code must be string "
            }
          },
          "password": {
            "type": "string",
            "minLength": 6,
            "errorMessage": {
              "enum": "Password must be one of these options: \nundefined",
              "maxLength": "Password must not exceed undefined characters",
              "minLength": "Password must contain at least 6 characters",
              "type": "Password must be string "
            }
          },
          "passwordConfirm": {
            "type": "string",
            "minLength": 6,
            "errorMessage": {
              "enum": "Password Confirm must be one of these options: \nundefined",
              "maxLength": "Password Confirm must not exceed undefined characters",
              "minLength": "Password Confirm must contain at least 6 characters",
              "type": "Password Confirm must be string "
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "email",
          "password"
        ],
        "errorMessage": {
          "required": {
            "email": "Email is required",
            "password": "Password is required"
          }
        }
      },
      "DriverProfileEditDto": {
        "title": "DriverProfileEditDto",
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "errorMessage": {
              "enum": "First Name must be one of these options: \nundefined",
              "maxLength": "First Name must not exceed 255 characters",
              "minLength": "First Name must contain at least undefined characters",
              "type": "First Name must be string or null"
            }
          },
          "secondName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "errorMessage": {
              "enum": "Second Name must be one of these options: \nundefined",
              "maxLength": "Second Name must not exceed 255 characters",
              "minLength": "Second Name must contain at least undefined characters",
              "type": "Second Name must be string or null"
            }
          },
          "phone": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "pattern": "^\\([0-9]{3}\\) [0-9]{3}-[0-9]{4}$",
            "errorMessage": {
              "enum": "Phone must be one of these options: \nundefined",
              "maxLength": "Phone must not exceed 20 characters",
              "minLength": "Phone must contain at least undefined characters",
              "type": "Phone must be string or null",
              "pattern": "Phone must follow the '(###) ###-####' pattern"
            }
          },
          "email": {
            "type": "string",
            "format": "email",
            "maxLength": 120,
            "nullable": true,
            "errorMessage": {
              "enum": "Email must be one of these options: \nundefined",
              "maxLength": "Email must not exceed 120 characters",
              "minLength": "Email must contain at least undefined characters",
              "type": "Email must be string or null",
              "format": "Email must be a valid email address"
            }
          }
        },
        "additionalProperties": false
      },
      "AppPasswordChangeDto": {
        "title": "AppPasswordChangeDto",
        "type": "object",
        "properties": {
          "newPassword": {
            "type": "string",
            "minLength": 6,
            "maxLength": 255,
            "errorMessage": {
              "enum": "New Password must be one of these options: \nundefined",
              "maxLength": "New Password must not exceed undefined characters",
              "minLength": "New Password must contain at least undefined characters",
              "type": "New Password must be string "
            }
          },
          "confirmPassword": {
            "type": "string",
            "minLength": 6,
            "maxLength": 255,
            "errorMessage": {
              "enum": "Confirm Password must be one of these options: \nundefined",
              "maxLength": "Confirm Password must not exceed undefined characters",
              "minLength": "Confirm Password must contain at least undefined characters",
              "type": "Confirm Password must be string "
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "newPassword",
          "confirmPassword"
        ],
        "errorMessage": {
          "required": {
            "newPassword": "New password is required",
            "confirmPassword": "Confirm password is required"
          }
        }
      },
      "ForgotPasswordDto": {
        "title": "ForgotPasswordDto",
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "maxLength": 256,
            "errorMessage": {
              "enum": "Email must be one of these options: \nundefined",
              "maxLength": "Email must not exceed 256 characters",
              "minLength": "Email must contain at least undefined characters",
              "type": "Email must be string ",
              "format": "Email must be a valid email address"
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "email"
        ],
        "errorMessage": {
          "required": {
            "email": "Email required"
          }
        }
      },
      "VerificationCodeCheckDto": {
        "title": "VerificationCodeCheckDto",
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "maxLength": 256,
            "errorMessage": {
              "enum": "Email must be one of these options: \nundefined",
              "maxLength": "Email must not exceed 256 characters",
              "minLength": "Email must contain at least undefined characters",
              "type": "Email must be string ",
              "format": "Email must be a valid email address"
            }
          },
          "code": {
            "type": "string",
            "maxLength": 6,
            "errorMessage": {
              "enum": "Code must be one of these options: \nundefined",
              "maxLength": "Code must not exceed 6 characters",
              "minLength": "Code must contain at least undefined characters",
              "type": "Code must be string "
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "code",
          "email"
        ],
        "errorMessage": {
          "required": {
            "code": "Code required",
            "email": "Email required"
          }
        }
      },
      "UserResetDto": {
        "title": "UserResetDto",
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "maxLength": 256,
            "errorMessage": {
              "enum": "Email must be one of these options: \nundefined",
              "maxLength": "Email must not exceed 256 characters",
              "minLength": "Email must contain at least undefined characters",
              "type": "Email must be string ",
              "format": "Email must be a valid email address"
            }
          },
          "password": {
            "type": "string",
            "minLength": 6,
            "maxLength": 255,
            "errorMessage": {
              "enum": "Password must be one of these options: \nundefined",
              "maxLength": "Password must not exceed 255 characters",
              "minLength": "Password must contain at least 6 characters",
              "type": "Password must be string "
            }
          },
          "confirmPassword": {
            "type": "string",
            "minLength": 6,
            "maxLength": 255,
            "errorMessage": {
              "enum": "Confirm Password must be one of these options: \nundefined",
              "maxLength": "Confirm Password must not exceed 255 characters",
              "minLength": "Confirm Password must contain at least 6 characters",
              "type": "Confirm Password must be string "
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "password",
          "confirmPassword"
        ],
        "errorMessage": {
          "required": {
            "password": "Password is required",
            "confirmPassword": "Password confirmation is required"
          }
        }
      },
      "AuthInvitedTDriver": {
        "title": "AuthInvitedTDriver",
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "maxLength": 120,
            "errorMessage": {
              "enum": "Email must be one of these options: \nundefined",
              "maxLength": "Email must not exceed 120 characters",
              "minLength": "Email must contain at least undefined characters",
              "type": "Email must be string ",
              "format": "Email must be a valid email address"
            }
          },
          "firstName": {
            "type": "string",
            "maxLength": 20,
            "pattern": "^[A-Za-z\\s'-]+$",
            "errorMessage": {
              "enum": "First Name must be one of these options: \nundefined",
              "maxLength": "First Name must not exceed 20 characters",
              "minLength": "First Name must contain at least undefined characters",
              "type": "First Name must be string ",
              "pattern": "must contain only letters, spaces, hyphens (-) and apostrophes (')"
            }
          },
          "secondName": {
            "type": "string",
            "maxLength": 20,
            "pattern": "^[A-Za-z\\s'-]+$",
            "errorMessage": {
              "enum": "Second Name must be one of these options: \nundefined",
              "maxLength": "Second Name must not exceed 20 characters",
              "minLength": "Second Name must contain at least undefined characters",
              "type": "Second Name must be string ",
              "pattern": "must contain only letters, spaces, hyphens (-) and apostrophes (')"
            }
          },
          "middleName": {
            "type": "string",
            "maxLength": 255,
            "errorMessage": {
              "enum": "Middle Name must be one of these options: \nundefined",
              "maxLength": "Middle Name must not exceed 255 characters",
              "minLength": "Middle Name must contain at least undefined characters",
              "type": "Middle Name must be string "
            }
          },
          "phone": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "pattern": "^\\([0-9]{3}\\) [0-9]{3}-[0-9]{4}$",
            "errorMessage": {
              "enum": "Phone must be one of these options: \nundefined",
              "maxLength": "Phone must not exceed 20 characters",
              "minLength": "Phone must contain at least undefined characters",
              "type": "Phone must be string or null",
              "pattern": "Phone must follow the '(###) ###-####' pattern"
            }
          },
          "password": {
            "type": "string",
            "minLength": 6,
            "maxLength": 32,
            "errorMessage": {
              "enum": "Password must be one of these options: \nundefined",
              "maxLength": "Password must not exceed 32 characters",
              "minLength": "Password must contain at least 6 characters",
              "type": "Password must be string "
            }
          },
          "passwordConfirm": {
            "type": "string",
            "minLength": 6,
            "maxLength": 32,
            "errorMessage": {
              "enum": "Password Confirm must be one of these options: \nundefined",
              "maxLength": "Password Confirm must not exceed 32 characters",
              "minLength": "Password Confirm must contain at least 6 characters",
              "type": "Password Confirm must be string "
            }
          },
          "city": {
            "type": "string",
            "maxLength": 150,
            "errorMessage": {
              "enum": "City must be one of these options: \nundefined",
              "maxLength": "City must not exceed 150 characters",
              "minLength": "City must contain at least undefined characters",
              "type": "City must be string "
            }
          },
          "state": {
            "type": "string",
            "maxLength": 55,
            "errorMessage": {
              "enum": "State must be one of these options: \nundefined",
              "maxLength": "State must not exceed 55 characters",
              "minLength": "State must contain at least undefined characters",
              "type": "State must be string "
            }
          },
          "zipCode": {
            "type": "string",
            "maxLength": 32,
            "pattern": "^\\d{5}(-\\d{4})?$",
            "errorMessage": {
              "enum": "Zip Code must be one of these options: \nundefined",
              "maxLength": "Zip Code must not exceed 32 characters",
              "minLength": "Zip Code must contain at least undefined characters",
              "type": "Zip Code must be string ",
              "pattern": "Zip code must be a valid 5-digit or ZIP+4 code (e.g. 12345 or 12345-6789)"
            }
          },
          "address1": {
            "type": "string",
            "maxLength": 255,
            "errorMessage": {
              "enum": "Address1 must be one of these options: \nundefined",
              "maxLength": "Address1 must not exceed 255 characters",
              "minLength": "Address1 must contain at least undefined characters",
              "type": "Address1 must be string "
            }
          },
          "address": {
            "type": "string",
            "maxLength": 255,
            "errorMessage": {
              "enum": "Address must be one of these options: \nundefined",
              "maxLength": "Address must not exceed 255 characters",
              "minLength": "Address must contain at least undefined characters",
              "type": "Address must be string "
            }
          },
          "address2": {
            "type": "string",
            "maxLength": 255,
            "errorMessage": {
              "enum": "Address2 must be one of these options: \nundefined",
              "maxLength": "Address2 must not exceed 255 characters",
              "minLength": "Address2 must contain at least undefined characters",
              "type": "Address2 must be string "
            }
          },
          "TWICCard": {
            "type": "boolean"
          },
          "tankerEndorsed": {
            "type": "boolean"
          },
          "HazMatCertified": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "required": [
          "email",
          "city",
          "state",
          "zipCode"
        ],
        "errorMessage": {
          "required": {
            "email": "Email is required",
            "city": "City is required",
            "state": "State is required",
            "zipCode": "Zipcode is required"
          }
        }
      },
      "AppLoadNoteCreateDto": {
        "title": "AppLoadNoteCreateDto",
        "type": "object",
        "properties": {
          "currentLocation": {
            "type": "string",
            "maxLength": 150,
            "nullable": true,
            "errorMessage": {
              "enum": "Current Location must be one of these options: \nundefined",
              "maxLength": "Current Location must not exceed 150 characters",
              "minLength": "Current Location must contain at least undefined characters",
              "type": "Current Location must be string or null"
            }
          },
          "notes": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "errorMessage": {
              "enum": "Notes must be one of these options: \nundefined",
              "maxLength": "Notes must not exceed 1000 characters",
              "minLength": "Notes must contain at least undefined characters",
              "type": "Notes must be string or null"
            }
          }
        },
        "additionalProperties": false
      },
      "AppLoadAiUpdateCreateDto": {
        "title": "AppLoadAiUpdateCreateDto",
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "driving",
              "stopped",
              "at_stop"
            ],
            "errorMessage": {
              "enum": "Status must be one of these options: \ndriving, stopped, at_stop",
              "maxLength": "Status must not exceed undefined characters",
              "minLength": "Status must contain at least undefined characters",
              "type": "Status must be string "
            }
          },
          "locationText": {
            "type": "string",
            "maxLength": 255,
            "errorMessage": {
              "enum": "Location Text must be one of these options: \nundefined",
              "maxLength": "Location Text must not exceed 255 characters",
              "minLength": "Location Text must contain at least undefined characters",
              "type": "Location Text must be string "
            }
          },
          "lat": {
            "type": "number",
            "nullable": true,
            "format": "float",
            "errorMessage": {
              "type": "Lat must be number or null",
              "exclusiveMinimum": "Lat must be greater than undefined"
            }
          },
          "lng": {
            "type": "number",
            "nullable": true,
            "format": "float",
            "errorMessage": {
              "type": "Lng must be number or null",
              "exclusiveMinimum": "Lng must be greater than undefined"
            }
          },
          "driverMessage": {
            "type": "string",
            "maxLength": 2000,
            "errorMessage": {
              "enum": "Driver Message must be one of these options: \nundefined",
              "maxLength": "Driver Message must not exceed 2000 characters",
              "minLength": "Driver Message must contain at least undefined characters",
              "type": "Driver Message must be string "
            }
          },
          "stopReason": {
            "type": "string",
            "maxLength": 150,
            "nullable": true,
            "errorMessage": {
              "enum": "Stop Reason must be one of these options: \nundefined",
              "maxLength": "Stop Reason must not exceed 150 characters",
              "minLength": "Stop Reason must contain at least undefined characters",
              "type": "Stop Reason must be string or null"
            }
          }
        },
        "additionalProperties": false
      },
      "SettlementRejectDto": {
        "title": "SettlementRejectDto",
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "errorMessage": {
              "enum": "Reason must be one of these options: \nundefined",
              "maxLength": "Reason must not exceed 1000 characters",
              "minLength": "Reason must contain at least undefined characters",
              "type": "Reason must be string or null"
            }
          }
        },
        "additionalProperties": false
      },
      "DriverAppFeedbackDto": {
        "title": "DriverAppFeedbackDto",
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "maxLength": 1200,
            "errorMessage": {
              "enum": "Text must be one of these options: \nundefined",
              "maxLength": "Text must not exceed 1200 characters",
              "minLength": "Text must contain at least undefined characters",
              "type": "Text must be string "
            }
          }
        },
        "additionalProperties": false
      },
      "Ticket": {
        "title": "Ticket",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "isActive": {
            "type": "boolean"
          },
          "closedDate": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "readByDriver": {
            "type": "boolean"
          },
          "locationId": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "city": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "zipCode": {
            "type": "string"
          },
          "dispatcherId": {
            "type": "string"
          },
          "driverId": {
            "type": "string"
          },
          "unitId": {
            "type": "string"
          },
          "trailerId": {
            "type": "string"
          },
          "companyId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "DriverTicketCreateDto": {
        "title": "DriverTicketCreateDto",
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 255,
            "errorMessage": {
              "enum": "Title must be one of these options: \nundefined",
              "maxLength": "Title must not exceed 255 characters",
              "minLength": "Title must contain at least undefined characters",
              "type": "Title must be string "
            }
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "errorMessage": {
              "enum": "Description must be one of these options: \nundefined",
              "maxLength": "Description must not exceed 1000 characters",
              "minLength": "Description must contain at least undefined characters",
              "type": "Description must be string "
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "title",
          "description"
        ],
        "errorMessage": {
          "required": {
            "title": "Title is required",
            "description": "Description is required"
          }
        }
      },
      "DriverCommentForTicketDto": {
        "title": "DriverCommentForTicketDto",
        "type": "object",
        "properties": {
          "comment": {
            "type": "string",
            "maxLength": 1000,
            "errorMessage": {
              "enum": "Comment must be one of these options: \nundefined",
              "maxLength": "Comment must not exceed 1000 characters",
              "minLength": "Comment must contain at least undefined characters",
              "type": "Comment must be string "
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "comment"
        ],
        "errorMessage": {
          "required": {
            "comment": "Comment is required"
          }
        }
      },
      "DriverTicketEditDto": {
        "title": "DriverTicketEditDto",
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "errorMessage": {
              "enum": "Title must be one of these options: \nundefined",
              "maxLength": "Title must not exceed 255 characters",
              "minLength": "Title must contain at least undefined characters",
              "type": "Title must be string or null"
            }
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "errorMessage": {
              "enum": "Description must be one of these options: \nundefined",
              "maxLength": "Description must not exceed 1000 characters",
              "minLength": "Description must contain at least undefined characters",
              "type": "Description must be string or null"
            }
          },
          "status": {
            "type": "string",
            "enum": [
              "open",
              "closed"
            ],
            "maxLength": 10,
            "nullable": true,
            "errorMessage": {
              "enum": "Status must be one of these options: \nopen, closed",
              "maxLength": "Status must not exceed 10 characters",
              "minLength": "Status must contain at least undefined characters",
              "type": "Status must be string or null"
            }
          }
        },
        "additionalProperties": false
      },
      "UpdateFcmDto": {
        "title": "UpdateFcmDto",
        "type": "object",
        "properties": {
          "fcmToken": {
            "type": "string",
            "errorMessage": {
              "enum": "Fcm Token must be one of these options: \nundefined",
              "maxLength": "Fcm Token must not exceed undefined characters",
              "minLength": "Fcm Token must contain at least undefined characters",
              "type": "Fcm Token must be string "
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "fcmToken"
        ]
      },
      "StatusChangeData": {
        "title": "StatusChangeData",
        "type": "object",
        "properties": {
          "activityStatus": {
            "type": "string",
            "enum": [
              "active",
              "sleeping"
            ],
            "maxLength": 12,
            "errorMessage": {
              "enum": "Activity Status must be one of these options: \nactive, sleeping",
              "maxLength": "Activity Status must not exceed 12 characters",
              "minLength": "Activity Status must contain at least undefined characters",
              "type": "Activity Status must be string "
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "activityStatus"
        ],
        "errorMessage": {
          "required": {
            "status": "Activity status is required"
          }
        }
      },
      "CollectionSiteSelectDto": {
        "title": "CollectionSiteSelectDto",
        "type": "object",
        "properties": {
          "collectionSiteCode": {
            "type": "string",
            "maxLength": 6,
            "errorMessage": {
              "enum": "Collection Site Code must be one of these options: \nundefined",
              "maxLength": "Collection Site Code must not exceed 6 characters",
              "minLength": "Collection Site Code must contain at least undefined characters",
              "type": "Collection Site Code must be string "
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "collectionSiteCode"
        ]
      },
      "SendTrackingData": {
        "title": "SendTrackingData",
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "format": "float",
            "errorMessage": {
              "type": "Lat must be number ",
              "exclusiveMinimum": "Lat must be greater than undefined"
            }
          },
          "lng": {
            "type": "number",
            "format": "float",
            "errorMessage": {
              "type": "Lng must be number ",
              "exclusiveMinimum": "Lng must be greater than undefined"
            }
          },
          "speed": {
            "type": "number",
            "format": "float",
            "errorMessage": {
              "type": "Speed must be number ",
              "exclusiveMinimum": "Speed must be greater than undefined"
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "lat",
          "lng",
          "speed"
        ]
      },
      "FundingSourceCreateData": {
        "title": "FundingSourceCreateData",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 50,
            "errorMessage": {
              "enum": "Name must be one of these options: \nundefined",
              "maxLength": "Name must not exceed 50 characters",
              "minLength": "Name must contain at least undefined characters",
              "type": "Name must be string "
            }
          },
          "routingNumber": {
            "type": "string",
            "errorMessage": {
              "enum": "Routing Number must be one of these options: \nundefined",
              "maxLength": "Routing Number must not exceed undefined characters",
              "minLength": "Routing Number must contain at least undefined characters",
              "type": "Routing Number must be string "
            }
          },
          "accountNumber": {
            "type": "string",
            "errorMessage": {
              "enum": "Account Number must be one of these options: \nundefined",
              "maxLength": "Account Number must not exceed undefined characters",
              "minLength": "Account Number must contain at least undefined characters",
              "type": "Account Number must be string "
            }
          },
          "accountNumberVerify": {
            "type": "string",
            "errorMessage": {
              "enum": "Account Number Verify must be one of these options: \nundefined",
              "maxLength": "Account Number Verify must not exceed undefined characters",
              "minLength": "Account Number Verify must contain at least undefined characters",
              "type": "Account Number Verify must be string "
            }
          },
          "default": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "required": [
          "routingNumber",
          "accountNumber",
          "accountNumberVerify",
          "name"
        ],
        "errorMessage": {
          "required": {
            "accountNumber": "Account Number required",
            "accountNumberVerify": "Account Number must be verified",
            "name": "Bank Account Name required",
            "routingNumber": "Routing Number required"
          }
        }
      },
      "DriverMedicalCardDto": {
        "title": "DriverMedicalCardDto",
        "type": "object",
        "properties": {
          "medicalExaminerName": {
            "type": "string",
            "maxLength": 120,
            "nullable": true,
            "errorMessage": {
              "enum": "Medical Examiner Name must be one of these options: \nundefined",
              "maxLength": "Medical Examiner Name must not exceed 120 characters",
              "minLength": "Medical Examiner Name must contain at least undefined characters",
              "type": "Medical Examiner Name must be string or null"
            }
          },
          "nationalRegistryNumber": {
            "type": "string",
            "maxLength": 20,
            "errorMessage": {
              "enum": "National Registry Number must be one of these options: \nundefined",
              "maxLength": "National Registry Number must not exceed 20 characters",
              "minLength": "National Registry Number must contain at least undefined characters",
              "type": "National Registry Number must be string "
            }
          },
          "issueDate": {
            "type": "string",
            "format": "date",
            "nullable": true,
            "errorMessage": {
              "type": "Issue Date must be date or null",
              "format": "IssueDate must be a valid date (YYYY-MM-DD)"
            }
          },
          "expirationDate": {
            "type": "string",
            "format": "date",
            "nullable": true,
            "errorMessage": {
              "type": "Expiration Date must be date or null",
              "format": "ExpirationDate must be a valid date (YYYY-MM-DD)"
            }
          },
          "isExempt": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "DriverPreEmploymentDrugTestDto": {
        "title": "DriverPreEmploymentDrugTestDto",
        "type": "object",
        "properties": {
          "result": {
            "type": "string",
            "maxLength": 36,
            "errorMessage": {
              "enum": "Result must be one of these options: \nundefined",
              "maxLength": "Result must not exceed 36 characters",
              "minLength": "Result must contain at least undefined characters",
              "type": "Result must be string "
            }
          },
          "resultDateTime": {
            "type": "string",
            "format": "date",
            "errorMessage": {
              "type": "Result Date Time must be date ",
              "format": "ResultDateTime must be a valid date (YYYY-MM-DD)"
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "resultDateTime",
          "result"
        ],
        "errorMessage": {
          "required": {
            "resultDateTime": "Result Date-Time is required",
            "result": "Drug Test Result required"
          }
        }
      }
    }
  },
  "security": [
    {
      "jwt": [],
      "companyId": []
    }
  ],
  "servers": [
    {
      "url": "http://driver-test.protrucks.com"
    }
  ]
}