Florlog Orders API Documentation
The API lets Florlog clients create or update a single order with a lean JSON payload.
Send a unique order_reference
; posting again with the same reference updates the existing order.
Names you pass (entities, products, locations) are resolved to internal IDs automatically.
Table of Contents
Overview
One order per request.
Optionally include transport‑company details and asset requirements (e.g. number of Danish carts).
If order_reference
already exists, the order is updated instead of created.
Authentication
Every call must supply your API token:
Authorization: Bearer <your_api_token>
UAT Environment
Use the User Acceptance Testing (UAT) environment to safely develop and test your Florlog integrations. Orders posted here do not touch production data.
Component | URL |
---|---|
Web GUI (portal) | https://test.florlog.be |
API base URL | https://uat.florlog.be |
Note: You will receive a dedicated UAT API token. Production tokens are not valid on UAT and vice‑versa.
Endpoint
Method | URL | Content‑Type |
---|---|---|
POST | https://api.florlog.be/downstream/order | application/json |
Request Structure
{
"order": {
"order_reference": "ABC-12345",
"order_date": "2025-06-01",
"delivery_request_datetime": "2025-06-03T14:00:00Z",
// Parties
"buyer_entity": "Plantasia BV", // optional
"seller_entity": "Bloemenhuis West-Vlaanderen", // required
// Locations
"pickup_location": "Industrieweg 12, 9200 Dendermonde, Oost-Vlaanderen",
"drop_off_location": "Kerkstraat 45, 8500 Kortrijk, West-Vlaanderen",
// Transport
"transport_company": "Carrier NV", // optional
"asset_requirement": { // optional
"danish_cart": 4,
"euro_pallet": 2
},
// Line items
"order_lines": [ // optional
{ "product": "Rode Rozen", "quantity": 10 }
]
}
}
Field Definitions
Field | Type | Required | Notes |
---|---|---|---|
order_reference | String | ✓ | Unique per order; re‑using updates. |
order_date | Date | ✓ | Date order created (YYYY-MM-DD ). |
delivery_request_datetime | DateTime | ✓ | Desired delivery at drop‑off (ISO 8601). |
buyer_entity | String | — | Existing entity name. |
seller_entity | String | ✓ | Existing entity name. |
pickup_location | String | — | Existing location address. |
drop_off_location | String | ✓ | Existing location address. |
transport_company | String | — | Carrier name. |
asset_requirement | Object | — | Keys = requirement type (string), values = quantity (integer). |
order_lines | Array | — | Zero or more line items. |
└︎ product | String | ✓ if present | Existing product name. |
└︎ quantity | Integer | ✓ if present | Positive integer. |
Response Structure
Valid (201 Created
)
{ "status": "created" }
If order_reference
existed, the order is updated and the same response is returned.
Invalid (422 Unprocessable Entity
)
{
"status": "not_valid",
"errors": {
"order.seller_entity": ["The seller entity field is required."]
}
}
Error Handling
Status | Meaning |
---|---|
400 Bad Request | Malformed JSON or missing order key. |
401 Unauthorized | Missing or invalid token. |
422 Unprocessable Entity | Field validation failed. |
500 Internal Server Error | Unexpected server error. |
Contact & Support
Email [email protected] for assistance.