Download OpenAPI specification:Download
Our resources are the first part of the URI and then eventually followed by some sub-resources (i.e. /users/timesheet
) or actions (i.e. /task/{id}/discard
). Those URIs are predictable and make use of the various HTTP verbs, such as GET
, POST
, PUT
and DELETE
. For more details about the REST specification, visit the dedicated Wikipedia page.
When an issue occurs, we will return standardized error codes, such as 401
(you did not authenticate), 400
(bad payload), 403
(requested action is not allowed), 404
(resource not found), and so on. If you want a list of the available HTTP status codes, please click here.
Our sole type of content is JSON. Please be sure to be able to process JSON responses when implementing our APIs in your programs. We also solely accept application/json
as a Content-Type
when sending us payloads.
Our documentation is written following the OAS 3.0.2 format. This allows you to download our YAML
documentation and use it with other documentation generators, generate client SDKs to consume it, or even make your developer's life easier by giving them simply the file instead of having to navigate through a website. If you wish to learn more about the OAS format, please click here.
Urbantz offers two authentication methods: Basic auth with API key and oAuth2 / OpenId Connect.
To authenticate with API key, you need to copy the api key shown in Administration > Platform > General and include it in every request as username
in the authorization header or use the header “x-api-key”.
To authenticate with OpenID, you need to create a client in Administration > Platform > General > Security and use the following URL to retrieve the temporary token
https://auth.urbantz.com/realms/{account_snake}-{account_type}/protocol/openid-connect/token being:
account_snake
the snake-case identifier used in the URL of your platform or sender portal.
account_type
the type of account. It can be “platform“ or “sender”.
curl --location --request POST 'https://auth.urbantz.com/realms/my_account_name-platform/protocol/openid-connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id={{ CLIENT_ID }}' \
--data-urlencode 'client_secret={{ CLIENT_SECRET }}' \
--data-urlencode 'grant_type=client_credentials'
{
"access_token": {{ JWT_TOKEN }},
"expires_in": 300,
"refresh_expires_in": 0,
"token_type": "Bearer",
"not-before-policy": 0,
"scope": "urbantz"
}
In the response you will find the access token and the expiration time:
access_token
is the Bearer token that will be passed to the Urbantz APIexpires_in
indicates how long (in seconds) the token is valid (5 minutes).The access token must be provided in every request using the authorization header.
curl --location --request GET '{{ URBANTZ_API }}/v2/announcement' \
--header 'Authorization: Bearer {ACCESS_TOKEN}';
Some of our endpoints implement pagination, which allows you to retrieve a limited number of results per query and navigate through these results using pages.
In this section, we'll explain how pagination works in Urbantz APIs. Pagination is employed in endpoints that return lists of entities such as tasks, rounds, reservations, or announcements. This approach enhances efficiency by managing large datasets effectively.
When you make requests to endpoints that support pagination, the results are constrained to a specific page size. This page size is determined by the endpoint itself and the size of the retrieved data.
To utilize pagination, you are required to include the page number with every request. Although the page size is optional, you can find information about the default value and maximum limit for each endpoint in their respective documentation.
page
: An integer indicating the page number to retrieve. The default value is 0
.
pageSize
: An integer representing the number of results to retrieve in a single request. Each endpoint has a default value and a predefined maximum limit.
To retrieve all results associated with a particular request, you need to increment the page number. If the number of results is fewer than the page size, it indicates that you've reached the last available page. Any page number beyond this limit will result in an empty array ([]
) being returned.
Make sure to consult the documentation for each specific endpoint to determine if it supports pagination.
By following these guidelines, you can effectively implement pagination in Urbantz APIs and optimize the process of retrieving large sets of data.
If you wish to dry-run the calls to our APIs, (i.e. to develop your integration to our APIs) without playing with live/real data, you are invited to use the sandbox endpoints. Those endpoints are the same as production ones, but the domain is different. Production data is made with domain api.urbantz.com
, where sandbox uses the api.sandbox.urbantz.com
domain.
Please note that the domains have independent credentials. This is useful if you mistakenly switched environments and went into production instead of sandbox.
Feel free to contact our Support Team if any question remains after reading this documentation our looking up in our Help center.
Announcements are the tasks and services you created - There is one for the tasks and services created using the Web interface, and one for each announce made using the APIs, FTP or file upload.
Returns a list of announcements. By default, it will return the 10 announcements for today (UTC). If you provide the date
query parameter, it will return announcements for that specific date instead. It is possible to get the next ones adding the 'page' parameter. Announcements with unplanned tasks will be returned regardless of the date provided.
An announcement is the action of sending tasks into the system by making an API call. Tasks will be routed within the system according to the flow configuration.
date | string <date> Example: date=2019-09-30 The date the announcement was received |
page | number (Page) Default: 0 The page index of the requested records |
status | string Enum: "SUCCESS" "FAILED" "IN_PROGRESS" Example: status=IN_PROGRESS The announcement's status |
[- {
- "_id": "507f191e810c19729de860ea",
- "name": "string",
- "flux": "507f191e810c19729de860ea",
- "endpoint": "507f191e810c19729de860ea",
- "by": "507f191e810c19729de860ea",
- "count": 0,
- "updatedCount": 0,
- "platform": "4D3F12345AAAF30B2DD1CCFB",
- "mode": "FILE",
- "targetFluxes": [
- {
- "_id": "507f191e810c19729de860ea",
- "name": "56fe250f1eb3571100bb081c_MORNING_57454b1556950a11005189fa_2017-11-15",
- "date": "2019-03-13T12:34:56.012Z",
- "hub": "507f191e810c19729de860ea",
- "status": "NON_OPTIMIZED",
- "logs": [
- { }
], - "count": 0,
- "issues": {
- "geocoding": 0,
- "validation": 0
}, - "jobs": [
- "string"
], - "published": true,
- "updated": "2019-03-13T12:34:56.012Z",
- "validated": true,
- "updateWarnings": {
- "rounds": [
- "string"
], - "tasks": [
- "string"
]
}
}
], - "status": "SUCCESS",
- "start": "2019-03-13T12:34:56.012Z",
- "end": "2019-03-13T12:34:56.012Z",
- "isLocked": true,
- "error": {
- "details": [
- "bad geocoding"
]
}, - "issues": {
- "geocoding": 0,
- "validation": 0
}
}
]
Returns one single announcement by its ID that is attached to the platform you are querying with. An announcement is the action of sending tasks into the system by making an API call. Tasks will be routed within the system according to the flow configuration.
id required | string Example: 4dfc181e09d4e5eb4d3463da Id of the announcement |
{- "_id": "507f191e810c19729de860ea",
- "name": "string",
- "flux": "507f191e810c19729de860ea",
- "endpoint": "507f191e810c19729de860ea",
- "by": "507f191e810c19729de860ea",
- "count": 0,
- "updatedCount": 0,
- "platform": "4D3F12345AAAF30B2DD1CCFB",
- "mode": "FILE",
- "targetFluxes": [
- {
- "_id": "507f191e810c19729de860ea",
- "name": "56fe250f1eb3571100bb081c_MORNING_57454b1556950a11005189fa_2017-11-15",
- "date": "2019-03-13T12:34:56.012Z",
- "hub": "507f191e810c19729de860ea",
- "status": "NON_OPTIMIZED",
- "logs": [
- { }
], - "count": 0,
- "issues": {
- "geocoding": 0,
- "validation": 0
}, - "jobs": [
- "string"
], - "published": true,
- "updated": "2019-03-13T12:34:56.012Z",
- "validated": true,
- "updateWarnings": {
- "rounds": [
- "string"
], - "tasks": [
- "string"
]
}
}
], - "status": "SUCCESS",
- "start": "2019-03-13T12:34:56.012Z",
- "end": "2019-03-13T12:34:56.012Z",
- "isLocked": true,
- "error": {
- "details": [
- "bad geocoding"
]
}, - "issues": {
- "geocoding": 0,
- "validation": 0
}
}
This endpoint is for getting a URI that can be used to download an attachment for an entity.
The relative path for this can be found on the attachments/[attachment]/url value when retrieving an entity.
The API does not check for the existence of the attachment, but generates a signed URI to retrieve the attachment. This means that if you provide details for an attachment that does not exist, then you will still get a signed URI, but will not be able to retrieve the document.
type required | string Enum: "platforms" "tasks" The type of the entity that the attachment is on (plural form) Use “platforms” to retrieve any image of the task (signature, failed delivery picture, etc..) Use “tasks” to retrieve the delivery note of the task (pdf file) |
id required | string Example: 5f9af3044f8cc32e047d83a7 The ID of the entity |
key required | string Example: cd360c3e-b917-40b2-ad71-885413c98dd6.pdf The key for the attachment |
The External Carrier endpoints are dedicated to our standardized integration for carriers. This collection of endpoints allows them to update parts of a task, to make the communication with their systems as seamless as possible.
This allows various carriers to implement an integration with our services - This is an advantage for both Urbantz and the Third-party, as Urbantz can provide more delivery solutions to the customers, and the third-party can be suggested by Urbantz when a customer wishes to easily start delivering without having its own fleet. This is still a new feature and will be evolving in the future.
This endpoint allows you to assign a External Tracking ID (i.e. a tracking number for your delivery company) to a task identified by its internal Identifier.
This is mandatory to assign an External Tracking ID to a task you wish to work with. The other External Carrier APIs base themselves on the External Tracking ID to modify the statuses of the task, such as marking them delivered, returned, or assigned to a driver of your Carrier Fleet.
id required | string (ID) Example: 507f191e810c19729de860ea The Urbantz internal task id |
extTrackId required | string (ExtTrackId) An external task identifier to use for mapping data between an external carrier and Urbantz |
{- "extTrackId": "ext-12345"
}
{- "createdBy": {
- "firstName": "John",
- "lastName": "Doe",
- "_id": "507f191e810c19729de860ea",
- "id": "507f191e810c19729de860ea",
- "externalId": "extRefDoe"
}, - "__v": 0,
- "_id": "507f191e810c19729de860ea",
- "initialSequence": 0,
- "trackingId": "abcdef-123456-4abc-acbacbfcabcfbcbfbacbfab",
- "extTrackId": "ext-12345",
- "type": "delivery",
- "taskId": "my-task-id",
- "taskReference": "task-ref-001-d",
- "progress": "ANNOUNCED",
- "status": "ARRIVED",
- "items": [
- {
- "_id": "507f191e810c19729de860ea",
- "type": "Box",
- "status": "ARRIVED",
- "name": "Soft Drink 6 pack",
- "description": "Big box with a red mark on the top",
- "barcode": 9876543211234,
- "barcodeEncoding": "CODE128",
- "reference": 9876543211234,
- "quantity": 1,
- "processedQuantity": 1,
- "dimensions": {
- "weight": 200,
- "volume": 0.2
}, - "damaged": {
- "confirmed": false,
- "pictures": [
- "string"
]
}, - "labels": [
- "frozen"
], - "skills": [
- "speaks_french"
], - "log": [
- {
- "_id": "507f191e810c19729de860ea",
- "when": "2019-03-13T12:34:56.012Z",
- "to": "PENDING",
- "by": "string"
}
], - "metadata": {
- "property1": 23,
- "property2": "Hello World"
}, - "group": "string"
}
], - "client": "507f191e810c19729de860ea",
- "hub": "507f191e810c19729de860ea",
- "hubName": "My Warehouse",
- "associatedName": "Lumikko Oyj",
- "associated": "5c3c63c23c32c30cb3cc1234c",
- "dependency": "507f191e810c19729de860ea",
- "hasDependency": "507f191e810c19729de860ea",
- "round": "R01",
- "archived": "string",
- "actualTime": {
- "arrive": {
- "when": "2019-03-24T12:34:56.123Z",
- "location": {
- "type": "Point",
- "geometry": [
- 0
]
}, - "forced": false,
- "isCorrectAddress": false
}
}, - "order": "string",
- "paymentType": "CCOD",
- "platform": "5c98f80a6b3dc61664c05cbf",
- "platformName": "Cortedal SYS, Oy",
- "endpoint": "5c3c645e3b37f30b3fc0240f",
- "errorLocation": {
- "addressLines": [
- "string"
], - "geocodeScore": 98,
- "location": {
- "type": "Point",
- "geometry": [
- 0
]
}
}, - "customerCalls": [
- {
- "when": "2019-03-13T12:34:56.012Z",
- "by": "string"
}
], - "issues": [
- {
- "type": "GEOCODING",
- "code": 0,
- "line": 0,
- "error": "string"
}
], - "notifications": [
- {
- "notificationId": "string",
- "sentDate": "2019-12-23T12:34:56.123Z",
- "by": {
- "firstName": "John",
- "lastName": "Doe",
- "phoneNumber": "32123123123",
- "picture": "/some/folder/image/c1235b6a253cd12d3",
- "_id": "507f191e810c19729de860ea",
- "externalId": "string"
}
}
], - "notificationSettings": {
- "sms": false,
- "email": false
}, - "replanned": false,
- "sourceHash": "string",
- "updated": "2019-03-24T12:34:56.123Z",
- "when": "2019-03-24T12:34:56.123Z",
- "targetFlux": "56fe250f1eb3571100bb081c_MORNING_57454b1556950a11005189fa_2017-11-15",
- "skills": [
- "speaks_french"
], - "roundName": "R03",
- "roundColor": "#FFCC0D",
- "products": [
- {
- "productId": "001234",
- "name": "CHEESE",
- "description": "Goat cheese pack, 400gr",
- "type": "food",
- "barcode": "11231212121",
- "quantity": 3,
- "unitPrice": 13.95,
- "isSubstitution": false,
- "quantityRejected": 0,
- "rejectedReason": {
- "_id": "507f191e810c19729de860ea",
- "name": "damaged"
}
}
], - "hasRejectedProducts": false,
- "activity": "string",
- "sequence": 1,
- "id": "5c98f80a6b3dc61664c05cbb",
- "flux": "5c3c63c23c32c30cb3cc1234c",
- "collectedAmount": 10.2,
- "closureDate": "2019-03-25T15:50:50.123Z",
- "by": "5c3c63c23c32c30cb3cc1234c",
- "attempts": 0,
- "arriveTime": "2019-03-25T15:50:50.123Z",
- "announcement": "507f191e810c19729de860ea",
- "shift": "string",
- "serviceTime": 5,
- "realServiceTime": {
- "serviceTime": 120,
- "tasksDeliveredInSameStop": 1,
- "confidence": "HIGH",
- "version": 2
}, - "maxTransitTime": 0,
- "timeWindowMargin": 0,
- "stopSequence": 2,
- "date": "2019-03-13T12:34:56.012Z",
- "labels": [
- "frozen"
], - "instructions": "Once inside of the building, follow the corridor on the right and take the elevator",
- "metadata": {
- "property1": 23,
- "property2": "Hello World"
}, - "dimensions": {
- "weight": 200,
- "volume": 0.2
}, - "timeWindow": {
- "start": "2019-03-13T12:34:56.012Z",
- "stop": "2019-03-13T12:34:56.012Z"
}, - "timeWindow2": {
- "start": "2019-03-13T12:34:56.012Z",
- "stop": "2019-03-13T12:34:56.012Z"
}, - "contact": {
- "account": "ACC123456789",
- "name": "Acme Inc.",
- "person": "Luke Skywalker",
- "phone": "+32 477 99 99 99",
- "extraPhones": [
- "+32 477 99 99 99"
], - "language": "fr",
- "buildingInfo": {
- "floor": 5,
- "hasElevator": true,
- "digicode1": "1234A",
- "digicode2": "4321A",
- "hasInterphone": true,
- "interphoneCode": "4524#"
}
}, - "location": {
- "building": "A cool building name",
- "number": "251",
- "street": "Avenue Louise",
- "city": "Brussels",
- "zip": "1050",
- "origin": "ADDRESS_BOOK",
- "country": "Belgium",
- "location": {
- "geometry": [
- 0
], - "type": "Point"
}, - "address": "251 avenue louise, 1050 Brussels, Belgium",
- "addressLines": [
- "string"
], - "geocodeScore": 98,
- "countryCode": "BEL"
}, - "source": {
- "building": "A cool building name",
- "number": "251",
- "street": "Avenue Louise",
- "location": {
- "geometry": [
- 0
], - "type": "Point"
}, - "address": "251 Avenue Louise, 1050 BRUXELLES, BELGIQUE",
- "city": "Brussels",
- "zip": "1050",
- "country": "Belgium",
- "geocodeScore": 98,
- "addressLines": [
- "251 Avenue Louise",
- "1050 Brussels",
- "Belgium"
]
}, - "hasBeenPaid": false,
- "price": 0,
- "driver": "5c98f80a6b3dc61664c05cbb",
- "requires": {
- "pickup": {
- "dispatcher": {
- "scan": false
}, - "driver": {
- "contactless": false,
- "signature": false,
- "signatureAndComment": false,
- "scan": false,
- "comment": false,
- "photo": false
}, - "stop": {
- "onSite": false
}, - "failure": {
- "photo": false
}
}, - "delivery": {
- "dispatcher": {
- "scan": false
}, - "driver": {
- "contactless": false,
- "prepCheckList": false,
- "prepScan": false,
- "signature": false,
- "signatureAndComment": false,
- "signatureAndItemConcerns": false,
- "scan": false,
- "comment": false,
- "photo": false
}, - "stop": {
- "onSite": false
}, - "failure": {
- "photo": false
}
}, - "other": {
- "driver": {
- "timer": false
}
}
}, - "execution": {
- "successComment": "string",
- "successPicture": "string",
- "failedReason": {
- "reasonId": "507f191e810c19729de860ea",
- "reason": "string",
- "custom": "string",
- "picture": "string"
}, - "timer": {
- "timestamps": [
- {
- "type": "start",
- "time": "2019-12-23T12:34:56.123Z"
}
]
}, - "signature": {
- "data": "string",
- "name": "string"
}, - "position": {
- "accuracy": 0,
- "altitude": 0,
- "heading": 0,
- "latitude": 50.812345,
- "longitude": 4.312345,
- "speed": 0,
- "timestamp": 1553529404789
}, - "contactless": {
- "forced": true,
- "reason": "string"
}
}, - "log": [
- {
- "_id": "507f191e810c19729de860ea",
- "when": "2019-03-13T12:34:56.012Z",
- "to": "ANNOUNCED",
- "by": "string"
}
], - "categories": [
- "B2B"
], - "contactless": {
- "pin": 7270
}, - "assets": {
- "deliver": [
- {
- "assetId": "string",
- "name": "string",
- "price": 0,
- "amount": 0
}
], - "return": [
- {
- "assetId": "string",
- "name": "string",
- "price": 0,
- "amount": 0
}
]
}, - "attachments": [
- {
- "_id": "5f9af33b4f8cc32e047d83b2",
- "name": "Delivery Note",
- "url": "/attachments/tasks/5c3c63c23c32c30cb3cc1234c/af6227d6-f915-4924-8873-98da8131df3a.pdf"
}
], - "brandingTemplate": "string"
}
This endpoint allows you to assign a External Tracking ID (i.e. a tracking number for your delivery company) to a task identified by its TaskId.
This is mandatory to assign an External Tracking ID to a task you wish to work with. The other External Carrier APIs base themselves on the External Tracking ID to modify the statuses of the task, such as marking them delivered, returned, or assigned to a driver of your Carrier Fleet.
taskId required | string (TaskId) Example: my-task-id The taskId of the task |
extTrackId required | string (ExtTrackId) An external task identifier to use for mapping data between an external carrier and Urbantz |
{- "extTrackId": "ext-12345"
}
{- "createdBy": {
- "firstName": "John",
- "lastName": "Doe",
- "_id": "507f191e810c19729de860ea",
- "id": "507f191e810c19729de860ea",
- "externalId": "extRefDoe"
}, - "__v": 0,
- "_id": "507f191e810c19729de860ea",
- "initialSequence": 0,
- "trackingId": "abcdef-123456-4abc-acbacbfcabcfbcbfbacbfab",
- "extTrackId": "ext-12345",
- "type": "delivery",
- "taskId": "my-task-id",
- "taskReference": "task-ref-001-d",
- "progress": "ANNOUNCED",
- "status": "ARRIVED",
- "items": [
- {
- "_id": "507f191e810c19729de860ea",
- "type": "Box",
- "status": "ARRIVED",
- "name": "Soft Drink 6 pack",
- "description": "Big box with a red mark on the top",
- "barcode": 9876543211234,
- "barcodeEncoding": "CODE128",
- "reference": 9876543211234,
- "quantity": 1,
- "processedQuantity": 1,
- "dimensions": {
- "weight": 200,
- "volume": 0.2
}, - "damaged": {
- "confirmed": false,
- "pictures": [
- "string"
]
}, - "labels": [
- "frozen"
], - "skills": [
- "speaks_french"
], - "log": [
- {
- "_id": "507f191e810c19729de860ea",
- "when": "2019-03-13T12:34:56.012Z",
- "to": "PENDING",
- "by": "string"
}
], - "metadata": {
- "property1": 23,
- "property2": "Hello World"
}, - "group": "string"
}
], - "client": "507f191e810c19729de860ea",
- "hub": "507f191e810c19729de860ea",
- "hubName": "My Warehouse",
- "associatedName": "Lumikko Oyj",
- "associated": "5c3c63c23c32c30cb3cc1234c",
- "dependency": "507f191e810c19729de860ea",
- "hasDependency": "507f191e810c19729de860ea",
- "round": "R01",
- "archived": "string",
- "actualTime": {
- "arrive": {
- "when": "2019-03-24T12:34:56.123Z",
- "location": {
- "type": "Point",
- "geometry": [
- 0
]
}, - "forced": false,
- "isCorrectAddress": false
}
}, - "order": "string",
- "paymentType": "CCOD",
- "platform": "5c98f80a6b3dc61664c05cbf",
- "platformName": "Cortedal SYS, Oy",
- "endpoint": "5c3c645e3b37f30b3fc0240f",
- "errorLocation": {
- "addressLines": [
- "string"
], - "geocodeScore": 98,
- "location": {
- "type": "Point",
- "geometry": [
- 0
]
}
}, - "customerCalls": [
- {
- "when": "2019-03-13T12:34:56.012Z",
- "by": "string"
}
], - "issues": [
- {
- "type": "GEOCODING",
- "code": 0,
- "line": 0,
- "error": "string"
}
], - "notifications": [
- {
- "notificationId": "string",
- "sentDate": "2019-12-23T12:34:56.123Z",
- "by": {
- "firstName": "John",
- "lastName": "Doe",
- "phoneNumber": "32123123123",
- "picture": "/some/folder/image/c1235b6a253cd12d3",
- "_id": "507f191e810c19729de860ea",
- "externalId": "string"
}
}
], - "notificationSettings": {
- "sms": false,
- "email": false
}, - "replanned": false,
- "sourceHash": "string",
- "updated": "2019-03-24T12:34:56.123Z",
- "when": "2019-03-24T12:34:56.123Z",
- "targetFlux": "56fe250f1eb3571100bb081c_MORNING_57454b1556950a11005189fa_2017-11-15",
- "skills": [
- "speaks_french"
], - "roundName": "R03",
- "roundColor": "#FFCC0D",
- "products": [
- {
- "productId": "001234",
- "name": "CHEESE",
- "description": "Goat cheese pack, 400gr",
- "type": "food",
- "barcode": "11231212121",
- "quantity": 3,
- "unitPrice": 13.95,
- "isSubstitution": false,
- "quantityRejected": 0,
- "rejectedReason": {
- "_id": "507f191e810c19729de860ea",
- "name": "damaged"
}
}
], - "hasRejectedProducts": false,
- "activity": "string",
- "sequence": 1,
- "id": "5c98f80a6b3dc61664c05cbb",
- "flux": "5c3c63c23c32c30cb3cc1234c",
- "collectedAmount": 10.2,
- "closureDate": "2019-03-25T15:50:50.123Z",
- "by": "5c3c63c23c32c30cb3cc1234c",
- "attempts": 0,
- "arriveTime": "2019-03-25T15:50:50.123Z",
- "announcement": "507f191e810c19729de860ea",
- "shift": "string",
- "serviceTime": 5,
- "realServiceTime": {
- "serviceTime": 120,
- "tasksDeliveredInSameStop": 1,
- "confidence": "HIGH",
- "version": 2
}, - "maxTransitTime": 0,
- "timeWindowMargin": 0,
- "stopSequence": 2,
- "date": "2019-03-13T12:34:56.012Z",
- "labels": [
- "frozen"
], - "instructions": "Once inside of the building, follow the corridor on the right and take the elevator",
- "metadata": {
- "property1": 23,
- "property2": "Hello World"
}, - "dimensions": {
- "weight": 200,
- "volume": 0.2
}, - "timeWindow": {
- "start": "2019-03-13T12:34:56.012Z",
- "stop": "2019-03-13T12:34:56.012Z"
}, - "timeWindow2": {
- "start": "2019-03-13T12:34:56.012Z",
- "stop": "2019-03-13T12:34:56.012Z"
}, - "contact": {
- "account": "ACC123456789",
- "name": "Acme Inc.",
- "person": "Luke Skywalker",
- "phone": "+32 477 99 99 99",
- "extraPhones": [
- "+32 477 99 99 99"
], - "language": "fr",
- "buildingInfo": {
- "floor": 5,
- "hasElevator": true,
- "digicode1": "1234A",
- "digicode2": "4321A",
- "hasInterphone": true,
- "interphoneCode": "4524#"
}
}, - "location": {
- "building": "A cool building name",
- "number": "251",
- "street": "Avenue Louise",
- "city": "Brussels",
- "zip": "1050",
- "origin": "ADDRESS_BOOK",
- "country": "Belgium",
- "location": {
- "geometry": [
- 0
], - "type": "Point"
}, - "address": "251 avenue louise, 1050 Brussels, Belgium",
- "addressLines": [
- "string"
], - "geocodeScore": 98,
- "countryCode": "BEL"
}, - "source": {
- "building": "A cool building name",
- "number": "251",
- "street": "Avenue Louise",
- "location": {
- "geometry": [
- 0
], - "type": "Point"
}, - "address": "251 Avenue Louise, 1050 BRUXELLES, BELGIQUE",
- "city": "Brussels",
- "zip": "1050",
- "country": "Belgium",
- "geocodeScore": 98,
- "addressLines": [
- "251 Avenue Louise",
- "1050 Brussels",
- "Belgium"
]
}, - "hasBeenPaid": false,
- "price": 0,
- "driver": "5c98f80a6b3dc61664c05cbb",
- "requires": {
- "pickup": {
- "dispatcher": {
- "scan": false
}, - "driver": {
- "contactless": false,
- "signature": false,
- "signatureAndComment": false,
- "scan": false,
- "comment": false,
- "photo": false
}, - "stop": {
- "onSite": false
}, - "failure": {
- "photo": false
}
}, - "delivery": {
- "dispatcher": {
- "scan": false
}, - "driver": {
- "contactless": false,
- "prepCheckList": false,
- "prepScan": false,
- "signature": false,
- "signatureAndComment": false,
- "signatureAndItemConcerns": false,
- "scan": false,
- "comment": false,
- "photo": false
}, - "stop": {
- "onSite": false
}, - "failure": {
- "photo": false
}
}, - "other": {
- "driver": {
- "timer": false
}
}
}, - "execution": {
- "successComment": "string",
- "successPicture": "string",
- "failedReason": {
- "reasonId": "507f191e810c19729de860ea",
- "reason": "string",
- "custom": "string",
- "picture": "string"
}, - "timer": {
- "timestamps": [
- {
- "type": "start",
- "time": "2019-12-23T12:34:56.123Z"
}
]
}, - "signature": {
- "data": "string",
- "name": "string"
}, - "position": {
- "accuracy": 0,
- "altitude": 0,
- "heading": 0,
- "latitude": 50.812345,
- "longitude": 4.312345,
- "speed": 0,
- "timestamp": 1553529404789
}, - "contactless": {
- "forced": true,
- "reason": "string"
}
}, - "log": [
- {
- "_id": "507f191e810c19729de860ea",
- "when": "2019-03-13T12:34:56.012Z",
- "to": "ANNOUNCED",
- "by": "string"
}
], - "categories": [
- "B2B"
], - "contactless": {
- "pin": 7270
}, - "assets": {
- "deliver": [
- {
- "assetId": "string",
- "name": "string",
- "price": 0,
- "amount": 0
}
], - "return": [
- {
- "assetId": "string",
- "name": "string",
- "price": 0,
- "amount": 0
}
]
}, - "attachments": [
- {
- "_id": "5f9af33b4f8cc32e047d83b2",
- "name": "Delivery Note",
- "url": "/attachments/tasks/5c3c63c23c32c30cb3cc1234c/af6227d6-f915-4924-8873-98da8131df3a.pdf"
}
], - "brandingTemplate": "string"
}
This endpoint allows you to mark a task as assigned
, which means a driver has been assigned to do this pickup or delivery.
extTrackId required | string (ExtTrackId) Example: ext-12345 The extTrackId of the task |
updatedTime | string <date-time> (CarrierTaskStatusUpdatedTime) The date-time of the operation in ISO date format |
updateType | string (CarrierTaskStatusUpdateType) Enum: "id" "barcode" "total" Specify how to identify the items to update. If id or barcode is selected then the field items must be used otherwise the field total will specify the transition for all. |
object Specify the items that are pending. | |
object Specify the items that have arrived. Only for tasks of type delivery | |
roundName | string Specify the name of the round where the task is assigned |
sequence | integer Specify the sequence of the task in the round |
{- "updatedTime": "2019-08-24T14:15:22Z",
- "updateType": "barcode",
- "pending": {
- "total": true,
- "items": [
- "1111111"
]
}, - "arrived": {
- "total": true,
- "items": [
- "1111111"
]
}, - "roundName": "R01",
- "sequence": 1
}
{- "createdBy": {
- "firstName": "John",
- "lastName": "Doe",
- "_id": "507f191e810c19729de860ea",
- "id": "507f191e810c19729de860ea",
- "externalId": "extRefDoe"
}, - "__v": 0,
- "_id": "507f191e810c19729de860ea",
- "initialSequence": 0,
- "trackingId": "abcdef-123456-4abc-acbacbfcabcfbcbfbacbfab",
- "extTrackId": "ext-12345",
- "type": "delivery",
- "taskId": "my-task-id",
- "taskReference": "task-ref-001-d",
- "progress": "ANNOUNCED",
- "status": "ARRIVED",
- "items": [
- {
- "_id": "507f191e810c19729de860ea",
- "type": "Box",
- "status": "ARRIVED",
- "name": "Soft Drink 6 pack",
- "description": "Big box with a red mark on the top",
- "barcode": 9876543211234,
- "barcodeEncoding": "CODE128",
- "reference": 9876543211234,
- "quantity": 1,
- "processedQuantity": 1,
- "dimensions": {
- "weight": 200,
- "volume": 0.2
}, - "damaged": {
- "confirmed": false,
- "pictures": [
- "string"
]
}, - "labels": [
- "frozen"
], - "skills": [
- "speaks_french"
], - "log": [
- {
- "_id": "507f191e810c19729de860ea",
- "when": "2019-03-13T12:34:56.012Z",
- "to": "PENDING",
- "by": "string"
}
], - "metadata": {
- "property1": 23,
- "property2": "Hello World"
}, - "group": "string"
}
], - "client": "507f191e810c19729de860ea",
- "hub": "507f191e810c19729de860ea",
- "hubName": "My Warehouse",
- "associatedName": "Lumikko Oyj",
- "associated": "5c3c63c23c32c30cb3cc1234c",
- "dependency": "507f191e810c19729de860ea",
- "hasDependency": "507f191e810c19729de860ea",
- "round": "R01",
- "archived": "string",
- "actualTime": {
- "arrive": {
- "when": "2019-03-24T12:34:56.123Z",
- "location": {
- "type": "Point",
- "geometry": [
- 0
]
}, - "forced": false,
- "isCorrectAddress": false
}
}, - "order": "string",
- "paymentType": "CCOD",
- "platform": "5c98f80a6b3dc61664c05cbf",
- "platformName": "Cortedal SYS, Oy",
- "endpoint": "5c3c645e3b37f30b3fc0240f",
- "errorLocation": {
- "addressLines": [
- "string"
], - "geocodeScore": 98,
- "location": {
- "type": "Point",
- "geometry": [
- 0
]
}
}, - "customerCalls": [
- {
- "when": "2019-03-13T12:34:56.012Z",
- "by": "string"
}
], - "issues": [
- {
- "type": "GEOCODING",
- "code": 0,
- "line": 0,
- "error": "string"
}
], - "notifications": [
- {
- "notificationId": "string",
- "sentDate": "2019-12-23T12:34:56.123Z",
- "by": {
- "firstName": "John",
- "lastName": "Doe",
- "phoneNumber": "32123123123",
- "picture": "/some/folder/image/c1235b6a253cd12d3",
- "_id": "507f191e810c19729de860ea",
- "externalId": "string"
}
}
], - "notificationSettings": {
- "sms": false,
- "email": false
}, - "replanned": false,
- "sourceHash": "string",
- "updated": "2019-03-24T12:34:56.123Z",
- "when": "2019-03-24T12:34:56.123Z",
- "targetFlux": "56fe250f1eb3571100bb081c_MORNING_57454b1556950a11005189fa_2017-11-15",
- "skills": [
- "speaks_french"
], - "roundName": "R03",
- "roundColor": "#FFCC0D",
- "products": [
- {
- "productId": "001234",
- "name": "CHEESE",
- "description": "Goat cheese pack, 400gr",
- "type": "food",
- "barcode": "11231212121",
- "quantity": 3,
- "unitPrice": 13.95,
- "isSubstitution": false,
- "quantityRejected": 0,
- "rejectedReason": {
- "_id": "507f191e810c19729de860ea",
- "name": "damaged"
}
}
], - "hasRejectedProducts": false,
- "activity": "string",
- "sequence": 1,
- "id": "5c98f80a6b3dc61664c05cbb",
- "flux": "5c3c63c23c32c30cb3cc1234c",
- "collectedAmount": 10.2,
- "closureDate": "2019-03-25T15:50:50.123Z",
- "by": "5c3c63c23c32c30cb3cc1234c",
- "attempts": 0,
- "arriveTime": "2019-03-25T15:50:50.123Z",
- "announcement": "507f191e810c19729de860ea",
- "shift": "string",
- "serviceTime": 5,
- "realServiceTime": {
- "serviceTime": 120,
- "tasksDeliveredInSameStop": 1,
- "confidence": "HIGH",
- "version": 2
}, - "maxTransitTime": 0,
- "timeWindowMargin": 0,
- "stopSequence": 2,
- "date": "2019-03-13T12:34:56.012Z",
- "labels": [
- "frozen"
], - "instructions": "Once inside of the building, follow the corridor on the right and take the elevator",
- "metadata": {
- "property1": 23,
- "property2": "Hello World"
}, - "dimensions": {
- "weight": 200,
- "volume": 0.2
}, - "timeWindow": {
- "start": "2019-03-13T12:34:56.012Z",
- "stop": "2019-03-13T12:34:56.012Z"
}, - "timeWindow2": {
- "start": "2019-03-13T12:34:56.012Z",
- "stop": "2019-03-13T12:34:56.012Z"
}, - "contact": {
- "account": "ACC123456789",
- "name": "Acme Inc.",
- "person": "Luke Skywalker",
- "phone": "+32 477 99 99 99",
- "extraPhones": [
- "+32 477 99 99 99"
], - "language": "fr",
- "buildingInfo": {
- "floor": 5,
- "hasElevator": true,
- "digicode1": "1234A",
- "digicode2": "4321A",
- "hasInterphone": true,
- "interphoneCode": "4524#"
}
}, - "location": {
- "building": "A cool building name",
- "number": "251",
- "street": "Avenue Louise",
- "city": "Brussels",
- "zip": "1050",
- "origin": "ADDRESS_BOOK",
- "country": "Belgium",
- "location": {
- "geometry": [
- 0
], - "type": "Point"
}, - "address": "251 avenue louise, 1050 Brussels, Belgium",
- "addressLines": [
- "string"
], - "geocodeScore": 98,
- "countryCode": "BEL"
}, - "source": {
- "building": "A cool building name",
- "number": "251",
- "street": "Avenue Louise",
- "location": {
- "geometry": [
- 0
], - "type": "Point"
}, - "address": "251 Avenue Louise, 1050 BRUXELLES, BELGIQUE",
- "city": "Brussels",
- "zip": "1050",
- "country": "Belgium",
- "geocodeScore": 98,
- "addressLines": [
- "251 Avenue Louise",
- "1050 Brussels",
- "Belgium"
]
}, - "hasBeenPaid": false,
- "price": 0,
- "driver": "5c98f80a6b3dc61664c05cbb",
- "requires": {
- "pickup": {
- "dispatcher": {
- "scan": false
}, - "driver": {
- "contactless": false,
- "signature": false,
- "signatureAndComment": false,
- "scan": false,
- "comment": false,
- "photo": false
}, - "stop": {
- "onSite": false
}, - "failure": {
- "photo": false
}
}, - "delivery": {
- "dispatcher": {
- "scan": false
}, - "driver": {
- "contactless": false,
- "prepCheckList": false,
- "prepScan": false,
- "signature": false,
- "signatureAndComment": false,
- "signatureAndItemConcerns": false,
- "scan": false,
- "comment": false,
- "photo": false
}, - "stop": {
- "onSite": false
}, - "failure": {
- "photo": false
}
}, - "other": {
- "driver": {
- "timer": false
}
}
}, - "execution": {
- "successComment": "string",
- "successPicture": "string",
- "failedReason": {
- "reasonId": "507f191e810c19729de860ea",
- "reason": "string",
- "custom": "string",
- "picture": "string"
}, - "timer": {
- "timestamps": [
- {
- "type": "start",
- "time": "2019-12-23T12:34:56.123Z"
}
]
}, - "signature": {
- "data": "string",
- "name": "string"
}, - "position": {
- "accuracy": 0,
- "altitude": 0,
- "heading": 0,
- "latitude": 50.812345,
- "longitude": 4.312345,
- "speed": 0,
- "timestamp": 1553529404789
}, - "contactless": {
- "forced": true,
- "reason": "string"
}
}, - "log": [
- {
- "_id": "507f191e810c19729de860ea",
- "when": "2019-03-13T12:34:56.012Z",
- "to": "ANNOUNCED",
- "by": "string"
}
], - "categories": [
- "B2B"
], - "contactless": {
- "pin": 7270
}, - "assets": {
- "deliver": [
- {
- "assetId": "string",
- "name": "string",
- "price": 0,
- "amount": 0
}
], - "return": [
- {
- "assetId": "string",
- "name": "string",
- "price": 0,
- "amount": 0
}
]
}, - "attachments": [
- {
- "_id": "5f9af33b4f8cc32e047d83b2",
- "name": "Delivery Note",
- "url": "/attachments/tasks/5c3c63c23c32c30cb3cc1234c/af6227d6-f915-4924-8873-98da8131df3a.pdf"
}
], - "brandingTemplate": "string"
}
This endpoint allows you to mark a task as ongoing
, which means a driver has collected the task and is on its way to the customer.
When calling this endpoint, at least one of the following actions must be provided:
extTrackId required | string (ExtTrackId) Example: ext-12345 The extTrackId of the task |
updatedTime | string <date-time> (CarrierTaskStatusUpdatedTime) The date-time of the operation in ISO date format |
updateType | string (CarrierTaskStatusUpdateType) Enum: "id" "barcode" "total" Specify how to identify the items to update. If id or barcode is selected then the field items must be used otherwise the field total will specify the transition for all. |
object Specify the items that are pending. Only for tasks of type pickup | |
object Specify the items that are departed. Only for tasks of type delivery | |
object Specify the items that are missing. Only for tasks of type delivery |
{- "updatedTime": "2019-08-24T14:15:22Z",
- "updateType": "barcode",
- "pending": {
- "total": true,
- "items": [
- "1111111"
]
}, - "departed": {
- "total": true,
- "items": [
- "1111111"
]
}, - "missing": {
- "total": true,
- "items": [
- "1111111"
]
}
}
{- "createdBy": {
- "firstName": "John",
- "lastName": "Doe",
- "_id": "507f191e810c19729de860ea",
- "id": "507f191e810c19729de860ea",
- "externalId": "extRefDoe"
}, - "__v": 0,
- "_id": "507f191e810c19729de860ea",
- "initialSequence": 0,
- "trackingId": "abcdef-123456-4abc-acbacbfcabcfbcbfbacbfab",
- "extTrackId": "ext-12345",
- "type": "delivery",
- "taskId": "my-task-id",
- "taskReference": "task-ref-001-d",
- "progress": "ANNOUNCED",
- "status": "ARRIVED",
- "items": [
- {
- "_id": "507f191e810c19729de860ea",
- "type": "Box",
- "status": "ARRIVED",
- "name": "Soft Drink 6 pack",
- "description": "Big box with a red mark on the top",
- "barcode": 9876543211234,
- "barcodeEncoding": "CODE128",
- "reference": 9876543211234,
- "quantity": 1,
- "processedQuantity": 1,
- "dimensions": {
- "weight": 200,
- "volume": 0.2
}, - "damaged": {
- "confirmed": false,
- "pictures": [
- "string"
]
}, - "labels": [
- "frozen"
], - "skills": [
- "speaks_french"
], - "log": [
- {
- "_id": "507f191e810c19729de860ea",
- "when": "2019-03-13T12:34:56.012Z",
- "to": "PENDING",
- "by": "string"
}
], - "metadata": {
- "property1": 23,
- "property2": "Hello World"
}, - "group": "string"
}
], - "client": "507f191e810c19729de860ea",
- "hub": "507f191e810c19729de860ea",
- "hubName": "My Warehouse",
- "associatedName": "Lumikko Oyj",
- "associated": "5c3c63c23c32c30cb3cc1234c",
- "dependency": "507f191e810c19729de860ea",
- "hasDependency": "507f191e810c19729de860ea",
- "round": "R01",
- "archived": "string",
- "actualTime": {
- "arrive": {
- "when": "2019-03-24T12:34:56.123Z",
- "location": {
- "type": "Point",
- "geometry": [
- 0
]
}, - "forced": false,
- "isCorrectAddress": false
}
}, - "order": "string",
- "paymentType": "CCOD",
- "platform": "5c98f80a6b3dc61664c05cbf",
- "platformName": "Cortedal SYS, Oy",
- "endpoint": "5c3c645e3b37f30b3fc0240f",
- "errorLocation": {
- "addressLines": [
- "string"
], - "geocodeScore": 98,
- "location": {
- "type": "Point",
- "geometry": [
- 0
]
}
}, - "customerCalls": [
- {
- "when": "2019-03-13T12:34:56.012Z",
- "by": "string"
}
], - "issues": [
- {
- "type": "GEOCODING",
- "code": 0,
- "line": 0,
- "error": "string"
}
], - "notifications": [
- {
- "notificationId": "string",
- "sentDate": "2019-12-23T12:34:56.123Z",
- "by": {
- "firstName": "John",
- "lastName": "Doe",
- "phoneNumber": "32123123123",
- "picture": "/some/folder/image/c1235b6a253cd12d3",
- "_id": "507f191e810c19729de860ea",
- "externalId": "string"
}
}
], - "notificationSettings": {
- "sms": false,
- "email": false
}, - "replanned": false,
- "sourceHash": "string",
- "updated": "2019-03-24T12:34:56.123Z",
- "when": "2019-03-24T12:34:56.123Z",
- "targetFlux": "56fe250f1eb3571100bb081c_MORNING_57454b1556950a11005189fa_2017-11-15",
- "skills": [
- "speaks_french"
], - "roundName": "R03",
- "roundColor": "#FFCC0D",
- "products": [
- {
- "productId": "001234",
- "name": "CHEESE",
- "description": "Goat cheese pack, 400gr",
- "type": "food",
- "barcode": "11231212121",
- "quantity": 3,
- "unitPrice": 13.95,
- "isSubstitution": false,
- "quantityRejected": 0,
- "rejectedReason": {
- "_id": "507f191e810c19729de860ea",
- "name": "damaged"
}
}
], - "hasRejectedProducts": false,
- "activity": "string",
- "sequence": 1,
- "id": "5c98f80a6b3dc61664c05cbb",
- "flux": "5c3c63c23c32c30cb3cc1234c",
- "collectedAmount": 10.2,
- "closureDate": "2019-03-25T15:50:50.123Z",
- "by": "5c3c63c23c32c30cb3cc1234c",
- "attempts": 0,
- "arriveTime": "2019-03-25T15:50:50.123Z",
- "announcement": "507f191e810c19729de860ea",
- "shift": "string",
- "serviceTime": 5,
- "realServiceTime": {
- "serviceTime": 120,
- "tasksDeliveredInSameStop": 1,
- "confidence": "HIGH",
- "version": 2
}, - "maxTransitTime": 0,
- "timeWindowMargin": 0,
- "stopSequence": 2,
- "date": "2019-03-13T12:34:56.012Z",
- "labels": [
- "frozen"
], - "instructions": "Once inside of the building, follow the corridor on the right and take the elevator",
- "metadata": {
- "property1": 23,
- "property2": "Hello World"
}, - "dimensions": {
- "weight": 200,
- "volume": 0.2
}, - "timeWindow": {
- "start": "2019-03-13T12:34:56.012Z",
- "stop": "2019-03-13T12:34:56.012Z"
}, - "timeWindow2": {
- "start": "2019-03-13T12:34:56.012Z",
- "stop": "2019-03-13T12:34:56.012Z"
}, - "contact": {
- "account": "ACC123456789",
- "name": "Acme Inc.",
- "person": "Luke Skywalker",
- "phone": "+32 477 99 99 99",
- "extraPhones": [
- "+32 477 99 99 99"
], - "language": "fr",
- "buildingInfo": {
- "floor": 5,
- "hasElevator": true,
- "digicode1": "1234A",
- "digicode2": "4321A",
- "hasInterphone": true,
- "interphoneCode": "4524#"
}
}, - "location": {
- "building": "A cool building name",
- "number": "251",
- "street": "Avenue Louise",
- "city": "Brussels",
- "zip": "1050",
- "origin": "ADDRESS_BOOK",
- "country": "Belgium",
- "location": {
- "geometry": [
- 0
], - "type": "Point"
}, - "address": "251 avenue louise, 1050 Brussels, Belgium",
- "addressLines": [
- "string"
], - "geocodeScore": 98,
- "countryCode": "BEL"
}, - "source": {
- "building": "A cool building name",
- "number": "251",
- "street": "Avenue Louise",
- "location": {
- "geometry": [
- 0
], - "type": "Point"
}, - "address": "251 Avenue Louise, 1050 BRUXELLES, BELGIQUE",
- "city": "Brussels",
- "zip": "1050",
- "country": "Belgium",
- "geocodeScore": 98,
- "addressLines": [
- "251 Avenue Louise",
- "1050 Brussels",
- "Belgium"
]
}, - "hasBeenPaid": false,
- "price": 0,
- "driver": "5c98f80a6b3dc61664c05cbb",
- "requires": {
- "pickup": {
- "dispatcher": {
- "scan": false
}, - "driver": {
- "contactless": false,
- "signature": false,
- "signatureAndComment": false,
- "scan": false,
- "comment": false,
- "photo": false
}, - "stop": {
- "onSite": false
}, - "failure": {
- "photo": false
}
}, - "delivery": {
- "dispatcher": {
- "scan": false
}, - "driver": {
- "contactless": false,
- "prepCheckList": false,
- "prepScan": false,
- "signature": false,
- "signatureAndComment": false,
- "signatureAndItemConcerns": false,
- "scan": false,
- "comment": false,
- "photo": false
}, - "stop": {
- "onSite": false
}, - "failure": {
- "photo": false
}
}, - "other": {
- "driver": {
- "timer": false
}
}
}, - "execution": {
- "successComment": "string",
- "successPicture": "string",
- "failedReason": {
- "reasonId": "507f191e810c19729de860ea",
- "reason": "string",
- "custom": "string",
- "picture": "string"
}, - "timer": {
- "timestamps": [
- {
- "type": "start",
- "time": "2019-12-23T12:34:56.123Z"
}
]
}, - "signature": {
- "data": "string",
- "name": "string"
}, - "position": {
- "accuracy": 0,
- "altitude": 0,
- "heading": 0,
- "latitude": 50.812345,
- "longitude": 4.312345,
- "speed": 0,
- "timestamp": 1553529404789
}, - "contactless": {
- "forced": true,
- "reason": "string"
}
}, - "log": [
- {
- "_id": "507f191e810c19729de860ea",
- "when": "2019-03-13T12:34:56.012Z",
- "to": "ANNOUNCED",
- "by": "string"
}
], - "categories": [
- "B2B"
], - "contactless": {
- "pin": 7270
}, - "assets": {
- "deliver": [
- {
- "assetId": "string",
- "name": "string",
- "price": 0,
- "amount": 0
}
], - "return": [
- {
- "assetId": "string",
- "name": "string",
- "price": 0,
- "amount": 0
}
]
}, - "attachments": [
- {
- "_id": "5f9af33b4f8cc32e047d83b2",
- "name": "Delivery Note",
- "url": "/attachments/tasks/5c3c63c23c32c30cb3cc1234c/af6227d6-f915-4924-8873-98da8131df3a.pdf"
}
], - "brandingTemplate": "string"
}
This endpoint allows you to mark a task as completed
, when the task has been completed by the driver.
Depending on the success of the delivery or pickup, there are four different possibilities:
One of the following keys must be provided at least: delivered
, notDelivered
, pickedUp
, notPickedUp
extTrackId required | string (ExtTrackId) Example: ext-12345 The extTrackId of the task. |
updatedTime | string <date-time> (CarrierTaskStatusUpdatedTime) The date-time of the operation in ISO date format |
updateType | string (CarrierTaskStatusUpdateType) Enum: "id" "barcode" "total" Specify how to identify the items to update. If id or barcode is selected then the field items must be used otherwise the field total will specify the transition for all. |
object Specify the items that are delivered. Only for tasks of type delivery | |
object Specify the items that are not delivered. Only for tasks of type delivery | |
object Specify the items that are picked up. Only for tasks of type pickup | |
object Specify the items that are not picked up. Only for tasks of type pickup | |
object (CarrierTaskStatusPosition) Position of the driver at the moment of the task completion | |
collectedAmount | number (CollectedAmount) >= 0 The amount of money the driver collected while delivering the goods |
object (Metadata) A general-purpose mechanism to store additional data. At the task level, metadata can be made explicit with a base schema in order to push or capture information during the execution of the task. Ask for support if you believe this can enhance your use case. Note: New metadata are merged with the existing one when updating a task |
{- "updatedTime": "2019-08-24T14:15:22Z",
- "updateType": "barcode",
- "delivered": {
- "total": true,
- "items": [
- "1111111"
], - "comment": "I am satisfied with the delivery service",
}, - "notDelivered": {
- "total": true,
- "items": [
- "1111111"
],
}, - "pickedUp": {
- "total": true,
- "items": [
- "1111111"
], - "comment": "I am satisfied with the delivery service",
}, - "notPickedUp": {
- "total": true,
- "items": [
- "1111111"
],
}, - "position": {
- "latitude": 50.345234,
- "longitude": 4.345234
}, - "collectedAmount": 10.2,
- "metadata": {
- "property1": 23,
- "property2": "Hello World"
}
}
{- "createdBy": {
- "firstName": "John",
- "lastName": "Doe",
- "_id": "507f191e810c19729de860ea",
- "id": "507f191e810c19729de860ea",
- "externalId": "extRefDoe"
}, - "__v": 0,
- "_id": "507f191e810c19729de860ea",
- "initialSequence": 0,
- "trackingId": "abcdef-123456-4abc-acbacbfcabcfbcbfbacbfab",
- "extTrackId": "ext-12345",
- "type": "delivery",
- "taskId": "my-task-id",
- "taskReference": "task-ref-001-d",
- "progress": "ANNOUNCED",
- "status": "ARRIVED",
- "items": [
- {
- "_id": "507f191e810c19729de860ea",
- "type": "Box",
- "status": "ARRIVED",
- "name": "Soft Drink 6 pack",
- "description": "Big box with a red mark on the top",
- "barcode": 9876543211234,
- "barcodeEncoding": "CODE128",
- "reference": 9876543211234,
- "quantity": 1,
- "processedQuantity": 1,
- "dimensions": {
- "weight": 200,
- "volume": 0.2
}, - "damaged": {
- "confirmed": false,
- "pictures": [
- "string"
]
}, - "labels": [
- "frozen"
], - "skills": [
- "speaks_french"
], - "log": [
- {
- "_id": "507f191e810c19729de860ea",
- "when": "2019-03-13T12:34:56.012Z",
- "to": "PENDING",
- "by": "string"
}
], - "metadata": {
- "property1": 23,
- "property2": "Hello World"
}, - "group": "string"
}
], - "client": "507f191e810c19729de860ea",
- "hub": "507f191e810c19729de860ea",
- "hubName": "My Warehouse",
- "associatedName": "Lumikko Oyj",
- "associated": "5c3c63c23c32c30cb3cc1234c",
- "dependency": "507f191e810c19729de860ea",
- "hasDependency": "507f191e810c19729de860ea",
- "round": "R01",
- "archived": "string",
- "actualTime": {
- "arrive": {
- "when": "2019-03-24T12:34:56.123Z",
- "location": {
- "type": "Point",
- "geometry": [
- 0
]
}, - "forced": false,
- "isCorrectAddress": false
}
}, - "order": "string",
- "paymentType": "CCOD",
- "platform": "5c98f80a6b3dc61664c05cbf",
- "platformName": "Cortedal SYS, Oy",
- "endpoint": "5c3c645e3b37f30b3fc0240f",
- "errorLocation": {
- "addressLines": [
- "string"
], - "geocodeScore": 98,
- "location": {
- "type": "Point",
- "geometry": [
- 0
]
}
}, - "customerCalls": [
- {
- "when": "2019-03-13T12:34:56.012Z",
- "by": "string"
}
], - "issues": [
- {
- "type": "GEOCODING",
- "code": 0,
- "line": 0,
- "error": "string"
}
], - "notifications": [
- {
- "notificationId": "string",
- "sentDate": "2019-12-23T12:34:56.123Z",
- "by": {
- "firstName": "John",
- "lastName": "Doe",
- "phoneNumber": "32123123123",
- "picture": "/some/folder/image/c1235b6a253cd12d3",
- "_id": "507f191e810c19729de860ea",
- "externalId": "string"
}
}
], - "notificationSettings": {
- "sms": false,
- "email": false
}, - "replanned": false,
- "sourceHash": "string",
- "updated": "2019-03-24T12:34:56.123Z",
- "when": "2019-03-24T12:34:56.123Z",
- "targetFlux": "56fe250f1eb3571100bb081c_MORNING_57454b1556950a11005189fa_2017-11-15",
- "skills": [
- "speaks_french"
], - "roundName": "R03",
- "roundColor": "#FFCC0D",
- "products": [
- {
- "productId": "001234",
- "name": "CHEESE",
- "description": "Goat cheese pack, 400gr",
- "type": "food",
- "barcode": "11231212121",
- "quantity": 3,
- "unitPrice": 13.95,
- "isSubstitution": false,
- "quantityRejected": 0,
- "rejectedReason": {
- "_id": "507f191e810c19729de860ea",
- "name": "damaged"
}
}
], - "hasRejectedProducts": false,
- "activity": "string",
- "sequence": 1,
- "id": "5c98f80a6b3dc61664c05cbb",
- "flux": "5c3c63c23c32c30cb3cc1234c",
- "collectedAmount": 10.2,
- "closureDate": "2019-03-25T15:50:50.123Z",
- "by": "5c3c63c23c32c30cb3cc1234c",
- "attempts": 0,
- "arriveTime": "2019-03-25T15:50:50.123Z",
- "announcement": "507f191e810c19729de860ea",
- "shift": "string",
- "serviceTime": 5,
- "realServiceTime": {
- "serviceTime": 120,
- "tasksDeliveredInSameStop": 1,
- "confidence": "HIGH",
- "version": 2
}, - "maxTransitTime": 0,
- "timeWindowMargin": 0,
- "stopSequence": 2,
- "date": "2019-03-13T12:34:56.012Z",
- "labels": [
- "frozen"
], - "instructions": "Once inside of the building, follow the corridor on the right and take the elevator",
- "metadata": {
- "property1": 23,
- "property2": "Hello World"
}, - "dimensions": {
- "weight": 200,
- "volume": 0.2
}, - "timeWindow": {
- "start": "2019-03-13T12:34:56.012Z",
- "stop": "2019-03-13T12:34:56.012Z"
}, - "timeWindow2": {
- "start": "2019-03-13T12:34:56.012Z",
- "stop": "2019-03-13T12:34:56.012Z"
}, - "contact": {
- "account": "ACC123456789",
- "name": "Acme Inc.",
- "person": "Luke Skywalker",
- "phone": "+32 477 99 99 99",
- "extraPhones": [
- "+32 477 99 99 99"
], - "language": "fr",
- "buildingInfo": {
- "floor": 5,
- "hasElevator": true,
- "digicode1": "1234A",
- "digicode2": "4321A",
- "hasInterphone": true,
- "interphoneCode": "4524#"
}
}, - "location": {
- "building": "A cool building name",
- "number": "251",
- "street": "Avenue Louise",
- "city": "Brussels",
- "zip": "1050",
- "origin": "ADDRESS_BOOK",
- "country": "Belgium",
- "location": {
- "geometry": [
- 0
], - "type": "Point"
}, - "address": "251 avenue louise, 1050 Brussels, Belgium",
- "addressLines": [
- "string"
], - "geocodeScore": 98,
- "countryCode": "BEL"
}, - "source": {
- "building": "A cool building name",
- "number": "251",
- "street": "Avenue Louise",
- "location": {
- "geometry": [
- 0
], - "type": "Point"
}, - "address": "251 Avenue Louise, 1050 BRUXELLES, BELGIQUE",
- "city": "Brussels",
- "zip": "1050",
- "country": "Belgium",
- "geocodeScore": 98,
- "addressLines": [
- "251 Avenue Louise",
- "1050 Brussels",
- "Belgium"
]
}, - "hasBeenPaid": false,
- "price": 0,
- "driver": "5c98f80a6b3dc61664c05cbb",
- "requires": {
- "pickup": {
- "dispatcher": {
- "scan": false
}, - "driver": {
- "contactless": false,
- "signature": false,
- "signatureAndComment": false,
- "scan": false,
- "comment": false,
- "photo": false
}, - "stop": {
- "onSite": false
}, - "failure": {
- "photo": false
}
}, - "delivery": {
- "dispatcher": {
- "scan": false
}, - "driver": {
- "contactless": false,
- "prepCheckList": false,
- "prepScan": false,
- "signature": false,
- "signatureAndComment": false,
- "signatureAndItemConcerns": false,
- "scan": false,
- "comment": false,
- "photo": false
}, - "stop": {
- "onSite": false
}, - "failure": {
- "photo": false
}
}, - "other": {
- "driver": {
- "timer": false
}
}
}, - "execution": {
- "successComment": "string",
- "successPicture": "string",
- "failedReason": {
- "reasonId": "507f191e810c19729de860ea",
- "reason": "string",
- "custom": "string",
- "picture": "string"
}, - "timer": {
- "timestamps": [
- {
- "type": "start",
- "time": "2019-12-23T12:34:56.123Z"
}
]
}, - "signature": {
- "data": "string",
- "name": "string"
}, - "position": {
- "accuracy": 0,
- "altitude": 0,
- "heading": 0,
- "latitude": 50.812345,
- "longitude": 4.312345,
- "speed": 0,
- "timestamp": 1553529404789
}, - "contactless": {
- "forced": true,
- "reason": "string"
}
}, - "log": [
- {
- "_id": "507f191e810c19729de860ea",
- "when": "2019-03-13T12:34:56.012Z",
- "to": "ANNOUNCED",
- "by": "string"
}
], - "categories": [
- "B2B"
], - "contactless": {
- "pin": 7270
}, - "assets": {
- "deliver": [
- {
- "assetId": "string",
- "name": "string",
- "price": 0,
- "amount": 0
}
], - "return": [
- {
- "assetId": "string",
- "name": "string",
- "price": 0,
- "amount": 0
}
]
}, - "attachments": [
- {
- "_id": "5f9af33b4f8cc32e047d83b2",
- "name": "Delivery Note",
- "url": "/attachments/tasks/5c3c63c23c32c30cb3cc1234c/af6227d6-f915-4924-8873-98da8131df3a.pdf"
}
], - "brandingTemplate": "string"
}
This endpoint allows you to mark a task as returned
, when the task delivery was attempted multiple times and no more attempts will be made.
Example: the task will be sent back to the seller.
extTrackId required | string (ExtTrackId) Example: ext-12345 The extTrackId of the task. |
updatedTime | string <date-time> (CarrierTaskStatusUpdatedTime) The date-time of the operation in ISO date format |
updateType | string (CarrierTaskStatusUpdateType) Enum: "id" "barcode" "total" Specify how to identify the items to update. If id or barcode is selected then the field items must be used otherwise the field total will specify the transition for all. |
object Specify the items that are returned |
{- "updatedTime": "2019-08-24T14:15:22Z",
- "updateType": "barcode",
- "returned": {
- "total": true,
- "items": [
- "1111111"
]
}
}
{- "createdBy": {
- "firstName": "John",
- "lastName": "Doe",
- "_id": "507f191e810c19729de860ea",
- "id": "507f191e810c19729de860ea",
- "externalId": "extRefDoe"
}, - "__v": 0,
- "_id": "507f191e810c19729de860ea",
- "initialSequence": 0,
- "trackingId": "abcdef-123456-4abc-acbacbfcabcfbcbfbacbfab",
- "extTrackId": "ext-12345",
- "type": "delivery",
- "taskId": "my-task-id",
- "taskReference": "task-ref-001-d",
- "progress": "ANNOUNCED",
- "status": "ARRIVED",
- "items": [
- {
- "_id": "507f191e810c19729de860ea",
- "type": "Box",
- "status": "ARRIVED",
- "name": "Soft Drink 6 pack",
- "description": "Big box with a red mark on the top",
- "barcode": 9876543211234,
- "barcodeEncoding": "CODE128",
- "reference": 9876543211234,
- "quantity": 1,
- "processedQuantity": 1,
- "dimensions": {
- "weight": 200,
- "volume": 0.2
}, - "damaged": {
- "confirmed": false,
- "pictures": [
- "string"
]
}, - "labels": [
- "frozen"
], - "skills": [
- "speaks_french"
], - "log": [
- {
- "_id": "507f191e810c19729de860ea",
- "when": "2019-03-13T12:34:56.012Z",
- "to": "PENDING",
- "by": "string"
}
], - "metadata": {
- "property1": 23,
- "property2": "Hello World"
}, - "group": "string"
}
], - "client": "507f191e810c19729de860ea",
- "hub": "507f191e810c19729de860ea",
- "hubName": "My Warehouse",
- "associatedName": "Lumikko Oyj",
- "associated": "5c3c63c23c32c30cb3cc1234c",
- "dependency": "507f191e810c19729de860ea",
- "hasDependency": "507f191e810c19729de860ea",
- "round": "R01",
- "archived": "string",
- "actualTime": {
- "arrive": {
- "when": "2019-03-24T12:34:56.123Z",
- "location": {
- "type": "Point",
- "geometry": [
- 0
]
}, - "forced": false,
- "isCorrectAddress": false
}
}, - "order": "string",
- "paymentType": "CCOD",
- "platform": "5c98f80a6b3dc61664c05cbf",
- "platformName": "Cortedal SYS, Oy",
- "endpoint": "5c3c645e3b37f30b3fc0240f",
- "errorLocation": {
- "addressLines": [
- "string"
], - "geocodeScore": 98,
- "location": {
- "type": "Point",
- "geometry": [
- 0
]
}
}, - "customerCalls": [
- {
- "when": "2019-03-13T12:34:56.012Z",
- "by": "string"
}
], - "issues": [
- {
- "type": "GEOCODING",
- "code": 0,
- "line": 0,
- "error": "string"
}
], - "notifications": [
- {
- "notificationId": "string",
- "sentDate": "2019-12-23T12:34:56.123Z",
- "by": {
- "firstName": "John",
- "lastName": "Doe",
- "phoneNumber": "32123123123",
- "picture": "/some/folder/image/c1235b6a253cd12d3",
- "_id": "507f191e810c19729de860ea",
- "externalId": "string"
}
}
], - "notificationSettings": {
- "sms": false,
- "email": false
}, - "replanned": false,
- "sourceHash": "string",
- "updated": "2019-03-24T12:34:56.123Z",
- "when": "2019-03-24T12:34:56.123Z",
- "targetFlux": "56fe250f1eb3571100bb081c_MORNING_57454b1556950a11005189fa_2017-11-15",
- "skills": [
- "speaks_french"
], - "roundName": "R03",
- "roundColor": "#FFCC0D",
- "products": [
- {
- "productId": "001234",
- "name": "CHEESE",
- "description": "Goat cheese pack, 400gr",
- "type": "food",
- "barcode": "11231212121",
- "quantity": 3,
- "unitPrice": 13.95,
- "isSubstitution": false,
- "quantityRejected": 0,
- "rejectedReason": {
- "_id": "507f191e810c19729de860ea",
- "name": "damaged"
}
}
], - "hasRejectedProducts": false,
- "activity": "string",
- "sequence": 1,
- "id": "5c98f80a6b3dc61664c05cbb",
- "flux": "5c3c63c23c32c30cb3cc1234c",
- "collectedAmount": 10.2,
- "closureDate": "2019-03-25T15:50:50.123Z",
- "by": "5c3c63c23c32c30cb3cc1234c",
- "attempts": 0,
- "arriveTime": "2019-03-25T15:50:50.123Z",
- "announcement": "507f191e810c19729de860ea",
- "shift": "string",
- "serviceTime": 5,
- "realServiceTime": {
- "serviceTime": 120,
- "tasksDeliveredInSameStop": 1,
- "confidence": "HIGH",
- "version": 2
}, - "maxTransitTime": 0,
- "timeWindowMargin": 0,
- "stopSequence": 2,
- "date": "2019-03-13T12:34:56.012Z",
- "labels": [
- "frozen"
], - "instructions": "Once inside of the building, follow the corridor on the right and take the elevator",
- "metadata": {
- "property1": 23,
- "property2": "Hello World"
}, - "dimensions": {
- "weight": 200,
- "volume": 0.2
}, - "timeWindow": {
- "start": "2019-03-13T12:34:56.012Z",
- "stop": "2019-03-13T12:34:56.012Z"
}, - "timeWindow2": {
- "start": "2019-03-13T12:34:56.012Z",
- "stop": "2019-03-13T12:34:56.012Z"
}, - "contact": {
- "account": "ACC123456789",
- "name": "Acme Inc.",
- "person": "Luke Skywalker",
- "phone": "+32 477 99 99 99",
- "extraPhones": [
- "+32 477 99 99 99"
], - "language": "fr",
- "buildingInfo": {
- "floor": 5,
- "hasElevator": true,
- "digicode1": "1234A",
- "digicode2": "4321A",
- "hasInterphone": true,
- "interphoneCode": "4524#"
}
}, - "location": {
- "building": "A cool building name",
- "number": "251",
- "street": "Avenue Louise",
- "city": "Brussels",
- "zip": "1050",
- "origin": "ADDRESS_BOOK",
- "country": "Belgium",
- "location": {
- "geometry": [
- 0
], - "type": "Point"
}, - "address": "251 avenue louise, 1050 Brussels, Belgium",
- "addressLines": [
- "string"
], - "geocodeScore": 98,
- "countryCode": "BEL"
}, - "source": {
- "building": "A cool building name",
- "number": "251",
- "street": "Avenue Louise",
- "location": {
- "geometry": [
- 0
], - "type": "Point"
}, - "address": "251 Avenue Louise, 1050 BRUXELLES, BELGIQUE",
- "city": "Brussels",
- "zip": "1050",
- "country": "Belgium",
- "geocodeScore": 98,
- "addressLines": [
- "251 Avenue Louise",
- "1050 Brussels",
- "Belgium"
]
}, - "hasBeenPaid": false,
- "price": 0,
- "driver": "5c98f80a6b3dc61664c05cbb",
- "requires": {
- "pickup": {
- "dispatcher": {
- "scan": false
}, - "driver": {
- "contactless": false,
- "signature": false,
- "signatureAndComment": false,
- "scan": false,
- "comment": false,
- "photo": false
}, - "stop": {
- "onSite": false
}, - "failure": {
- "photo": false
}
}, - "delivery": {
- "dispatcher": {
- "scan": false
}, - "driver": {
- "contactless": false,
- "prepCheckList": false,
- "prepScan": false,
- "signature": false,
- "signatureAndComment": false,
- "signatureAndItemConcerns": false,
- "scan": false,
- "comment": false,
- "photo": false
}, - "stop": {
- "onSite": false
}, - "failure": {
- "photo": false
}
}, - "other": {
- "driver": {
- "timer": false
}
}
}, - "execution": {
- "successComment": "string",
- "successPicture": "string",
- "failedReason": {
- "reasonId": "507f191e810c19729de860ea",
- "reason": "string",
- "custom": "string",
- "picture": "string"
}, - "timer": {
- "timestamps": [
- {
- "type": "start",
- "time": "2019-12-23T12:34:56.123Z"
}
]
}, - "signature": {
- "data": "string",
- "name": "string"
}, - "position": {
- "accuracy": 0,
- "altitude": 0,
- "heading": 0,
- "latitude": 50.812345,
- "longitude": 4.312345,
- "speed": 0,
- "timestamp": 1553529404789
}, - "contactless": {
- "forced": true,
- "reason": "string"
}
}, - "log": [
- {
- "_id": "507f191e810c19729de860ea",
- "when": "2019-03-13T12:34:56.012Z",
- "to": "ANNOUNCED",
- "by": "string"
}
], - "categories": [
- "B2B"
], - "contactless": {
- "pin": 7270
}, - "assets": {
- "deliver": [
- {
- "assetId": "string",
- "name": "string",
- "price": 0,
- "amount": 0
}
], - "return": [
- {
- "assetId": "string",
- "name": "string",
- "price": 0,
- "amount": 0
}
]
}, - "attachments": [
- {
- "_id": "5f9af33b4f8cc32e047d83b2",
- "name": "Delivery Note",
- "url": "/attachments/tasks/5c3c63c23c32c30cb3cc1234c/af6227d6-f915-4924-8873-98da8131df3a.pdf"
}
], - "brandingTemplate": "string"
}
When a task delivery is failed, it is common to be able to replan the task for delivery, generally the next day.
This endpoint allows you to replan a task which is COMPLETED
and with all the items set as notDelivered
(not delivered) or notPickedUp
(Not picked up).
The payload is a time window of when the delivery will be made to the final customer, using the ISO 8601 format.
extTrackId required | string (ExtTrackId) Example: ext-12345 The extTrackId of the task. |
required | object (TimeWindow) The time window during which the task should be completed. This field is required if there's a type specified. It cannot be modified once the task is assigned to a round |
{- "timeWindow": {
- "start": "2019-03-13T12:34:56.012Z",
- "stop": "2019-03-13T12:34:56.012Z"
}
}
{- "createdBy": {
- "firstName": "John",
- "lastName": "Doe",
- "_id": "507f191e810c19729de860ea",
- "id": "507f191e810c19729de860ea",
- "externalId": "extRefDoe"
}, - "__v": 0,
- "_id": "507f191e810c19729de860ea",
- "initialSequence": 0,
- "trackingId": "abcdef-123456-4abc-acbacbfcabcfbcbfbacbfab",
- "extTrackId": "ext-12345",
- "type": "delivery",
- "taskId": "my-task-id",
- "taskReference": "task-ref-001-d",
- "progress": "ANNOUNCED",
- "status": "ARRIVED",
- "items": [
- {
- "_id": "507f191e810c19729de860ea",
- "type": "Box",
- "status": "ARRIVED",
- "name": "Soft Drink 6 pack",
- "description": "Big box with a red mark on the top",
- "barcode": 9876543211234,
- "barcodeEncoding": "CODE128",
- "reference": 9876543211234,
- "quantity": 1,
- "processedQuantity": 1,
- "dimensions": {
- "weight": 200,
- "volume": 0.2
}, - "damaged": {
- "confirmed": false,
- "pictures": [
- "string"
]
}, - "labels": [
- "frozen"
], - "skills": [
- "speaks_french"
], - "log": [
- {
- "_id": "507f191e810c19729de860ea",
- "when": "2019-03-13T12:34:56.012Z",
- "to": "PENDING",
- "by": "string"
}
], - "metadata": {
- "property1": 23,
- "property2": "Hello World"
}, - "group": "string"
}
], - "client": "507f191e810c19729de860ea",
- "hub": "507f191e810c19729de860ea",
- "hubName": "My Warehouse",
- "associatedName": "Lumikko Oyj",
- "associated": "5c3c63c23c32c30cb3cc1234c",
- "dependency": "507f191e810c19729de860ea",
- "hasDependency": "507f191e810c19729de860ea",
- "round": "R01",
- "archived": "string",
- "actualTime": {
- "arrive": {
- "when": "2019-03-24T12:34:56.123Z",
- "location": {
- "type": "Point",
- "geometry": [
- 0
]
}, - "forced": false,
- "isCorrectAddress": false
}
}, - "order": "string",
- "paymentType": "CCOD",
- "platform": "5c98f80a6b3dc61664c05cbf",
- "platformName": "Cortedal SYS, Oy",
- "endpoint": "5c3c645e3b37f30b3fc0240f",
- "errorLocation": {
- "addressLines": [
- "string"
], - "geocodeScore": 98,
- "location": {
- "type": "Point",
- "geometry": [
- 0
]
}
}, - "customerCalls": [
- {
- "when": "2019-03-13T12:34:56.012Z",
- "by": "string"
}
], - "issues": [
- {
- "type": "GEOCODING",
- "code": 0,
- "line": 0,
- "error": "string"
}
], - "notifications": [
- {
- "notificationId": "string",
- "sentDate": "2019-12-23T12:34:56.123Z",
- "by": {
- "firstName": "John",
- "lastName": "Doe",
- "phoneNumber": "32123123123",
- "picture": "/some/folder/image/c1235b6a253cd12d3",
- "_id": "507f191e810c19729de860ea",
- "externalId": "string"
}
}
], - "notificationSettings": {
- "sms": false,
- "email": false
}, - "replanned": false,
- "sourceHash": "string",
- "updated": "2019-03-24T12:34:56.123Z",
- "when": "2019-03-24T12:34:56.123Z",
- "targetFlux": "56fe250f1eb3571100bb081c_MORNING_57454b1556950a11005189fa_2017-11-15",
- "skills": [
- "speaks_french"
], - "roundName": "R03",
- "roundColor": "#FFCC0D",
- "products": [
- {
- "productId": "001234",
- "name": "CHEESE",
- "description": "Goat cheese pack, 400gr",
- "type": "food",
- "barcode": "11231212121",
- "quantity": 3,
- "unitPrice": 13.95,
- "isSubstitution": false,
- "quantityRejected": 0,
- "rejectedReason": {
- "_id": "507f191e810c19729de860ea",
- "name": "damaged"
}
}
], - "hasRejectedProducts": false,
- "activity": "string",
- "sequence": 1,
- "id": "5c98f80a6b3dc61664c05cbb",
- "flux": "5c3c63c23c32c30cb3cc1234c",
- "collectedAmount": 10.2,
- "closureDate": "2019-03-25T15:50:50.123Z",
- "by": "5c3c63c23c32c30cb3cc1234c",
- "attempts": 0,
- "arriveTime": "2019-03-25T15:50:50.123Z",
- "announcement": "507f191e810c19729de860ea",
- "shift": "string",
- "serviceTime": 5,
- "realServiceTime": {
- "serviceTime": 120,
- "tasksDeliveredInSameStop": 1,
- "confidence": "HIGH",
- "version": 2
}, - "maxTransitTime": 0,
- "timeWindowMargin": 0,
- "stopSequence": 2,
- "date": "2019-03-13T12:34:56.012Z",
- "labels": [
- "frozen"
], - "instructions": "Once inside of the building, follow the corridor on the right and take the elevator",
- "metadata": {
- "property1": 23,
- "property2": "Hello World"
}, - "dimensions": {
- "weight": 200,
- "volume": 0.2
}, - "timeWindow": {
- "start": "2019-03-13T12:34:56.012Z",
- "stop": "2019-03-13T12:34:56.012Z"
}, - "timeWindow2": {
- "start": "2019-03-13T12:34:56.012Z",
- "stop": "2019-03-13T12:34:56.012Z"
}, - "contact": {
- "account": "ACC123456789",
- "name": "Acme Inc.",
- "person": "Luke Skywalker",
- "phone": "+32 477 99 99 99",
- "extraPhones": [
- "+32 477 99 99 99"
], - "language": "fr",
- "buildingInfo": {
- "floor": 5,
- "hasElevator": true,
- "digicode1": "1234A",
- "digicode2": "4321A",
- "hasInterphone": true,
- "interphoneCode": "4524#"
}
}, - "location": {
- "building": "A cool building name",
- "number": "251",
- "street": "Avenue Louise",
- "city": "Brussels",
- "zip": "1050",
- "origin": "ADDRESS_BOOK",
- "country": "Belgium",
- "location": {
- "geometry": [
- 0
], - "type": "Point"
}, - "address": "251 avenue louise, 1050 Brussels, Belgium",
- "addressLines": [
- "string"
], - "geocodeScore": 98,
- "countryCode": "BEL"
}, - "source": {
- "building": "A cool building name",
- "number": "251",
- "street": "Avenue Louise",
- "location": {
- "geometry": [
- 0
], - "type": "Point"
}, - "address": "251 Avenue Louise, 1050 BRUXELLES, BELGIQUE",
- "city": "Brussels",
- "zip": "1050",
- "country": "Belgium",
- "geocodeScore": 98,
- "addressLines": [
- "251 Avenue Louise",
- "1050 Brussels",
- "Belgium"
]
}, - "hasBeenPaid": false,
- "price": 0,
- "driver": "5c98f80a6b3dc61664c05cbb",
- "requires": {
- "pickup": {
- "dispatcher": {
- "scan": false
}, - "driver": {
- "contactless": false,
- "signature": false,
- "signatureAndComment": false,
- "scan": false,
- "comment": false,
- "photo": false
}, - "stop": {
- "onSite": false
}, - "failure": {
- "photo": false
}
}, - "delivery": {
- "dispatcher": {
- "scan": false
}, - "driver": {
- "contactless": false,
- "prepCheckList": false,
- "prepScan": false,
- "signature": false,
- "signatureAndComment": false,
- "signatureAndItemConcerns": false,
- "scan": false,
- "comment": false,
- "photo": false
}, - "stop": {
- "onSite": false
}, - "failure": {
- "photo": false
}
}, - "other": {
- "driver": {
- "timer": false
}
}
}, - "execution": {
- "successComment": "string",
- "successPicture": "string",
- "failedReason": {
- "reasonId": "507f191e810c19729de860ea",
- "reason": "string",
- "custom": "string",
- "picture": "string"
}, - "timer": {
- "timestamps": [
- {
- "type": "start",
- "time": "2019-12-23T12:34:56.123Z"
}
]
}, - "signature": {
- "data": "string",
- "name": "string"
}, - "position": {
- "accuracy": 0,
- "altitude": 0,
- "heading": 0,
- "latitude": 50.812345,
- "longitude": 4.312345,
- "speed": 0,
- "timestamp": 1553529404789
}, - "contactless": {
- "forced": true,
- "reason": "string"
}
}, - "log": [
- {
- "_id": "507f191e810c19729de860ea",
- "when": "2019-03-13T12:34:56.012Z",
- "to": "ANNOUNCED",
- "by": "string"
}
], - "categories": [
- "B2B"
], - "contactless": {
- "pin": 7270
}, - "assets": {
- "deliver": [
- {
- "assetId": "string",
- "name": "string",
- "price": 0,
- "amount": 0
}
], - "return": [
- {
- "assetId": "string",
- "name": "string",
- "price": 0,
- "amount": 0
}
]
}, - "attachments": [
- {
- "_id": "5f9af33b4f8cc32e047d83b2",
- "name": "Delivery Note",
- "url": "/attachments/tasks/5c3c63c23c32c30cb3cc1234c/af6227d6-f915-4924-8873-98da8131df3a.pdf"
}
], - "brandingTemplate": "string"
}
This endpoint allows you to mark a task as ready to collect
extTrackId required | string (ExtTrackId) Example: ext-12345 The extTrackId of the task. |
updatedTime | string <date-time> (CarrierTaskStatusUpdatedTime) The date-time of the operation in ISO date format |
updateType | string (CarrierTaskStatusUpdateType) Enum: "id" "barcode" "total" Specify how to identify the items to update. If id or barcode is selected then the field items must be used otherwise the field total will specify the transition for all. |
object Specify the items that are dropped. |
{- "updatedTime": "2019-08-24T14:15:22Z",
- "updateType": "barcode",
- "dropped": {
- "total": true,
- "items": [
- "1111111"
], - "comment": "I am satisfied with the delivery service",
}
}
{- "createdBy": {
- "firstName": "John",
- "lastName": "Doe",
- "_id": "507f191e810c19729de860ea",
- "id": "507f191e810c19729de860ea",
- "externalId": "extRefDoe"
}, - "__v": 0,
- "_id": "507f191e810c19729de860ea",
- "initialSequence": 0,
- "trackingId": "abcdef-123456-4abc-acbacbfcabcfbcbfbacbfab",
- "extTrackId": "ext-12345",
- "type": "delivery",
- "taskId": "my-task-id",
- "taskReference": "task-ref-001-d",
- "progress": "ANNOUNCED",
- "status": "ARRIVED",
- "items": [
- {
- "_id": "507f191e810c19729de860ea",
- "type": "Box",
- "status": "ARRIVED",
- "name": "Soft Drink 6 pack",
- "description": "Big box with a red mark on the top",
- "barcode": 9876543211234,
- "barcodeEncoding": "CODE128",
- "reference": 9876543211234,
- "quantity": 1,
- "processedQuantity": 1,
- "dimensions": {
- "weight": 200,
- "volume": 0.2
}, - "damaged": {
- "confirmed": false,
- "pictures": [
- "string"
]
}, - "labels": [
- "frozen"
], - "skills": [
- "speaks_french"
], - "log": [
- {
- "_id": "507f191e810c19729de860ea",
- "when": "2019-03-13T12:34:56.012Z",
- "to": "PENDING",
- "by": "string"
}
], - "metadata": {
- "property1": 23,
- "property2": "Hello World"
}, - "group": "string"
}
], - "client": "507f191e810c19729de860ea",
- "hub": "507f191e810c19729de860ea",
- "hubName": "My Warehouse",
- "associatedName": "Lumikko Oyj",
- "associated": "5c3c63c23c32c30cb3cc1234c",
- "dependency": "507f191e810c19729de860ea",
- "hasDependency": "507f191e810c19729de860ea",
- "round": "R01",
- "archived": "string",
- "actualTime": {
- "arrive": {
- "when": "2019-03-24T12:34:56.123Z",
- "location": {
- "type": "Point",
- "geometry": [
- 0
]
}, - "forced": false,
- "isCorrectAddress": false
}
}, - "order": "string",
- "paymentType": "CCOD",
- "platform": "5c98f80a6b3dc61664c05cbf",
- "platformName": "Cortedal SYS, Oy",
- "endpoint": "5c3c645e3b37f30b3fc0240f",
- "errorLocation": {
- "addressLines": [
- "string"
], - "geocodeScore": 98,
- "location": {
- "type": "Point",
- "geometry": [
- 0
]
}
}, - "customerCalls": [
- {
- "when": "2019-03-13T12:34:56.012Z",
- "by": "string"
}
], - "issues": [
- {
- "type": "GEOCODING",
- "code": 0,
- "line": 0,
- "error": "string"
}
], - "notifications": [
- {
- "notificationId": "string",
- "sentDate": "2019-12-23T12:34:56.123Z",
- "by": {
- "firstName": "John",
- "lastName": "Doe",
- "phoneNumber": "32123123123",
- "picture": "/some/folder/image/c1235b6a253cd12d3",
- "_id": "507f191e810c19729de860ea",
- "externalId": "string"
}
}
], - "notificationSettings": {
- "sms": false,
- "email": false
}, - "replanned": false,
- "sourceHash": "string",
- "updated": "2019-03-24T12:34:56.123Z",
- "when": "2019-03-24T12:34:56.123Z",
- "targetFlux": "56fe250f1eb3571100bb081c_MORNING_57454b1556950a11005189fa_2017-11-15",
- "skills": [
- "speaks_french"
], - "roundName": "R03",
- "roundColor": "#FFCC0D",
- "products": [
- {
- "productId": "001234",
- "name": "CHEESE",
- "description": "Goat cheese pack, 400gr",
- "type": "food",
- "barcode": "11231212121",
- "quantity": 3,
- "unitPrice": 13.95,
- "isSubstitution": false,
- "quantityRejected": 0,
- "rejectedReason": {
- "_id": "507f191e810c19729de860ea",
- "name": "damaged"
}
}
], - "hasRejectedProducts": false,
- "activity": "string",
- "sequence": 1,
- "id": "5c98f80a6b3dc61664c05cbb",
- "flux": "5c3c63c23c32c30cb3cc1234c",
- "collectedAmount": 10.2,
- "closureDate": "2019-03-25T15:50:50.123Z",
- "by": "5c3c63c23c32c30cb3cc1234c",
- "attempts": 0,
- "arriveTime": "2019-03-25T15:50:50.123Z",
- "announcement": "507f191e810c19729de860ea",
- "shift": "string",
- "serviceTime": 5,
- "realServiceTime": {
- "serviceTime": 120,
- "tasksDeliveredInSameStop": 1,
- "confidence": "HIGH",
- "version": 2
}, - "maxTransitTime": 0,
- "timeWindowMargin": 0,
- "stopSequence": 2,
- "date": "2019-03-13T12:34:56.012Z",
- "labels": [
- "frozen"
], - "instructions": "Once inside of the building, follow the corridor on the right and take the elevator",
- "metadata": {
- "property1": 23,
- "property2": "Hello World"
}, - "dimensions": {
- "weight": 200,
- "volume": 0.2
}, - "timeWindow": {
- "start": "2019-03-13T12:34:56.012Z",
- "stop": "2019-03-13T12:34:56.012Z"
}, - "timeWindow2": {
- "start": "2019-03-13T12:34:56.012Z",
- "stop": "2019-03-13T12:34:56.012Z"
}, - "contact": {
- "account": "ACC123456789",
- "name": "Acme Inc.",
- "person": "Luke Skywalker",
- "phone": "+32 477 99 99 99",
- "extraPhones": [
- "+32 477 99 99 99"
], - "language": "fr",
- "buildingInfo": {
- "floor": 5,
- "hasElevator": true,
- "digicode1": "1234A",
- "digicode2": "4321A",
- "hasInterphone": true,
- "interphoneCode": "4524#"
}
}, - "location": {
- "building": "A cool building name",
- "number": "251",
- "street": "Avenue Louise",
- "city": "Brussels",
- "zip": "1050",
- "origin": "ADDRESS_BOOK",
- "country": "Belgium",
- "location": {
- "geometry": [
- 0
], - "type": "Point"
}, - "address": "251 avenue louise, 1050 Brussels, Belgium",
- "addressLines": [
- "string"
], - "geocodeScore": 98,
- "countryCode": "BEL"
}, - "source": {
- "building": "A cool building name",
- "number": "251",
- "street": "Avenue Louise",
- "location": {
- "geometry": [
- 0
], - "type": "Point"
}, - "address": "251 Avenue Louise, 1050 BRUXELLES, BELGIQUE",
- "city": "Brussels",
- "zip": "1050",
- "country": "Belgium",
- "geocodeScore": 98,
- "addressLines": [
- "251 Avenue Louise",
- "1050 Brussels",
- "Belgium"
]
}, - "hasBeenPaid": false,
- "price": 0,
- "driver": "5c98f80a6b3dc61664c05cbb",
- "requires": {
- "pickup": {
- "dispatcher": {
- "scan": false
}, - "driver": {
- "contactless": false,
- "signature": false,
- "signatureAndComment": false,
- "scan": false,
- "comment": false,
- "photo": false
}, - "stop": {
- "onSite": false
}, - "failure": {
- "photo": false
}
}, - "delivery": {
- "dispatcher": {
- "scan": false
}, - "driver": {
- "contactless": false,
- "prepCheckList": false,
- "prepScan": false,
- "signature": false,
- "signatureAndComment": false,
- "signatureAndItemConcerns": false,
- "scan": false,
- "comment": false,
- "photo": false
}, - "stop": {
- "onSite": false
}, - "failure": {
- "photo": false
}
}, - "other": {
- "driver": {
- "timer": false
}
}
}, - "execution": {
- "successComment": "string",
- "successPicture": "string",
- "failedReason": {
- "reasonId": "507f191e810c19729de860ea",
- "reason": "string",
- "custom": "string",
- "picture": "string"
}, - "timer": {
- "timestamps": [
- {
- "type": "start",
- "time": "2019-12-23T12:34:56.123Z"
}
]
}, - "signature": {
- "data": "string",
- "name": "string"
}, - "position": {
- "accuracy": 0,
- "altitude": 0,
- "heading": 0,
- "latitude": 50.812345,
- "longitude": 4.312345,
- "speed": 0,
- "timestamp": 1553529404789
}, - "contactless": {
- "forced": true,
- "reason": "string"
}
}, - "log": [
- {
- "_id": "507f191e810c19729de860ea",
- "when": "2019-03-13T12:34:56.012Z",
- "to": "ANNOUNCED",
- "by": "string"
}
], - "categories": [
- "B2B"
], - "contactless": {
- "pin": 7270
}, - "assets": {
- "deliver": [
- {
- "assetId": "string",
- "name": "string",
- "price": 0,
- "amount": 0
}
], - "return": [
- {
- "assetId": "string",
- "name": "string",
- "price": 0,
- "amount": 0
}
]
}, - "attachments": [
- {
- "_id": "5f9af33b4f8cc32e047d83b2",
- "name": "Delivery Note",
- "url": "/attachments/tasks/5c3c63c23c32c30cb3cc1234c/af6227d6-f915-4924-8873-98da8131df3a.pdf"
}
], - "brandingTemplate": "string"
}
This endpoint allows to schedule a task that hasn't been started yet (this means with progress ANNOUNCED, ERROR, UNPLANNED, and GEOCODED)
extTrackId required | string (ExtTrackId) Example: ext-12345 The extTrackId of the task. |
object The time window during which the task should be completed. | |
excludeFromTimeslot | boolean Default: false If the task uses timeslots, send true to schedule the task out of the existing timeslots, so, the task won't be assigned to any timeslot and the capacity won't be decreased. |
{- "timeWindow": {
- "start": "2019-03-13T12:34:56.012Z",
- "stop": "2019-03-13T16:34:56.012Z"
}, - "excludeFromTimeslot": false
}
{- "createdBy": {
- "firstName": "John",
- "lastName": "Doe",
- "_id": "507f191e810c19729de860ea",
- "id": "507f191e810c19729de860ea",
- "externalId": "extRefDoe"
}, - "__v": 0,
- "_id": "507f191e810c19729de860ea",
- "initialSequence": 0,
- "trackingId": "abcdef-123456-4abc-acbacbfcabcfbcbfbacbfab",
- "extTrackId": "ext-12345",
- "type": "delivery",
- "taskId": "my-task-id",
- "taskReference": "task-ref-001-d",
- "progress": "ANNOUNCED",
- "status": "ARRIVED",
- "items": [
- {
- "_id": "507f191e810c19729de860ea",
- "type": "Box",
- "status": "ARRIVED",
- "name": "Soft Drink 6 pack",
- "description": "Big box with a red mark on the top",
- "barcode": 9876543211234,
- "barcodeEncoding": "CODE128",
- "reference": 9876543211234,
- "quantity": 1,
- "processedQuantity": 1,
- "dimensions": {
- "weight": 200,
- "volume": 0.2
}, - "damaged": {
- "confirmed": false,
- "pictures": [
- "string"
]
}, - "labels": [
- "frozen"
], - "skills": [
- "speaks_french"
], - "log": [
- {
- "_id": "507f191e810c19729de860ea",
- "when": "2019-03-13T12:34:56.012Z",
- "to": "PENDING",
- "by": "string"
}
], - "metadata": {
- "property1": 23,
- "property2": "Hello World"
}, - "group": "string"
}
], - "client": "507f191e810c19729de860ea",
- "hub": "507f191e810c19729de860ea",
- "hubName": "My Warehouse",
- "associatedName": "Lumikko Oyj",
- "associated": "5c3c63c23c32c30cb3cc1234c",
- "dependency": "507f191e810c19729de860ea",
- "hasDependency": "507f191e810c19729de860ea",
- "round": "R01",
- "archived": "string",
- "actualTime": {
- "arrive": {
- "when": "2019-03-24T12:34:56.123Z",
- "location": {
- "type": "Point",
- "geometry": [
- 0
]
}, - "forced": false,
- "isCorrectAddress": false
}
}, - "order": "string",
- "paymentType": "CCOD",
- "platform": "5c98f80a6b3dc61664c05cbf",
- "platformName": "Cortedal SYS, Oy",
- "endpoint": "5c3c645e3b37f30b3fc0240f",
- "errorLocation": {
- "addressLines": [
- "string"
], - "geocodeScore": 98,
- "location": {
- "type": "Point",
- "geometry": [
- 0
]
}
}, - "customerCalls": [
- {
- "when": "2019-03-13T12:34:56.012Z",
- "by": "string"
}
], - "issues": [
- {
- "type": "GEOCODING",
- "code": 0,
- "line": 0,
- "error": "string"
}
], - "notifications": [
- {
- "notificationId": "string",
- "sentDate": "2019-12-23T12:34:56.123Z",
- "by": {
- "firstName": "John",
- "lastName": "Doe",
- "phoneNumber": "32123123123",
- "picture": "/some/folder/image/c1235b6a253cd12d3",
- "_id": "507f191e810c19729de860ea",
- "externalId": "string"
}
}
], - "notificationSettings": {
- "sms": false,
- "email": false
}, - "replanned": false,
- "sourceHash": "string",
- "updated": "2019-03-24T12:34:56.123Z",
- "when": "2019-03-24T12:34:56.123Z",
- "targetFlux": "56fe250f1eb3571100bb081c_MORNING_57454b1556950a11005189fa_2017-11-15",
- "skills": [
- "speaks_french"
], - "roundName": "R03",
- "roundColor": "#FFCC0D",
- "products": [
- {
- "productId": "001234",
- "name": "CHEESE",
- "description": "Goat cheese pack, 400gr",
- "type": "food",
- "barcode": "11231212121",
- "quantity": 3,
- "unitPrice": 13.95,
- "isSubstitution": false,
- "quantityRejected": 0,
- "rejectedReason": {
- "_id": "507f191e810c19729de860ea",
- "name": "damaged"
}
}
], - "hasRejectedProducts": false,
- "activity": "string",
- "sequence": 1,
- "id": "5c98f80a6b3dc61664c05cbb",
- "flux": "5c3c63c23c32c30cb3cc1234c",
- "collectedAmount": 10.2,
- "closureDate": "2019-03-25T15:50:50.123Z",
- "by": "5c3c63c23c32c30cb3cc1234c",
- "attempts": 0,
- "arriveTime": "2019-03-25T15:50:50.123Z",
- "announcement": "507f191e810c19729de860ea",
- "shift": "string",
- "serviceTime": 5,
- "realServiceTime": {
- "serviceTime": 120,
- "tasksDeliveredInSameStop": 1,
- "confidence": "HIGH",
- "version": 2
}, - "maxTransitTime": 0,
- "timeWindowMargin": 0,
- "stopSequence": 2,
- "date": "2019-03-13T12:34:56.012Z",
- "labels": [
- "frozen"
], - "instructions": "Once inside of the building, follow the corridor on the right and take the elevator",
- "metadata": {
- "property1": 23,
- "property2": "Hello World"
}, - "dimensions": {
- "weight": 200,
- "volume": 0.2
}, - "timeWindow": {
- "start": "2019-03-13T12:34:56.012Z",
- "stop": "2019-03-13T12:34:56.012Z"
}, - "timeWindow2": {
- "start": "2019-03-13T12:34:56.012Z",
- "stop": "2019-03-13T12:34:56.012Z"
}, - "contact": {
- "account": "ACC123456789",
- "name": "Acme Inc.",
- "person": "Luke Skywalker",
- "phone": "+32 477 99 99 99",
- "extraPhones": [
- "+32 477 99 99 99"
], - "language": "fr",
- "buildingInfo": {
- "floor": 5,
- "hasElevator": true,
- "digicode1": "1234A",
- "digicode2": "4321A",
- "hasInterphone": true,
- "interphoneCode": "4524#"
}
}, - "location": {
- "building": "A cool building name",
- "number": "251",
- "street": "Avenue Louise",
- "city": "Brussels",
- "zip": "1050",
- "origin": "ADDRESS_BOOK",
- "country": "Belgium",
- "location": {
- "geometry": [
- 0
], - "type": "Point"
}, - "address": "251 avenue louise, 1050 Brussels, Belgium",
- "addressLines": [
- "string"
], - "geocodeScore": 98,
- "countryCode": "BEL"
}, - "source": {
- "building": "A cool building name",
- "number": "251",
- "street": "Avenue Louise",
- "location": {
- "geometry": [
- 0
], - "type": "Point"
}, - "address": "251 Avenue Louise, 1050 BRUXELLES, BELGIQUE",
- "city": "Brussels",
- "zip": "1050",
- "country": "Belgium",
- "geocodeScore": 98,
- "addressLines": [
- "251 Avenue Louise",
- "1050 Brussels",
- "Belgium"
]
}, - "hasBeenPaid": false,
- "price": 0,
- "driver": "5c98f80a6b3dc61664c05cbb",
- "requires": {
- "pickup": {
- "dispatcher": {
- "scan": false
}, - "driver": {
- "contactless": false,
- "signature": false,
- "signatureAndComment": false,
- "scan": false,
- "comment": false,
- "photo": false
}, - "stop": {
- "onSite": false
}, - "failure": {
- "photo": false
}
}, - "delivery": {
- "dispatcher": {
- "scan": false
}, - "driver": {
- "contactless": false,
- "prepCheckList": false,
- "prepScan": false,
- "signature": false,
- "signatureAndComment": false,
- "signatureAndItemConcerns": false,
- "scan": false,
- "comment": false,
- "photo": false
}, - "stop": {
- "onSite": false
}, - "failure": {
- "photo": false
}
}, - "other": {
- "driver": {
- "timer": false
}
}
}, - "execution": {
- "successComment": "string",
- "successPicture": "string",
- "failedReason": {
- "reasonId": "507f191e810c19729de860ea",
- "reason": "string",
- "custom": "string",
- "picture": "string"
}, - "timer": {
- "timestamps": [
- {
- "type": "start",
- "time": "2019-12-23T12:34:56.123Z"
}
]
}, - "signature": {
- "data": "string",
- "name": "string"
}, - "position": {
- "accuracy": 0,
- "altitude": 0,
- "heading": 0,
- "latitude": 50.812345,
- "longitude": 4.312345,
- "speed": 0,
- "timestamp": 1553529404789
}, - "contactless": {
- "forced": true,
- "reason": "string"
}
}, - "log": [
- {
- "_id": "507f191e810c19729de860ea",
- "when": "2019-03-13T12:34:56.012Z",
- "to": "ANNOUNCED",
- "by": "string"
}
], - "categories": [
- "B2B"
], - "contactless": {
- "pin": 7270
}, - "assets": {
- "deliver": [
- {
- "assetId": "string",
- "name": "string",
- "price": 0,
- "amount": 0
}
], - "return": [
- {
- "assetId": "string",
- "name": "string",
- "price": 0,
- "amount": 0
}
]
}, - "attachments": [
- {
- "_id": "5f9af33b4f8cc32e047d83b2",
- "name": "Delivery Note",
- "url": "/attachments/tasks/5c3c63c23c32c30cb3cc1234c/af6227d6-f915-4924-8873-98da8131df3a.pdf"
}
], - "brandingTemplate": "string"
}
This endpoint allows you to update the live tracking information for multiple tasks delivered in the same round.
when required | string <date-time> <= 27 characters The date and time when the location information was registered provided in ISO 8601 date format. |
object Driver location. This value is only accepted when the task is ONGOING. | |
required | Array of objects [ 1 .. 200 ] items Tasks to update in batch. The maximum accepted is 200. |
{- "when": "2019-03-13T12:34:56Z",
- "position": {
- "longitude": 50.165168,
- "latitude": 17.1135468,
- "accuracy": 0.00004,
- "altitude": 123.4
}, - "tasks": [
- {
- "extTrackId": "ext-12345",
- "eta": "2019-03-13T14:34:56Z",
- "tasksBefore": 15
}
]
}
[- {
- "internalId": "507f191e810c19729de860ea",
- "taskId": "task-001",
- "extTrackId": "ext-12356",
- "success": true,
- "error": {
- "code": 0,
- "message": "string"
}
}
]
This endpoint only works for platforms with a custom integration. It allows to update the following information of the task:
A Hub is the logistics center of a specific area from where the task is delivered to the end recipient. It usually represents a warehouse or a store depending of the business context.
This endpoint fetches a paginated list of all the hubs your platform has access to. It also allows to filter the list by specific properties.
page | number (Page) Default: 0 The page index of the requested records |
pageSize | number <= 500 Default: 100 The page size of the requested records |
hubIds | Array of strings <= 100 items The external hub identifiers to search for |
[- {
- "id": "656089f24c56490770d1fcb3",
- "externalId": "my_warehouse",
- "name": "My Warehouse",
- "address": {
- "street": "Avenue Louise",
- "number": "251",
- "city": "Brussels",
- "zip": "1050",
- "country": "BE",
- "coordinates": {
- "latitude": 50.824853,
- "longitude": 4.365968
}
}, - "owner": "platform-snake"
}
]
A notification is a communication sent to the recipient regarding the status of their task. It can be provided via email or SMS, depending on the configuration of your platform and the available contact information. Notifications can be automatically triggered by specific events or sent manually.
This endpoint fetches a list of all the notifications associated with a task.
taskId required | string Example: 507f191e810c19729de860ea The task id |
[- {
- "id": "507f191e810c19729de860ea",
- "event": "driver-approaching",
- "contact": {
- "name": "John Smith",
- "phone": "+32 477 99 99 99",
- "language": "fr"
}, - "channel": "SMS",
- "content": "string",
- "status": "Pending",
- "error": {
- "code": 0,
- "message": "string"
}, - "when": "2019-03-13T12:34:56.012Z"
}
]
The optimization endpoints allow you to trigger optimizations, without using the web interface.
Runs the optimizer for all valid target flows
targetFlux required | string A target flux is the combination of parameters allowing to isolate an optimisation problem. It is a key composed of:
An independent optimization problem occurs at a hub, on a particular date, during a specific shift in a defined flow and using a specific optimisation. |
A round, also called mission, is a grouping of tasks with a determined sequence. This sequence is the order in which drivers should complete them to be most efficient based on criteria defined on the platform (duration, distance…).
Fetches a paginated list of all rounds on the authenticated platform. By default, the results displayed are date independent. To retrieve rounds of a specific day, use the date
query parameter.
You are also able, with that endpoint, to filter rounds per hub, using the hub
query parameter. If not specified, it will take all hubs into account.
date | string <date> Example: date=2019-03-19 Date of the round, format YYYY-MM-DD |
page | number (Page) Default: 0 The page index of the requested records |
pageSize | number (PageSize) Default: 10 The page size of the requested records |
hub | string (ID) Example: hub=507f191e810c19729de860ea The internal hub identifier (Urbantz) |
[- {
- "_id": "507f191e810c19729de860ea",
- "realInfo": {
- "hasPrepared": "2019-03-03T02:03:05.366Z",
- "hasStarted": "2019-03-03T02:03:05.366Z",
- "hasFinished": "2019-03-03T02:03:05.366Z",
- "preparationTime": 2273,
- "hasLasted": 14935
}, - "name": "string",
- "status": "CREATED",
- "activity": "classic",
- "shift": "string",
- "targetFlux": "string",
- "platform": "507f191e810c19729de860ea",
- "metadata": {
- "exampleKey": "example value"
}, - "labelsAndSkills": [
- "string"
], - "date": "2019-03-13T12:34:56.012Z",
- "dimensions": {
- "weight": 200,
- "volume": 0.2
}, - "hub": {
- "_id": "507f191e810c19729de860ea",
- "externalId": "string"
}, - "startTime": "2019-03-13T12:34:56.012Z",
- "endTime": "2019-03-13T12:34:56.012Z",
- "validated": true,
- "totalViolationTime": 0,
- "totalWaitTime": 0,
- "totalDistance": 0,
- "totalTravelTime": 0,
- "totalBreakServiceTime": 0,
- "totalOrderServiceTime": 0,
- "totalTime": 0,
- "associatedName": "Lumikko Oyj",
- "associated": "5c3c63c23c32c30cb3cc1234c",
- "totalCost": 0,
- "orderCount": 0,
- "updated": "2019-03-13T12:34:56.012Z",
- "reloads": [
- "string"
], - "flux": "5c3c63f23b37f30c4fd0240e",
- "id": "507f191e810c19729de860ea",
- "orderDone": 0,
- "senders": [
- {
- "name": "ExoCraft Productions",
- "reference": "5c3c615d3b37f30b3fc0240c",
- "count": 1,
- "_id": "string"
}
], - "picture": "string",
- "driver": {
- "firstName": "John",
- "lastName": "Doe",
- "_id": "507f191e810c19729de860ea",
- "id": "507f191e810c19729de860ea",
- "externalId": "string"
}, - "stops": [
- {
- "stopType": 0,
- "type": "hub",
- "stopSequence": 1,
- "travelDistance": 0,
- "arriveTime": "2019-03-13T12:34:56.012Z",
- "departTime": "2019-03-13T12:34:56.012Z",
- "parcel": "507f191e810c19729de860ea",
- "sequence": 0,
- "taskId": "string",
- "taskReference": "task-ref-001-d",
- "violationTime": 0,
- "waitTime": 0,
- "serviceTime": 0,
- "travelTime": 0,
- "coordinates": [
- 0
], - "progress": "ANNOUNCED",
- "status": "ARRIVED",
- "closureDate": "2019-03-25T15:50:50.123Z"
}
], - "delay": {
- "time": 1567000,
- "when": "2019-04-01T08:31:05.121Z"
}, - "vehicle": {
- "name": "string",
- "id": "507f191e810c19729de860ea",
- "_id": "507f191e810c19729de860ea"
}
}
]
Retrieves a specific round, based on its id
. You can get this id
by retrieving all rounds or via the web interface, when displaying a round's details, under the Identifier
key of the General
tab.
id required | string (ID) Example: 507f191e810c19729de860ea The task identifier |
{- "_id": "507f191e810c19729de860ea",
- "realInfo": {
- "hasPrepared": "2019-03-03T02:03:05.366Z",
- "hasStarted": "2019-03-03T02:03:05.366Z",
- "hasFinished": "2019-03-03T02:03:05.366Z",
- "preparationTime": 2273,
- "hasLasted": 14935
}, - "name": "string",
- "status": "CREATED",
- "activity": "classic",
- "shift": "string",
- "targetFlux": "string",
- "platform": "507f191e810c19729de860ea",
- "metadata": {
- "exampleKey": "example value"
}, - "labelsAndSkills": [
- "string"
], - "date": "2019-03-13T12:34:56.012Z",
- "dimensions": {
- "weight": 200,
- "volume": 0.2
}, - "hub": {
- "_id": "507f191e810c19729de860ea",
- "externalId": "string"
}, - "startTime": "2019-03-13T12:34:56.012Z",
- "endTime": "2019-03-13T12:34:56.012Z",
- "validated": true,
- "totalViolationTime": 0,
- "totalWaitTime": 0,
- "totalDistance": 0,
- "totalTravelTime": 0,
- "totalBreakServiceTime": 0,
- "totalOrderServiceTime": 0,
- "totalTime": 0,
- "associatedName": "Lumikko Oyj",
- "associated": "5c3c63c23c32c30cb3cc1234c",
- "totalCost": 0,
- "orderCount": 0,
- "updated": "2019-03-13T12:34:56.012Z",
- "reloads": [
- "string"
], - "flux": "5c3c63f23b37f30c4fd0240e",
- "id": "507f191e810c19729de860ea",
- "orderDone": 0,
- "senders": [
- {
- "name": "ExoCraft Productions",
- "reference": "5c3c615d3b37f30b3fc0240c",
- "count": 1,
- "_id": "string"
}
], - "picture": "string",
- "driver": {
- "firstName": "John",
- "lastName": "Doe",
- "_id": "507f191e810c19729de860ea",
- "id": "507f191e810c19729de860ea",
- "externalId": "string"
}, - "stops": [
- {
- "stopType": 0,
- "type": "hub",
- "stopSequence": 1,
- "travelDistance": 0,
- "arriveTime": "2019-03-13T12:34:56.012Z",
- "departTime": "2019-03-13T12:34:56.012Z",
- "parcel": "507f191e810c19729de860ea",
- "sequence": 0,
- "taskId": "string",
- "taskReference": "task-ref-001-d",
- "violationTime": 0,
- "waitTime": 0,
- "serviceTime": 0,
- "travelTime": 0,
- "coordinates": [
- 0
], - "progress": "ANNOUNCED",
- "status": "ARRIVED",
- "closureDate": "2019-03-25T15:50:50.123Z"
}
], - "delay": {
- "time": 1567000,
- "when": "2019-04-01T08:31:05.121Z"
}, - "vehicle": {
- "name": "string",
- "id": "507f191e810c19729de860ea",
- "_id": "507f191e810c19729de860ea"
}
}
This endpoint allows you to create rounds based on preset tasks. As a user, you are responsible to provide the exact information required for the round.
This is useful, when you have your own optimization system and you want the results of your optimization to be reflected in Urbantz.
To use it, you have to provide an ordered list of stops for the round.
roundName | string <string> The round name to create. example: |
date | string <date> The day to create the round. If omitted, the system will try to use the date given in example: |
startTime | string <date-time> The start time of the round. The value must be an ISO 8601 date time string. This value can be omitted if When omitted, the system will try to use the example: |
endTime | string <date-time> The end time of the round. The value must be an ISO 8601 date time string. This value can be omitted if When omitted, the system will try to use the example: |
driver | string <string> Use the This value is optional unless you use a stop of type |
vehicle | string <string> Use the vehicle name to assign a specific vehicle to the round. This value is optional. example: |
hub | string <string> Use This value is mandatory if you use a stop of type hub. example: |
Array of objects The ordered list of stops to include in the round. |
[- {
- "roundName": "ROUND_FROM_HUB",
- "date": "2021-02-14",
- "startTime": "2021-02-14T09:00:00.000Z",
- "endTime": "2021-02-14T10:30:00.000Z",
- "hub": "hub_1",
- "stops": [
- {
- "type": "hub",
- "arriveTime": "2021-02-14T09:00:00.000Z"
}, - {
- "type": "pickup",
- "id": "5ffeb8445389a819937a095e",
- "arriveTime": "2021-02-14T09:15:00.000Z"
}, - {
- "type": "break",
- "arriveTime": "2021-02-14T09:30:00.000Z",
- "duration": 15,
- "location": [
- 48.8583701,
- 2.2922926
]
}, - {
- "type": "delivery",
- "id": "5ffeb8445389a819937a095f",
- "arriveTime": "2021-02-14T10:00:00.000Z"
}, - {
- "type": "hub",
- "arriveTime": "2021-02-14T10:30:00.000Z"
}
]
}, - {
- "roundName": "ROUND_FROM_DRIVER'S_HOME",
- "date": "2021-02-14",
- "startTime": "2021-02-14T08:45:00.000Z",
- "endTime": "2021-02-14T14:00:00.000Z",
- "stops": [
- {
- "type": "driver",
- "arriveTime": "2021-02-14T08:45:00.000Z"
}, - {
- "type": "pickup",
- "taskId": 11223344,
- "arriveTime": "2021-02-14T09:15:00.000Z"
}, - {
- "type": "break",
- "arriveTime": "2021-02-14T09:30:00.000Z",
- "duration": 15,
- "location": [
- 48.8583701,
- 2.2922926
]
}, - {
- "type": "delivery",
- "taskId": 11223344,
- "arriveTime": "2021-02-14T10:00:00.000Z"
}, - {
- "type": "driver",
- "arriveTime": "2021-02-14T14:00:00.000Z"
}
]
}, - {
- "roundName": "ROUND_FROM_FIRST_AND_LAST_TASK",
- "date": "2021-02-14",
- "startTime": "2021-02-14T08:30:00.000Z",
- "endTime": "2021-02-14T11:30:00.000Z",
- "stops": [
- {
- "type": "pickup",
- "id": "5ffeb8445389a819937a096a",
- "arriveTime": "2021-02-14T08:30:00.000Z"
}, - {
- "type": "break",
- "arriveTime": "2021-02-14T09:30:00.000Z",
- "duration": 15,
- "location": [
- 48.8583701,
- 2.2922926
]
}, - {
- "type": "delivery",
- "id": "5ffeb8445389a819937a096b",
- "arriveTime": "2021-02-14T11:30:00.000Z"
}
]
}, - {
- "roundName": "INVALID_ROUND_EXAMPLE_DATE",
- "date": "1970-01-01",
- "startTime": "1970-01-01T08:00:00.000Z",
- "endTime": "1970-01-01T12:00:00.000Z",
- "stops": [
- {
- "type": "pickup",
- "id": "5ffeb8445389a819937a096c",
- "arriveTime": "2021-02-14T08:30:00.000Z"
}, - {
- "type": "break",
- "arriveTime": "2021-02-14T09:30:00.000Z",
- "duration": 15,
- "location": [
- 48.8583701,
- 2.2922926
]
}, - {
- "type": "delivery",
- "id": "5ffeb8445389a819937a096d",
- "arriveTime": "2021-02-14T11:30:00.000Z"
}
]
}, - {
- "roundName": "INVALID_ROUND_EXAMPLE_TASK",
- "date": "2021-02-14",
- "startTime": "2021-02-14T08:30:00.000Z",
- "endTime": "2021-02-14T11:30:00.000Z",
- "stops": [
- {
- "type": "pickup",
- "id": "5ffeb8445389a819937a096c",
- "arriveTime": "2021-02-14T08:30:00.000Z"
}, - {
- "type": "break",
- "arriveTime": "2021-02-14T09:30:00.000Z",
- "duration": 15,
- "location": [
- 48.8583701,
- 2.2922926
]
}, - {
- "type": "delivery",
- "id": "an_invalid_id",
- "arriveTime": "2021-02-14T11:30:00.000Z"
}
]
}
]
[- {
- "round": "ROUND_FROM_HUB",
- "errors": 0,
- "warnings": [ ],
- "orders": [
- "5ffeb8445389a819937a095e",
- "5ffeb8445389a819937a095f"
], - "message": "ROUND_FROM_HUB successfully created."
}, - {
- "round": "ROUND_FROM_DRIVER'S_HOME",
- "errors": 0,
- "warnings": [ ],
- "orders": [
- "5ffeb8445389a819937a095a",
- "5ffeb8445389a819937a09b"
], - "message": "ROUND_FROM_DRIVER'S_HOME successfully created."
}, - {
- "round": "ROUND_FROM_FIRST_AND_LAST_TASK",
- "errors": 0,
- "warnings": [ ],
- "orders": [
- "5ffeb8445389a819937a096a",
- "5ffeb8445389a819937a096b"
], - "message": "ROUND_FROM_FIRST_AND_LAST_TASK successfully created."
}, - {
- "round": "INVALID_ROUND_EXAMPLE_DATE",
- "errors": 4,
- "warnings": [
- {
- "code": "000-014",
- "message": "Invalid parameter provided. startTime must be for the current day or in the future",
- "details": [ ]
}, - {
- "code": "000-014",
- "message": "Invalid parameter provided. endTime must be for the current day or in the future",
- "details": [ ]
}, - {
- "code": "000-014",
- "message": "Invalid parameter provided. arriveTime for the first order must be filled with the same value as the round startTime",
- "details": [
- "arriveTime of the first stop must have the same value than the round startTime."
]
}, - {
- "code": "000-014",
- "message": "Invalid parameter provided. arriveTime for the last order must be filled with the same value as the round endTime",
- "details": [
- "arriveTime of the last stop must have the same value than the round endTime."
]
}
], - "message": "INVALID_ROUND_EXAMPLE_DATE creation aborted. Please check data."
}, - {
- "round": "INVALID_ROUND_EXAMPLE_TASK",
- "errors": 1,
- "warnings": [
- {
- "code": "001-003",
- "message": "Task Does Not Exist: The task:'an_invalid_id' could not be found in database.",
- "details": [ ]
}
], - "message": "INVALID_ROUND_EXAMPLE_TASK creation aborted. Please check data."
}
]
Get the real distance travelled by the driver during the round as calculated using GPS points collected while the driver is en route. This is only available after a round completes.
id required | string (ID) Example: 507f191e810c19729de860ea The round identifier |
{- "realDistanceInMeter": 0,
- "confidenceLevel": "HIGH",
- "when": "2019-03-13T12:34:56.012Z"
}
Get metrics about green house gases that were emitted during the round while the driver is en route. This is only available after a round completes.
id required | string (ID) Example: 507f191e810c19729de860ea The round identifier |
{- "totalCo2Emission": <