# Storage Locations (Inventory)

Endpoints to create, update and read storage locations and zones.

## GET /api/facilities/{facilityId}/storagelocations

> List facility storage locations

```json
{"openapi":"3.0.1","info":{"title":"fulfillmenttools","version":"VERSIONLESS"},"tags":[{"description":"Endpoints to create, update and read storage locations and zones.","name":"Storage Locations (Inventory)"}],"servers":[{"url":"https://{tenant}.api.fulfillmenttools.com","variables":{"tenant":{"default":"your-tenant-name"}}}],"security":[{"BearerToken":[]}],"components":{"securitySchemes":{"BearerToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"StorageLocation":{"allOf":[{"$ref":"#/components/schemas/StorageLocationForReplacement"},{"$ref":"#/components/schemas/VersionedResource"}],"properties":{"facilityRef":{"description":"The id of the facility reference.","type":"string"},"id":{"description":"The id of this storage location","type":"string"},"schemaVersion":{"type":"number"},"traitConfig":{"$ref":"#/components/schemas/StorageLocationTraitConfig"},"traits":{"description":"The traits of this storage location","items":{"$ref":"#/components/schemas/StorageLocationTrait"},"type":"array"},"zoneName":{"deprecated":true,"description":"Deprecated! This field will not be filled in newly created storage locations. Resolve the zone name separately via the facilities/{id}/zones endpoint. The name of the Zone to which this storage location belongs","type":"string"}},"required":["id","facilityRef","traits"],"type":"object","xml":{"name":"StorageLocation"},"title":"StorageLocation","description":"StorageLocation"},"StorageLocationForReplacement":{"allOf":[{"$ref":"#/components/schemas/StorageLocationForCreation"}],"properties":{"version":{"format":"int64","type":"integer"}},"required":["version"],"type":"object","xml":{"name":"StorageLocationForReplacement"},"title":"StorageLocationForReplacement","description":"StorageLocationForReplacement"},"StorageLocationForCreation":{"allOf":[{"$ref":"#/components/schemas/CustomAttributesResource"}],"properties":{"information":{"description":"A free text information about this storage location, max length 1024","maxLength":1024,"type":"string"},"name":{"description":"The name of this storage location","maxLength":15,"type":"string"},"runningSequences":{"description":"The Sequence item/s of this location","items":{"$ref":"#/components/schemas/StorageLocationSequenceItem"},"maxItems":10,"type":"array"},"scannableCodes":{"description":"Barcodes representing this storage location","items":{"type":"string"},"maxItems":5,"type":"array"},"tenantLocationId":{"description":"The internal tenant id for this location","type":"string"},"traitConfig":{"$ref":"#/components/schemas/StorageLocationTraitConfig"},"traits":{"description":"The traits of this storage location, includes both local config and and defaults. Do not use to write to traits, use traitConfig instead.","items":{"$ref":"#/components/schemas/StorageLocationTrait"},"type":"array"},"type":{"$ref":"#/components/schemas/StorageLocationType"},"zoneName":{"description":"The name of the Zone to which this storage location belongs","type":"string"},"zoneRef":{"description":"The id of the Zone to which this storage location belongs","type":"string"}},"required":["name","runningSequences","scannableCodes","type"],"type":"object","xml":{"name":"StorageLocationForCreation"},"title":"StorageLocationForCreation","description":"StorageLocationForCreation"},"CustomAttributesResource":{"properties":{"customAttributes":{"description":"Attributes that can be added to this entity. These attributes **cannot** be used within fulfillment processes, but enable you to attach custom data from your systems to fulfillmenttools entities.","nullable":true,"type":"object"}},"title":"CustomAttributesResource","type":"object","description":"CustomAttributesResource"},"StorageLocationSequenceItem":{"properties":{"nextStorageLocationRef":{"description":"The next storage from which to pick up after this one","type":"string"},"previousStorageLocationRef":{"description":"The previous storage from which to pick up after this one","type":"string"},"score":{"deprecated":true,"description":"Running sequence score - read-only","type":"number"},"type":{"$ref":"#/components/schemas/StorageLocationSequenceType"}},"required":["type"],"type":"object","xml":{"name":"StorageLocationSequenceItem"},"title":"StorageLocationSequenceItem","description":"StorageLocationSequenceItem"},"StorageLocationSequenceType":{"description":"Describes the type of a storage location sequence type\n  * `PICKING_SEQUENCE`- The sequence in wich the storage locations are picked.\n  * `RESTOW_SEQUENCE`- The sequence in wich the storage locations are restowed.","enum":["PICKING_SEQUENCE","RESTOW_SEQUENCE"],"type":"string","xml":{"name":"StorageLocationType"},"title":"StorageLocationSequenceType"},"StorageLocationTraitConfig":{"description":"The configuration of the traits of this storage location","items":{"properties":{"enabled":{"type":"boolean"},"trait":{"$ref":"#/components/schemas/StorageLocationTrait"}},"required":["trait","enabled"],"type":"object"},"type":"array","title":"StorageLocationTraitConfig"},"StorageLocationTrait":{"description":"Describes what kind of actions this stock is available for\n  * `PICKABLE`- The stock is available for picking\n  * `ACCESSIBLE`- The stock is available for stock movements (stowing, inbound, etc)\n  * `KEEP_ON_ZERO`- The stock will not be deleted when emptied\n  * `OUTBOUND`- The stock is intended for outbound processes\n  * `IN_MOTION`- The stock is in motion, used by StowJobs.","enum":["PICKABLE","ACCESSIBLE","KEEP_ON_ZERO","OUTBOUND","IN_MOTION"],"type":"string","xml":{"name":"StorageLocationTrait"},"title":"StorageLocationTrait"},"StorageLocationType":{"description":"Describes the kind of a storage location:\n  * `SINGLE_STORAGE`- it is only allowed to store stock with the same tenantArticleId here\n  * `BULK_STORAGE`- stocks belonging to different tenantArticleIds can be stored here","enum":["SINGLE_STORAGE","BULK_STORAGE"],"type":"string","xml":{"name":"StorageLocationType"},"title":"StorageLocationType"},"VersionedResource":{"properties":{"created":{"description":"The date this entity was created at the platform. This value is generated by the service.","format":"date-time","type":"string"},"lastModified":{"description":"The date this entity was modified last. This value is generated by the service.","format":"date-time","type":"string"},"version":{"description":"The version of the document to be used in optimistic locking mechanisms.","format":"int64","type":"integer"}},"required":["version"],"type":"object","title":"VersionedResource","description":"VersionedResource"},"ApiError":{"items":{"$ref":"#/components/schemas/ErrorInner"},"type":"array","xml":{"name":"ApiError"},"title":"ApiError","description":"ApiError"},"ErrorInner":{"properties":{"description":{"type":"string"},"requestVersion":{"description":"The version provided within an invalid request.","format":"int64","type":"integer"},"summary":{"type":"string"},"version":{"format":"int64","type":"integer"}},"required":["summary"],"type":"object","title":"ErrorInner","description":"ErrorInner"}}},"paths":{"/api/facilities/{facilityId}/storagelocations":{"get":{"description":"","operationId":"getFacilityStorageLocations","parameters":[{"description":"ID of facility from which you want to get the storage locations. Also accepts tenantFacilityId in urn format (e.g. urn:fft:facility:tenantFacilityId:{your-tenant-facility-id})","in":"path","name":"facilityId","required":true,"schema":{"type":"string"}},{"description":"all entities after given Id","in":"query","name":"startAfterId","required":false,"schema":{"type":"string"}},{"description":"number of entities to show","in":"query","name":"size","required":false,"schema":{"default":25,"type":"integer"}},{"description":"limit result to storage locations with scannable code","in":"query","name":"scannableCode","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/StorageLocation"},"type":"array"}}},"description":"Facility was found & you are allowed to get the storage locations. The result is in the body."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user is not allowed to operate against this API instance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user, although recognized, is not authorized to use this endpoint"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Facility not found"}},"summary":"List facility storage locations","tags":["Storage Locations (Inventory)"]}}}}
```

## Create facility storage location

> Creates a new storage location in this facility.

