# Models

## The AvailabilityDto object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"AvailabilityDto":{"type":"object","properties":{"stockLevel":{"type":"number","description":"Stock level of the product, expressed as a number."},"available":{"type":"boolean","description":"Flag indicating whether the product is available."},"popularity":{"type":"integer","description":"Popularity of the product, expressed as a number."},"distributionChannel":{"$ref":"#/components/schemas/DistributionChannel"},"mixins":{"type":"object","description":"The field contains mixins values.","additionalProperties":true},"metadata":{"type":"object","properties":{"mixins":{"type":"object","description":"Links to the mixin schemas.","additionalProperties":{"type":"string"}}}}}},"DistributionChannel":{"type":"string","description":"Name of the product distribution channel.","enum":["ASSORTMENT","HOME_DELIVERY","PICKUP"]}}}}
```

## The AvailabilityBulkDto object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"AvailabilityBulkDto":{"type":"object","properties":{"productId":{"type":"string","description":"Unique identifier of the product."},"site":{"type":"string","description":"Unique identifier of the site."},"stockLevel":{"type":"number","description":"Stock level of the product, expressed as a number."},"available":{"type":"boolean","description":"Flag indicating whether the product is available."},"popularity":{"type":"integer","description":"Popularity of the product, expressed as a number."},"distributionChannel":{"$ref":"#/components/schemas/DistributionChannel"},"mixins":{"type":"object","description":"The field contains mixins values.","additionalProperties":true},"metadata":{"type":"object","properties":{"mixins":{"type":"object","description":"Links to the mixin schemas.","additionalProperties":{"type":"string"}}}}}},"DistributionChannel":{"type":"string","description":"Name of the product distribution channel.","enum":["ASSORTMENT","HOME_DELIVERY","PICKUP"]}}}}
```

## The AvailabilityDeleteBulkDto object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"AvailabilityDeleteBulkDto":{"type":"object","properties":{"productId":{"type":"string","description":"Unique identifier of the product."},"site":{"type":"string","description":"Unique identifier of the site."}}}}}}
```

## The Availability object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"Availability":{"description":"Availability details.","type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the availability.\n\n**Note**: The value should be provided in the `site`:`productId` format."},"site":{"type":"string","description":"Site code, defined when the site is created. The value should match the `site` query/path parameter value."},"stockLevel":{"type":"number","description":"Stock level of the product, expressed as a number."},"available":{"type":"boolean","description":"Flag indicating whether the product is available."},"productId":{"type":"string","description":"Unique identifier of the product, generated when the product is created through the Product Service."},"vendorId":{"type":"string","description":"Id of a vendor to which the availability belongs."},"popularity":{"type":"integer","description":"Popularity of the product, expressed as a number."},"distributionChannel":{"$ref":"#/components/schemas/DistributionChannel"},"mixins":{"type":"object","description":"The field contains mixins values.","additionalProperties":true},"metadata":{"type":"object","properties":{"mixins":{"type":"object","description":"Links to the mixin schemas.","additionalProperties":{"type":"string"}},"createdAt":{"type":"string","format":"date-time","description":"Date and time when the availability was created."},"modifiedAt":{"type":"string","format":"date-time","description":"Date and time when the availability was last updated."}}}}},"DistributionChannel":{"type":"string","description":"Name of the product distribution channel.","enum":["ASSORTMENT","HOME_DELIVERY","PICKUP"]}}}}
```

