Completing the cleaning / Cleaning sign-off
Once the cleaning is performed, the cleaning company can complete the cleaning, updating the booklet in the process. If the cleaning company wishes to update the cleaning before or after the cleaning has been completed, he may do so. Additional documents such as pressure tests may be added after completing the cleaning.
If the cleaning was specified as a polymer cleaning, the cleaning company may want to validate the EFTCO codes used to clean the compartment. That way, he can verify whether the application will consider the cleaning as Polymer Complete.
Get EFTCO cleaning codes
GET {eecduri}/eftcocleaningcodes?lang={language}&code={code}
Usage
Get a list of all EFTCO cleaning codes in the requested language
Query string parameters
Language: The language in which the descriptions should be returned. Possible values are NL, EN, FR and DE (required)
Code: Optional. Allows for narrowing down the list of codes that are returned. E.g. âTâ only returns EFTCO codes that start with a T.
Response
Get EFTCO codes
[
{
"code": "C50",
"description": "Organic acid"
}
]
Complete a cleaning
PUT {eecdapi}/equipment/{equipmentId}/cleaningactions/{cleaningId}/complete
Usage
Complete a cleaning
Information
This call is only available if there are enough credits available in the account of the caller
If the cleaning was indicated as an unaccompanied cleaning, a credit will also be spent on behalf of the transport company owning the equipment. The state of the cleaning will then not be set to completed, but to signedoff, rounding up the cleaning process.
CommentsPerCode: Polymer cleanings require a specific set of EFTCO codes to be considered polymer complete, some of which are optional if accompanied by clarification. For every such code, a comment needs to be provided in order for the cleaning to be considered polymer complete.
Body
Complete cleaning
{
"compartments": [
{
"key": "string",
"cleaning": {
"codes": [
"string"
],
"additional": "string",
"commentsPerCode": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
"previousLoad": {
"productId": "string",
"sellerId": "string",
"sellerName": "string",
"productType": "CHEMICAL",
"articleNumber": "string",
"articleName": "string",
"unNr": "string"
},
"valid": true,
"isPolymerComplete": true
}
],
"references": {
"customerReference": "string",
"internalReference": "string"
},
"process": {
"startedAt": "2021-06-24T10:54:30.393Z",
"endedAt": "2021-06-24T10:54:30.393Z",
"completedAt": "2021-06-24T10:54:30.393Z",
"representativeName": "string",
"createdBy": "string",
"createdById": "string",
"createdAt": "2021-06-24T10:54:30.393Z",
"cleaningPerformedBy": "string"
},
"cleanerComments": "string"
}
Validation
@a user To be completed > which fields are required? Which are optional? What needs to be used as references?
Field name | Field type | Mandatory | Allowed values | Description |
---|---|---|---|---|
Compartments.key | String | |||
Compartments.cleaning.codes | Array of Strings | |||
Compartments.additional | String | |||
Compartments.commentsPerCode.additionalProp1 | String | |||
Compartments.commentsPerCode.additionalProp2 | String | |||
Compartments.commentsPerCode.additionalProp1 | String | |||
Compartments.previousload.productId | String | |||
Compartments.previousload.sellerId | String | |||
Compartments.previousload.sellerName | String | |||
Compartments.previousload.productType | String | CHEMICAL | ||
Compartments.previousload.articleNumber | String | |||
Compartments.previousload.articleName | String | |||
Compartments.previousload.unNR | String | |||
compartments.valid | Boolean | True, false | ||
compartments.isPolymerComplete | Boolean | True, false | ||
References.customerReference | String | |||
References.internalReference | String | |||
Process.startedAt | dataTime (UTC) | Timestamp when the cleaning started | ||
Process.endedAt | dataTime (UTC) | Timestamp when the cleaning ended | ||
Process.completedAt | dataTime (UTC) | Timestamp when the cleaning was completed. @a user what is the difference? | ||
Process.representativeName | String | |||
Process.createdBy | String | |||
Process.createdById | String | |||
Process.createdAt | dateTime (UTC) | |||
Process.cleaningperformedBy | String | |||
Cleanercomments | String |
Result
Complete cleaning
{
"equipmentId": "string",
"comments": [
{
"comment": "string",
"createdById": "string",
"createdBy": "string",
"createdOn": "2019-09-02T14:28:54.354Z"
}
],
"compartments": [
{
"key": "string",
"cleaning": {
"codes": [
"string"
],
"additional": "string",
"commentsPerCode": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
"previousLoad": {
"productId": "string",
"sellerId": "string",
"sellerName": "string",
"productType": "CHEMICAL",
"articleNumber": "string",
"articleName": "string",
"unNr": "string"
},
"valid": true,
"isPolymerComplete": true
}
],
"id": "string",
"lastStatusDate": "2019-09-02T14:28:54.354Z",
"status": "COMPLETED",
"cleanedBy": {
"locationId": "string",
"locationName": "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": "2019-09-02T14:28:54.354Z",
"endedAt": "2019-09-02T14:28:54.354Z",
"representativeName": "string",
"createdBy": "string",
"createdById": "string",
"createdAt": "2019-09-02T14:28:54.354Z",
"cleaningPerformedBy": "string"
},
"signoff": {
"driverName": "string",
"signature": "string",
"signedAt": "2019-09-02T14:28:54.354Z",
"driverComments": "string"
},
"eEcd": {
"reference": "string",
"valid": true,
"expired": true
},
"attachments": [
{
"id": "string",
"originalFilename": "string"
}
],
"cleanerComments": "string",
"type": "STANDARD",
"isUnaccompanied": true
}
Update a cleaning
PUT {eecdapi}/equipment/{equipmentId}/cleaningactions/{cleaningId}
Usage
Update the information linked to a cleaning
Information
As long as the cleaning has not yet been signed off, it may be updated. This may be either because a cleaning code is incorrect once the cleaning has been performed, or by means of administration while the cleaning is still in progress.
Updates are no longer possible after the cleaning has been signed off
Updating a cleaning does not cost credits
Body
Identical to the complete cleaning call
Result
Identical to the complete cleaning call. The status of the cleaning does not change.
Upload document
PUT {eecdapi}/equipment/{equipmentId}/cleaningactions/{cleaningId}/attachment
Usage
Upload up to 5 documents to serve as supporting information for the cleaning
Body
Upload the file using form data, rather than json.
File
The file to be stored. We currently support the following file formats: gif, jpg, png, bmp, pdf, txt, docx
Download support document
GET {eecdapi}/equipment/{equipmentId}/cleaningactions/{cleaningId}/attachments/{attachmentId}
Usage
Get an attachment for a specific cleaning
Information
The file will be downloaded directly upon following the link.
Validate Polymer completeness
GET {eecdapi}/equipment/cleaningactions/validate?type={type}&codes={codes}&commented= {commented}
Usage
validate if the set of cleaning codes will be considered as polymer complete by the application
Information
This can serve as an additional check, to make sure that no codes are forgotten.
IsValid: Indicating whether the cleaning is considered valid based on the type that was given. In the case of polymers, the cleaning is not considered polymer complete if IsValid is set to false.
Errors: All validation errors in a readable format. Three types of errors currently exist; for required codes, optional codes that have not yet been commented, and for sets of codes of which none are yet present.
MissingOptionalCodes: A set of all codes that are not yet found but are lacking comments. This set can be used to determine which codes should still be commented.
Query string parameters
Type: Only Polymer is supported
Codes: A comma-separated list of the cleaning codes used during the cleaning
Commented: A comma-separated list of the optional cleaning codes that are missing from the cleaning, but are accompanied by a comment that justifies them missing.
Result
Validate Polymer
{
"isValid": false,
"errors": [
"Code E61 is required, but was not found.",
"Code E56 is optional, but was not found, and was not yet commented.", "At least 1 of the following codes need(s) to be present: E35, P30."
],
"missingOptionalCodes": [
"E56",
"E58",
"E72",
"E90"
]
}
Cancel cleaning
PUT {eecdapi}/equipment/{equipmentId}/cleaningactions/{cleaningId}/cancel
Usage
Cancel a planned cleaning
Information
The cleaning will remain in the booklet, even when cancelled
Result
Result is same as result from Start cleaning with status "CANCELLED"
Cancel cleaning
{
"equipmentId": "Guid",
"compartments": [],
"id": "Guid",
"lastStatusDate": "2018-09-05T12:57:50.092149Z",
"status": "CANCELLED",
"cleanedBy": {
"locationId": "Guid",
"locationName": "string",
"organisationId": "Guid",
"organisationName": "string",
"addressLines": {
"Street and number": "string",
"City": "string",
"PostalCode": "string"
},
"phone": "string",
"fax": "string",
"website": "string"
},
"process": {
"createdBy": "string",
"createdById": "Guid",
"createdAt": "2018-09-05T12:57:50.0928697Z"
},
"type": "STANDARD"
}