```json
{"openapi":"3.0.1","info":{"title":"fulfillmenttools","version":"VERSIONLESS"},"tags":[{"description":"Endpoints to create, update and read storage locations and zones.","name":"Storage Locations (Inventory)"}],"servers":[{"url":"https://{tenant}.api.fulfillmenttools.com","variables":{"tenant":{"default":"your-tenant-name"}}}],"security":[{"BearerToken":[]}],"components":{"securitySchemes":{"BearerToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"StorageLocationForCreation":{"allOf":[{"$ref":"#/components/schemas/CustomAttributesResource"}],"properties":{"information":{"description":"A free text information about this storage location, max length 1024","maxLength":1024,"type":"string"},"name":{"description":"The name of this storage location","maxLength":15,"type":"string"},"runningSequences":{"description":"The Sequence item/s of this location","items":{"$ref":"#/components/schemas/StorageLocationSequenceItem"},"maxItems":10,"type":"array"},"scannableCodes":{"description":"Barcodes representing this storage location","items":{"type":"string"},"maxItems":5,"type":"array"},"tenantLocationId":{"description":"The internal tenant id for this location","type":"string"},"traitConfig":{"$ref":"#/components/schemas/StorageLocationTraitConfig"},"traits":{"description":"The traits of this storage location, includes both local config and and defaults. Do not use to write to traits, use traitConfig instead.","items":{"$ref":"#/components/schemas/StorageLocationTrait"},"type":"array"},"type":{"$ref":"#/components/schemas/StorageLocationType"},"zoneName":{"description":"The name of the Zone to which this storage location belongs","type":"string"},"zoneRef":{"description":"The id of the Zone to which this storage location belongs","type":"string"}},"required":["name","runningSequences","scannableCodes","type"],"type":"object","xml":{"name":"StorageLocationForCreation"},"title":"StorageLocationForCreation","description":"StorageLocationForCreation"},"CustomAttributesResource":{"properties":{"customAttributes":{"description":"Attributes that can be added to this entity. These attributes **cannot** be used within fulfillment processes, but enable you to attach custom data from your systems to fulfillmenttools entities.","nullable":true,"type":"object"}},"title":"CustomAttributesResource","type":"object","description":"CustomAttributesResource"},"StorageLocationSequenceItem":{"properties":{"nextStorageLocationRef":{"description":"The next storage from which to pick up after this one","type":"string"},"previousStorageLocationRef":{"description":"The previous storage from which to pick up after this one","type":"string"},"score":{"deprecated":true,"description":"Running sequence score - read-only","type":"number"},"type":{"$ref":"#/components/schemas/StorageLocationSequenceType"}},"required":["type"],"type":"object","xml":{"name":"StorageLocationSequenceItem"},"title":"StorageLocationSequenceItem","description":"StorageLocationSequenceItem"},"StorageLocationSequenceType":{"description":"Describes the type of a storage location sequence type\n  * `PICKING_SEQUENCE`- The sequence in wich the storage locations are picked.\n  * `RESTOW_SEQUENCE`- The sequence in wich the storage locations are restowed.","enum":["PICKING_SEQUENCE","RESTOW_SEQUENCE"],"type":"string","xml":{"name":"StorageLocationType"},"title":"StorageLocationSequenceType"},"StorageLocationTraitConfig":{"description":"The configuration of the traits of this storage location","items":{"properties":{"enabled":{"type":"boolean"},"trait":{"$ref":"#/components/schemas/StorageLocationTrait"}},"required":["trait","enabled"],"type":"object"},"type":"array","title":"StorageLocationTraitConfig"},"StorageLocationTrait":{"description":"Describes what kind of actions this stock is available for\n  * `PICKABLE`- The stock is available for picking\n  * `ACCESSIBLE`- The stock is available for stock movements (stowing, inbound, etc)\n  * `KEEP_ON_ZERO`- The stock will not be deleted when emptied\n  * `OUTBOUND`- The stock is intended for outbound processes\n  * `IN_MOTION`- The stock is in motion, used by StowJobs.","enum":["PICKABLE","ACCESSIBLE","KEEP_ON_ZERO","OUTBOUND","IN_MOTION"],"type":"string","xml":{"name":"StorageLocationTrait"},"title":"StorageLocationTrait"},"StorageLocationType":{"description":"Describes the kind of a storage location:\n  * `SINGLE_STORAGE`- it is only allowed to store stock with the same tenantArticleId here\n  * `BULK_STORAGE`- stocks belonging to different tenantArticleIds can be stored here","enum":["SINGLE_STORAGE","BULK_STORAGE"],"type":"string","xml":{"name":"StorageLocationType"},"title":"StorageLocationType"},"StorageLocation":{"allOf":[{"$ref":"#/components/schemas/StorageLocationForReplacement"},{"$ref":"#/components/schemas/VersionedResource"}],"properties":{"facilityRef":{"description":"The id of the facility reference.","type":"string"},"id":{"description":"The id of this storage location","type":"string"},"schemaVersion":{"type":"number"},"traitConfig":{"$ref":"#/components/schemas/StorageLocationTraitConfig"},"traits":{"description":"The traits of this storage location","items":{"$ref":"#/components/schemas/StorageLocationTrait"},"type":"array"},"zoneName":{"deprecated":true,"description":"Deprecated! This field will not be filled in newly created storage locations. Resolve the zone name separately via the facilities/{id}/zones endpoint. The name of the Zone to which this storage location belongs","type":"string"}},"required":["id","facilityRef","traits"],"type":"object","xml":{"name":"StorageLocation"},"title":"StorageLocation","description":"StorageLocation"},"StorageLocationForReplacement":{"allOf":[{"$ref":"#/components/schemas/StorageLocationForCreation"}],"properties":{"version":{"format":"int64","type":"integer"}},"required":["version"],"type":"object","xml":{"name":"StorageLocationForReplacement"},"title":"StorageLocationForReplacement","description":"StorageLocationForReplacement"},"VersionedResource":{"properties":{"created":{"description":"The date this entity was created at the platform. This value is generated by the service.","format":"date-time","type":"string"},"lastModified":{"description":"The date this entity was modified last. This value is generated by the service.","format":"date-time","type":"string"},"version":{"description":"The version of the document to be used in optimistic locking mechanisms.","format":"int64","type":"integer"}},"required":["version"],"type":"object","title":"VersionedResource","description":"VersionedResource"},"ApiError":{"items":{"$ref":"#/components/schemas/ErrorInner"},"type":"array","xml":{"name":"ApiError"},"title":"ApiError","description":"ApiError"},"ErrorInner":{"properties":{"description":{"type":"string"},"requestVersion":{"description":"The version provided within an invalid request.","format":"int64","type":"integer"},"summary":{"type":"string"},"version":{"format":"int64","type":"integer"}},"required":["summary"],"type":"object","title":"ErrorInner","description":"ErrorInner"}}},"paths":{"/api/facilities/{facilityId}/storagelocations":{"post":{"description":"Creates a new storage location in this facility.","operationId":"postFacilityStorageLocations","parameters":[{"description":"ID of facility from whom you want to create the storage location","in":"path","name":"facilityId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageLocationForCreation"}}},"description":"Patch set","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageLocation"}}},"description":"The storage location was successfully created."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user is not allowed to operate against this API instance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user, although recognized, is not authorized to use this endpoint"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Facility not found"}},"summary":"Create facility storage location","tags":["Storage Locations (Inventory)"]}}}}
```

## GET /api/facilities/{facilityId}/storagelocations/{storageLocationId}

> Get facility storage location

```json
{"openapi":"3.0.1","info":{"title":"fulfillmenttools","version":"VERSIONLESS"},"tags":[{"description":"Endpoints to create, update and read storage locations and zones.","name":"Storage Locations (Inventory)"}],"servers":[{"url":"https://{tenant}.api.fulfillmenttools.com","variables":{"tenant":{"default":"your-tenant-name"}}}],"security":[{"BearerToken":[]}],"components":{"securitySchemes":{"BearerToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"StorageLocation":{"allOf":[{"$ref":"#/components/schemas/StorageLocationForReplacement"},{"$ref":"#/components/schemas/VersionedResource"}],"properties":{"facilityRef":{"description":"The id of the facility reference.","type":"string"},"id":{"description":"The id of this storage location","type":"string"},"schemaVersion":{"type":"number"},"traitConfig":{"$ref":"#/components/schemas/StorageLocationTraitConfig"},"traits":{"description":"The traits of this storage location","items":{"$ref":"#/components/schemas/StorageLocationTrait"},"type":"array"},"zoneName":{"deprecated":true,"description":"Deprecated! This field will not be filled in newly created storage locations. Resolve the zone name separately via the facilities/{id}/zones endpoint. The name of the Zone to which this storage location belongs","type":"string"}},"required":["id","facilityRef","traits"],"type":"object","xml":{"name":"StorageLocation"},"title":"StorageLocation","description":"StorageLocation"},"StorageLocationForReplacement":{"allOf":[{"$ref":"#/components/schemas/StorageLocationForCreation"}],"properties":{"version":{"format":"int64","type":"integer"}},"required":["version"],"type":"object","xml":{"name":"StorageLocationForReplacement"},"title":"StorageLocationForReplacement","description":"StorageLocationForReplacement"},"StorageLocationForCreation":{"allOf":[{"$ref":"#/components/schemas/CustomAttributesResource"}],"properties":{"information":{"description":"A free text information about this storage location, max length 1024","maxLength":1024,"type":"string"},"name":{"description":"The name of this storage location","maxLength":15,"type":"string"},"runningSequences":{"description":"The Sequence item/s of this location","items":{"$ref":"#/components/schemas/StorageLocationSequenceItem"},"maxItems":10,"type":"array"},"scannableCodes":{"description":"Barcodes representing this storage location","items":{"type":"string"},"maxItems":5,"type":"array"},"tenantLocationId":{"description":"The internal tenant id for this location","type":"string"},"traitConfig":{"$ref":"#/components/schemas/StorageLocationTraitConfig"},"traits":{"description":"The traits of this storage location, includes both local config and and defaults. Do not use to write to traits, use traitConfig instead.","items":{"$ref":"#/components/schemas/StorageLocationTrait"},"type":"array"},"type":{"$ref":"#/components/schemas/StorageLocationType"},"zoneName":{"description":"The name of the Zone to which this storage location belongs","type":"string"},"zoneRef":{"description":"The id of the Zone to which this storage location belongs","type":"string"}},"required":["name","runningSequences","scannableCodes","type"],"type":"object","xml":{"name":"StorageLocationForCreation"},"title":"StorageLocationForCreation","description":"StorageLocationForCreation"},"CustomAttributesResource":{"properties":{"customAttributes":{"description":"Attributes that can be added to this entity. These attributes **cannot** be used within fulfillment processes, but enable you to attach custom data from your systems to fulfillmenttools entities.","nullable":true,"type":"object"}},"title":"CustomAttributesResource","type":"object","description":"CustomAttributesResource"},"StorageLocationSequenceItem":{"properties":{"nextStorageLocationRef":{"description":"The next storage from which to pick up after this one","type":"string"},"previousStorageLocationRef":{"description":"The previous storage from which to pick up after this one","type":"string"},"score":{"deprecated":true,"description":"Running sequence score - read-only","type":"number"},"type":{"$ref":"#/components/schemas/StorageLocationSequenceType"}},"required":["type"],"type":"object","xml":{"name":"StorageLocationSequenceItem"},"title":"StorageLocationSequenceItem","description":"StorageLocationSequenceItem"},"StorageLocationSequenceType":{"description":"Describes the type of a storage location sequence type\n  * `PICKING_SEQUENCE`- The sequence in wich the storage locations are picked.\n  * `RESTOW_SEQUENCE`- The sequence in wich the storage locations are restowed.","enum":["PICKING_SEQUENCE","RESTOW_SEQUENCE"],"type":"string","xml":{"name":"StorageLocationType"},"title":"StorageLocationSequenceType"},"StorageLocationTraitConfig":{"description":"The configuration of the traits of this storage location","items":{"properties":{"enabled":{"type":"boolean"},"trait":{"$ref":"#/components/schemas/StorageLocationTrait"}},"required":["trait","enabled"],"type":"object"},"type":"array","title":"StorageLocationTraitConfig"},"StorageLocationTrait":{"description":"Describes what kind of actions this stock is available for\n  * `PICKABLE`- The stock is available for picking\n  * `ACCESSIBLE`- The stock is available for stock movements (stowing, inbound, etc)\n  * `KEEP_ON_ZERO`- The stock will not be deleted when emptied\n  * `OUTBOUND`- The stock is intended for outbound processes\n  * `IN_MOTION`- The stock is in motion, used by StowJobs.","enum":["PICKABLE","ACCESSIBLE","KEEP_ON_ZERO","OUTBOUND","IN_MOTION"],"type":"string","xml":{"name":"StorageLocationTrait"},"title":"StorageLocationTrait"},"StorageLocationType":{"description":"Describes the kind of a storage location:\n  * `SINGLE_STORAGE`- it is only allowed to store stock with the same tenantArticleId here\n  * `BULK_STORAGE`- stocks belonging to different tenantArticleIds can be stored here","enum":["SINGLE_STORAGE","BULK_STORAGE"],"type":"string","xml":{"name":"StorageLocationType"},"title":"StorageLocationType"},"VersionedResource":{"properties":{"created":{"description":"The date this entity was created at the platform. This value is generated by the service.","format":"date-time","type":"string"},"lastModified":{"description":"The date this entity was modified last. This value is generated by the service.","format":"date-time","type":"string"},"version":{"description":"The version of the document to be used in optimistic locking mechanisms.","format":"int64","type":"integer"}},"required":["version"],"type":"object","title":"VersionedResource","description":"VersionedResource"},"ApiError":{"items":{"$ref":"#/components/schemas/ErrorInner"},"type":"array","xml":{"name":"ApiError"},"title":"ApiError","description":"ApiError"},"ErrorInner":{"properties":{"description":{"type":"string"},"requestVersion":{"description":"The version provided within an invalid request.","format":"int64","type":"integer"},"summary":{"type":"string"},"version":{"format":"int64","type":"integer"}},"required":["summary"],"type":"object","title":"ErrorInner","description":"ErrorInner"}}},"paths":{"/api/facilities/{facilityId}/storagelocations/{storageLocationId}":{"get":{"description":"","operationId":"getFacilityStorageLocation","parameters":[{"description":"ID of facility from which you want to get the storage locations. Also accepts tenantFacilityId in urn format (e.g. urn:fft:facility:tenantFacilityId:{your-tenant-facility-id})","in":"path","name":"facilityId","required":true,"schema":{"type":"string"}},{"description":"the ID of the storageLocation","in":"path","name":"storageLocationId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/StorageLocation"},"type":"array"}}},"description":"Facility was found & you are allowed to get the storage locations. The result is in the body."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user is not allowed to operate against this API instance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user, although recognized, is not authorized to use this endpoint"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Facility not found"}},"summary":"Get facility storage location","tags":["Storage Locations (Inventory)"]}}}}
```