## The AvailabilityWithBundle object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"AvailabilityWithBundle":{"description":"Availability details.","type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the availability.\n\n**Note**: The value should be provided in the `site`:`productId` format."},"site":{"type":"string","description":"Site code, defined when the site is created. The value should match the `site` query/path parameter value."},"stockLevel":{"type":"number","description":"Stock level of the product, expressed as a number."},"available":{"type":"boolean","description":"Flag indicating whether the product is available."},"productId":{"type":"string","description":"Unique identifier of the product, generated when the product is created through the Product Service."},"vendorId":{"type":"string","description":"Id of a vendor to which the availability belongs."},"popularity":{"type":"integer","description":"Popularity of the product, expressed as a number."},"distributionChannel":{"$ref":"#/components/schemas/DistributionChannel"},"bundleAvailabilities":{"$ref":"#/components/schemas/AvailabilityList"},"mixins":{"type":"object","description":"The field contains mixins values.","additionalProperties":true},"metadata":{"type":"object","properties":{"mixins":{"type":"object","description":"Links to the mixin schemas.","additionalProperties":{"type":"string"}},"createdAt":{"type":"string","format":"date-time","description":"Date and time when the availability was created."},"modifiedAt":{"type":"string","format":"date-time","description":"Date and time when the availability was last updated."}}}}},"DistributionChannel":{"type":"string","description":"Name of the product distribution channel.","enum":["ASSORTMENT","HOME_DELIVERY","PICKUP"]},"AvailabilityList":{"type":"array","items":{"$ref":"#/components/schemas/Availability"}},"Availability":{"description":"Availability details.","type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the availability.\n\n**Note**: The value should be provided in the `site`:`productId` format."},"site":{"type":"string","description":"Site code, defined when the site is created. The value should match the `site` query/path parameter value."},"stockLevel":{"type":"number","description":"Stock level of the product, expressed as a number."},"available":{"type":"boolean","description":"Flag indicating whether the product is available."},"productId":{"type":"string","description":"Unique identifier of the product, generated when the product is created through the Product Service."},"vendorId":{"type":"string","description":"Id of a vendor to which the availability belongs."},"popularity":{"type":"integer","description":"Popularity of the product, expressed as a number."},"distributionChannel":{"$ref":"#/components/schemas/DistributionChannel"},"mixins":{"type":"object","description":"The field contains mixins values.","additionalProperties":true},"metadata":{"type":"object","properties":{"mixins":{"type":"object","description":"Links to the mixin schemas.","additionalProperties":{"type":"string"}},"createdAt":{"type":"string","format":"date-time","description":"Date and time when the availability was created."},"modifiedAt":{"type":"string","format":"date-time","description":"Date and time when the availability was last updated."}}}}}}}}
```

## The AvailabilityList object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"AvailabilityList":{"type":"array","items":{"$ref":"#/components/schemas/Availability"}},"Availability":{"description":"Availability details.","type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the availability.\n\n**Note**: The value should be provided in the `site`:`productId` format."},"site":{"type":"string","description":"Site code, defined when the site is created. The value should match the `site` query/path parameter value."},"stockLevel":{"type":"number","description":"Stock level of the product, expressed as a number."},"available":{"type":"boolean","description":"Flag indicating whether the product is available."},"productId":{"type":"string","description":"Unique identifier of the product, generated when the product is created through the Product Service."},"vendorId":{"type":"string","description":"Id of a vendor to which the availability belongs."},"popularity":{"type":"integer","description":"Popularity of the product, expressed as a number."},"distributionChannel":{"$ref":"#/components/schemas/DistributionChannel"},"mixins":{"type":"object","description":"The field contains mixins values.","additionalProperties":true},"metadata":{"type":"object","properties":{"mixins":{"type":"object","description":"Links to the mixin schemas.","additionalProperties":{"type":"string"}},"createdAt":{"type":"string","format":"date-time","description":"Date and time when the availability was created."},"modifiedAt":{"type":"string","format":"date-time","description":"Date and time when the availability was last updated."}}}}},"DistributionChannel":{"type":"string","description":"Name of the product distribution channel.","enum":["ASSORTMENT","HOME_DELIVERY","PICKUP"]}}}}
```

