Certifications / Custom DataCertifications

Certifications

Creates a Commission event with event-level CertificationList data. Location.Details and Product.Details can be supplied to create the location, trade partner, and product on the go. CertificationList applies to the complete event and must not be placed inside ProductInstances.

curl -X POST "https://connect.wholechain.com/Integration/Events" \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: example_string" \
  -d '{
  "Events": [
    {
      "$type": "commission",
      "Location": {
        "Id": "processing_001",
        "Details": {
          "TradePartner": {
            "Id": "processor_001",
            "Name": "Processor Name",
            "ConnectionType": "SELF",
            "Duns": "123456789"
          },
          "Name": "Processing Facility",
          "Gln": "9506000140445",
          "Extension": "SomeExtension",
          "DunsPlus4": "1234",
          "ContactInformation": {
            "Name": "Processing Contact",
            "Phone": "+1234567890",
            "Email": "processing@example.com"
          },
          "Address": {
            "City": "Cape Town",
            "State": "Western Cape",
            "Country": "South Africa",
            "AddressLine1": "123 Processing Street",
            "AddressLine2": "Building 2",
            "PostalCode": "8001",
            "GeoCoordinates": {
              "Latitude": -33.9249,
              "Longitude": 18.4241
            }
          }
        }
      },
      "ProductInstances": [
        {
          "Quantity": 190.75,
          "LotSerial": "lot_001",
          "Product": {
            "Id": "rawgoods_001",
            "Details": {
              "ProductIdentifierType": "Lot",
              "Name": "Raw Goods",
              "SimpleUnitOfMeasurement": "Kgm",
              "SharingPolicy": "Open",
              "UnitDescriptor": "Cases",
              "UnitQuantity": 10.5,
              "GTIN": "12345678912343",
              "PLU": "4001",
              "MasterData": [
                {
                  "name": "Gear Type",
                  "namespace": "custom",
                  "value": "GEAR TYPE_VALUE"
                }
              ]
            }
          }
        }
      ],
      "Id": "commission_001_cert",
      "PurchaseOrder": "PO-12345",
      "InvoiceNumber": "INV-12345",
      "EventTime": "2026-09-28T13:00:00",
      "EventTimeZone": "+00:00",
      "CertificationList": [
        {
          "Type": "urn:gdst:certType:harvestCoC",
          "Standard": "MSC Chain of Custody",
          "Agency": "MSC",
          "Value": "YES",
          "Identification": "MSC-C-12345"
        },
        {
          "Type": "urn:gdst:certType:fishingAuth",
          "Standard": "Commercial Fishing Authorization",
          "Agency": "Example Fisheries Authority",
          "Value": "VALID",
          "Identification": "FA-2026-7781"
        }
      ]
    }
  ]
}'
{
  "message": "Events processed successfully",
  "result": [
    {
      "id": "commission_001",
      "status": "Created",
      "products": [
        {
          "id": "rawgoods_001",
          "status": "Created"
        }
      ],
      "locations": [
        {
          "id": "processing_001",
          "status": "Created"
        }
      ]
    }
  ]
}
POST
/Integration/Events
POST
Base URLstring

Target server for requests. Edit to use your own host.

Content-Typestring
Required

The media type of the request body

Options: application/json
Request Preview
Response

Response will appear here after sending the request

Responses

messagestring
resultarray

Introduction

Use CertificationList to record certification, authorization, and policy metadata associated with a Wholechain event.

Examples include chain-of-custody certifications, fishing authorizations, and human-rights or sourcing policies.

Supported events

The current ERP event payloads support event-level certifications for:

  • Commission
  • Aggregation and Disaggregation
  • Decommission
  • Internal Ship and External Ship
  • Receive
  • Transform
  • Observe

Add CertificationList to the event object—not to an item in ProductInstances, InputProducts, or OutputProducts.

API endpoint

POST https://connect.wholechain.com/Integration/Events

Sandbox:

POST https://connect-sandbox.wholechain.com/Integration/Events

Send these request headers:

X-API-KEY: YOUR_API_KEY
Content-Type: application/json
accept: */*

Certification schema

CertificationList is an array. Each entry has the following shape:

FieldTypeAPI requirementDescription
TypestringOptionalCertification category
StandardstringOptionalCertification standard or policy name.
AgencystringOptionalOrganization that issued or manages the certification.
ValuestringOptionalCertification value or status, such as YES, NO, VALID, or another scheme-defined value.
IdentificationstringOptionalCertificate, license, authorization, or registration identifier.

Although the API documents every field as optional, provide enough information to identify and interpret the certification reliably. In most integrations, that means a stable Type plus the applicable standard, agency, status, and identifier.

Use Type as the canonical property name. Do not substitute CertificationType.

Minimal example

{
  "CertificationList": [
    {
      "Type": "urn:gdst:certType:harvestCoC",
      "Standard": "MSC Chain of Custody",
      "Agency": "MSC",
      "Value": "YES",
      "Identification": "MSC-C-12345"
    }
  ]
}

Multiple certifications

Send one array entry for each certification or authorization.

{
  "CertificationList": [
    {
      "Type": "urn:gdst:certType:harvestCoC",
      "Standard": "MSC Chain of Custody",
      "Agency": "MSC",
      "Value": "YES",
      "Identification": "MSC-C-12345"
    },
    {
      "Type": "urn:gdst:certType:fishingAuth",
      "Standard": "Commercial Fishing Authorization",
      "Agency": "Example Fisheries Authority",
      "Value": "VALID",
      "Identification": "FA-2026-7781"
    },
    {
      "Type": "urn:gdst:certType:humanPolicy",
      "Standard": "Supplier Human Rights Policy",
      "Agency": "Example Foods, Inc.",
      "Value": "ACCEPTED",
      "Identification": "HRP-4.2"
    }
  ]
}

Complete event example

The array belongs at the same level as Id, EventTime, and ProductInstances.

{
  "Events": [
    {
      "$type": "commission",
      "Location": {
        "Id": "landing_site_001"
      },
      "ProductInstances": [
        {
          "Quantity": 190.75,
          "LotSerial": "CATCH-2026-184",
          "Product": {
            "Id": "yellowfin_tuna_001"
          }
        }
      ],
      "Id": "commission-0002",
      "EventTime": "2026-09-28T13:00:00",
      "EventTimeZone": "+00:00",
      "CertificationList": [
        {
          "Type": "urn:gdst:certType:harvestCoC",
          "Standard": "MSC Chain of Custody",
          "Agency": "MSC",
          "Value": "YES",
          "Identification": "MSC-C-12345"
        },
        {
          "Type": "urn:gdst:certType:fishingAuth",
          "Standard": "Commercial Fishing Authorization",
          "Agency": "Example Fisheries Authority",
          "Value": "VALID",
          "Identification": "FA-2026-7781"
        }
      ]
    }
  ]
}

Modeling guidance

  • Use the certification scheme's official name in Standard.
  • Use the issuing or governing organization in Agency.
  • Put the certificate or authorization number in Identification when one exists.
  • Omit optional fields that do not apply instead of filling them with arbitrary placeholder text.
  • Keep the supporting certificate document in your system of record and use a stable identifier that can be resolved during an audit.

Event-level scope

CertificationList applies to the event as a whole.