## Update facility storage location

> Replaces the current storage locations of this Facility with the provided in the body.

```json
{"openapi":"3.0.1","info":{"title":"fulfillmenttools","version":"VERSIONLESS"},"tags":[{"description":"Endpoints to create, update and read storage locations and zones.","name":"Storage Locations (Inventory)"}],"servers":[{"url":"https://{tenant}.api.fulfillmenttools.com","variables":{"tenant":{"default":"your-tenant-name"}}}],"security":[{"BearerToken":[]}],"components":{"securitySchemes":{"BearerToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"StorageLocationForReplacement":{"allOf":[{"$ref":"#/components/schemas/StorageLocationForCreation"}],"properties":{"version":{"format":"int64","type":"integer"}},"required":["version"],"type":"object","xml":{"name":"StorageLocationForReplacement"},"title":"StorageLocationForReplacement","description":"StorageLocationForReplacement"},"StorageLocationForCreation":{"allOf":[{"$ref":"#/components/schemas/CustomAttributesResource"}],"properties":{"information":{"description":"A free text information about this storage location, max length 1024","maxLength":1024,"type":"string"},"name":{"description":"The name of this storage location","maxLength":15,"type":"string"},"runningSequences":{"description":"The Sequence item/s of this location","items":{"$ref":"#/components/schemas/StorageLocationSequenceItem"},"maxItems":10,"type":"array"},"scannableCodes":{"description":"Barcodes representing this storage location","items":{"type":"string"},"maxItems":5,"type":"array"},"tenantLocationId":{"description":"The internal tenant id for this location","type":"string"},"traitConfig":{"$ref":"#/components/schemas/StorageLocationTraitConfig"},"traits":{"description":"The traits of this storage location, includes both local config and and defaults. Do not use to write to traits, use traitConfig instead.","items":{"$ref":"#/components/schemas/StorageLocationTrait"},"type":"array"},"type":{"$ref":"#/components/schemas/StorageLocationType"},"zoneName":{"description":"The name of the Zone to which this storage location belongs","type":"string"},"zoneRef":{"description":"The id of the Zone to which this storage location belongs","type":"string"}},"required":["name","runningSequences","scannableCodes","type"],"type":"object","xml":{"name":"StorageLocationForCreation"},"title":"StorageLocationForCreation","description":"StorageLocationForCreation"},"CustomAttributesResource":{"properties":{"customAttributes":{"description":"Attributes that can be added to this entity. These attributes **cannot** be used within fulfillment processes, but enable you to attach custom data from your systems to fulfillmenttools entities.","nullable":true,"type":"object"}},"title":"CustomAttributesResource","type":"object","description":"CustomAttributesResource"},"StorageLocationSequenceItem":{"properties":{"nextStorageLocationRef":{"description":"The next storage from which to pick up after this one","type":"string"},"previousStorageLocationRef":{"description":"The previous storage from which to pick up after this one","type":"string"},"score":{"deprecated":true,"description":"Running sequence score - read-only","type":"number"},"type":{"$ref":"#/components/schemas/StorageLocationSequenceType"}},"required":["type"],"type":"object","xml":{"name":"StorageLocationSequenceItem"},"title":"StorageLocationSequenceItem","description":"StorageLocationSequenceItem"},"StorageLocationSequenceType":{"description":"Describes the type of a storage location sequence type\n  * `PICKING_SEQUENCE`- The sequence in wich the storage locations are picked.\n  * `RESTOW_SEQUENCE`- The sequence in wich the storage locations are restowed.","enum":["PICKING_SEQUENCE","RESTOW_SEQUENCE"],"type":"string","xml":{"name":"StorageLocationType"},"title":"StorageLocationSequenceType"},"StorageLocationTraitConfig":{"description":"The configuration of the traits of this storage location","items":{"properties":{"enabled":{"type":"boolean"},"trait":{"$ref":"#/components/schemas/StorageLocationTrait"}},"required":["trait","enabled"],"type":"object"},"type":"array","title":"StorageLocationTraitConfig"},"StorageLocationTrait":{"description":"Describes what kind of actions this stock is available for\n  * `PICKABLE`- The stock is available for picking\n  * `ACCESSIBLE`- The stock is available for stock movements (stowing, inbound, etc)\n  * `KEEP_ON_ZERO`- The stock will not be deleted when emptied\n  * `OUTBOUND`- The stock is intended for outbound processes\n  * `IN_MOTION`- The stock is in motion, used by StowJobs.","enum":["PICKABLE","ACCESSIBLE","KEEP_ON_ZERO","OUTBOUND","IN_MOTION"],"type":"string","xml":{"name":"StorageLocationTrait"},"title":"StorageLocationTrait"},"StorageLocationType":{"description":"Describes the kind of a storage location:\n  * `SINGLE_STORAGE`- it is only allowed to store stock with the same tenantArticleId here\n  * `BULK_STORAGE`- stocks belonging to different tenantArticleIds can be stored here","enum":["SINGLE_STORAGE","BULK_STORAGE"],"type":"string","xml":{"name":"StorageLocationType"},"title":"StorageLocationType"},"StorageLocation":{"allOf":[{"$ref":"#/components/schemas/StorageLocationForReplacement"},{"$ref":"#/components/schemas/VersionedResource"}],"properties":{"facilityRef":{"description":"The id of the facility reference.","type":"string"},"id":{"description":"The id of this storage location","type":"string"},"schemaVersion":{"type":"number"},"traitConfig":{"$ref":"#/components/schemas/StorageLocationTraitConfig"},"traits":{"description":"The traits of this storage location","items":{"$ref":"#/components/schemas/StorageLocationTrait"},"type":"array"},"zoneName":{"deprecated":true,"description":"Deprecated! This field will not be filled in newly created storage locations. Resolve the zone name separately via the facilities/{id}/zones endpoint. The name of the Zone to which this storage location belongs","type":"string"}},"required":["id","facilityRef","traits"],"type":"object","xml":{"name":"StorageLocation"},"title":"StorageLocation","description":"StorageLocation"},"VersionedResource":{"properties":{"created":{"description":"The date this entity was created at the platform. This value is generated by the service.","format":"date-time","type":"string"},"lastModified":{"description":"The date this entity was modified last. This value is generated by the service.","format":"date-time","type":"string"},"version":{"description":"The version of the document to be used in optimistic locking mechanisms.","format":"int64","type":"integer"}},"required":["version"],"type":"object","title":"VersionedResource","description":"VersionedResource"},"ApiError":{"items":{"$ref":"#/components/schemas/ErrorInner"},"type":"array","xml":{"name":"ApiError"},"title":"ApiError","description":"ApiError"},"ErrorInner":{"properties":{"description":{"type":"string"},"requestVersion":{"description":"The version provided within an invalid request.","format":"int64","type":"integer"},"summary":{"type":"string"},"version":{"format":"int64","type":"integer"}},"required":["summary"],"type":"object","title":"ErrorInner","description":"ErrorInner"}}},"paths":{"/api/facilities/{facilityId}/storagelocations/{storageLocationId}":{"put":{"description":"Replaces the current storage locations of this Facility with the provided in the body.","operationId":"putFacilityStorageLocation","parameters":[{"description":"ID of facility from whom you want to put the storage locations","in":"path","name":"facilityId","required":true,"schema":{"type":"string"}},{"description":"the ID of the storageLocation","in":"path","name":"storageLocationId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageLocationForReplacement"}}},"description":"Patch set","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageLocation"}}},"description":"Storage location was found & you were allowed to update it."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user is not allowed to operate against this API instance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user, although recognized, is not authorized to use this endpoint"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Facility or Storage Location not found"}},"summary":"Update facility storage location","tags":["Storage Locations (Inventory)"]}}}}
```

## DELETE /api/facilities/{facilityId}/storagelocations/{storageLocationId}

> Delete facility storage location

```json
{"openapi":"3.0.1","info":{"title":"fulfillmenttools","version":"VERSIONLESS"},"tags":[{"description":"Endpoints to create, update and read storage locations and zones.","name":"Storage Locations (Inventory)"}],"servers":[{"url":"https://{tenant}.api.fulfillmenttools.com","variables":{"tenant":{"default":"your-tenant-name"}}}],"security":[{"BearerToken":[]}],"components":{"securitySchemes":{"BearerToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ApiError":{"items":{"$ref":"#/components/schemas/ErrorInner"},"type":"array","xml":{"name":"ApiError"},"title":"ApiError","description":"ApiError"},"ErrorInner":{"properties":{"description":{"type":"string"},"requestVersion":{"description":"The version provided within an invalid request.","format":"int64","type":"integer"},"summary":{"type":"string"},"version":{"format":"int64","type":"integer"}},"required":["summary"],"type":"object","title":"ErrorInner","description":"ErrorInner"}}},"paths":{"/api/facilities/{facilityId}/storagelocations/{storageLocationId}":{"delete":{"description":"","operationId":"deleteFacilityStorageLocation","parameters":[{"description":"ID of facility from whom you want to delete the storage location","in":"path","name":"facilityId","required":true,"schema":{"type":"string"}},{"description":"ID of the storageLocation you want to delete","in":"path","name":"storageLocationId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Storage location was found & you were allowed to delete it."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user is not allowed to operate against this API instance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user, although recognized, is not authorized to use this endpoint"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Facility or storage location not found"}},"summary":"Delete facility storage location","tags":["Storage Locations (Inventory)"]}}}}
```

## Update facility storage location

> Adds new storage locations, updates existing ones and keeps the previously present ones in the database.\
> \
> 1\. If a storage location exists in the patch action but not in the database it is added.\
> 2\. If a storage location exists both in the patch action and in the database it is updated and the contents merged.\
> 3\. If a storage location exists only in the database, it is left untouched.<br>

