### Retrieve facilities list via HTTP GET
Source: https://docs.fulfillmenttools.com/documentation/getting-started/access-to-fulfillmenttools-apis
Example request to fetch all facilities for a specific project.
```http
GET https://{projectId}.api.fulfillmenttools.com/api/facilities
```
--------------------------------
### Pagination Example for Orders API
Source: https://docs.fulfillmenttools.com/documentation/apis/api-reference
This example demonstrates how to paginate through orders using the `size` and `startAfterId` query parameters. The maximum value for `size` is 500.
```http
GET /api/orders?size=20&startAfterId={entityId}
```
--------------------------------
### Example Routing Strategy for Pallet Articles
Source: https://docs.fulfillmenttools.com/documentation/by-pillar/advanced-order-routing/routing-strategy
This example demonstrates a complete routing strategy configuration, including conditions and ratings, specifically tailored for handling pallet articles.
```json
{
"id": "some-unique-id-set-by-the-backend",
"name": "Initial RoutingStrategy",
"nameLocalized": { "en_US": "Initial RoutingStrategy" },
"version": 3,
"revision": 1,
"rootNode": {
"id": "some-unique-id-set-by-the-backend",
"name": "Root Node",
"nameLocalized": { "en_US": "Root Node" },
"config": {
"fences": [],
"ratings": []
},
"nextCondition": {
"id": "some-unique-id-set-by-the-backend",
"nameLocalized": { "en_US": "Order requires pallets" },
"active": true,
"rule": {
"predicates": [
{
"propertyPath": "$.order.orderLineItems[?(@.tags.find(tag => tag.id === 'load-unit' && tag.value === 'pallet'))]",
"transformation": "COUNT",
"entityOperator": "GREATER_EQUALS",
"expectedValue": 1
}
],
"predicateConnector": "AND"
},
"nextNode": {
"id": "some-unique-id-set-by-the-backend",
"active": true,
"nameLocalized": { "en_US": "Pallet routing configuration" },
"config": {
"ratings": [
{
"implementation": "GEO-DISTANCE",
"type": "StandardRating",
"maxPenalty": 1000,
"active": true
}
]
}
}
}
}
}
```
--------------------------------
### Discount Entity Context Example
Source: https://docs.fulfillmenttools.com/documentation/apis/context
A practical example of applying a discount based on facility groups while excluding a specific category.
```json
{
// discount entity
...
"context": [
{
"type": "FACILITY_GROUP",
"values": [
"uuid-facility-group1",
"uuid-facility-group2"
]
},
{
"type": "CATEGORY",
"operator": "NOT",
"values": [
"uuid-category1"
]
}
]
}
```
--------------------------------
### Fetch Facility by ID
Source: https://docs.fulfillmenttools.com/documentation/apis/api-reference
Example HTTP GET request to retrieve a facility entity using its platform 'id'.
```http
GET /api/facilities/54df9aa2-42ec-47a4-9d5a-29d1387be8fa
```
--------------------------------
### GET /api/configurations/picking
Source: https://docs.fulfillmenttools.com/documentation/apis/api-reference/picking-configuration-operations
Retrieves the picking configuration for the tenant.
```APIDOC
## GET /api/configurations/picking
### Description
Get picking config
### Method
GET
### Endpoint
/api/configurations/picking
### Parameters
### Request Body
None
### Response
#### Success Response (200)
- **backofficePickingConfiguration** (BackofficePickingConfiguration) - Configuration for backoffice picking.
- **batchPickingConfiguration** (BatchPickingConfiguration) - Configuration for batch picking.
- **loadUnitAssignmentConfiguration** (LoadUnitAssignmentConfiguration) - Configuration for load unit assignment.
- **multiOrderPickingConfiguration** (MultiOrderPickingConfiguration) - Configuration for multi-order picking.
- **pickingMethodsConfiguration** (PickingMethodsConfiguration) - Configuration for picking methods.
- **pickingShortPickConfiguration** (PickingShortPickConfiguration) - Configuration for handling short picks.
- **restartPickJobConfiguration** (RestartPickJobConfiguration) - Configuration for restarting pick jobs.
- **scanCodeValidationConfiguration** (PickingScanCodeValidationConfiguration) - Configuration for scan code validation.
- **scanningConfiguration** (PickingScanningConfiguration) - Configuration for scanning operations.
- **scheduledPickJobReleaseConfiguration** (ScheduledPickJobReleaseConfiguration) - Configuration for scheduled pick job releases.
- **stockUpdateConfiguration** (PickingStockUpdateConfiguration) - Configuration for stock updates.
- **storageLocationAssignmentConfiguration** (StorageLocationAssignmentConfiguration) - Configuration for storage location assignment.
- **takeOverPickJobConfiguration** (TakeOverPickJobConfiguration) - Configuration for taking over pick jobs.
- **takeOverPickRunConfiguration** (TakeOverPickRunConfiguration) - Configuration for taking over pick runs.
- **created** (string) - The date this entity was created at the platform.
- **lastModified** (string) - The date this entity was modified last.
- **version** (integer) - The version of the document to be used in optimistic locking mechanisms.
#### Response Example
{
"backofficePickingConfiguration": {
"active": true
},
"batchPickingConfiguration": {
"maxAmountOfPickJobsForBatchPick": 50
},
"loadUnitAssignmentConfiguration": {
"pickJob": "AT_START",
"pickRun": "AT_END"
},
"multiOrderPickingConfiguration": {
"maxAmountOfPickJobsForMultiOrderPick": 20
},
"pickingMethodsConfiguration": {
"defaultPickingMethod": "SINGLE_ORDER"
},
"pickingShortPickConfiguration": {
"confirmationOnShortPick": true,
"shortPickHandling": "ALLOW_SHORT_PICK"
},
"restartPickJobConfiguration": {
"enabled": true
},
"scanCodeValidationConfiguration": {
"enabled": true,
"validationType": "ITEM_CODE"
},
"scanningConfiguration": {
"scanCodeType": "ITEM_CODE"
},
"scheduledPickJobReleaseConfiguration": {
"enabled": false
},
"stockUpdateConfiguration": {
"enabled": true,
"updateType": "IMMEDIATE"
},
"storageLocationAssignmentConfiguration": {
"assignmentType": "AT_END"
},
"takeOverPickJobConfiguration": {
"enabled": true
},
"takeOverPickRunConfiguration": {
"enabled": false
},
"created": "2023-10-27T10:00:00Z",
"lastModified": "2023-10-27T10:30:00Z",
"version": 1
}
```
--------------------------------
### Make a listing preorderable
Source: https://docs.fulfillmenttools.com/documentation/by-pillar/global-inventory-hub/stock/out-of-stock-behavior-and-configuration
Configure a listing for pre-orders. Specify the `start` date and time in `availabilityTimeframe` to indicate when picking can begin for pre-ordered items.
```http
PATCH https://{YOUR-TENANT-NAME}.api.fulfillmenttools.com/api/facilities/{facilityId}/listings/{tenantArticleId}
```
```json
{
"version": 2,
"actions": [
{
"action": "ModifyListing",
"outOfStockBehaviour": "PREORDER",
"outOfStockConfig": {
"preorder": {
"availabilityTimeframe": {
"start": "2025-12-01T08:45:50.525Z"
}
}
}
}
]
}
```
--------------------------------
### Create Facility with cURL
Source: https://docs.fulfillmenttools.com/documentation/getting-started/access-to-fulfillmenttools-apis
This cURL command demonstrates how to create a new facility. You must include the Authorization and Content-Type headers, and replace placeholders with your project ID and obtained ID token.
```bash
curl -sSL -X POST 'https://{projectId}.api.fulfillmenttools.com/api/facilities' \
--header 'Authorization: Bearer {idToken}' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Nerd Herd Clothing",
"address": {
"companyName": "Nerd Herd Clothing",
"country": "US",
"postalCode": "81669",
"city": "München",
"street": "Lilienstr.",
"houseNumber": "58"
},
"services": [
{
"type": "COLLECT"
}
],
"status": "ONLINE",
"locationType": "STORE"
}'
```
--------------------------------
### Get Packing Configuration
Source: https://docs.fulfillmenttools.com/documentation/by-pillar/store-operations/packing
Use this endpoint to retrieve the current packing configuration. No specific setup is required beyond having access to the API.
```http
GET https://{your-tenant-name}.api.fulfillmenttools.com/api/configurations/packing
```
--------------------------------
### Fetch Facility using URN Pattern
Source: https://docs.fulfillmenttools.com/documentation/apis/api-reference
Example HTTP GET request to retrieve a facility entity using the URN pattern with 'tenantFacilityId'.
```http
GET /api/facilities/urn:fft:facility:tenantFacilityId:NO-5678-22
```
--------------------------------
### Create Storage Location - Response
Source: https://docs.fulfillmenttools.com/documentation/by-pillar/global-inventory-hub/storage-locations-and-zones
This is an example response after successfully creating a storage location. It confirms the location details and applied traits.
```json
{
"name": "QA on Hold 01",
"tenantLocationId": "qa-location-01",
"type": "SINGLE_STORAGE",
"traits": [
"PICKABLE",
"ACCESSIBLE"
],
"traitConfig": [
{
"trait": "ACCESSIBLE",
"enabled": true
}
],
"scannableCodes": [],
"runningSequences": [],
"facilityRef": "{facilityID}",
"version": 1,
"lastModified": "2026-03-05T16:46:46.052Z",
"id": "019cbee5-0454-70cb-94f3-aa31afe697d6",
"created": "2026-03-05T16:46:46.052Z"
}
```
--------------------------------
### Pick Job Start Action
Source: https://docs.fulfillmenttools.com/documentation/apis/api-reference/picking-operations
Starts a Pick Job by setting its status and line items to IN_PROGRESS.
```APIDOC
## POST /websites/fulfillmenttools/pickjobs/{pickJobId}/actions
### Description
Starts a Pick Job.
### Method
POST
### Endpoint
/websites/fulfillmenttools/pickjobs/{pickJobId}/actions
### Parameters
#### Path Parameters
- **pickJobId** (string) - Required - The ID of the pick job to start.
#### Request Body
- **name** (PickJobStartActionEnum) - Required - The name of the action, must be "START".
- **version** (integer) - Required - The version of the pick job to be changed.
### Request Example
```json
{
"name": "START",
"version": 1
}
```
### Response
#### Success Response (200)
- **status** (string) - The status of the pick job after the action.
- **version** (integer) - The updated version of the pick job.
#### Response Example
```json
{
"status": "IN_PROGRESS",
"version": 2
}
```
```
--------------------------------
### Create Zone - Response
Source: https://docs.fulfillmenttools.com/documentation/by-pillar/global-inventory-hub/storage-locations-and-zones
This is an example response after successfully creating a zone. It includes the zone's name, score, and associated facility reference.
```json
{
"name": "Holding",
"score": 0,
"facilityRef": "019adf9f-1679-70ee-aeeb-4e94aa65d22b",
"lastModified": "2026-03-05T16:50:55.153Z",
"version": 1,
"id": "019cbee8-d232-7730-9a94-7048f9593daa",
"created": "2026-03-05T16:50:55.153Z"
}
```
--------------------------------
### GET /api/configurations/fulfillmentprocessbuffer
Source: https://docs.fulfillmenttools.com/documentation/apis/api-reference/picking-configuration-operations
Retrieves the fulfillment process buffer configuration. This endpoint allows you to get the current settings for how long an order is buffered before processing.
```APIDOC
## GET /api/configurations/fulfillmentprocessbuffer
### Description
Get fulfillment process buffer configuration.
### Method
GET
### Endpoint
/api/configurations/fulfillmentprocessbuffer
### Parameters
### Request Body
None
### Response
#### Success Response (200)
- **id** (string) - The unique identifier of the configuration.
- **minutes** (integer) - Duration in minutes until an order is processed. Defaults to 240.
- **created** (string) - The date this entity was created at the platform.
- **lastModified** (string) - The date this entity was modified last.
- **version** (integer) - The version of the document for optimistic locking.
#### Response Example
```json
{
"id": "string",
"minutes": 240,
"created": "2023-10-27T10:00:00Z",
"lastModified": "2023-10-27T10:00:00Z",
"version": 1
}
```
#### Error Response (401)
- **description** (string) - Description of the error.
- **requestVersion** (integer) - The version provided within an invalid request.
- **summary** (string) - Summary of the error.
- **version** (integer) - The version of the error.
#### Error Response (403)
- **description** (string) - Description of the error.
- **requestVersion** (integer) - The version provided within an invalid request.
- **summary** (string) - Summary of the error.
- **version** (integer) - The version of the error.
#### Error Response (404)
- **description** (string) - Description of the error.
- **requestVersion** (integer) - The version provided within an invalid request.
- **summary** (string) - Summary of the error.
- **version** (integer) - The version of the error.
```
--------------------------------
### Create Storage Location with Searchable Custom Attributes
Source: https://docs.fulfillmenttools.com/documentation/getting-started/search
This example demonstrates how to create a storage location and define custom attributes that can be used for searching. Ensure the 'searchTerms' property is used for attributes intended to be searchable.
```http
POST https://{projectId}.api.fulfillmenttools.com/api/{facilityId}/storagelocations
```
```json
...
"customAttributes": {
"searchTerms": {
"TYPE": "FROZEN"
}
}
...
```
--------------------------------
### Get facility group OpenAPI specification
Source: https://docs.fulfillmenttools.com/documentation/apis/api-reference/facility-groups-core
The OpenAPI definition for the GET /api/facilitygroups/{facilityGroupId} endpoint, including schema definitions for FacilityGroup and error responses.
```json
{"openapi":"3.0.1","info":{"title":"fulfillmenttools","version":"VERSIONLESS"},"tags":[{"description":"Facility groups combine one or multiple facilities into logical groups.","name":"Facility Groups (Core)"}],"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":{"FacilityGroup":{"properties":{"nameLocalized":{"additionalProperties":{"type":"string"},"description":"The localized name","type":"object"},"created":{"description":"Creation timestamp","format":"date-time","type":"string"},"customAttributes":{"description":"Attributes that can be added to the facility group. These attributes cannot be used within fulfillment processes, but it could be useful to have the information carried here.","nullable":true,"type":"object"},"facilityRefs":{"description":"Array of facility references belonging to this group","items":{"type":"string"},"maxItems":1000,"type":"array","uniqueItems":true},"id":{"description":"The facility group ID","type":"string"},"lastModified":{"description":"Last modified timestamp","format":"date-time","type":"string"},"name":{"description":"The name of the facility group","type":"string"},"tenantFacilityGroupId":{"description":"The id of the facility group in the tenants own system","type":"string"},"version":{"description":"Document version for optimistic locking","type":"number"}},"required":["tenantFacilityGroupId","facilityRefs","nameLocalized","id","version","created","lastModified"],"title":"FacilityGroup","type":"object","description":"FacilityGroup"},"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/facilitygroups/{facilityGroupId}":{"get":{"deprecated":false,"description":"Get facility group by id.","operationId":"getFacilityGroup","parameters":[{"in":"path","name":"facilityGroupId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FacilityGroup"}}},"description":"Facility group was found. 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"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"description":"The requested entity was not found"}},"summary":"Get facility group","tags":["Facility Groups (Core)"]}}}}
```
--------------------------------
### Make a listing preorderable
Source: https://docs.fulfillmenttools.com/documentation/by-pillar/global-inventory-hub/stock/out-of-stock-behavior-and-configuration
Configure a listing to allow preorders, specifying when picking can begin.
```APIDOC
## Make a listing preorderable
### Description
Configure a listing to allow preorders, specifying when picking can begin for pre-ordered items.
### Method
PATCH or PUT
### Endpoint
`https://{YOUR-TENANT-NAME}.api.fulfillmenttools.com/api/facilities/{facilityId}/listings/{tenantArticleId}`
### Request Body
```json
{
"version": 2,
"actions": [
{
"action": "ModifyListing",
"outOfStockBehaviour": "PREORDER",
"outOfStockConfig": {
"preorder": {
"availabilityTimeframe": {
"start": "2025-12-01T08:45:50.525Z"
}
}
}
}
]
}
```
```
--------------------------------
### Routing Plan Latest Picking Start Filter
Source: https://docs.fulfillmenttools.com/documentation/apis/api-reference/routing-plans-doms
Schema definition for filtering routing plans by carrier reference, picking start date, and target time.
```APIDOC
## RoutingPlanLatestPickingStartFilter
### Description
Filter routing plans based on carrier information and timing constraints.
### Request Body
- **carrierRef** (StringFilter) - Optional - Search by carrier reference.
- **latestPickingStartDate** (DateFilter) - Optional - Search by latest picking start date.
- **targetTime** (DateFilter) - Optional - Search by target time.
```
--------------------------------
### Create Facility Discount
Source: https://docs.fulfillmenttools.com/documentation/getting-started/facilities/facility-discounts
Use this POST request to add a discount to an existing facility. The example applies a discount to articles not in 'pet food' category and belonging to 'CGN' or 'DUS' facility groups.
```http
POST https://{projectId}.api.fulfillmenttools.com/api/facilities/{facilityRef}/discounts
```
```json
{
"context": [
{
"operator": "NOT",
"type": "CATEGORY",
"values": [
"pet food"
]
},
{
"operator": "AND",
"type": "FACILITY_GROUP",
"values": [
"CGN",
"DUS"
]
}
],
"discount": {
"type": "ABSOLUTE",
"value": 500,
"currency": "EUR",
"decimalPlaces": 2
},
"priority": 20,
"type": "SALES_PRICE"
}
```
--------------------------------
### GET /api/configurations/return
Source: https://docs.fulfillmenttools.com/documentation/by-pillar/store-operations/returns/returns-endpoints
Retrieves the current return configuration for the tenant. This endpoint is currently in Beta status.
```APIDOC
## GET /api/configurations/return
### Description
Returns the current return configuration for the tenant. This part of the API is in Beta status. For details please check the api-release-life-cycle documentation.
### Method
GET
### Endpoint
/api/configurations/return
### Responses
#### Success Response (200)
- **LocalizedReturnConfiguration** (object) - Return config found.
#### Error Responses
- **401** (object) - Your user is not allowed to operate against this API instance.
- **403** (object) - Your user, although recognized, is not authorized to use this endpoint.
- **404** (object) - Entity not found.
```
--------------------------------
### Get Order Cancelation Configuration OpenAPI Spec
Source: https://docs.fulfillmenttools.com/documentation/apis/api-reference/orders-configuration-doms
This OpenAPI 3.0.1 specification defines the GET /api/configurations/ordercancelation endpoint. It details the request, responses, and the schema for the order cancelation configuration.
```json
{"openapi":"3.0.1","info":{"title":"fulfillmenttools","version":"VERSIONLESS"},"tags":[{"description":"DOMS endpoints to define and manage configuration settings related to order processing, such as defaults, business rules, and operational parameters that influence how orders are handled.","name":"Orders Configuration (DOMS)"}],"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":{"OrderCancelationConfiguration":{"additionalProperties":false,"description":"This part of the API is in Beta status. For details please check the api-release-life-cycle documentation.
This configuration is to define specific rules for canceling orders such as the forced cancelation.","properties":{"allowForceCancelOrder":{"type":"boolean"},"created":{"description":"The date this configuration was created at the platform. This value is generated by the service.","format":"date-time","type":"string"},"id":{"type":"string"},"version":{"description":"The version of the configuration to be used in optimistic locking mechanisms.","format":"int64","type":"integer"}},"required":["version","allowForceCancelOrder"],"type":"object","title":"OrderCancelationConfiguration"},"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/configurations/ordercancelation":{"get":{"description":"","operationId":"getOrderCancelationConfiguration","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderCancelationConfiguration"}}},"description":"The Order Cancelation Configuration can be found 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"}},"summary":"Get order cancelation config","tags":["Orders Configuration (DOMS)"]}}}}
```
--------------------------------
### Start a Pick Job (IN_PROGRESS)
Source: https://docs.fulfillmenttools.com/documentation/by-pillar/store-operations/picking/headless-picking
Use the pick job action endpoint with the 'START' name to set the pick job status to IN_PROGRESS. This action triggers a stock data refresh.
```http
POST /api/pickjobs/{pickJobId}/actions
```
```json
{
name: "START"
version: 1
}
```
--------------------------------
### Get Returns Configuration
Source: https://docs.fulfillmenttools.com/documentation/apis/api-reference/returns-configuration-operations
Retrieves the current return configuration for a given tenant. This endpoint is currently in Beta status.
```APIDOC
## GET /returns/config
### Description
Returns the current return configuration for the tenant. This part of the API is in Beta status.
### Method
GET
### Endpoint
https://{tenant}.api.fulfillmenttools.com/returns/config
### Parameters
#### Path Parameters
- **tenant** (string) - Required - Your tenant name.
### Request Example
```json
{
"example": "No request body needed for GET request."
}
```
### Response
#### Success Response (200)
- **active** (boolean) - Enable or disable legacy returns. This field is deprecated.
- **allowTriggerRefund** (boolean) - If true, a refund can be triggered. If false, the endpoints to trigger a refund are disabled.
- **availableItemConditions** (array) - A list of available item conditions for returns.
- **availableReturnReasons** (array) - A list of available reasons for returns.
- **returnTypeConfiguration** (object) - Configuration for the return type.
- **created** (string) - The date this entity was created at the platform.
- **lastModified** (string) - The date this entity was modified last.
- **version** (integer) - The version of the document to be used in optimistic locking mechanisms.
#### Response Example
```json
{
"active": true,
"allowTriggerRefund": false,
"availableItemConditions": [
{
"conditionLocalized": {
"en": "Damaged"
},
"condition": "Damaged"
}
],
"availableReturnReasons": [
{
"identifier": "1",
"reasonLocalized": {
"en": "Item defective"
},
"reason": "Item defective"
}
],
"returnTypeConfiguration": {
"type": "RETURN"
},
"created": "2023-01-01T10:00:00Z",
"lastModified": "2023-01-01T10:00:00Z",
"version": 1
}
```
```
--------------------------------
### POST /facilities
Source: https://docs.fulfillmenttools.com/documentation/apis/api-reference/facilities-core
Creates a new facility in the system. Returns the URL of the created facility in the location header.
```APIDOC
## POST /facilities
### Description
Creates a new facility. The location header of the response contains the URL of the facility.
### Method
POST
### Endpoint
/facilities
### Response
#### Success Response (201)
- **Location** (header) - URL of the created facility
#### Error Responses
- **400** - Invalid input. See response for details.
- **401** - Your user is not allowed to operate against this API instance.
- **403** - Your user, although recognized, is not authorized to use this endpoint.
```
--------------------------------
### Get Current GDPR Configuration
Source: https://docs.fulfillmenttools.com/documentation/by-pillar/order-management/gdpr-configuration
Use this GET endpoint to retrieve the current GDPR configuration, including retention and deletion times. This helps in understanding the existing settings before making changes.
```http
GET https://{YOUR_TENANT_NAME}.api.fulfillmenttools.com/api/configurations/gdpr
```
--------------------------------
### OpenAPI specification for Get facility custom service
Source: https://docs.fulfillmenttools.com/documentation/apis/api-reference/custom-services-core
This JSON snippet defines the OpenAPI 3.0.1 schema for the GET /api/facilities/{facilityId}/customservices/{customServiceId} endpoint, including security requirements and response schemas.
```json
{"openapi":"3.0.1","info":{"title":"fulfillmenttools","version":"VERSIONLESS"},"tags":[{"description":"Endpoints to create, update and read custom services.","name":"Custom Services (Core)"}],"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":{"FacilityCustomServiceConnection":{"additionalProperties":false,"allOf":[{"$ref":"#/components/schemas/VersionedResource"}],"properties":{"customServiceRef":{"type":"string"},"executionTimeInMin":{"type":"integer"},"facilityRef":{"type":"string"},"id":{"type":"string"},"status":{"$ref":"#/components/schemas/FacilityCustomServiceConnectionStatus"}},"required":["id","status","facilityRef","customServiceRef"],"title":"FacilityCustomServiceConnection","description":"FacilityCustomServiceConnection"},"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"},"FacilityCustomServiceConnectionStatus":{"enum":["ACTIVE","INACTIVE"],"type":"string","title":"FacilityCustomServiceConnectionStatus","description":"FacilityCustomServiceConnectionStatus"},"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}/customservices/{customServiceId}":{"get":{"description":"This part of the API is in Beta status. For details please check the api-release-life-cycle documentation.
","operationId":"getFacilityCustomService","parameters":[{"description":"ID of facility. 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 custom service","in":"path","name":"customServiceId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FacilityCustomServiceConnection"}}},"description":"Custom service connection could be found in response 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":"Entity not found"}},"summary":"Get facility custom service","tags":["Custom Services (Core)"]}}}}
```
--------------------------------
### Example Response: Carrier Facility Connection
Source: https://docs.fulfillmenttools.com/documentation/by-pillar/store-operations/carrier-management/custom-carrier
This is a sample response after successfully connecting a carrier to a facility. It confirms the active status and configuration details, including whether manual parcel handling is enabled.
```json
{
"carrierRef": "{CARRIER_ID}",
"facilityRef": "{FACILITY_ID}",
"status": "ACTIVE",
"configuration": {
"manualParcelHandlingActive": true
},
"version": 0
}
```
--------------------------------
### GET /api/users
Source: https://docs.fulfillmenttools.com/documentation/getting-started/authentication-and-authorization/user-management/user-endpoints
Retrieves a list of users from the system.
```APIDOC
## GET /api/users
### Description
List all users within the system.
### Method
GET
### Endpoint
/api/users
### Response
#### Success Response (200)
- **User** (object) - A list of user objects containing details such as firstname, lastname, username, id, authenticationProvider, version, and assignedRoles.
```
--------------------------------
### GET /api/shipments
Source: https://docs.fulfillmenttools.com/documentation/apis/api-reference/shipments-operations
Retrieves a list of shipments from the system.
```APIDOC
## GET /api/shipments
### Description
List all shipments available in the system.
### Method
GET
### Endpoint
/api/shipments
### Response
#### Success Response (200)
- **shipments** (array) - List of shipment objects
- **total** (integer) - Total number of found entities for this query
#### Response Example
{
"shipments": [],
"total": 0
}
```
--------------------------------
### GET /api/configurations/handover
Source: https://docs.fulfillmenttools.com/documentation/by-pillar/store-operations/handover
Retrieves the current handover configuration.
```APIDOC
## GET /api/configurations/handover
### Description
Retrieves the current handover configuration.
### Method
GET
### Endpoint
https://{your-tenant-name}.api.fulfillmenttools.com/api/configurations/handover
### Response
#### Success Response (200)
- **id** (string) - The identifier for the configuration.
- **version** (integer) - The version of the configuration.
- **availableRefusedReasons** (array) - A list of available refused reasons.
- **active** (boolean) - Indicates if the reason is active.
- **refusedReasonLocalized** (object) - Localized versions of the refused reason.
- **[locale_code]** (string) - Localized reason text.
- **refusedReason** (string) - The default refused reason text.
- **created** (string) - The timestamp when the configuration was created.
- **lastModified** (string) - The timestamp when the configuration was last modified.
#### Response Example
{
"id": "handover",
"version": 3,
"availableRefusedReasons": [
{
"active": true,
"refusedReasonLocalized": {
"de_DE": "Falsche farbe",
"fr_FR": "Mauvaise couleur",
"en_US": "Wrong color"
},
"refusedReason": "Wrong color"
},
{
"active": false,
"refusedReasonLocalized": {
"de_DE": "Falsche größe",
"fr_FR": "Mauvaise taille",
"en_US": "Wrong size"
},
"refusedReason": "Wrong size"
}
],
"created": "2025-12-04T13:54:45.549Z",
"lastModified": "2026-03-05T09:29:16.408Z"
}
```
--------------------------------
### Define shop price with currency
Source: https://docs.fulfillmenttools.com/documentation/by-pillar/global-inventory-hub/articles/article-attributes
Example of setting article attributes for a shop price category, specifying the value and currency.
```json
{
"quantity": 2,
"article": {
"tenantArticleId": "111222333",
"title": "T-Shirt",
"imageUrl": "https://loremflickr.com/320/240/shirt",
"attributes": [
{
"key": "valuePerUnit",
"category": "shop",
"type": "NUMBER",
"value": "1337"
},
{
"key": "currency",
"category": "shop",
"type": "CURRENCY",
"value": "EUR"
}
]
}
}
```
--------------------------------
### GET /api/handoverjobs
Source: https://docs.fulfillmenttools.com/documentation/apis/api-reference/handovers-operations
Retrieves a list of handover jobs.
```APIDOC
## GET /api/handoverjobs
### Description
List handover jobs available in the system.
### Method
GET
### Endpoint
/api/handoverjobs
### Response
#### Success Response (200)
- **handoverjobs** (array) - List of handover job objects
- **total** (integer) - Total number of found entities for this query
```
--------------------------------
### Deploy Service to Google Cloud Run
Source: https://docs.fulfillmenttools.com/documentation/by-pillar/store-operations/carrier-management/custom-carrier
Command to deploy the service from source code to Google Cloud Run.
```bash
gcloud run deploy headlesscarrierservice
```
--------------------------------
### Create a facility via POST request
Source: https://docs.fulfillmenttools.com/documentation/getting-started/facilities
Initiates the creation of a new facility by sending a POST request to the facilities endpoint.
```http
POST https://{projectId}.fulfillmenttools.com/api/facilities
```
--------------------------------
### GET /api/configurations/inventory
Source: https://docs.fulfillmenttools.com/documentation/apis/api-reference/stocks-configuration-inventory
Retrieves the current inventory configuration.
```APIDOC
## GET /api/configurations/inventory
### Description
Get inventory config
### Method
GET
### Endpoint
/api/configurations/inventory
### Parameters
### Request Body
### Request Example
### Response
#### Success Response (200)
- **isMixedStorage** (boolean) - Indicates if mixed storage is enabled.
- **version** (number) - The version of the inventory configuration.
#### Response Example
```json
{
"isMixedStorage": true,
"version": 1
}
```
```
--------------------------------
### Example: Searching with Date Operators
Source: https://docs.fulfillmenttools.com/documentation/getting-started/search
Demonstrates how to use date operators like 'lt' (less than) for searching.
```APIDOC
## POST /api/storagelocations/search
### Description
Example: Search for storage locations with a `created` date before October 2, 2024.
### Method
POST
### Endpoint
/api/storagelocations/search
### Request Body
```json
{
"query": {
"created": {
"lt": "2024-10-02T14:43:21.257Z"
}
}
}
```
```
--------------------------------
### GET /websites/fulfillmenttools/operative-processes
Source: https://docs.fulfillmenttools.com/documentation/apis/api-reference/operative-process-operations
Retrieves a list of operative processes.
```APIDOC
## GET /websites/fulfillmenttools/operative-processes
### Description
Get operative processes.
### Method
GET
### Endpoint
/websites/fulfillmenttools/operative-processes
### Parameters
### Request Example
### Response
#### Success Response (200)
- **processes** (array) - A list of operative processes.
#### Response Example
{
"processes": [
{
"id": "string",
"name": "string"
}
]
}
```
--------------------------------
### Example: Sorting Search Results
Source: https://docs.fulfillmenttools.com/documentation/getting-started/search
Illustrates how to sort the results of a search query.
```APIDOC
## POST /api/{ENTITY-NAME}/search
### Description
Example: Sorting search results by a specific attribute in ascending order.
### Method
POST
### Endpoint
/api/{ENTITY-NAME}/search
### Request Body
```json
{
"sort": [
{
"": "ASC"
}
],
"query": {
// ... other query parameters
}
}
```
```
--------------------------------
### Create a listing
Source: https://docs.fulfillmenttools.com/documentation/by-pillar/global-inventory-hub/listing
Send a PUT request to the facility listings endpoint. A facility must exist before creating a listing.
```http
PUT https://{YOUR-TENANT-NAME}.api.fulfillmenttools.com/api/facilities/{facilityId}/listings
```
```json
{
"listings": [
{
"imageUrl": "https://upload.wikimedia.org/wikipedia/en/3/35/Wonka_Bar%2C_packaging.jpg",
"price": 2.99,
"tenantArticleId": "4892",
"titleLocalized": {
"de_DE": "Wonkas Schokoriegel",
"en_US": "Wonkas Chocolate Bar"
}
}
]
}
```
--------------------------------
### GET /shipments/parcel-return-note
Source: https://docs.fulfillmenttools.com/documentation/by-pillar/store-operations/returns/returns-endpoints
Retrieves the return note for a specific parcel.
```APIDOC
## GET /shipments/parcel-return-note
### Description
Retrieves the return note associated with a specific parcel.
### Method
GET
### Endpoint
/shipments/parcel-return-note
### Response
#### Success Response (200)
- **application/pdf** - The return note document in PDF format.
#### Error Response (401)
- **Unauthorized** - The user is not authorized to use this endpoint.
#### Error Response (404)
- **Parcel not found** - The requested parcel could not be located.
```