{
  "swagger": "2.0",
  "info": {
    "version": "v1",
    "title": "W2S.API"
  },
  "host": "customer-api.way2send.pl",
  "schemes": [
    "https"
  ],
  "paths": {
    "/api/grn/{id}": {
      "get": {
        "tags": [
          "GoodsReceivedNotes"
        ],
        "summary": "Retrieves a goods received note by number",
        "operationId": "GoodsReceivedNotes_Get",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The number of the goods received note to retrieve.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Get goods received note by id",
            "schema": {
              "$ref": "#/definitions/GoodsReceivedNoteGetResponse"
            }
          },
          "404": {
            "description": "Not found"
          },
          "500": {
            "description": "Error occured",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          }
        }
      }
    },
    "/api/grn/search": {
      "post": {
        "tags": [
          "GoodsReceivedNotes"
        ],
        "summary": "Retrieves a list of goods received notes by their IDs.",
        "operationId": "GoodsReceivedNotes_GetAll",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "searchRequest",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/GoodsReceivedNoteSearchModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get goods received notes by numbers",
            "schema": {
              "$ref": "#/definitions/GoodsReceivedNotesListResponse"
            }
          },
          "404": {
            "description": "Not found"
          },
          "500": {
            "description": "Error occured",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          }
        }
      }
    },
    "/api/grn": {
      "post": {
        "tags": [
          "GoodsReceivedNotes"
        ],
        "summary": "Creates an order",
        "operationId": "GoodsReceivedNotes_Post",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "grn",
            "in": "body",
            "description": "The goods received note to create.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/GoodsReceivedNoteToCreateModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Create goods received note",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          },
          "400": {
            "description": "Bad request",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          },
          "500": {
            "description": "Error occured",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          }
        }
      }
    },
    "/api/order/search": {
      "post": {
        "tags": [
          "Orders"
        ],
        "summary": "Retrieves many orders by given search criteria.",
        "operationId": "Orders_GetAll",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "SearchModel",
            "in": "body",
            "description": "The search criteria.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SearchModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get orders by order ids",
            "schema": {
              "$ref": "#/definitions/OrdersListResponse"
            }
          },
          "404": {
            "description": "Not found"
          },
          "500": {
            "description": "Error occured",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          }
        }
      }
    },
    "/api/order": {
      "post": {
        "tags": [
          "Orders"
        ],
        "summary": "Creates an order",
        "operationId": "Orders_Post",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "order",
            "in": "body",
            "description": "The order to create.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrderToCreateModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Create order",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          },
          "400": {
            "description": "Bad request",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          },
          "500": {
            "description": "Error occured",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          }
        }
      }
    },
    "/api/order/targetDetails/{id}": {
      "put": {
        "tags": [
          "Orders"
        ],
        "summary": "Updates the delivery address of an order.",
        "operationId": "Orders_PutTarget2",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The order number.",
            "required": true,
            "type": "string"
          },
          {
            "name": "clientDetailsModel",
            "in": "body",
            "description": "The client details to be updated.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientDetailsModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Order delivery address updated successfully",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          },
          "400": {
            "description": "Bad request",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          },
          "500": {
            "description": "Error occured",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          }
        }
      }
    },
    "/api/order/cargoes/{id}": {
      "put": {
        "tags": [
          "Orders"
        ],
        "summary": "Updates the cargoes in an order.",
        "operationId": "Orders_PutCargoes2",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the order.",
            "required": true,
            "type": "string"
          },
          {
            "name": "orderProducts",
            "in": "body",
            "description": "An array of OrderCargoModel representing the cargoes to be updated.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/OrderCargoModel"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Order cargoes updated successfully",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          },
          "400": {
            "description": "Bad request",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          },
          "500": {
            "description": "Error occured",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          }
        }
      }
    },
    "/api/order/{id}": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Retrieves an order by order number.",
        "operationId": "Orders_Get",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The order number of the order to retrieve.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Get order by order id",
            "schema": {
              "$ref": "#/definitions/OrderGetResponse"
            }
          },
          "404": {
            "description": "Not found"
          },
          "500": {
            "description": "Error occured",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          }
        }
      },
      "put": {
        "tags": [
          "Orders"
        ],
        "summary": "Updates an order.",
        "operationId": "Orders_PutOrderUpdate",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the order to update.",
            "required": true,
            "type": "string"
          },
          {
            "name": "order",
            "in": "body",
            "description": "The order details to update.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrderToUpdateModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Order updated successfully",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          },
          "400": {
            "description": "Bad request",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          },
          "500": {
            "description": "Error occured",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Orders"
        ],
        "summary": "Cancels an order.",
        "operationId": "Orders_Delete",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the order to cancel.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Order cancelled successfully",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          },
          "400": {
            "description": "Bad request",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          },
          "500": {
            "description": "Error occured",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          }
        }
      }
    },
    "/api/order/return/{id}": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "Retrieves all order returns for a given order ID.",
        "operationId": "Orders_GetAllOrderReturns2",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the order to retrieve the returns for.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Get order returns by order id",
            "schema": {
              "$ref": "#/definitions/OrdersReturnsListResponse"
            }
          },
          "404": {
            "description": "No returns found"
          },
          "500": {
            "description": "Error occured",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          }
        }
      }
    },
    "/api/order/search/return": {
      "post": {
        "tags": [
          "Orders"
        ],
        "summary": "Retrieves many orders returns by given search criteria.",
        "operationId": "Orders_GetAllReturns",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "SearchModel",
            "in": "body",
            "description": "The search criteria.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ReturnSearchModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get orders by order ids",
            "schema": {
              "$ref": "#/definitions/OrdersReturnsListResponse"
            }
          },
          "404": {
            "description": "Not found"
          },
          "500": {
            "description": "Error occured",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          }
        }
      }
    },
    "/api/product/{sku}": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "Retrieves a product by SKU.",
        "operationId": "Products_Get",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "sku",
            "in": "path",
            "description": "The SKU of the product to retrieve.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Get product by sku",
            "schema": {
              "$ref": "#/definitions/CustomerProductGetResponse"
            }
          },
          "404": {
            "description": "Not found"
          },
          "500": {
            "description": "Error occured",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          }
        }
      }
    },
    "/api/product/search": {
      "post": {
        "tags": [
          "Products"
        ],
        "summary": "Find existing products by one or more of the following parameters:  sku, barcode, disabled, etc.",
        "operationId": "Products_GetAll",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "productSearchModel",
            "in": "body",
            "description": "The search model",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CustomerProductSearchModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get all products with filters",
            "schema": {
              "$ref": "#/definitions/CustomerProductGetAllResponse"
            }
          },
          "500": {
            "description": "Error occured",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          }
        }
      }
    },
    "/api/product": {
      "post": {
        "tags": [
          "Products"
        ],
        "summary": "Create new product providing all required information, or update existing one if product with provided SKU already exists.",
        "operationId": "Products_Post",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "customerProduct",
            "in": "body",
            "description": "Product information",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CustomerProductToCreateModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Create new product",
            "schema": {
              "$ref": "#/definitions/CustomerProductGetResponse"
            }
          },
          "500": {
            "description": "Error occured",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          }
        }
      }
    },
    "/api/product/wms/{code}": {
      "get": {
        "tags": [
          "Products"
        ],
        "operationId": "Products_GetAllExternal",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "code",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "options",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "responses": {
          "200": {
            "description": "Get all products with filters",
            "schema": {
              "$ref": "#/definitions/ResponseItem[CustomerProductWmsDataModel[]]"
            }
          },
          "500": {
            "description": "Error occured",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          }
        }
      }
    },
    "/api/return/{returnId}": {
      "get": {
        "tags": [
          "Returns"
        ],
        "summary": "Retrieves all returns for a given return ID.",
        "operationId": "Returns_GetReturn",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "returnId",
            "in": "path",
            "description": "The ID of the return.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Get returns by order id",
            "schema": {
              "$ref": "#/definitions/OrdersReturnsListResponse"
            }
          },
          "404": {
            "description": "No returns found"
          },
          "500": {
            "description": "Error occured",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          }
        }
      }
    },
    "/api/return/search": {
      "post": {
        "tags": [
          "Returns"
        ],
        "summary": "Retrieves returns based on search criteria.",
        "operationId": "Returns_SearchReturns",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "SearchModel",
            "in": "body",
            "description": "The search criteria for finding returns.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ReturnSearchModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get returns by search criteria",
            "schema": {
              "$ref": "#/definitions/OrdersReturnsListResponse"
            }
          },
          "404": {
            "description": "No returns found"
          },
          "500": {
            "description": "Error occured",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          }
        }
      }
    },
    "/api/return": {
      "post": {
        "tags": [
          "Returns"
        ],
        "summary": "Creates a new return.",
        "operationId": "Returns_CreateReturn",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "returnModel",
            "in": "body",
            "description": "The return to create.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrderReturnToCreateModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Create return",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          },
          "400": {
            "description": "Bad request",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          },
          "500": {
            "description": "Error occured",
            "schema": {
              "$ref": "#/definitions/IResponse"
            }
          }
        }
      }
    }
  },
  "definitions": {
    "GoodsReceivedNoteGetResponse": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean"
        },
        "message": {
          "type": "string"
        },
        "item": {
          "$ref": "#/definitions/GoodsReceivedNoteModel"
        }
      }
    },
    "GoodsReceivedNoteModel": {
      "description": "Represents a goods received note.",
      "type": "object",
      "properties": {
        "id": {
          "description": "Unique identifier of the goods received note.",
          "type": "string"
        },
        "number": {
          "description": "Additional identifier of the goods received note.",
          "type": "string"
        },
        "description": {
          "description": "General description of the goods received note.",
          "type": "string"
        },
        "status": {
          "description": "Current status of the goods received note.",
          "type": "string"
        },
        "client": {
          "$ref": "#/definitions/ClientDetailsModel",
          "description": "Details about the client involved in the transaction."
        },
        "descriptionForWarehouse": {
          "description": "Specific description of the goods received note for the warehouse.",
          "type": "string"
        },
        "supplier": {
          "description": "Name of the supplier involved in the transaction.",
          "type": "string"
        },
        "documentDate": {
          "format": "date-time",
          "description": "The date when the goods received note was documented.",
          "type": "string"
        },
        "issueDate": {
          "format": "date-time",
          "description": "The date when the goods received note was issued.",
          "type": "string"
        },
        "operationDate": {
          "format": "date-time",
          "description": "The date when the operation took place.",
          "type": "string"
        },
        "cargoes": {
          "description": "List of cargo details associated with the goods received note.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/GoodsReceivedNoteCargoModel"
          }
        }
      }
    },
    "ClientDetailsModel": {
      "required": [
        "lastName",
        "fullName",
        "country"
      ],
      "type": "object",
      "properties": {
        "email": {
          "description": "The customer's email address.",
          "type": "string"
        },
        "firstName": {
          "description": "The customer's first name.",
          "type": "string"
        },
        "lastName": {
          "description": "The customer's last name.",
          "type": "string"
        },
        "fullName": {
          "description": "The customer's full name.",
          "type": "string"
        },
        "country": {
          "description": "The customer's country of residence.",
          "type": "string"
        },
        "zipCode": {
          "description": "The customer's postal code.",
          "type": "string"
        },
        "region": {
          "description": "The region where the customer lives.",
          "type": "string"
        },
        "city": {
          "description": "The city where the customer resides in.",
          "type": "string"
        },
        "street": {
          "description": "The street where the customer lives.",
          "type": "string"
        },
        "houseNo": {
          "description": "The house number of the customer's residence.",
          "type": "string"
        },
        "localNo": {
          "description": "The local number of the customer's residence.",
          "type": "string"
        },
        "phone": {
          "description": "The customer's phone number.",
          "type": "string"
        },
        "customerCode": {
          "type": "string"
        }
      }
    },
    "GoodsReceivedNoteCargoModel": {
      "type": "object",
      "properties": {
        "confirmedQuantity": {
          "format": "int32",
          "description": "Cargo quantity that was confirmed by warehouse",
          "type": "integer"
        },
        "damagedQuantity": {
          "format": "int32",
          "description": "Cargo quantity that was damaged",
          "type": "integer"
        },
        "batchId": {
          "description": "Cargo batch ID",
          "type": "string"
        },
        "unitOfMeasure": {
          "description": "Represents the measurement unit of the goods. This can be kg, g, etc.",
          "type": "string"
        },
        "quantity": {
          "format": "int32",
          "description": "Represents the amount of goods.",
          "type": "integer"
        },
        "batchNumber": {
          "description": "Represents the identification number that is assigned to a particular batch of goods.",
          "type": "string"
        },
        "expirationDate": {
          "format": "date-time",
          "description": "Represents the date after which the goods should not be used, often referred to as the expiry date.",
          "type": "string"
        },
        "sku": {
          "description": "The SKU of the product.",
          "type": "string"
        },
        "disabled": {
          "description": "Gets or sets a value indicating whether the product is disabled.",
          "type": "boolean"
        },
        "productName": {
          "description": "The name of the product.",
          "type": "string"
        },
        "imgUrl": {
          "description": "The URL of the product's image.",
          "type": "string"
        },
        "logical_attributes": {
          "description": "List of names of active product logical attributes: fragile, insert, isFood, isBio, trackExpirationDate, trackBatchNumber, trackSerialNumber",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "value_attributes": {
          "description": "Dictionary (name-value collection) of active product attributes with values",
          "default": {
            "key": "value",
            "key2": "1.00"
          },
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "weight": {
          "format": "double",
          "description": "The weight of the product.",
          "type": "number"
        },
        "length": {
          "format": "double",
          "description": "The length of the product.",
          "type": "number"
        },
        "width": {
          "format": "double",
          "description": "The width of the product.",
          "type": "number"
        },
        "height": {
          "format": "double",
          "description": "The height of the product.",
          "type": "number"
        },
        "barcode": {
          "description": "The barcodes of the product.",
          "type": "string"
        },
        "cStoreId": {
          "description": "The id of the warehouse where product is available.",
          "type": "string"
        },
        "barcodes": {
          "description": "",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "IResponse": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean"
        },
        "message": {
          "type": "string"
        }
      }
    },
    "GoodsReceivedNoteSearchModel": {
      "type": "object",
      "properties": {
        "ids": {
          "description": "The unique identifiers of the GRNs.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "createdFrom": {
          "format": "date-time",
          "description": "Get GRNs created from this date.",
          "type": "string"
        },
        "createdTo": {
          "format": "date-time",
          "description": "Get GRNs created to this date.",
          "type": "string"
        },
        "receivedFrom": {
          "format": "date-time",
          "description": "Get GRNs received by warehouse from this date.",
          "type": "string"
        },
        "receivedTo": {
          "format": "date-time",
          "description": "Get GRNs received by warehouse to this date.",
          "type": "string"
        },
        "statuses": {
          "description": "Get GRNs with this statuses.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "page": {
          "format": "int32",
          "description": "Page number.",
          "type": "integer"
        }
      }
    },
    "GoodsReceivedNotesListResponse": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean"
        },
        "message": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/GoodsReceivedNoteModel"
          }
        },
        "totalItemsCount": {
          "format": "int32",
          "type": "integer"
        },
        "totalPages": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "GoodsReceivedNoteToCreateModel": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "originalNumber": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "client": {
          "$ref": "#/definitions/ClientDetailsModel"
        },
        "descriptionForWarehouse": {
          "type": "string"
        },
        "supplier": {
          "type": "string"
        },
        "documentDate": {
          "format": "date-time",
          "type": "string"
        },
        "issueDate": {
          "format": "date-time",
          "type": "string"
        },
        "operationDate": {
          "format": "date-time",
          "type": "string"
        },
        "outNumber1": {
          "type": "string"
        },
        "outNumber2": {
          "type": "string"
        },
        "outNumber3": {
          "type": "string"
        },
        "cargoes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/GoodsReceivedNoteCargoToCreateModel"
          }
        }
      }
    },
    "GoodsReceivedNoteCargoToCreateModel": {
      "type": "object",
      "properties": {
        "unitOfMeasure": {
          "description": "Represents the measurement unit of the goods. This can be kg, g, etc.",
          "type": "string"
        },
        "quantity": {
          "format": "int32",
          "description": "Represents the amount of goods.",
          "type": "integer"
        },
        "batchNumber": {
          "description": "Represents the identification number that is assigned to a particular batch of goods.",
          "type": "string"
        },
        "expirationDate": {
          "format": "date-time",
          "description": "Represents the date after which the goods should not be used, often referred to as the expiry date.",
          "type": "string"
        },
        "sku": {
          "description": "The SKU of the product.",
          "type": "string"
        },
        "disabled": {
          "description": "Gets or sets a value indicating whether the product is disabled.",
          "type": "boolean"
        },
        "productName": {
          "description": "The name of the product.",
          "type": "string"
        },
        "imgUrl": {
          "description": "The URL of the product's image.",
          "type": "string"
        },
        "logical_attributes": {
          "description": "List of names of active product logical attributes: fragile, insert, isFood, isBio, trackExpirationDate, trackBatchNumber, trackSerialNumber",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "value_attributes": {
          "description": "Dictionary (name-value collection) of active product attributes with values",
          "default": {
            "key": "value",
            "key2": "1.00"
          },
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "weight": {
          "format": "double",
          "description": "The weight of the product.",
          "type": "number"
        },
        "length": {
          "format": "double",
          "description": "The length of the product.",
          "type": "number"
        },
        "width": {
          "format": "double",
          "description": "The width of the product.",
          "type": "number"
        },
        "height": {
          "format": "double",
          "description": "The height of the product.",
          "type": "number"
        },
        "barcode": {
          "description": "The barcodes of the product.",
          "type": "string"
        },
        "cStoreId": {
          "description": "The id of the warehouse where product is available.",
          "type": "string"
        },
        "barcodes": {
          "description": "",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "SearchModel": {
      "type": "object",
      "properties": {
        "ids": {
          "description": "The unique identifiers of the search entities.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "relatedIds": {
          "description": "The unique identifiers of the related entities (e.g. orders related to return).",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "createdFrom": {
          "format": "date-time",
          "description": "Get orders created from this date.",
          "type": "string"
        },
        "createdTo": {
          "format": "date-time",
          "description": "Get orders created to this date.",
          "type": "string"
        },
        "sentFrom": {
          "format": "date-time",
          "description": "Get orders sent from this date.",
          "type": "string"
        },
        "sentTo": {
          "format": "date-time",
          "description": "Get orders sent to this date.",
          "type": "string"
        },
        "statusChangeFrom": {
          "format": "date-time",
          "type": "string"
        },
        "statusChangeTo": {
          "format": "date-time",
          "type": "string"
        },
        "statuses": {
          "description": "Get orders with this statuses.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "page": {
          "format": "int32",
          "description": "Page number.",
          "type": "integer"
        }
      }
    },
    "OrdersListResponse": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean"
        },
        "message": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrderModel"
          }
        },
        "totalItemsCount": {
          "format": "int32",
          "type": "integer"
        },
        "totalPages": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "OrderModel": {
      "description": "Represents an order with all its details.",
      "type": "object",
      "properties": {
        "id": {
          "description": "Unique identifier for the order",
          "type": "string"
        },
        "number": {
          "description": "Order number",
          "type": "string"
        },
        "w2sNumber": {
          "description": "Order number in W2S system",
          "type": "string"
        },
        "externalNumber": {
          "description": "External order number in source system",
          "type": "string"
        },
        "date": {
          "format": "date-time",
          "description": "Order date in 'yyyy-MM-dd HH:mm:ss' format",
          "type": "string"
        },
        "status": {
          "description": "Current order status",
          "type": "string"
        },
        "comment": {
          "description": "Comment, usually putted on a courier label",
          "type": "string"
        },
        "description": {
          "description": "Order description, usually putted on a courier label",
          "type": "string"
        },
        "invoice": {
          "description": "Invoice number",
          "type": "string"
        },
        "courier": {
          "description": "Order courier",
          "type": "string"
        },
        "courierService": {
          "description": "Order courier service",
          "type": "string"
        },
        "courierNumber": {
          "description": "Number of the order given by the courier system after order registration",
          "type": "string"
        },
        "returnLabelNumber": {
          "description": "Return label number of the order given by the courier system after order registration, or provided in creation request",
          "type": "string"
        },
        "isCod": {
          "description": "Is order cash on delivery",
          "type": "boolean"
        },
        "cod": {
          "format": "double",
          "description": "Order cod value in given currency",
          "type": "number"
        },
        "deliveryCost": {
          "format": "double",
          "description": "Order delivery cost in given currency",
          "type": "number"
        },
        "discount": {
          "format": "double",
          "description": "Order discount in given currency",
          "type": "number"
        },
        "currency": {
          "description": "Order currency, Example: PLN, EUR, USD",
          "type": "string"
        },
        "total": {
          "format": "double",
          "description": "Order total value in given currency",
          "type": "number"
        },
        "cargoes": {
          "description": "Represents the list of cargo related to the order. Each cargo is represented by an instance of OrderCargoModel which contains details such as SKU, name, price, quantity, etc.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrderCargoModel"
          }
        },
        "parcels": {
          "description": "Represents the list of parcels related to the order. Each parcel is represented by an instance of OrderParcel which contains details such as parcel number, weight, dimensions, packed cargoes, etc.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrderParcelModel"
          }
        },
        "documents": {
          "description": "Contains the list of documents associated with the order. Each document is represented by an instance of FileModel which contains details such as file name, content encoded in base64, file type, content type.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/FileModel"
          }
        },
        "services": {
          "description": "Holds the list of services provided by the courier for the order. Each service is represented by an instance of OrderCourierServiceModel, containing its code and value.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrderCourierServiceModel"
          }
        },
        "target": {
          "$ref": "#/definitions/ClientDetailsModel",
          "description": "Order target address and contact details"
        },
        "hasAssociatedReturn": {
          "description": "If the order has associated return",
          "type": "boolean",
          "readOnly": true
        }
      }
    },
    "OrderCargoModel": {
      "required": [
        "sku",
        "quantity"
      ],
      "type": "object",
      "properties": {
        "id": {
          "description": "The unique identifier for the product in the order.",
          "type": "string"
        },
        "sku": {
          "description": "The Stock Keeping Unit, used in inventory management, main identifier for the product.",
          "type": "string"
        },
        "name": {
          "description": "The name of the product.",
          "type": "string"
        },
        "price": {
          "format": "double",
          "description": "The price of the product.",
          "type": "number"
        },
        "quantity": {
          "format": "int32",
          "description": "The quantity of the product.",
          "type": "integer"
        },
        "description": {
          "description": "A detailed description of the product.",
          "type": "string"
        },
        "barcode": {
          "description": "The barcode/EAN for the product.",
          "type": "string"
        },
        "weight": {
          "format": "double",
          "description": "The weight of the product.",
          "type": "number"
        },
        "marks": {
          "description": "Special indicators or marks related to the product.",
          "type": "string"
        },
        "url": {
          "description": "Product's URL on the website.",
          "type": "string"
        },
        "imageUrl": {
          "description": "URL for the product's image.",
          "type": "string"
        },
        "batchNumber": {
          "description": "The batch number in which product was manufactured.",
          "type": "string"
        },
        "serialNumber": {
          "description": "The serial number of the product.",
          "type": "string"
        },
        "expirationDate": {
          "format": "date-time",
          "description": "The date when product is set to expire.",
          "type": "string"
        },
        "countryOfManufacture": {
          "description": "Alpha-2 code of country where the product was manufactured.",
          "type": "string"
        },
        "hsCode": {
          "description": "The Harmonized System Code for the product, used for customs and international trade.",
          "type": "string"
        },
        "lack": {
          "description": "Indicates whether the item is unavailable in the warehouse.",
          "type": "boolean"
        },
        "lackQuantity": {
          "format": "int32",
          "description": "The quantity of the product that is unavailable in the warehouse.",
          "type": "integer"
        },
        "batchId": {
          "description": "The unique identifier for the batch in which the product is included.",
          "type": "string"
        }
      }
    },
    "OrderParcelModel": {
      "type": "object",
      "properties": {
        "code": {
          "description": "Parcel code generated by W2S or integrated system that is used for packing",
          "type": "string"
        },
        "kind": {
          "type": "string"
        },
        "courierNumber": {
          "description": "Courier number of the parcel, used for tracking",
          "type": "string"
        },
        "weight": {
          "format": "double",
          "description": "Weight of the parcel in kilograms",
          "type": "number"
        },
        "height": {
          "format": "double",
          "description": "Height of the parcel in centimeters",
          "type": "number"
        },
        "length": {
          "format": "double",
          "description": "Length of the parcel in centimeters",
          "type": "number"
        },
        "width": {
          "format": "double",
          "description": "Width of the parcel in centimeters",
          "type": "number"
        },
        "isReturnParcel": {
          "description": "If the parcel is a return parcel",
          "type": "boolean"
        },
        "items": {
          "description": "Parcel content, with SKU and quantity of each packaged item",
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrderParcelItemModel"
          }
        }
      }
    },
    "FileModel": {
      "required": [
        "fileName",
        "base64Content",
        "fileType",
        "contentType"
      ],
      "type": "object",
      "properties": {
        "fileName": {
          "description": "Represents the file's name. Its values are always in string format.",
          "type": "string"
        },
        "base64Content": {
          "description": "Contains the actual content of the file encoded in base64 string format.",
          "type": "string"
        },
        "fileType": {
          "description": "Represents the type of file. It helps in determining how to handle the content of the file.",
          "type": "string"
        },
        "contentType": {
          "description": "Indicates the Internet media type (i.e., \"MIME type\") of the file which can be used to determine \r\nthe method of opening/displaying the file.",
          "type": "string"
        }
      }
    },
    "OrderCourierServiceModel": {
      "required": [
        "code"
      ],
      "type": "object",
      "properties": {
        "code": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      }
    },
    "OrderParcelItemModel": {
      "type": "object",
      "properties": {
        "sku": {
          "description": "SKU (Stock Keeping Unit) of the item.",
          "type": "string"
        },
        "quantity": {
          "format": "int32",
          "description": "Quantity of the item in the parcel.",
          "type": "integer"
        }
      }
    },
    "OrderToCreateModel": {
      "required": [
        "id",
        "date",
        "target",
        "courier"
      ],
      "type": "object",
      "properties": {
        "id": {
          "description": "Order id",
          "type": "string"
        },
        "number": {
          "description": "Order number",
          "type": "string"
        },
        "externalNumber": {
          "description": "External order number in source system (e.g. shop, marketplace Allegro, etc.)",
          "type": "string"
        },
        "additionalExternalNumber": {
          "type": "string"
        },
        "returnLabelNumber": {
          "description": "Return label number for return shipments",
          "type": "string"
        },
        "date": {
          "format": "date-time",
          "description": "Order date",
          "type": "string"
        },
        "status": {
          "description": "Order status",
          "type": "string"
        },
        "target": {
          "$ref": "#/definitions/ClientDetailsModel",
          "description": "Order target address and contact details"
        },
        "deliveryPointId": {
          "description": "Delivery point id",
          "type": "string"
        },
        "comment": {
          "description": "Comment, usually putted on a courier label",
          "type": "string"
        },
        "description": {
          "description": "Order description, usually putted on a courier label",
          "type": "string"
        },
        "invoice": {
          "description": "Invoice number",
          "type": "string"
        },
        "courier": {
          "description": "Order courier",
          "type": "string"
        },
        "isCod": {
          "description": "Is order cash on delivery",
          "type": "boolean"
        },
        "cod": {
          "format": "double",
          "description": "Order cod value in given currency",
          "type": "number"
        },
        "deliveryCost": {
          "format": "double",
          "description": "Order delivery cost in given currency",
          "type": "number"
        },
        "discount": {
          "format": "double",
          "description": "Order discount in given currency",
          "type": "number"
        },
        "currency": {
          "description": "Order currency, Example: PLN, EUR, USD",
          "type": "string"
        },
        "total": {
          "format": "double",
          "description": "Order total value in given currency",
          "type": "number"
        },
        "cargoes": {
          "description": "Represents the list of cargo related to the order. Each cargo is represented by an instance of OrderCargoModel which contains details such as SKU, name, price, quantity, etc.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrderCargoModel"
          }
        },
        "documents": {
          "description": "Contains the list of documents associated with the order. Each document is represented by an instance of FileModel which contains details such as file name, content encoded in base64, file type, content type.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/FileModel"
          }
        },
        "services": {
          "description": "Holds the list of services provided by the courier for the order. Each service is represented by an instance of OrderCourierServiceModel, containing its code and value.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrderCourierServiceModel"
          }
        }
      }
    },
    "OrderToUpdateModel": {
      "type": "object",
      "properties": {
        "target": {
          "$ref": "#/definitions/ClientDetailsModel",
          "description": "Order target address and contact details. In case of null would be ignored during update."
        },
        "cargoes": {
          "description": "Represents the list of cargo related to the order. In case of null would be ignored during update, in other cases would overwrite order cargoes.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrderCargoModel"
          }
        },
        "isCod": {
          "description": "Is order cash on delivery. In case of null would be ignored during update.",
          "type": "boolean"
        },
        "cod": {
          "format": "double",
          "description": "Represents COD value. In case of null would be ignored during update.",
          "type": "number"
        },
        "currency": {
          "description": "Order currency, Example: PLN, EUR, USD",
          "type": "string"
        }
      }
    },
    "OrderGetResponse": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean"
        },
        "message": {
          "type": "string"
        },
        "item": {
          "$ref": "#/definitions/OrderModel"
        }
      }
    },
    "OrdersReturnsListResponse": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean"
        },
        "message": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrderReturnModel"
          }
        },
        "totalItemsCount": {
          "format": "int32",
          "type": "integer"
        },
        "totalPages": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "OrderReturnModel": {
      "type": "object",
      "properties": {
        "id": {
          "description": "The unique identifier of the order return given by customer at creation (would be empty for returns created within system).",
          "type": "string"
        },
        "orderId": {
          "description": "The unique number of the order associated with the return.",
          "type": "string"
        },
        "returnNumber": {
          "description": "The unique number of the order return.",
          "type": "string"
        },
        "returnKind": {
          "description": "Represents the type of return for an order.",
          "type": "string"
        },
        "courier": {
          "description": "Represents the courier used for the return shipment.",
          "type": "string"
        },
        "status": {
          "description": "Status of the order return.",
          "type": "string"
        },
        "courierOrderNumber": {
          "description": "The courier order number associated with the order return.",
          "type": "string"
        },
        "description": {
          "description": "Represents an order return description.",
          "type": "string"
        },
        "returnFromNumber": {
          "description": "The return from number.",
          "type": "string"
        },
        "createdAt": {
          "format": "date-time",
          "description": "Creation date of the return.",
          "type": "string"
        },
        "returnDate": {
          "format": "date-time",
          "description": "The return from date.",
          "type": "string"
        },
        "closeDate": {
          "format": "date-time",
          "description": "The return close date.",
          "type": "string"
        },
        "client": {
          "$ref": "#/definitions/ClientDetailsModel",
          "description": "Order target address and contact details"
        },
        "cargoes": {
          "description": "Represents the list of cargoes related to the order return. Each cargo is represented by an instance of OrderReturnCargoModel which contains details such as SKU, name, price, quantity, damaged quantity etc.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrderReturnCargoModel"
          }
        },
        "documents": {
          "description": "Contains the list of documents associated with the order return. Each document is represented by an instance of FileModel which contains details such as file name, content encoded in base64, file type, content type.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/FileModel"
          }
        }
      }
    },
    "OrderReturnCargoModel": {
      "required": [
        "sku",
        "quantity"
      ],
      "type": "object",
      "properties": {
        "sku": {
          "description": "The Stock Keeping Unit, used in inventory management, main identifier for the product.",
          "type": "string"
        },
        "name": {
          "description": "The name of the product.",
          "type": "string"
        },
        "quantity": {
          "format": "int32",
          "description": "The quantity of the product.",
          "type": "integer"
        },
        "quantityDamaged": {
          "format": "int32",
          "description": "The quantity of the product that are damaged.",
          "type": "integer"
        },
        "quantityPartiallyDamaged": {
          "format": "int32",
          "description": "The quantity of the product that are partially damaged.",
          "type": "integer"
        },
        "quantityUndamaged": {
          "format": "int32",
          "description": "The quantity of the product that is undamaged.",
          "type": "integer"
        },
        "description": {
          "description": "A detailed description of the product.",
          "type": "string"
        },
        "barcode": {
          "description": "The barcode/EAN for the product.",
          "type": "string"
        },
        "batchNumber": {
          "description": "The batch number in which product was manufactured.",
          "type": "string"
        },
        "batchId": {
          "type": "string"
        },
        "expirationDate": {
          "format": "date-time",
          "description": "The date when product is set to expire.",
          "type": "string"
        }
      }
    },
    "ReturnSearchModel": {
      "type": "object",
      "properties": {
        "ids": {
          "description": "The unique identifiers of the search entities.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "relatedIds": {
          "description": "The unique identifiers of the related entities (e.g. orders related to return).",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "createdFrom": {
          "format": "date-time",
          "description": "Get orders created from this date.",
          "type": "string"
        },
        "createdTo": {
          "format": "date-time",
          "description": "Get orders created to this date.",
          "type": "string"
        },
        "closeFrom": {
          "format": "date-time",
          "description": "Get returns closed from this date.",
          "type": "string"
        },
        "closeTo": {
          "format": "date-time",
          "description": "Get returns closed to this date.",
          "type": "string"
        },
        "statuses": {
          "description": "Get orders with this statuses.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "page": {
          "format": "int32",
          "description": "Page number.",
          "type": "integer"
        },
        "sortBy": {
          "description": "Field to sort by. Default is creation date.",
          "enum": [
            "createdAt",
            "closeDate",
            "returnDate"
          ],
          "type": "string"
        },
        "sortDirection": {
          "description": "Sort direction, either ascending or descending - default is descending.",
          "enum": [
            "asc",
            "desc"
          ],
          "type": "string"
        }
      }
    },
    "CustomerProductGetResponse": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean"
        },
        "message": {
          "type": "string"
        },
        "item": {
          "$ref": "#/definitions/CustomerProductModel"
        }
      }
    },
    "CustomerProductModel": {
      "description": "Represents a model that contains the full data about a customer's product.",
      "type": "object",
      "properties": {
        "disabled": {
          "description": "Gets or sets a value indicating whether the product is disabled.",
          "type": "boolean"
        },
        "imgUrl": {
          "description": "The URL of the product's image.",
          "type": "string"
        },
        "logical_attributes": {
          "description": "List of names of active product logical attributes: fragile, insert, isFood, isBio, trackExpirationDate, trackBatchNumber, trackSerialNumber",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "weight": {
          "format": "double",
          "description": "The weight of the product.",
          "type": "number"
        },
        "length": {
          "format": "int32",
          "description": "The length of the product.",
          "type": "integer"
        },
        "width": {
          "format": "int32",
          "description": "The width of the product.",
          "type": "integer"
        },
        "height": {
          "format": "int32",
          "description": "The height of the product.",
          "type": "integer"
        },
        "cStoreId": {
          "description": "The id of the warehouse where product is available.",
          "type": "string"
        },
        "createdBy": {
          "description": "Name of user who created the product.",
          "type": "string"
        },
        "created": {
          "format": "date-time",
          "description": "Date when the product was created.",
          "type": "string"
        },
        "updatedBy": {
          "description": "Name of user who updated the product.",
          "type": "string"
        },
        "updated": {
          "format": "date-time",
          "description": "Date when the product was updated.",
          "type": "string"
        },
        "sku": {
          "description": "The SKU of the product.",
          "type": "string"
        },
        "productName": {
          "description": "The name of the product.",
          "type": "string"
        },
        "value_attributes": {
          "description": "Dictionary (name-value collection) of active product attributes with values",
          "default": {
            "key": "value",
            "key2": "1.00"
          },
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "totalQuantity": {
          "format": "int32",
          "description": "Quantity of the product available in the warehouses.",
          "type": "integer"
        },
        "barcodes": {
          "description": "The barcodes of the product.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "CustomerProductSearchModel": {
      "type": "object",
      "properties": {
        "skus": {
          "description": "One or more of products sku",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "barcodes": {
          "description": "ne or more of product barcodes/EANs",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "disabled": {
          "description": "Specify if to return disabled products (false by default)",
          "type": "boolean"
        },
        "createdFrom": {
          "format": "date-time",
          "description": "Get products created from this date.",
          "type": "string"
        },
        "createdTo": {
          "format": "date-time",
          "description": "Get products created to this date.",
          "type": "string"
        },
        "page": {
          "format": "int32",
          "description": "Page number.",
          "type": "integer"
        }
      }
    },
    "CustomerProductGetAllResponse": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean"
        },
        "message": {
          "type": "string"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CustomerProductModel"
          }
        },
        "totalItemsCount": {
          "format": "int32",
          "type": "integer"
        },
        "totalPages": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "CustomerProductToCreateModel": {
      "description": "Represents a model that contains the necessary data to create, or modify a customer's product.",
      "type": "object",
      "properties": {
        "sku": {
          "description": "The SKU of the product.",
          "type": "string"
        },
        "disabled": {
          "description": "Gets or sets a value indicating whether the product is disabled.",
          "type": "boolean"
        },
        "productName": {
          "description": "The name of the product.",
          "type": "string"
        },
        "imgUrl": {
          "description": "The URL of the product's image.",
          "type": "string"
        },
        "logical_attributes": {
          "description": "List of names of active product logical attributes: fragile, insert, isFood, isBio, trackExpirationDate, trackBatchNumber, trackSerialNumber",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "value_attributes": {
          "description": "Dictionary (name-value collection) of active product attributes with values",
          "default": {
            "key": "value",
            "key2": "1.00"
          },
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "weight": {
          "format": "double",
          "description": "The weight of the product.",
          "type": "number"
        },
        "length": {
          "format": "double",
          "description": "The length of the product.",
          "type": "number"
        },
        "width": {
          "format": "double",
          "description": "The width of the product.",
          "type": "number"
        },
        "height": {
          "format": "double",
          "description": "The height of the product.",
          "type": "number"
        },
        "barcode": {
          "description": "The barcodes of the product.",
          "type": "string"
        },
        "cStoreId": {
          "description": "The id of the warehouse where product is available.",
          "type": "string"
        },
        "barcodes": {
          "description": "",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "ResponseItem[CustomerProductWmsDataModel[]]": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean"
        },
        "message": {
          "type": "string"
        },
        "item": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CustomerProductWmsDataModel"
          }
        }
      }
    },
    "CustomerProductWmsDataModel": {
      "type": "object",
      "properties": {
        "batchNumber": {
          "description": "The batch number associated with a customer product.",
          "type": "string"
        },
        "expirationDate": {
          "format": "date-time",
          "description": "Expiration date of the product.",
          "type": "string"
        },
        "reservedQuantity": {
          "format": "int32",
          "description": "The reserved quantity of the product.",
          "type": "integer"
        },
        "availableQuantity": {
          "format": "int32",
          "description": "The quantity of a product that is available for use or sale.",
          "type": "integer"
        },
        "sku": {
          "description": "The SKU of the product.",
          "type": "string"
        },
        "productName": {
          "description": "The name of the product.",
          "type": "string"
        },
        "value_attributes": {
          "description": "Dictionary (name-value collection) of active product attributes with values",
          "default": {
            "key": "value",
            "key2": "1.00"
          },
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "totalQuantity": {
          "format": "int32",
          "description": "Quantity of the product available in the warehouses.",
          "type": "integer"
        },
        "barcodes": {
          "description": "The barcodes of the product.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "OrderReturnToCreateModel": {
      "type": "object",
      "properties": {
        "id": {
          "description": "The unique identifier of the return",
          "type": "string"
        },
        "orderId": {
          "description": "The unique number of the order associated with the return.",
          "type": "string"
        },
        "returnKind": {
          "description": "Represents the type of return for an order.",
          "type": "string"
        },
        "courier": {
          "description": "Represents the courier used for the return shipment.",
          "type": "string"
        },
        "courierOrderNumber": {
          "description": "The courier order number associated with the order return.",
          "type": "string"
        },
        "description": {
          "description": "Represents an order return description.",
          "type": "string"
        },
        "returnFromNumber": {
          "description": "The return from number.",
          "type": "string"
        },
        "returnDate": {
          "format": "date-time",
          "description": "The return from date.",
          "type": "string"
        },
        "client": {
          "$ref": "#/definitions/ClientDetailsModel",
          "description": "Details of the client who is returning the order."
        },
        "cargoes": {
          "description": "The cargo of the return.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/OrderReturnCargoModel"
          }
        }
      }
    }
  },
  "securityDefinitions": {
    "W2S-API-TOKEN": {
      "type": "apiKey",
      "description": "API Key Authentication",
      "name": "W2S-API-TOKEN",
      "in": "header"
    }
  }
}