```json
{"openapi":"3.0.1","info":{"title":"fulfillmenttools","version":"VERSIONLESS"},"tags":[{"description":"Endpoints to create, update and read storage locations and zones.","name":"Storage Locations (Inventory)"}],"servers":[{"url":"https://{tenant}.api.fulfillmenttools.com","variables":{"tenant":{"default":"your-tenant-name"}}}],"security":[{"BearerToken":[]}],"components":{"securitySchemes":{"BearerToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"StorageLocationPatchActions":{"properties":{"actions":{"items":{"$ref":"#/components/schemas/ModifyStorageLocationAction"},"minItems":1,"type":"array"},"version":{"description":"The version of the facility where we want to patch the storage locations to be used in optimistic locking mechanisms.","format":"int64","type":"integer"}},"required":["version","actions"],"type":"object","xml":{"name":"StorageLocationPatchActions"},"title":"StorageLocationPatchActions","description":"StorageLocationPatchActions"},"ModifyStorageLocationAction":{"allOf":[{"$ref":"#/components/schemas/AbstractModificationAction"},{"additionalProperties":false,"properties":{"action":{"description":"Use value 'ModifyStorageLocation', because you want to modify a storage location","enum":["ModifyStorageLocation"],"type":"string"},"customAttributes":{"description":"Attributes that can be added to the storage location. These attributes cannot be used within fulfillment processes, but it could be useful to have the informations carried here.","type":"object"},"information":{"description":"A free text information about this storage location, max length 1024","maxLength":1024,"type":"string"},"name":{"description":"The name of this storage location","maxLength":15,"type":"string"},"runningSequences":{"description":"The Sequence item/s of this location","items":{"$ref":"#/components/schemas/StorageLocationSequenceItem"},"maxItems":10,"type":"array"},"scannableCodes":{"description":"Barcodes representing this storage location","items":{"type":"string"},"maxItems":5,"type":"array"},"tenantLocationId":{"description":"The internal tenant id for this location","type":"string"},"traitConfig":{"$ref":"#/components/schemas/StorageLocationTraitConfig"},"traits":{"deprecated":true,"description":"The traits of this storage location. Do not use this to write traits, use traitConfig instead.","items":{"$ref":"#/components/schemas/StorageLocationTrait"},"type":"array"},"type":{"$ref":"#/components/schemas/StorageLocationType"},"zoneRef":{"description":"The id of the Zone to which this storage location belongs.","type":"string"}},"required":["action"],"type":"object"}],"xml":{"name":"ModifyStorageLocationAction"},"title":"ModifyStorageLocationAction","description":"ModifyStorageLocationAction"},"AbstractModificationAction":{"discriminator":{"propertyName":"action"},"properties":{"action":{"description":"","enum":["AddAllowedValueToTag","ModifyPickJob","ModifyPickJobLastEditor","RestartPickJob","ResetPickJob","CancelPickRun","CancelHandoverjob","AbortPickJob","FinishPickRun","StartPickRun","ModifyPickLineItem","ModifyPickRunLineItem","ModifyPackJob","PausePackJob","ModifyPackLineItem","SplitLineItemsPackJob","ModifyFacility","ModifyListing","ModifyRetainedOfflineStock","ModifyListingReactivationAfter","ModifyUser","ModifyShipment","ModifyHandoverjob","ModifyCarrier","ModifyShortpick","ModifyRoutingPlan","ModifyFence","ModifyRating","ModifyTimingMode","ModifyGlobalRoutingConfiguration","ModifyOrderSplit","ModifyPrioritization","ModifyLoadUnitType","ModifyFeature","ModifyParcel","ModifyParcelLoadUnit","ModifyRestowItem","RemovePickJobFromPickRun","ModifyPartialStock","AddTagsToProcess","AssignFacilityToProcess","UpdateGdprCleanupDateAction","ModifyStorageLocation","ModifyPackingContainerType","ModifyPackingContainerTypeIcon","ReplaceCodesInPackingTargetContainer","ReplaceLoadUnitLineItems","AddLineItemToPackingTargetContainer","RemoveLineItemFromPackingTargetContainer","UpdateLineItemOnPackingTargetContainer","UpdatePackingTargetContainerLineItemRecordableAttributes","ModifyCustomService","UnlockOrder"],"type":"string"}},"required":["action"],"type":"object","xml":{"name":"AbstractModificationAction"},"title":"AbstractModificationAction","description":"AbstractModificationAction"},"StorageLocationSequenceItem":{"properties":{"nextStorageLocationRef":{"description":"The next storage from which to pick up after this one","type":"string"},"previousStorageLocationRef":{"description":"The previous storage from which to pick up after this one","type":"string"},"score":{"deprecated":true,"description":"Running sequence score - read-only","type":"number"},"type":{"$ref":"#/components/schemas/StorageLocationSequenceType"}},"required":["type"],"type":"object","xml":{"name":"StorageLocationSequenceItem"},"title":"StorageLocationSequenceItem","description":"StorageLocationSequenceItem"},"StorageLocationSequenceType":{"description":"Describes the type of a storage location sequence type\n  * `PICKING_SEQUENCE`- The sequence in wich the storage locations are picked.\n  * `RESTOW_SEQUENCE`- The sequence in wich the storage locations are restowed.","enum":["PICKING_SEQUENCE","RESTOW_SEQUENCE"],"type":"string","xml":{"name":"StorageLocationType"},"title":"StorageLocationSequenceType"},"StorageLocationTraitConfig":{"description":"The configuration of the traits of this storage location","items":{"properties":{"enabled":{"type":"boolean"},"trait":{"$ref":"#/components/schemas/StorageLocationTrait"}},"required":["trait","enabled"],"type":"object"},"type":"array","title":"StorageLocationTraitConfig"},"StorageLocationTrait":{"description":"Describes what kind of actions this stock is available for\n  * `PICKABLE`- The stock is available for picking\n  * `ACCESSIBLE`- The stock is available for stock movements (stowing, inbound, etc)\n  * `KEEP_ON_ZERO`- The stock will not be deleted when emptied\n  * `OUTBOUND`- The stock is intended for outbound processes\n  * `IN_MOTION`- The stock is in motion, used by StowJobs.","enum":["PICKABLE","ACCESSIBLE","KEEP_ON_ZERO","OUTBOUND","IN_MOTION"],"type":"string","xml":{"name":"StorageLocationTrait"},"title":"StorageLocationTrait"},"StorageLocationType":{"description":"Describes the kind of a storage location:\n  * `SINGLE_STORAGE`- it is only allowed to store stock with the same tenantArticleId here\n  * `BULK_STORAGE`- stocks belonging to different tenantArticleIds can be stored here","enum":["SINGLE_STORAGE","BULK_STORAGE"],"type":"string","xml":{"name":"StorageLocationType"},"title":"StorageLocationType"},"StorageLocation":{"allOf":[{"$ref":"#/components/schemas/StorageLocationForReplacement"},{"$ref":"#/components/schemas/VersionedResource"}],"properties":{"facilityRef":{"description":"The id of the facility reference.","type":"string"},"id":{"description":"The id of this storage location","type":"string"},"schemaVersion":{"type":"number"},"traitConfig":{"$ref":"#/components/schemas/StorageLocationTraitConfig"},"traits":{"description":"The traits of this storage location","items":{"$ref":"#/components/schemas/StorageLocationTrait"},"type":"array"},"zoneName":{"deprecated":true,"description":"Deprecated! This field will not be filled in newly created storage locations. Resolve the zone name separately via the facilities/{id}/zones endpoint. The name of the Zone to which this storage location belongs","type":"string"}},"required":["id","facilityRef","traits"],"type":"object","xml":{"name":"StorageLocation"},"title":"StorageLocation","description":"StorageLocation"},"StorageLocationForReplacement":{"allOf":[{"$ref":"#/components/schemas/StorageLocationForCreation"}],"properties":{"version":{"format":"int64","type":"integer"}},"required":["version"],"type":"object","xml":{"name":"StorageLocationForReplacement"},"title":"StorageLocationForReplacement","description":"StorageLocationForReplacement"},"StorageLocationForCreation":{"allOf":[{"$ref":"#/components/schemas/CustomAttributesResource"}],"properties":{"information":{"description":"A free text information about this storage location, max length 1024","maxLength":1024,"type":"string"},"name":{"description":"The name of this storage location","maxLength":15,"type":"string"},"runningSequences":{"description":"The Sequence item/s of this location","items":{"$ref":"#/components/schemas/StorageLocationSequenceItem"},"maxItems":10,"type":"array"},"scannableCodes":{"description":"Barcodes representing this storage location","items":{"type":"string"},"maxItems":5,"type":"array"},"tenantLocationId":{"description":"The internal tenant id for this location","type":"string"},"traitConfig":{"$ref":"#/components/schemas/StorageLocationTraitConfig"},"traits":{"description":"The traits of this storage location, includes both local config and and defaults. Do not use to write to traits, use traitConfig instead.","items":{"$ref":"#/components/schemas/StorageLocationTrait"},"type":"array"},"type":{"$ref":"#/components/schemas/StorageLocationType"},"zoneName":{"description":"The name of the Zone to which this storage location belongs","type":"string"},"zoneRef":{"description":"The id of the Zone to which this storage location belongs","type":"string"}},"required":["name","runningSequences","scannableCodes","type"],"type":"object","xml":{"name":"StorageLocationForCreation"},"title":"StorageLocationForCreation","description":"StorageLocationForCreation"},"CustomAttributesResource":{"properties":{"customAttributes":{"description":"Attributes that can be added to this entity. These attributes **cannot** be used within fulfillment processes, but enable you to attach custom data from your systems to fulfillmenttools entities.","nullable":true,"type":"object"}},"title":"CustomAttributesResource","type":"object","description":"CustomAttributesResource"},"VersionedResource":{"properties":{"created":{"description":"The date this entity was created at the platform. This value is generated by the service.","format":"date-time","type":"string"},"lastModified":{"description":"The date this entity was modified last. This value is generated by the service.","format":"date-time","type":"string"},"version":{"description":"The version of the document to be used in optimistic locking mechanisms.","format":"int64","type":"integer"}},"required":["version"],"type":"object","title":"VersionedResource","description":"VersionedResource"},"ApiError":{"items":{"$ref":"#/components/schemas/ErrorInner"},"type":"array","xml":{"name":"ApiError"},"title":"ApiError","description":"ApiError"},"ErrorInner":{"properties":{"description":{"type":"string"},"requestVersion":{"description":"The version provided within an invalid request.","format":"int64","type":"integer"},"summary":{"type":"string"},"version":{"format":"int64","type":"integer"}},"required":["summary"],"type":"object","title":"ErrorInner","description":"ErrorInner"}}},"paths":{"/api/facilities/{facilityId}/storagelocations/{storageLocationId}":{"patch":{"description":"Adds new storage locations, updates existing ones and keeps the previously present ones in the database.\n\n1. If a storage location exists in the patch action but not in the database it is added.\n2. If a storage location exists both in the patch action and in the database it is updated and the contents merged.\n3. If a storage location exists only in the database, it is left untouched.\n","operationId":"patchFacilityStorageLocation","parameters":[{"description":"ID of facility you want to patch the storage locations","in":"path","name":"facilityId","required":true,"schema":{"type":"string"}},{"description":"the ID of the storageLocation","in":"path","name":"storageLocationId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageLocationPatchActions"}}},"description":"Patch set","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageLocation"}}},"description":"Storage location was found & you were allowed to update it."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user is not allowed to operate against this API instance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user, although recognized, is not authorized to use this endpoint"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Facility or Storage location not found"}},"summary":"Update facility storage location","tags":["Storage Locations (Inventory)"]}}}}
```

