Assign equipment to a load
This document describes the different steps an Equipment Operator needs to perform in order to plan a load based on information they received from a seller/loader.
As per process flow description of step D, the following API calls needs to be performed in sequence to "assign a load":
search the equipment
open the booklet
get equipment cleanliness
define what type of document to use for the load to consume (eECD/ePPL/eECO)
assign a planned load to the equipment ID (= Create Planned Load)
create load assignment as per manual process
manual assign load
create load assignment as per integrated process using Elemica or other transport message integration partners
get a transport order
Search the Equipment
GET {eecdapi}/equipment?operatorId={operatorId}&search={search}
Usage
Identify the equipment. You will need the retrieved equipment ID later in the cleaning process.
Information
Retrieves the information about a specific equipment
Either license plate or container ID will be returned, but never both
Query string parameters
OperatorId: ID of an operator(see Identify transport Company)
Search: A way to uniquely identify the equipment. This may be either the license plate or the container ID.
Response: Get equipment
Search equipment response
[
{
"id": "Guid"
"operatorId": "Guid",
"equipmentType": "string",
"subGroup": "string",
"numberOfManholes": 0,
"numberOfCompartments": 0,
"compartments": [
{
"key": "1",
"volume": 0,
"baffles": 0
}
],
"licensePlate": "string",
"internalEquipmentCode": "string",
"containerId": "string",
"isIso6346Compliant": true
}
]
Open the booklet
GET {eecdapi}/equipment/{equipmentId}/history
Usage
Opens the booklet to view the load-, eppl-, and cleaning history
The amount of loads/eppls/cleanings visible in the history depends on the license of the user opening the booklet
A maximum of 3 relevant cleaning cycles per compartment is available
Information
Depending on your license and your relation to the equipment, you may see only certain parts of the booklet
Equipment operators can view their own equipment history at all times.
Response (expand to view)
Get equipment history response
{
"equipmentId": "string",
"compartments": [
{
"key": "string",
"loads": [
{
"id": "string",
"lastStatusDate": "2021-05-12T06:48:54.696Z",
"status": "PLANNED",
"product": {
"productId": "string",
"sellerId": "string",
"sellerName": "string",
"productType": "CHEMICAL",
"articleNumber": "string",
"articleName": "string",
"unNr": "string"
},
"loadDetails": {
"loadPlannedAt": "2021-05-12T06:48:54.696Z",
"loaderId": "string",
"loaderName": "string",
"loadingLocation": "string",
"transportOrderId": "string"
},
"loadProcessStates": [
{
"status": "PLANNED",
"fullName": "string",
"userId": "string",
"timeStamp": "2021-05-12T06:48:54.696Z",
"comment": "string"
}
],
"customerReference": "string",
"outboundDeliveryReference": "string",
"outboundDeliveryReferenceItemLine": "string",
"attachments": [
{
"id": "string",
"originalFilename": "string"
}
],
"extraTask": "NONE",
"epplId": "string",
"referenceDate": "2021-05-12T06:48:54.696Z"
}
],
"cleanings": [
{
"id": "string",
"lastStatusDate": "2021-05-12T06:48:54.696Z",
"status": "REQUESTED",
"cleanedBy": {
"locationId": "string",
"locationName": "string",
"supervisor": "string",
"organisationId": "string",
"organisationName": "string",
"addressLines": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"phone": "string",
"fax": "string",
"website": "string"
},
"references": {
"customerReference": "string",
"internalReference": "string"
},
"process": {
"startedAt": "2021-05-12T06:48:54.696Z",
"endedAt": "2021-05-12T06:48:54.696Z",
"completedAt": "2021-05-12T06:48:54.696Z",
"representativeName": "string",
"createdBy": "string",
"createdById": "string",
"createdAt": "2021-05-12T06:48:54.696Z",
"cleaningPerformedBy": "string"
},
"signoff": {
"driverName": "string",
"signature": "string",
"signedAt": "2021-05-12T06:48:54.696Z",
"driverComments": "string"
},
"eEcd": {
"reference": "string",
"valid": true,
"expired": true
},
"attachments": [
{
"id": "string",
"originalFilename": "string"
}
],
"cleanerComments": "string",
"type": "STANDARD",
"isUnaccompanied": true,
"eEco": {
"reference": "string",
"estimatedTimeOfArrival": "2021-05-12T06:48:54.696Z",
"estimatedTimeOfPickup": "2021-05-12T06:48:54.696Z",
"safetyInfo": {
"tankUnderPressure": true,
"nitrogenInTank": true,
"solidNoPressure": true
},
"agentRequest": "string",
"otherRequests": "string",
"issueDate": "2021-05-12T06:48:54.696Z"
},
"cleaning": {
"codes": [
"string"
],
"additional": "string",
"commentsPerCode": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
"valid": true,
"previousLoad": {
"productId": "string",
"sellerId": "string",
"sellerName": "string",
"productType": "CHEMICAL",
"articleNumber": "string",
"articleName": "string",
"unNr": "string"
},
"comments": [
{
"comment": "string",
"createdById": "string",
"createdBy": "string",
"createdOn": "2021-05-12T06:48:54.696Z"
}
],
"referenceDate": "2021-05-12T06:48:54.696Z"
}
],
"ePpls": [
{
"id": "string",
"createdOn": "2021-05-12T06:48:54.696Z",
"lastStatusDate": "2021-05-12T06:48:54.696Z",
"reference": "string",
"status": "SIGNEDOFF",
"loads": [
{
"id": "string",
"numberOfAllowedPreviousLoads": 0,
"maxHoursWithoutCleaning": 0,
"maxHoursPreviousLoad": 0,
"articleNumber": "string",
"productId": "string",
"productName": "string",
"loaderReference": "string",
"loaderId": "string",
"equipmentOperatorReference": "string",
"loadingDate": "2021-05-12T06:48:54.696Z",
"unNumber": "string",
"adrClass": "string"
}
],
"nextLoadId": "string",
"ePplLoadCounter": 0,
"lastCleaningTime": "2021-05-12T06:48:54.696Z",
"referenceDate": "2021-05-12T06:48:54.696Z"
}
]
}
]
}
Get equipment cleanliness
GET {eecdapi}/equipment/{equipmentId}/cleanliness
Usage
Determines the cleanliness state of a piece of equipment within the eECD platform
Information
If all compartments are clean, the equipment is considered clean; if all compartments are dirty, it is considered dirty.
Equipment can also be partially dirty. Compartments are either clean or dirty, there is no middle ground.
For polymer cleanings, the polymer completeness state is added as well. Regardless of whether a cleaning was polymer complete or not; if the cleaning was performed, it is still considered as clean..
In order to retrieve the ID of the equipment, please refer to the Equipment management section.
As not all loads and cleaning actions are necessarily processed through the eECD platform, it might occur that the eECD platform returns a clean state when this API call is made. If a previous load was not registered and the cleanliness of the equipment is not correct, this needs to be solved by adding one or more unregistered loads.
Response (expand to view)
Create Equipment response
{
"state": "CompletelyClean",
"compartments": {
"additionalProp1": {
"cleanliness": "Clean",
"polymerCompleteness": "PolymerComplete"
},
"additionalProp2": {
"cleanliness": "Clean",
"polymerCompleteness": "PolymerComplete"
},
"additionalProp3": {
"cleanliness": "Clean",
"polymerCompleteness": "PolymerComplete"
}
}
}
Get a transport order
GET {eecdapi}/organisations/{sellerId}/transportorders/{transportReference}
Usage
Retrieves the information of a transport order from a Seller.
Information
This only works for sellers that share their transport order through a 3rd party connector such as Elemica.
The information from the transport order can be used to retrieve information when assigning loads to equipments.
Query string parameters
sellerID: the ID of the seller that sent the transport order (get id is explained in the "Manage equipment master data" section)
transportReference: The unique transport reference as provided by the seller. In the case of Elemica, this concerns the Shipment number
Response (expand to open)
Get Transport order
{
"id": "string",
"createdOn": "2019-12-05T12:26:49.078Z",
"lastUpdatedOn": "2019-12-05T12:26:49.078Z",
"version": "string",
"documentIdentifier": "string",
"status": "ORIGINAL",
"sentOn": "2019-12-05T12:26:49.078Z",
"transportReference": "string",
"seller": {
"id": "string",
"name": "string",
"subgroup": "string"
},
"equipmentOperator": {
"id": "string",
"name": "string",
"subgroup": "string"
},
"deliveryNotes": [
{
"identifier": "string",
"lines": [
{
"identifier": "string",
"isValid": true,
"quantity": 0,
"unitOfMeasure": "string",
"customerName": "string",
"customerIdentifier": "string",
"reference": "string",
"loadingDate": "2019-12-05T12:26:49.079Z",
"product": {
"productId": "string",
"sellerId": "string",
"sellerName": "string",
"productType": "CHEMICAL",
"articleNumber": "string",
"articleName": "string",
"unNr": "string"
},
"loadingLocation": {
"loaderId": "string",
"loaderName": "string",
"specifiers": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"description": "string",
"uniqueReference": "string"
}
}
]
}
]
}
Assign a load
POST {eecdapi}/equipment/{equipmentId}/loads/assign
Usage
Plans a load on an equipment owned by the Equipment operator
Each load should "consume" a document that proves that the current load can be loaded. This document can be an eECD or an ePPL
Information
It is possible to plan a load to an equipment that is not clean or that has compartments that are not cleaned
Validation
A load must be planned for one or more compartments
A load must be planned in the future.
None of the selected compartments of the equipment may already have a planned load
The load will contain a log entry to indicate it being created
ProductID needs to be a valid product (search product ID API)
Seller ID needs to be a valid seller with an active license (search seller ID)
Loader ID needs to be a valid loader with an active license (search loader ID)
The extraTask is used to specify wheter we want to:
Use the existing eECD: ExtraTask = NONE
Issue a proof of previous load (ePPL): ExtraTask = ISSUEPPL
Request a cleaning (eECO): ExtraTask = ISSUEECO
Body
Plan a load
{
"productId": "string",
"sellerId": "string",
"loadDetails": {
"loadPlannedAt": "2019-12-05T12:33:17.009Z",
"loaderId": "string",
"loaderName": "string",
"loadingLocation": "string"
},
"references": {
"customerReference": "string",
"internalReference": "string",
"outboundDeliveryReference": "string",
"outboundDeliveryReferenceItemLine": "string"
},
"compartments": [
"string"
],
"extraTask": "NONE"
}
Response (expand to open)
Planned load
{
"id": "string",
"lastStatusDate": "2019-12-05T12:56:33.027Z",
"isAcceptedByPaper": true,
"status": "PLANNED",
"product": {
"productId": "string",
"sellerId": "string",
"sellerName": "string",
"productType": "CHEMICAL",
"articleNumber": "string",
"articleName": "string",
"unNr": "string"
},
"loadDetails": {
"loadPlannedAt": "2019-12-05T12:56:33.027Z",
"loaderId": "string",
"loaderName": "string",
"loadingLocation": "string",
"transportOrderId": "string"
},
"references": {
"customerReference": "string",
"internalReference": "string",
"outboundDeliveryReference": "string",
"outboundDeliveryReferenceItemLine": "string"
},
"compartments": [
"string"
],
"processStates": [
{
"status": "PLANNED",
"fullName": "string",
"userId": "string",
"timeStamp": "2019-12-05T12:56:33.027Z",
"comment": "string"
}
],
"attachments": [
{
"id": "string",
"originalFilename": "string"
}
],
"ePplId": "string",
"extraTask": "NONE",
"extraTaskError": {
"message": "string",
"messageCode": "string",
"parameters": [
null
],
"messageTemplate": "string"
}
}
Status:
PLANNED
ACCEPTED
COMPLETED
REJECTED
CANCELLED
NONREGISTERED
ProductType
CHEMICAL
FOOD
FEED
PHARMA
ProcessStates
PLANNED
ACCEPTED
COMPLETED
REJECTED
CANCELLED
NONREGISTERED
MOVED
UPDATED
ExtraTask
NONE
ISSUEPPL
ISSUEECO