### 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. ```