## GET /api/facilities/{facilityId}/zones

> List facility zones

```json
{"openapi":"3.0.1","info":{"title":"fulfillmenttools","version":"VERSIONLESS"},"tags":[{"description":"Endpoints to create, update and read storage locations and zones.","name":"Storage Locations (Inventory)"}],"servers":[{"url":"https://{tenant}.api.fulfillmenttools.com","variables":{"tenant":{"default":"your-tenant-name"}}}],"security":[{"BearerToken":[]}],"components":{"securitySchemes":{"BearerToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"Zone":{"allOf":[{"$ref":"#/components/schemas/ZoneForReplacement"},{"$ref":"#/components/schemas/VersionedResource"}],"properties":{"facilityRef":{"description":"The id of the facility reference. The given ID has to be present in the system.","type":"string"},"id":{"description":"The id of this zone","type":"string"}},"required":["id","facilityRef"],"type":"object","xml":{"name":"Zone"},"title":"Zone","description":"Zone"},"ZoneForReplacement":{"allOf":[{"$ref":"#/components/schemas/ZoneForCreation"}],"properties":{"version":{"format":"int64","type":"integer"}},"required":["version"],"type":"object","xml":{"name":"ZoneForReplacement"},"title":"ZoneForReplacement","description":"ZoneForReplacement"},"ZoneForCreation":{"allOf":[{"$ref":"#/components/schemas/CustomAttributesResource"}],"properties":{"name":{"description":"The name of this zone","type":"string"},"score":{"description":"The score of this zone","type":"number"}},"required":["name","score"],"type":"object","xml":{"name":"ZoneForCreation"},"title":"ZoneForCreation","description":"ZoneForCreation"},"CustomAttributesResource":{"properties":{"customAttributes":{"description":"Attributes that can be added to this entity. These attributes **cannot** be used within fulfillment processes, but enable you to attach custom data from your systems to fulfillmenttools entities.","nullable":true,"type":"object"}},"title":"CustomAttributesResource","type":"object","description":"CustomAttributesResource"},"VersionedResource":{"properties":{"created":{"description":"The date this entity was created at the platform. This value is generated by the service.","format":"date-time","type":"string"},"lastModified":{"description":"The date this entity was modified last. This value is generated by the service.","format":"date-time","type":"string"},"version":{"description":"The version of the document to be used in optimistic locking mechanisms.","format":"int64","type":"integer"}},"required":["version"],"type":"object","title":"VersionedResource","description":"VersionedResource"},"ApiError":{"items":{"$ref":"#/components/schemas/ErrorInner"},"type":"array","xml":{"name":"ApiError"},"title":"ApiError","description":"ApiError"},"ErrorInner":{"properties":{"description":{"type":"string"},"requestVersion":{"description":"The version provided within an invalid request.","format":"int64","type":"integer"},"summary":{"type":"string"},"version":{"format":"int64","type":"integer"}},"required":["summary"],"type":"object","title":"ErrorInner","description":"ErrorInner"}}},"paths":{"/api/facilities/{facilityId}/zones":{"get":{"description":"","operationId":"getFacilityZones","parameters":[{"description":"ID of facility from which you want to get the zones. Also accepts tenantFacilityId in urn format (e.g. urn:fft:facility:tenantFacilityId:{your-tenant-facility-id})","in":"path","name":"facilityId","required":true,"schema":{"type":"string"}},{"description":"all entities after given Id","in":"query","name":"startAfterId","required":false,"schema":{"type":"string"}},{"description":"number of entities to show","in":"query","name":"size","required":false,"schema":{"default":25,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Zone"},"type":"array"}}},"description":"Facility was found & you are allowed to get the zones. The result is in the body."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user is not allowed to operate against this API instance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user, although recognized, is not authorized to use this endpoint"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Facility not found"}},"summary":"List facility zones","tags":["Storage Locations (Inventory)"]}}}}
```

## Create facility zone

> Creates a new zone in this facility.

```json
{"openapi":"3.0.1","info":{"title":"fulfillmenttools","version":"VERSIONLESS"},"tags":[{"description":"Endpoints to create, update and read storage locations and zones.","name":"Storage Locations (Inventory)"}],"servers":[{"url":"https://{tenant}.api.fulfillmenttools.com","variables":{"tenant":{"default":"your-tenant-name"}}}],"security":[{"BearerToken":[]}],"components":{"securitySchemes":{"BearerToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ZoneForCreation":{"allOf":[{"$ref":"#/components/schemas/CustomAttributesResource"}],"properties":{"name":{"description":"The name of this zone","type":"string"},"score":{"description":"The score of this zone","type":"number"}},"required":["name","score"],"type":"object","xml":{"name":"ZoneForCreation"},"title":"ZoneForCreation","description":"ZoneForCreation"},"CustomAttributesResource":{"properties":{"customAttributes":{"description":"Attributes that can be added to this entity. These attributes **cannot** be used within fulfillment processes, but enable you to attach custom data from your systems to fulfillmenttools entities.","nullable":true,"type":"object"}},"title":"CustomAttributesResource","type":"object","description":"CustomAttributesResource"},"Zone":{"allOf":[{"$ref":"#/components/schemas/ZoneForReplacement"},{"$ref":"#/components/schemas/VersionedResource"}],"properties":{"facilityRef":{"description":"The id of the facility reference. The given ID has to be present in the system.","type":"string"},"id":{"description":"The id of this zone","type":"string"}},"required":["id","facilityRef"],"type":"object","xml":{"name":"Zone"},"title":"Zone","description":"Zone"},"ZoneForReplacement":{"allOf":[{"$ref":"#/components/schemas/ZoneForCreation"}],"properties":{"version":{"format":"int64","type":"integer"}},"required":["version"],"type":"object","xml":{"name":"ZoneForReplacement"},"title":"ZoneForReplacement","description":"ZoneForReplacement"},"VersionedResource":{"properties":{"created":{"description":"The date this entity was created at the platform. This value is generated by the service.","format":"date-time","type":"string"},"lastModified":{"description":"The date this entity was modified last. This value is generated by the service.","format":"date-time","type":"string"},"version":{"description":"The version of the document to be used in optimistic locking mechanisms.","format":"int64","type":"integer"}},"required":["version"],"type":"object","title":"VersionedResource","description":"VersionedResource"},"ApiError":{"items":{"$ref":"#/components/schemas/ErrorInner"},"type":"array","xml":{"name":"ApiError"},"title":"ApiError","description":"ApiError"},"ErrorInner":{"properties":{"description":{"type":"string"},"requestVersion":{"description":"The version provided within an invalid request.","format":"int64","type":"integer"},"summary":{"type":"string"},"version":{"format":"int64","type":"integer"}},"required":["summary"],"type":"object","title":"ErrorInner","description":"ErrorInner"}}},"paths":{"/api/facilities/{facilityId}/zones":{"post":{"description":"Creates a new zone in this facility.","operationId":"postFacilityZone","parameters":[{"description":"ID of facility at which you want to create the zones. Also accepts tenantFacilityId in urn format (e.g. urn:fft:facility:tenantFacilityId:{your-tenant-facility-id})","in":"path","name":"facilityId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZoneForCreation"}}},"description":"The zone to be created","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Zone"}}},"description":"The zone was successfully created."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user is not allowed to operate against this API instance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user, although recognized, is not authorized to use this endpoint"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Zone not found"}},"summary":"Create facility zone","tags":["Storage Locations (Inventory)"]}}}}
```

## GET /api/facilities/{facilityId}/zones/{zoneId}

> Get facility zone

```json
{"openapi":"3.0.1","info":{"title":"fulfillmenttools","version":"VERSIONLESS"},"tags":[{"description":"Endpoints to create, update and read storage locations and zones.","name":"Storage Locations (Inventory)"}],"servers":[{"url":"https://{tenant}.api.fulfillmenttools.com","variables":{"tenant":{"default":"your-tenant-name"}}}],"security":[{"BearerToken":[]}],"components":{"securitySchemes":{"BearerToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"Zone":{"allOf":[{"$ref":"#/components/schemas/ZoneForReplacement"},{"$ref":"#/components/schemas/VersionedResource"}],"properties":{"facilityRef":{"description":"The id of the facility reference. The given ID has to be present in the system.","type":"string"},"id":{"description":"The id of this zone","type":"string"}},"required":["id","facilityRef"],"type":"object","xml":{"name":"Zone"},"title":"Zone","description":"Zone"},"ZoneForReplacement":{"allOf":[{"$ref":"#/components/schemas/ZoneForCreation"}],"properties":{"version":{"format":"int64","type":"integer"}},"required":["version"],"type":"object","xml":{"name":"ZoneForReplacement"},"title":"ZoneForReplacement","description":"ZoneForReplacement"},"ZoneForCreation":{"allOf":[{"$ref":"#/components/schemas/CustomAttributesResource"}],"properties":{"name":{"description":"The name of this zone","type":"string"},"score":{"description":"The score of this zone","type":"number"}},"required":["name","score"],"type":"object","xml":{"name":"ZoneForCreation"},"title":"ZoneForCreation","description":"ZoneForCreation"},"CustomAttributesResource":{"properties":{"customAttributes":{"description":"Attributes that can be added to this entity. These attributes **cannot** be used within fulfillment processes, but enable you to attach custom data from your systems to fulfillmenttools entities.","nullable":true,"type":"object"}},"title":"CustomAttributesResource","type":"object","description":"CustomAttributesResource"},"VersionedResource":{"properties":{"created":{"description":"The date this entity was created at the platform. This value is generated by the service.","format":"date-time","type":"string"},"lastModified":{"description":"The date this entity was modified last. This value is generated by the service.","format":"date-time","type":"string"},"version":{"description":"The version of the document to be used in optimistic locking mechanisms.","format":"int64","type":"integer"}},"required":["version"],"type":"object","title":"VersionedResource","description":"VersionedResource"},"ApiError":{"items":{"$ref":"#/components/schemas/ErrorInner"},"type":"array","xml":{"name":"ApiError"},"title":"ApiError","description":"ApiError"},"ErrorInner":{"properties":{"description":{"type":"string"},"requestVersion":{"description":"The version provided within an invalid request.","format":"int64","type":"integer"},"summary":{"type":"string"},"version":{"format":"int64","type":"integer"}},"required":["summary"],"type":"object","title":"ErrorInner","description":"ErrorInner"}}},"paths":{"/api/facilities/{facilityId}/zones/{zoneId}":{"get":{"description":"","operationId":"getFacilityZone","parameters":[{"description":"ID of facility from which you want to get the zone. Also accepts tenantFacilityId in urn format (e.g. urn:fft:facility:tenantFacilityId:{your-tenant-facility-id})","in":"path","name":"facilityId","required":true,"schema":{"type":"string"}},{"description":"the ID of the zone","in":"path","name":"zoneId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Zone"},"type":"array"}}},"description":"Zone was found & you are allowed to get it. The result is in the body."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user is not allowed to operate against this API instance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user, although recognized, is not authorized to use this endpoint"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Facility not found"}},"summary":"Get facility zone","tags":["Storage Locations (Inventory)"]}}}}
```