## The AvailabilityWithBundleList object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"AvailabilityWithBundleList":{"type":"array","items":{"$ref":"#/components/schemas/AvailabilityWithBundle"}},"AvailabilityWithBundle":{"description":"Availability details.","type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the availability.\n\n**Note**: The value should be provided in the `site`:`productId` format."},"site":{"type":"string","description":"Site code, defined when the site is created. The value should match the `site` query/path parameter value."},"stockLevel":{"type":"number","description":"Stock level of the product, expressed as a number."},"available":{"type":"boolean","description":"Flag indicating whether the product is available."},"productId":{"type":"string","description":"Unique identifier of the product, generated when the product is created through the Product Service."},"vendorId":{"type":"string","description":"Id of a vendor to which the availability belongs."},"popularity":{"type":"integer","description":"Popularity of the product, expressed as a number."},"distributionChannel":{"$ref":"#/components/schemas/DistributionChannel"},"bundleAvailabilities":{"$ref":"#/components/schemas/AvailabilityList"},"mixins":{"type":"object","description":"The field contains mixins values.","additionalProperties":true},"metadata":{"type":"object","properties":{"mixins":{"type":"object","description":"Links to the mixin schemas.","additionalProperties":{"type":"string"}},"createdAt":{"type":"string","format":"date-time","description":"Date and time when the availability was created."},"modifiedAt":{"type":"string","format":"date-time","description":"Date and time when the availability was last updated."}}}}},"DistributionChannel":{"type":"string","description":"Name of the product distribution channel.","enum":["ASSORTMENT","HOME_DELIVERY","PICKUP"]},"AvailabilityList":{"type":"array","items":{"$ref":"#/components/schemas/Availability"}},"Availability":{"description":"Availability details.","type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the availability.\n\n**Note**: The value should be provided in the `site`:`productId` format."},"site":{"type":"string","description":"Site code, defined when the site is created. The value should match the `site` query/path parameter value."},"stockLevel":{"type":"number","description":"Stock level of the product, expressed as a number."},"available":{"type":"boolean","description":"Flag indicating whether the product is available."},"productId":{"type":"string","description":"Unique identifier of the product, generated when the product is created through the Product Service."},"vendorId":{"type":"string","description":"Id of a vendor to which the availability belongs."},"popularity":{"type":"integer","description":"Popularity of the product, expressed as a number."},"distributionChannel":{"$ref":"#/components/schemas/DistributionChannel"},"mixins":{"type":"object","description":"The field contains mixins values.","additionalProperties":true},"metadata":{"type":"object","properties":{"mixins":{"type":"object","description":"Links to the mixin schemas.","additionalProperties":{"type":"string"}},"createdAt":{"type":"string","format":"date-time","description":"Date and time when the availability was created."},"modifiedAt":{"type":"string","format":"date-time","description":"Date and time when the availability was last updated."}}}}}}}}
```

## The BulkResponse object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"BulkResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the affected availability (in the format <site>:&lt;<productId>)."},"index":{"type":"integer","description":"Index of the processed item, matching the item position in request body."},"code":{"type":"integer","description":"HTTP Status Code."},"status":{"type":"string","description":"HTTP Status description."},"message":{"type":"string","description":"Error message. Present only when an error occurs (HTTP status code from groups `4xx` or `5xx`)"}}}}}}
```

## The DistributionChannel object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"DistributionChannel":{"type":"string","description":"Name of the product distribution channel.","enum":["ASSORTMENT","HOME_DELIVERY","PICKUP"]}}}}
```

## The Location object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"Location":{"description":"Physical location of the product.","type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the location. \n\n**Note**: The value should be provided in the `site`:`rack` format."},"site":{"type":"string","description":"Site code, defined when the site is created. The value should match the `site` query/path parameter value."},"rack":{"type":"string","description":"Rack number."},"rackName":{"type":"string","description":"Name of the rack."},"order":{"type":"number","description":"Order of the location, expressed as a number.","minimum":0}},"required":["id","site","order"]}}}}
```

## The LocationList object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"LocationList":{"type":"array","items":{"$ref":"#/components/schemas/Location"}},"Location":{"description":"Physical location of the product.","type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the location. \n\n**Note**: The value should be provided in the `site`:`rack` format."},"site":{"type":"string","description":"Site code, defined when the site is created. The value should match the `site` query/path parameter value."},"rack":{"type":"string","description":"Rack number."},"rackName":{"type":"string","description":"Name of the rack."},"order":{"type":"number","description":"Order of the location, expressed as a number.","minimum":0}},"required":["id","site","order"]}}}}
```

## The LocationOrder object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"LocationOrder":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the location."},"order":{"type":"number","description":"Order of the location, expressed as a number."}}}}}}
```

## The LocationOrderList object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"LocationOrderList":{"type":"array","items":{"$ref":"#/components/schemas/LocationOrder"}},"LocationOrder":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the location."},"order":{"type":"number","description":"Order of the location, expressed as a number."}}}}}}
```

## The LocationSearch object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"LocationSearch":{"type":"object","properties":{"site":{"type":"string","description":"Site code, defined when the site is created."},"productIds":{"type":"array","description":"List of product IDs. A product IDs is generated when the product is created through the Product Service.","items":{"type":"string"}}}}}}}
```

