# 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","ModifyFeature","ModifyParcel","ModifyParcelLoadUnit","ModifyRestowItem","RemovePickJobFromPickRun","ModifyPartialStock","AddTagsToProcess","AssignFacilityToProcess","UpdateGdprCleanupDateAction","ModifyStorageLocation","ModifyPackingContainerType","ModifyPackingContainerTypeIcon","ReplaceCodesInPackingTargetContainer","AddLineItemToPackingTargetContainer","RemoveLineItemFromPackingTargetContainer","UpdateLineItemOnPackingTargetContainer","UpdatePackingTargetContainerLineItemRecordableAttributes","UpdatePackingTargetContainerStorageLocation","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)"]}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fulfillmenttools.com/documentation/apis/api-reference/storage-locations-inventory.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