## Update facility zone

> Replaces the current zone of this Facility with the provided in the body.

```json
{"openapi":"3.0.1","info":{"title":"fulfillmenttools","version":"VERSIONLESS"},"tags":[{"description":"Endpoints to create, update and read storage locations and zones.","name":"Storage Locations (Inventory)"}],"servers":[{"url":"https://{tenant}.api.fulfillmenttools.com","variables":{"tenant":{"default":"your-tenant-name"}}}],"security":[{"BearerToken":[]}],"components":{"securitySchemes":{"BearerToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ZoneForReplacement":{"allOf":[{"$ref":"#/components/schemas/ZoneForCreation"}],"properties":{"version":{"format":"int64","type":"integer"}},"required":["version"],"type":"object","xml":{"name":"ZoneForReplacement"},"title":"ZoneForReplacement","description":"ZoneForReplacement"},"ZoneForCreation":{"allOf":[{"$ref":"#/components/schemas/CustomAttributesResource"}],"properties":{"name":{"description":"The name of this zone","type":"string"},"score":{"description":"The score of this zone","type":"number"}},"required":["name","score"],"type":"object","xml":{"name":"ZoneForCreation"},"title":"ZoneForCreation","description":"ZoneForCreation"},"CustomAttributesResource":{"properties":{"customAttributes":{"description":"Attributes that can be added to this entity. These attributes **cannot** be used within fulfillment processes, but enable you to attach custom data from your systems to fulfillmenttools entities.","nullable":true,"type":"object"}},"title":"CustomAttributesResource","type":"object","description":"CustomAttributesResource"},"Zone":{"allOf":[{"$ref":"#/components/schemas/ZoneForReplacement"},{"$ref":"#/components/schemas/VersionedResource"}],"properties":{"facilityRef":{"description":"The id of the facility reference. The given ID has to be present in the system.","type":"string"},"id":{"description":"The id of this zone","type":"string"}},"required":["id","facilityRef"],"type":"object","xml":{"name":"Zone"},"title":"Zone","description":"Zone"},"VersionedResource":{"properties":{"created":{"description":"The date this entity was created at the platform. This value is generated by the service.","format":"date-time","type":"string"},"lastModified":{"description":"The date this entity was modified last. This value is generated by the service.","format":"date-time","type":"string"},"version":{"description":"The version of the document to be used in optimistic locking mechanisms.","format":"int64","type":"integer"}},"required":["version"],"type":"object","title":"VersionedResource","description":"VersionedResource"},"ApiError":{"items":{"$ref":"#/components/schemas/ErrorInner"},"type":"array","xml":{"name":"ApiError"},"title":"ApiError","description":"ApiError"},"ErrorInner":{"properties":{"description":{"type":"string"},"requestVersion":{"description":"The version provided within an invalid request.","format":"int64","type":"integer"},"summary":{"type":"string"},"version":{"format":"int64","type":"integer"}},"required":["summary"],"type":"object","title":"ErrorInner","description":"ErrorInner"}}},"paths":{"/api/facilities/{facilityId}/zones/{zoneId}":{"put":{"description":"Replaces the current zone of this Facility with the provided in the body.","operationId":"putFacilityZone","parameters":[{"description":"ID of facility from which you want to put the zone. Also accepts tenantFacilityId in urn format (e.g. urn:fft:facility:tenantFacilityId:{your-tenant-facility-id})","in":"path","name":"facilityId","required":true,"schema":{"type":"string"}},{"description":"the ID of the zone","in":"path","name":"zoneId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZoneForReplacement"}}},"description":"Patch set","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Zone"}}}},"description":"Zone was found & you are allowed to update it."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user is not allowed to operate against this API instance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user, although recognized, is not authorized to use this endpoint"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Facility not found"}},"summary":"Update facility zone","tags":["Storage Locations (Inventory)"]}}}}
```

## DELETE /api/facilities/{facilityId}/zones/{zoneId}

> Delete facility zone

```json
{"openapi":"3.0.1","info":{"title":"fulfillmenttools","version":"VERSIONLESS"},"tags":[{"description":"Endpoints to create, update and read storage locations and zones.","name":"Storage Locations (Inventory)"}],"servers":[{"url":"https://{tenant}.api.fulfillmenttools.com","variables":{"tenant":{"default":"your-tenant-name"}}}],"security":[{"BearerToken":[]}],"components":{"securitySchemes":{"BearerToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ApiError":{"items":{"$ref":"#/components/schemas/ErrorInner"},"type":"array","xml":{"name":"ApiError"},"title":"ApiError","description":"ApiError"},"ErrorInner":{"properties":{"description":{"type":"string"},"requestVersion":{"description":"The version provided within an invalid request.","format":"int64","type":"integer"},"summary":{"type":"string"},"version":{"format":"int64","type":"integer"}},"required":["summary"],"type":"object","title":"ErrorInner","description":"ErrorInner"}}},"paths":{"/api/facilities/{facilityId}/zones/{zoneId}":{"delete":{"description":"","operationId":"deleteFacilityZone","parameters":[{"description":"ID of facility from which you want to delete the zone. Also accepts tenantFacilityId in urn format (e.g. urn:fft:facility:tenantFacilityId:{your-tenant-facility-id})","in":"path","name":"facilityId","required":true,"schema":{"type":"string"}},{"description":"ID of the zone you want to delete","in":"path","name":"zoneId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Zone was found & you were allowed to delete it."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user is not allowed to operate against this API instance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user, although recognized, is not authorized to use this endpoint"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Facility or storage location not found"}},"summary":"Delete facility zone","tags":["Storage Locations (Inventory)"]}}}}
```

## List storage locations (search)

> Search for StorageLocation

