Skip to main content
Skip table of contents

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
JSON
[
	{
		"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
JSON
{
  "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
JSON
{
  "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
JSON
{
    "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
JSON
{
    "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"
}

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.