## The GenericLocation object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"GenericLocation":{"type":"object","properties":{"site":{"type":"string","description":"Site code, defined when the site is created."},"zone":{"type":"string","description":"Unique identifier of the zone."},"rack":{"type":"string","description":"Rack number."},"rackName":{"type":"string","description":"Name of the rack."},"shelf":{"type":"string","description":"Unique identifier of the shelf."},"section":{"type":"string","description":"Unique identifier of the section."},"bin":{"type":"string","description":"Unique identifier of the bin."},"order":{"type":"number","description":"Order of the location, expressed as a number."}}}}}}
```

## The ProductLocation object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"ProductLocation":{"type":"object","properties":{"productId":{"type":"string","description":"Unique identifier of the product, generated when the product is created through the Product Service."},"locations":{"type":"array","description":"List of product physical locations.","items":{"$ref":"#/components/schemas/GenericLocation"}}}},"GenericLocation":{"type":"object","properties":{"site":{"type":"string","description":"Site code, defined when the site is created."},"zone":{"type":"string","description":"Unique identifier of the zone."},"rack":{"type":"string","description":"Rack number."},"rackName":{"type":"string","description":"Name of the rack."},"shelf":{"type":"string","description":"Unique identifier of the shelf."},"section":{"type":"string","description":"Unique identifier of the section."},"bin":{"type":"string","description":"Unique identifier of the bin."},"order":{"type":"number","description":"Order of the location, expressed as a number."}}}}}}
```

## The ProductLocationList object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"ProductLocationList":{"type":"array","items":{"$ref":"#/components/schemas/ProductLocation"},"description":""},"ProductLocation":{"type":"object","properties":{"productId":{"type":"string","description":"Unique identifier of the product, generated when the product is created through the Product Service."},"locations":{"type":"array","description":"List of product physical locations.","items":{"$ref":"#/components/schemas/GenericLocation"}}}},"GenericLocation":{"type":"object","properties":{"site":{"type":"string","description":"Site code, defined when the site is created."},"zone":{"type":"string","description":"Unique identifier of the zone."},"rack":{"type":"string","description":"Rack number."},"rackName":{"type":"string","description":"Name of the rack."},"shelf":{"type":"string","description":"Unique identifier of the shelf."},"section":{"type":"string","description":"Unique identifier of the section."},"bin":{"type":"string","description":"Unique identifier of the bin."},"order":{"type":"number","description":"Order of the location, expressed as a number."}}}}}}
```

## The IdResponse object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"IdResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the created resource."}}}}}}
```

## The SuccessResponse object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"SuccessResponse":{"type":"object","properties":{"message":{"type":"string","description":"The response message of the operation."},"code":{"type":"number","description":"The result code of the operation."}}}}}}
```

## The BadRequest400 object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"BadRequest400":{"properties":{"code":{"type":"integer","description":"HTTP Status Code."},"status":{"type":"string","description":"HTTP Status Description."},"message":{"type":"string","description":"Error message."},"_embedded":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"message":{"description":"Detailed message of the exception.","type":"string"}}}}}}}}}}}
```

## The Unauthorized401 object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"Unauthorized401":{"properties":{"fault":{"type":"object","properties":{"faultstring":{"type":"string"},"detail":{"type":"object","properties":{"errorcode":{"type":"string"}}}}}}}}}}
```

## The Forbidden403 object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"Forbidden403":{"properties":{"code":{"type":"integer","description":"HTTP Status Code."},"status":{"type":"string","description":"HTTP Status Description."},"message":{"type":"string","description":"Error message."}}}}}}
```

## The NotFound404 object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"NotFound404":{"properties":{"code":{"type":"integer","description":"HTTP Status Code."},"message":{"type":"string","description":"Detailed error message."}}}}}}
```

## The Conflict409 object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"Conflict409":{"properties":{"code":{"type":"integer","description":"HTTP Status Code."},"message":{"type":"string","description":"Detailed error message."}}}}}}
```

## The UnexpectedError object

```json
{"openapi":"3.0.0","info":{"title":"Availability Service","version":"0.0.1"},"components":{"schemas":{"UnexpectedError":{"properties":{"code":{"type":"integer","description":"HTTP Status Code."},"status":{"type":"string","description":"HTTP Status."},"message":{"type":"string","description":"Detailed error message"}}}}}}
```