```json
{"openapi":"3.0.1","info":{"title":"fulfillmenttools","version":"VERSIONLESS"},"tags":[{"description":"Endpoints to create, update and read storage locations and zones.","name":"Storage Locations (Inventory)"}],"servers":[{"url":"https://{tenant}.api.fulfillmenttools.com","variables":{"tenant":{"default":"your-tenant-name"}}}],"security":[{"BearerToken":[]}],"components":{"securitySchemes":{"BearerToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"StorageLocationSearchPayload":{"properties":{"after":{"deprecated":false,"description":"The cursor to start after for forward pagination. The value is provided in the `pageInfo.endCursor` field of the response. Cannot be used with `before` or `last`.","type":"string"},"before":{"description":"The cursor to start before for backward pagination. The value is provided in the `pageInfo.startCursor` field of the response. Cannot be used with `after` or `size` (first).","type":"string"},"last":{"description":"Number of items to return for backward pagination. Cannot be used with 'size' (first). Default: 20.","maximum":250,"minimum":1,"type":"number"},"options":{"$ref":"#/components/schemas/SearchOptions"},"query":{"$ref":"#/components/schemas/StorageLocationSearchQuery"},"size":{"description":"Number of items to return for forward pagination. Cannot be used with 'last'. Default: 20.","maximum":250,"minimum":1,"type":"number"},"sort":{"description":"Use for sorting the result.","items":{"$ref":"#/components/schemas/StorageLocationSort"},"maxItems":1,"minItems":1,"type":"array"},"startAfterId":{"deprecated":true,"description":"The ID to start after. Deprecated, use `after` with the value provided in `pageInfo.endCursor` instead.","type":"string"}},"required":["query"],"title":"StorageLocationSearchPayload","type":"object","description":"StorageLocationSearchPayload"},"SearchOptions":{"properties":{"withTotal":{"description":"Set to true to include the total count of items in the search result.","type":"boolean"}},"title":"SearchOptions","type":"object","description":"SearchOptions"},"StorageLocationSearchQuery":{"properties":{"and":{"items":{"$ref":"#/components/schemas/StorageLocationSearchQuery"},"maxItems":500,"type":"array"},"created":{"allOf":[{"$ref":"#/components/schemas/DateFilter"}],"description":"Search entries by created. Applying a narrow and well-considered filter value is strongly recommended, as it can greatly improve response times, especially when working with large datasets."},"customAttributes":{"additionalProperties":{"anyOf":[{"$ref":"#/components/schemas/BooleanFilter"},{"$ref":"#/components/schemas/StringEqFilter"},{"$ref":"#/components/schemas/NumberEqFilter"},{"$ref":"#/components/schemas/DateFilter"}]},"description":"Search by custom attributes","type":"object"},"facilityRef":{"allOf":[{"$ref":"#/components/schemas/StringFilter"}],"description":"Search by facilityRef"},"id":{"allOf":[{"$ref":"#/components/schemas/StringFilter"}],"description":"Search by id"},"name":{"allOf":[{"$ref":"#/components/schemas/StringFilter"}],"description":"Search by name"},"or":{"items":{"$ref":"#/components/schemas/StorageLocationSearchQuery"},"maxItems":500,"type":"array"},"referenced":{"allOf":[{"$ref":"#/components/schemas/StorageLocationReferencedFilter"}],"description":"Nested search by referenced"},"scannableCodes":{"allOf":[{"$ref":"#/components/schemas/StringListFilter"}],"description":"Search by scannableCodes"},"tenantLocationId":{"allOf":[{"$ref":"#/components/schemas/StringFilter"}],"description":"Search by tenantLocationId"},"traits":{"allOf":[{"$ref":"#/components/schemas/StorageLocationTraitEnumListFilter"}],"description":"Search by traits"},"type":{"allOf":[{"$ref":"#/components/schemas/StorageLocationTypeEnumFilter"}],"description":"Search by type"},"zoneRef":{"allOf":[{"$ref":"#/components/schemas/StringFilter"}],"description":"Search by zoneRef"}},"title":"StorageLocationSearchQuery","type":"object","description":"StorageLocationSearchQuery"},"DateFilter":{"properties":{"after":{"description":"Search using ISO‑8601 dates relative to today. Prefix with “–” for past dates. Results include events after the specified date. Example: “–P1D” for yesterday, “P1W” for next week.","maxLength":256,"type":"string"},"before":{"description":"Search using ISO‑8601 dates relative to today. Prefix with “–” for past dates. Results include events before the specified date. Example: “–P1D” for yesterday, “P1W” for next week.","maxLength":256,"type":"string"},"eq":{"format":"date-time","type":"string"},"gt":{"format":"date-time","type":"string"},"gte":{"format":"date-time","type":"string"},"lt":{"format":"date-time","type":"string"},"lte":{"format":"date-time","type":"string"},"notEq":{"format":"date-time","type":"string"}},"title":"DateFilter","type":"object","description":"DateFilter"},"BooleanFilter":{"properties":{"eq":{"type":"boolean"},"notEq":{"type":"boolean"}},"title":"BooleanFilter","type":"object","description":"BooleanFilter"},"StringEqFilter":{"properties":{"eq":{"maxLength":256,"type":"string"},"notEq":{"maxLength":256,"type":"string"}},"title":"StringEqFilter","type":"object","description":"StringEqFilter"},"NumberEqFilter":{"properties":{"eq":{"type":"number"},"gt":{"type":"number"},"gte":{"type":"number"},"lt":{"type":"number"},"lte":{"type":"number"},"notEq":{"type":"number"}},"title":"NumberEqFilter","type":"object","description":"NumberEqFilter"},"StringFilter":{"properties":{"eq":{"maxLength":256,"type":"string"},"in":{"items":{"maxLength":256,"type":"string"},"maxItems":25,"type":"array"},"notEq":{"maxLength":256,"type":"string"},"notIn":{"items":{"maxLength":256,"type":"string"},"maxItems":25,"type":"array"}},"title":"StringFilter","type":"object","description":"StringFilter"},"StorageLocationReferencedFilter":{"properties":{"stock":{"allOf":[{"$ref":"#/components/schemas/StorageLocationReferencedStockFilter"}],"description":"Nested search by stock"}},"title":"StorageLocationReferencedFilter","type":"object","description":"StorageLocationReferencedFilter"},"StorageLocationReferencedStockFilter":{"properties":{"hasStocks":{"allOf":[{"$ref":"#/components/schemas/BooleanFilter"}],"description":"Whether the storage locations has any stocks on it."},"sumOfValues":{"allOf":[{"$ref":"#/components/schemas/NumberFilter"}],"description":"The sum of all stock values in this storage location, i.e. how much stock is stored in this location."}},"title":"StorageLocationReferencedStockFilter","type":"object","description":"StorageLocationReferencedStockFilter"},"NumberFilter":{"properties":{"eq":{"type":"number"},"gt":{"type":"number"},"gte":{"type":"number"},"in":{"items":{"type":"number"},"maxItems":25,"type":"array"},"lt":{"type":"number"},"lte":{"type":"number"},"notEq":{"type":"number"},"notIn":{"items":{"type":"number"},"maxItems":25,"type":"array"}},"title":"NumberFilter","type":"object","description":"NumberFilter"},"StringListFilter":{"properties":{"contains":{"$ref":"#/components/schemas/StringEqFilter"}},"title":"StringListFilter","type":"object","description":"StringListFilter"},"StorageLocationTraitEnumListFilter":{"properties":{"contains":{"allOf":[{"$ref":"#/components/schemas/StorageLocationTraitEnumFilter"}],"description":"Search by traits"}},"title":"StorageLocationTraitEnumListFilter","type":"object","description":"StorageLocationTraitEnumListFilter"},"StorageLocationTraitEnumFilter":{"properties":{"eq":{"description":"Search by traits","enum":["PICKABLE","ACCESSIBLE","KEEP_ON_ZERO","OUTBOUND","IN_MOTION"],"type":"string"},"in":{"description":"Search by traits","items":{"enum":["PICKABLE","ACCESSIBLE","KEEP_ON_ZERO","OUTBOUND","IN_MOTION"],"type":"string"},"maxItems":500,"type":"array"},"notEq":{"description":"Search by traits","enum":["PICKABLE","ACCESSIBLE","KEEP_ON_ZERO","OUTBOUND","IN_MOTION"],"type":"string"}},"title":"StorageLocationTraitEnumFilter","type":"object","description":"StorageLocationTraitEnumFilter"},"StorageLocationTypeEnumFilter":{"properties":{"eq":{"description":"Search by type","enum":["SINGLE_STORAGE","BULK_STORAGE"],"type":"string"},"in":{"description":"Search by type","items":{"enum":["SINGLE_STORAGE","BULK_STORAGE"],"type":"string"},"maxItems":500,"type":"array"},"notEq":{"description":"Search by type","enum":["SINGLE_STORAGE","BULK_STORAGE"],"type":"string"}},"title":"StorageLocationTypeEnumFilter","type":"object","description":"StorageLocationTypeEnumFilter"},"StorageLocationSort":{"properties":{"created":{"enum":["ASC","DESC"],"type":"string"},"customAttributes":{"additionalProperties":true,"maxProperties":1,"minProperties":1,"type":"object"},"lastModified":{"enum":["ASC","DESC"],"type":"string"},"name":{"enum":["ASC","DESC"],"type":"string"},"tenantLocationId":{"enum":["ASC","DESC"],"type":"string"},"zoneRef":{"enum":["ASC","DESC"],"type":"string"}},"title":"StorageLocationSort","type":"object","description":"StorageLocationSort"},"StorageLocationPaginatedResult":{"properties":{"pageInfo":{"allOf":[{"$ref":"#/components/schemas/PageInfo"}],"description":"Pagination information for the search result."},"storageLocations":{"items":{"$ref":"#/components/schemas/StorageLocation"},"type":"array"},"total":{"description":"The total number of items matching the search criteria. Only filled, if withTotal is set to true in the search options.","minimum":0,"type":"number"}},"required":["pageInfo","storageLocations"],"title":"StorageLocationPaginatedResult","type":"object","description":"StorageLocationPaginatedResult"},"PageInfo":{"properties":{"endCursor":{"description":"The cursor to use to fetch the next page of items. Use with parameter `after`.","type":"string"},"hasNextPage":{"description":"If true, there are more items after the current page.","type":"boolean"},"hasPreviousPage":{"description":"If true, there are more items before the current page.","type":"boolean"},"startCursor":{"description":"The cursor to use to fetch the previous page of items.","type":"string"}},"required":["hasNextPage","hasPreviousPage","startCursor","endCursor"],"title":"PageInfo","type":"object","description":"PageInfo"},"StorageLocation":{"allOf":[{"$ref":"#/components/schemas/StorageLocationForReplacement"},{"$ref":"#/components/schemas/VersionedResource"}],"properties":{"facilityRef":{"description":"The id of the facility reference.","type":"string"},"id":{"description":"The id of this storage location","type":"string"},"schemaVersion":{"type":"number"},"traitConfig":{"$ref":"#/components/schemas/StorageLocationTraitConfig"},"traits":{"description":"The traits of this storage location","items":{"$ref":"#/components/schemas/StorageLocationTrait"},"type":"array"},"zoneName":{"deprecated":true,"description":"Deprecated! This field will not be filled in newly created storage locations. Resolve the zone name separately via the facilities/{id}/zones endpoint. The name of the Zone to which this storage location belongs","type":"string"}},"required":["id","facilityRef","traits"],"type":"object","xml":{"name":"StorageLocation"},"title":"StorageLocation","description":"StorageLocation"},"StorageLocationForReplacement":{"allOf":[{"$ref":"#/components/schemas/StorageLocationForCreation"}],"properties":{"version":{"format":"int64","type":"integer"}},"required":["version"],"type":"object","xml":{"name":"StorageLocationForReplacement"},"title":"StorageLocationForReplacement","description":"StorageLocationForReplacement"},"StorageLocationForCreation":{"allOf":[{"$ref":"#/components/schemas/CustomAttributesResource"}],"properties":{"information":{"description":"A free text information about this storage location, max length 1024","maxLength":1024,"type":"string"},"name":{"description":"The name of this storage location","maxLength":15,"type":"string"},"runningSequences":{"description":"The Sequence item/s of this location","items":{"$ref":"#/components/schemas/StorageLocationSequenceItem"},"maxItems":10,"type":"array"},"scannableCodes":{"description":"Barcodes representing this storage location","items":{"type":"string"},"maxItems":5,"type":"array"},"tenantLocationId":{"description":"The internal tenant id for this location","type":"string"},"traitConfig":{"$ref":"#/components/schemas/StorageLocationTraitConfig"},"traits":{"description":"The traits of this storage location, includes both local config and and defaults. Do not use to write to traits, use traitConfig instead.","items":{"$ref":"#/components/schemas/StorageLocationTrait"},"type":"array"},"type":{"$ref":"#/components/schemas/StorageLocationType"},"zoneName":{"description":"The name of the Zone to which this storage location belongs","type":"string"},"zoneRef":{"description":"The id of the Zone to which this storage location belongs","type":"string"}},"required":["name","runningSequences","scannableCodes","type"],"type":"object","xml":{"name":"StorageLocationForCreation"},"title":"StorageLocationForCreation","description":"StorageLocationForCreation"},"CustomAttributesResource":{"properties":{"customAttributes":{"description":"Attributes that can be added to this entity. These attributes **cannot** be used within fulfillment processes, but enable you to attach custom data from your systems to fulfillmenttools entities.","nullable":true,"type":"object"}},"title":"CustomAttributesResource","type":"object","description":"CustomAttributesResource"},"StorageLocationSequenceItem":{"properties":{"nextStorageLocationRef":{"description":"The next storage from which to pick up after this one","type":"string"},"previousStorageLocationRef":{"description":"The previous storage from which to pick up after this one","type":"string"},"score":{"deprecated":true,"description":"Running sequence score - read-only","type":"number"},"type":{"$ref":"#/components/schemas/StorageLocationSequenceType"}},"required":["type"],"type":"object","xml":{"name":"StorageLocationSequenceItem"},"title":"StorageLocationSequenceItem","description":"StorageLocationSequenceItem"},"StorageLocationSequenceType":{"description":"Describes the type of a storage location sequence type\n  * `PICKING_SEQUENCE`- The sequence in wich the storage locations are picked.\n  * `RESTOW_SEQUENCE`- The sequence in wich the storage locations are restowed.","enum":["PICKING_SEQUENCE","RESTOW_SEQUENCE"],"type":"string","xml":{"name":"StorageLocationType"},"title":"StorageLocationSequenceType"},"StorageLocationTraitConfig":{"description":"The configuration of the traits of this storage location","items":{"properties":{"enabled":{"type":"boolean"},"trait":{"$ref":"#/components/schemas/StorageLocationTrait"}},"required":["trait","enabled"],"type":"object"},"type":"array","title":"StorageLocationTraitConfig"},"StorageLocationTrait":{"description":"Describes what kind of actions this stock is available for\n  * `PICKABLE`- The stock is available for picking\n  * `ACCESSIBLE`- The stock is available for stock movements (stowing, inbound, etc)\n  * `KEEP_ON_ZERO`- The stock will not be deleted when emptied\n  * `OUTBOUND`- The stock is intended for outbound processes\n  * `IN_MOTION`- The stock is in motion, used by StowJobs.","enum":["PICKABLE","ACCESSIBLE","KEEP_ON_ZERO","OUTBOUND","IN_MOTION"],"type":"string","xml":{"name":"StorageLocationTrait"},"title":"StorageLocationTrait"},"StorageLocationType":{"description":"Describes the kind of a storage location:\n  * `SINGLE_STORAGE`- it is only allowed to store stock with the same tenantArticleId here\n  * `BULK_STORAGE`- stocks belonging to different tenantArticleIds can be stored here","enum":["SINGLE_STORAGE","BULK_STORAGE"],"type":"string","xml":{"name":"StorageLocationType"},"title":"StorageLocationType"},"VersionedResource":{"properties":{"created":{"description":"The date this entity was created at the platform. This value is generated by the service.","format":"date-time","type":"string"},"lastModified":{"description":"The date this entity was modified last. This value is generated by the service.","format":"date-time","type":"string"},"version":{"description":"The version of the document to be used in optimistic locking mechanisms.","format":"int64","type":"integer"}},"required":["version"],"type":"object","title":"VersionedResource","description":"VersionedResource"},"ApiError":{"items":{"$ref":"#/components/schemas/ErrorInner"},"type":"array","xml":{"name":"ApiError"},"title":"ApiError","description":"ApiError"},"ErrorInner":{"properties":{"description":{"type":"string"},"requestVersion":{"description":"The version provided within an invalid request.","format":"int64","type":"integer"},"summary":{"type":"string"},"version":{"format":"int64","type":"integer"}},"required":["summary"],"type":"object","title":"ErrorInner","description":"ErrorInner"}}},"paths":{"/api/storagelocations/search":{"post":{"deprecated":false,"description":"Search for StorageLocation","operationId":"searchStorageLocation","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageLocationSearchPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageLocationPaginatedResult"}}},"description":"Your search result"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user is not allowed to operate against this API instance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user, although recognized, is not authorized to use this"}},"summary":"List storage locations (search)","tags":["Storage Locations (Inventory)"]}}}}
```

## List zones (search)

> Search for Zone

```json
{"openapi":"3.0.1","info":{"title":"fulfillmenttools","version":"VERSIONLESS"},"tags":[{"description":"Endpoints to create, update and read storage locations and zones.","name":"Storage Locations (Inventory)"}],"servers":[{"url":"https://{tenant}.api.fulfillmenttools.com","variables":{"tenant":{"default":"your-tenant-name"}}}],"security":[{"BearerToken":[]}],"components":{"securitySchemes":{"BearerToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ZoneSearchPayload":{"properties":{"after":{"deprecated":false,"description":"The cursor to start after for forward pagination. The value is provided in the `pageInfo.endCursor` field of the response. Cannot be used with `before` or `last`.","type":"string"},"before":{"description":"The cursor to start before for backward pagination. The value is provided in the `pageInfo.startCursor` field of the response. Cannot be used with `after` or `size` (first).","type":"string"},"last":{"description":"Number of items to return for backward pagination. Cannot be used with 'size' (first). Default: 20.","maximum":250,"minimum":1,"type":"number"},"options":{"$ref":"#/components/schemas/SearchOptions"},"query":{"$ref":"#/components/schemas/ZoneSearchQuery"},"size":{"description":"Number of items to return for forward pagination. Cannot be used with 'last'. Default: 20.","maximum":250,"minimum":1,"type":"number"},"sort":{"description":"Use for sorting the result.","items":{"$ref":"#/components/schemas/ZoneSort"},"maxItems":1,"minItems":1,"type":"array"},"startAfterId":{"deprecated":true,"description":"The ID to start after. Deprecated, use `after` with the value provided in `pageInfo.endCursor` instead.","type":"string"}},"required":["query"],"title":"ZoneSearchPayload","type":"object","description":"ZoneSearchPayload"},"SearchOptions":{"properties":{"withTotal":{"description":"Set to true to include the total count of items in the search result.","type":"boolean"}},"title":"SearchOptions","type":"object","description":"SearchOptions"},"ZoneSearchQuery":{"properties":{"and":{"items":{"$ref":"#/components/schemas/ZoneSearchQuery"},"maxItems":500,"type":"array"},"customAttributes":{"additionalProperties":{"anyOf":[{"$ref":"#/components/schemas/BooleanFilter"},{"$ref":"#/components/schemas/StringEqFilter"},{"$ref":"#/components/schemas/NumberEqFilter"},{"$ref":"#/components/schemas/DateFilter"}]},"description":"Search by custom attributes","type":"object"},"facilityRef":{"allOf":[{"$ref":"#/components/schemas/StringFilter"}],"description":"Search by facilityRef"},"id":{"allOf":[{"$ref":"#/components/schemas/StringFilter"}],"description":"Search by id"},"name":{"allOf":[{"$ref":"#/components/schemas/StringFilter"}],"description":"Search by name"},"or":{"items":{"$ref":"#/components/schemas/ZoneSearchQuery"},"maxItems":500,"type":"array"}},"title":"ZoneSearchQuery","type":"object","description":"ZoneSearchQuery"},"BooleanFilter":{"properties":{"eq":{"type":"boolean"},"notEq":{"type":"boolean"}},"title":"BooleanFilter","type":"object","description":"BooleanFilter"},"StringEqFilter":{"properties":{"eq":{"maxLength":256,"type":"string"},"notEq":{"maxLength":256,"type":"string"}},"title":"StringEqFilter","type":"object","description":"StringEqFilter"},"NumberEqFilter":{"properties":{"eq":{"type":"number"},"gt":{"type":"number"},"gte":{"type":"number"},"lt":{"type":"number"},"lte":{"type":"number"},"notEq":{"type":"number"}},"title":"NumberEqFilter","type":"object","description":"NumberEqFilter"},"DateFilter":{"properties":{"after":{"description":"Search using ISO‑8601 dates relative to today. Prefix with “–” for past dates. Results include events after the specified date. Example: “–P1D” for yesterday, “P1W” for next week.","maxLength":256,"type":"string"},"before":{"description":"Search using ISO‑8601 dates relative to today. Prefix with “–” for past dates. Results include events before the specified date. Example: “–P1D” for yesterday, “P1W” for next week.","maxLength":256,"type":"string"},"eq":{"format":"date-time","type":"string"},"gt":{"format":"date-time","type":"string"},"gte":{"format":"date-time","type":"string"},"lt":{"format":"date-time","type":"string"},"lte":{"format":"date-time","type":"string"},"notEq":{"format":"date-time","type":"string"}},"title":"DateFilter","type":"object","description":"DateFilter"},"StringFilter":{"properties":{"eq":{"maxLength":256,"type":"string"},"in":{"items":{"maxLength":256,"type":"string"},"maxItems":25,"type":"array"},"notEq":{"maxLength":256,"type":"string"},"notIn":{"items":{"maxLength":256,"type":"string"},"maxItems":25,"type":"array"}},"title":"StringFilter","type":"object","description":"StringFilter"},"ZoneSort":{"properties":{"lastModified":{"enum":["ASC","DESC"],"type":"string"}},"title":"ZoneSort","type":"object","description":"ZoneSort"},"ZonePaginatedResult":{"properties":{"pageInfo":{"allOf":[{"$ref":"#/components/schemas/PageInfo"}],"description":"Pagination information for the search result."},"total":{"description":"The total number of items matching the search criteria. Only filled, if withTotal is set to true in the search options.","minimum":0,"type":"number"},"zones":{"items":{"$ref":"#/components/schemas/Zone"},"type":"array"}},"required":["pageInfo","zones"],"title":"ZonePaginatedResult","type":"object","description":"ZonePaginatedResult"},"PageInfo":{"properties":{"endCursor":{"description":"The cursor to use to fetch the next page of items. Use with parameter `after`.","type":"string"},"hasNextPage":{"description":"If true, there are more items after the current page.","type":"boolean"},"hasPreviousPage":{"description":"If true, there are more items before the current page.","type":"boolean"},"startCursor":{"description":"The cursor to use to fetch the previous page of items.","type":"string"}},"required":["hasNextPage","hasPreviousPage","startCursor","endCursor"],"title":"PageInfo","type":"object","description":"PageInfo"},"Zone":{"allOf":[{"$ref":"#/components/schemas/ZoneForReplacement"},{"$ref":"#/components/schemas/VersionedResource"}],"properties":{"facilityRef":{"description":"The id of the facility reference. The given ID has to be present in the system.","type":"string"},"id":{"description":"The id of this zone","type":"string"}},"required":["id","facilityRef"],"type":"object","xml":{"name":"Zone"},"title":"Zone","description":"Zone"},"ZoneForReplacement":{"allOf":[{"$ref":"#/components/schemas/ZoneForCreation"}],"properties":{"version":{"format":"int64","type":"integer"}},"required":["version"],"type":"object","xml":{"name":"ZoneForReplacement"},"title":"ZoneForReplacement","description":"ZoneForReplacement"},"ZoneForCreation":{"allOf":[{"$ref":"#/components/schemas/CustomAttributesResource"}],"properties":{"name":{"description":"The name of this zone","type":"string"},"score":{"description":"The score of this zone","type":"number"}},"required":["name","score"],"type":"object","xml":{"name":"ZoneForCreation"},"title":"ZoneForCreation","description":"ZoneForCreation"},"CustomAttributesResource":{"properties":{"customAttributes":{"description":"Attributes that can be added to this entity. These attributes **cannot** be used within fulfillment processes, but enable you to attach custom data from your systems to fulfillmenttools entities.","nullable":true,"type":"object"}},"title":"CustomAttributesResource","type":"object","description":"CustomAttributesResource"},"VersionedResource":{"properties":{"created":{"description":"The date this entity was created at the platform. This value is generated by the service.","format":"date-time","type":"string"},"lastModified":{"description":"The date this entity was modified last. This value is generated by the service.","format":"date-time","type":"string"},"version":{"description":"The version of the document to be used in optimistic locking mechanisms.","format":"int64","type":"integer"}},"required":["version"],"type":"object","title":"VersionedResource","description":"VersionedResource"},"ApiError":{"items":{"$ref":"#/components/schemas/ErrorInner"},"type":"array","xml":{"name":"ApiError"},"title":"ApiError","description":"ApiError"},"ErrorInner":{"properties":{"description":{"type":"string"},"requestVersion":{"description":"The version provided within an invalid request.","format":"int64","type":"integer"},"summary":{"type":"string"},"version":{"format":"int64","type":"integer"}},"required":["summary"],"type":"object","title":"ErrorInner","description":"ErrorInner"}}},"paths":{"/api/zones/search":{"post":{"deprecated":false,"description":"Search for Zone","operationId":"searchZone","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZoneSearchPayload"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZonePaginatedResult"}}},"description":"Your search result"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user is not allowed to operate against this API instance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"Your user, although recognized, is not authorized to use this"}},"summary":"List zones (search)","tags":["Storage Locations (Inventory)"]}}}}
```
