Endpoint URL
https://connect.wholechain.com/Integration/Events
Sandbox URL
https://connect-sandbox.wholechain.com/Integration/Events
Method:
POST
Introduction
An Internal Ship event represents product movement internally within a company's various business locations, or partner facilities while the company maintains custody. Products maintain their physical properties, they simply move from one location to another.
How it works:
- A Wholechain user selects the item(s) they wish to ship, and selects the ship date(s).
- The user selects themselves in the Recipient field, as well as the location the goods are shipping to. This location would have already been set up in the user's business settings.
- The user can select to automatically log the Receive event, and will be prompted to enter the date the items were received.
- The user can perform this action through the API
Practical Examples
- A batch of coffee beans is shipped from a company's roasting facility to its packaging facility. Both facilities are owned and operated by the same company, ensuring the beans maintain their traceability within the internal supply chain.
- A product moves from a cold storage facility in one location to a processing facility in another location, both of which are owned and managed by the same company.
Authentication
To use this API, you must include the API key in the request header. The API key is assigned to your account and ensures secure communication with the Wholechain platform.
Two API Payload Options for the Internal Ship Event
When using the Internal Ship Event API, there are two distinct payload options available, depending on your needs:
1. Reference Existing Products, Trade Partners, and Locations
- This payload is designed for users who already have their products, trade partners, and locations pre-configured within their Wholechain account.
- It references these existing entities using their unique IDs.
- Click here for the Reference Payload
2. Create Products, Locations, and Trade Partners On-the-Go
- This payload is designed for users who want to dynamically create new products, trade partners, or locations directly through the API without pre-configuring them in Wholechain.
- The API intelligently processes the payload to identify and create new entities if the provided IDs do not already exist in your account.
- Click here for the On-the-Go Payload
Choose the option that best fits your workflow to ensure seamless integration with Wholechain.
Request Headers:
Header | Description | Example Value |
---|---|---|
X-API-KEY |
Your API key | YOUR_API_KEY_HERE |
Content-Type |
Content type of the request | application/json |
accept |
Response content type | */* |
Request Body Parameters:
This document outlines the database schema for storing JSON event data. Each table corresponds to a distinct data object in the JSON structure.
Location Objects
Column Name | Data Type | Description | Identifier | Required |
---|---|---|---|---|
Location ID |
STRING | Unique identifier for the location. | Primary | Yes |
Product Instance Object
Column Name | Data Type | Description | Identifier | Required |
---|---|---|---|---|
Quantity |
DECIMAL | Quantity of the product in the instance. | Not Primary | Yes |
LotSerial |
STRING | Lot or serial number of the product instance. | Not Primary | Yes |
Product ID |
STRING | Unique identifier for the product. | Primary | Yes |
TlcSource |
OBJECT | Information about the traceability source, including location details. | Not Primary | No |
Container Object
Column Name | Data Type | Description | Identifier | Required |
---|---|---|---|---|
Id |
STRING | Unique identifier for the container. | Not Primary | Yes |
Type |
STRING | Type of the container (LogisticId OR SSCC). | Not Primary | Yes |
Event Object
Column Name | Data Type | Description | Identifier | Required |
---|---|---|---|---|
Id |
STRING | Unique identifier for the event. | Not Primary | Yes |
PurchaseOrder |
STRING | Purchase order associated with the event. | Not Primary | Yes |
InvoiceNumber |
STRING | Invoice number linked to the event. | Not Primary | Yes |
BizStep |
STRING | Business step defining the event type. Learn more | Not Primary | Yes |
Disposition |
STRING | Status or condition of the item at the event time. Learn more | Not Primary | Yes |
EventTime |
DATETIME | Timestamp of when the event occurred. | Not Primary | Yes |
EventTimeZone |
STRING | Timezone of the event timestamp. | Not Primary | Yes |
Custom Properties Object
Column Name | Data Type | Description | Identifier | Required |
---|---|---|---|---|
Name |
STRING | The name of the custom property. | Not Primary | No |
Namespace |
STRING | The namespace associated with the property. | Not Primary | No |
Value |
STRING | The value assigned to the custom property. | Not Primary | No |
PropertyLocation |
STRING | Location where the property is applied, such as ILMD. | Not Primary | No |
Certification List Object
Column Name | Data Type | Description | Identifier | Required |
---|---|---|---|---|
Type |
STRING | The type of certification (e.g., harvest CoC). | Not Primary | No |
Standard |
STRING | The certification standard being referenced. | Not Primary | No |
Agency |
STRING | The agency issuing the certification. | Not Primary | No |
Value |
STRING | The value of the certification (e.g., Yes/No). | Not Primary | No |
Identification |
STRING | Identifier for the certification, if applicable. | Not Primary | No |
Example Requests
import requests
url = 'https://connect.wholechain.com/Integration/Events'
headers = {
'accept': '*/*',
'X-API-KEY': '0193d377-c0db-7a01-949d-0ffaf166e236',
'Content-Type': 'application/json'
}
data = {
"Events": [
{
"$type": "ship",
"ShipFromLocation": {
"Id": "shipFrom_000"
},
"ShipToLocation": {
"Id": "shipTo_000"
},
"ProductInstances": [
{
"Quantity": 190.75,
"LotSerial": "123",
"Product": {
"Id": "raw_goods_000",
"Details": {
"Name": "RawGoods",
"SimpleUnitOfMeasurement": "Lbs",
"SharingPolicy": "Restricted",
"ProductIdentifierType": "Lot"
}
},
"TlcSource": {
"Name": "TLC_123",
"City": "City Name",
"State": "State Name",
"Country": "Country Name",
"AddressLine1": "123 Main St",
"AddressLine2": "Apt 4B",
"PostalCode": "12345",
"GeoCoordinates": {
"Latitude": 12.345678,
"Longitude": 98.765432
}
}
}
],
"Container": {},
"Id": "0004",
"PurchaseOrder": "1990091",
"InvoiceNumber": "12314154",
"BizStep": "urn:epcglobal:cbv:bizstep:shipping",
"Disposition": "urn:epcglobal:cbv:disp:in_transit",
"EventTime": "2024-03-30T16:00:00+00:00",
"EventTimeZone": "-05:00",
"CustomProperties": [
{
"Name": "expiry_date",
"Namespace": "",
"Value": "2024-03-30",
"PropertyLocation": "ILMD"
}
],
"CertificationList": [
{
"Type": "urn:gdst:certType:harvestCoC",
"Standard": "MSC Chain of Custody",
"Agency": "MSC",
"Value": "NO",
"Identification": "NA"
},
{
"Type": "urn:gdst:certType:fishingAuth",
"Standard": "Los Angeles Fishing Authorization",
"Agency": "Los Angeles Fishing Authorization",
"Value": "",
"Identification": ""
},
{
"CertificationType": "urn:gdst:certType:humanPolicy",
"Standard": "WHO Human Decency Policy",
"Agency": "WHO",
"Value": "",
"Identification": ""
}
]
}
]
}
response = requests.post(url, headers=headers, json=data)
print(response.status_code)
print(response.json())
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
class Program
{
static async Task Main(string[] args)
{
var url = "https://connect.wholechain.com/Integration/Events";
var apiKey = "0193d377-c0db-7a01-949d-0ffaf166e236";
var data = new
{
Events = new[]
{
new
{
$type = "ship",
ShipFromLocation = new
{
Id = "shipFrom_000"
},
ShipToLocation = new
{
Id = "shipTo_000"
},
ProductInstances = new[]
{
new
{
Quantity = 190.75,
LotSerial = "123",
Product = new
{
Id = "raw_goods_000",
Details = new
{
Name = "RawGoods",
SimpleUnitOfMeasurement = "Lbs",
SharingPolicy = "Restricted",
ProductIdentifierType = "Lot"
}
},
TlcSource = new
{
Name = "TLC_123",
City = "City Name",
State = "State Name",
Country = "Country Name",
AddressLine1 = "123 Main St",
AddressLine2 = "Apt 4B",
PostalCode = "12345",
GeoCoordinates = new
{
Latitude = 12.345678,
Longitude = 98.765432
}
}
}
},
Container = new { },
Id = "0004",
PurchaseOrder = "1990091",
InvoiceNumber = "12314154",
BizStep = "urn:epcglobal:cbv:bizstep:shipping",
Disposition = "urn:epcglobal:cbv:disp:in_transit",
EventTime = "2024-03-30T16:00:00+00:00",
EventTimeZone = "-05:00",
CustomProperties = new[]
{
new
{
Name = "expiry_date",
Namespace = "",
Value = "2024-03-30",
PropertyLocation = "ILMD"
}
},
CertificationList = new[]
{
new
{
Type = "urn:gdst:certType:harvestCoC",
Standard = "MSC Chain of Custody",
Agency = "MSC",
Value = "NO",
Identification = "NA"
},
new
{
Type = "urn:gdst:certType:fishingAuth",
Standard = "Los Angeles Fishing Authorization",
Agency = "Los Angeles Fishing Authorization",
Value = "",
Identification = ""
},
new
{
CertificationType = "urn:gdst:certType:humanPolicy",
Standard = "WHO Human Decency Policy",
Agency = "WHO",
Value = "",
Identification = ""
}
}
}
}
};
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("accept", "*/*");
client.DefaultRequestHeaders.Add("X-API-KEY", apiKey);
var json = JsonConvert.SerializeObject(data);
var content = new StringContent(json, Encoding.UTF8, "application/json");
try
{
var response = await client.PostAsync(url, content);
Console.WriteLine($"Status Code: {response.StatusCode}");
var responseContent = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseContent);
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
}
curl -X POST https://connect.wholechain.com/Integration/Events \
-H "accept: */*" \
-H "X-API-KEY: 0193d377-c0db-7a01-949d-0ffaf166e236" \
-H "Content-Type: application/json" \
-d '{
"Events": [
{
"$type": "ship",
"ShipFromLocation": {
"Id": "shipFrom_000"
},
"ShipToLocation": {
"Id": "shipTo_000"
},
"ProductInstances": [
{
"Quantity": 190.75,
"LotSerial": "123",
"Product": {
"Id": "raw_goods_000",
"Details": {
"Name": "RawGoods",
"SimpleUnitOfMeasurement": "Lbs",
"SharingPolicy": "Restricted",
"ProductIdentifierType": "Lot"
}
},
"TlcSource": {
"Name": "TLC_123",
"City": "City Name",
"State": "State Name",
"Country": "Country Name",
"AddressLine1": "123 Main St",
"AddressLine2": "Apt 4B",
"PostalCode": "12345",
"GeoCoordinates": {
"Latitude": 12.345678,
"Longitude": 98.765432
}
}
}
],
"Container": {},
"Id": "0004",
"PurchaseOrder": "1990091",
"InvoiceNumber": "12314154",
"BizStep": "urn:epcglobal:cbv:bizstep:shipping",
"Disposition": "urn:epcglobal:cbv:disp:in_transit",
"EventTime": "2024-03-30T16:00:00+00:00",
"EventTimeZone": "-05:00",
"CustomProperties": [
{
"Name": "expiry_date",
"Namespace": "",
"Value": "2024-03-30",
"PropertyLocation": "ILMD"
}
],
"CertificationList": [
{
"Type": "urn:gdst:certType:harvestCoC",
"Standard": "MSC Chain of Custody",
"Agency": "MSC",
"Value": "NO",
"Identification": "NA"
},
{
"Type": "urn:gdst:certType:fishingAuth",
"Standard": "Los Angeles Fishing Authorization",
"Agency": "Los Angeles Fishing Authorization",
"Value": "",
"Identification": ""
},
{
"CertificationType": "urn:gdst:certType:humanPolicy",
"Standard": "WHO Human Decency Policy",
"Agency": "WHO",
"Value": "",
"Identification": ""
}
]
}
]
}'
import requests
url = 'https://connect.wholechain.com/Integration/Events'
headers = {
'accept': '*/*',
'X-API-KEY': '0193d377-c0db-7a01-949d-0ffaf166e236',
'Content-Type': 'application/json'
}
data = {
"Events": [
{
"$type": "ship",
"ShipFromLocation": {
"Id": "shipFrom_000"
},
"ShipToLocation": {
"Id": "shipTo_000"
},
"ProductInstances": [],
"Container": {
"Id": "123456"
},
"Id": "0004",
"PurchaseOrder": "1990091",
"InvoiceNumber": "12314154",
"BizStep": "urn:epcglobal:cbv:bizstep:shipping",
"Disposition": "urn:epcglobal:cbv:disp:in_transit",
"EventTime": "2024-03-30T16:00:00+00:00",
"EventTimeZone": "-05:00",
"CustomProperties": [
{
"Name": "expiry_date",
"Namespace": "",
"Value": "2024-03-30",
"PropertyLocation": "ILMD"
}
],
"CertificationList": [
{
"Type": "urn:gdst:certType:harvestCoC",
"Standard": "MSC Chain of Custody",
"Agency": "MSC",
"Value": "NO",
"Identification": "NA"
},
{
"Type": "urn:gdst:certType:fishingAuth",
"Standard": "Los Angeles Fishing Authorization",
"Agency": "Los Angeles Fishing Authorization",
"Value": "",
"Identification": ""
},
{
"CertificationType": "urn:gdst:certType:humanPolicy",
"Standard": "WHO Human Decency Policy",
"Agency": "WHO",
"Value": "",
"Identification": ""
}
]
}
]
}
response = requests.post(url, headers=headers, json=data)
print(response.status_code)
print(response.json())
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
class Program
{
static async Task Main(string[] args)
{
var url = "https://connect.wholechain.com/Integration/Events";
var apiKey = "0193d377-c0db-7a01-949d-0ffaf166e236";
var data = new
{
Events = new[]
{
new
{
$type = "ship",
ShipFromLocation = new
{
Id = "shipFrom_000"
},
ShipToLocation = new
{
Id = "shipTo_000"
},
ProductInstances = new object[] { },
Container = new
{
Id = "123456"
},
Id = "0004",
PurchaseOrder = "1990091",
InvoiceNumber = "12314154",
BizStep = "urn:epcglobal:cbv:bizstep:shipping",
Disposition = "urn:epcglobal:cbv:disp:in_transit",
EventTime = "2024-03-30T16:00:00+00:00",
EventTimeZone = "-05:00",
CustomProperties = new[]
{
new
{
Name = "expiry_date",
Namespace = "",
Value = "2024-03-30",
PropertyLocation = "ILMD"
}
},
CertificationList = new[]
{
new
{
Type = "urn:gdst:certType:harvestCoC",
Standard = "MSC Chain of Custody",
Agency = "MSC",
Value = "NO",
Identification = "NA"
},
new
{
Type = "urn:gdst:certType:fishingAuth",
Standard = "Los Angeles Fishing Authorization",
Agency = "Los Angeles Fishing Authorization",
Value = "",
Identification = ""
},
new
{
CertificationType = "urn:gdst:certType:humanPolicy",
Standard = "WHO Human Decency Policy",
Agency = "WHO",
Value = "",
Identification = ""
}
}
}
}
};
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("accept", "*/*");
client.DefaultRequestHeaders.Add("X-API-KEY", apiKey);
var json = JsonConvert.SerializeObject(data);
var content = new StringContent(json, Encoding.UTF8, "application/json");
try
{
var response = await client.PostAsync(url, content);
Console.WriteLine($"Status Code: {response.StatusCode}");
var responseContent = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseContent);
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
}
```sh curl -X POST https://connect.wholechain.com/Integration/Events \ -H "accept: /" \ -H "X-API-KEY: 0193d377-c0db-7a01-949d-0ffaf166e236" \ -H "Content-Type: application/json" \ -d '{ "Events": [ { "$type": "ship", "ShipFromLocation": { "Id": "shipFrom_000" }, "ShipToLocation": { "Id": "shipTo_000" }, "ProductInstances": [], "Container": { "Id": "123456" }, "Id": "0004", "PurchaseOrder": "1990091", "InvoiceNumber": "12314154", "BizStep": "urn:epcglobal:cbv:bizstep:shipping", "Disposition": "urn:epcglobal:cbv:disp:in_transit", "EventTime": "2024-03-30T16:00:00+00:00", "EventTimeZone": "-05:00", "CustomProperties": [ { "Name": "expiry_date", "Namespace": "", "Value": "2024-03-30", "PropertyLocation": "ILMD" } ], "CertificationList": [ { "Type": "urn:gdst:certType:harvestCoC", "Standard": "MSC Chain of Custody", "Agency": "MSC", "Value": "NO", "Identification": "NA" }, { "Type": "urn:gdst:certType:fishingAuth", "Standard": "Los Angeles Fishing Authorization", "Agency": "Los Angeles Fishing Authorization", "Value": "", "Identification": "" }, { "CertificationType": "urn:gdst:certType:humanPolicy", "Standard": "WHO Human Decency Policy", "Agency": "WHO", "Value": "", "Identification": "" } ] } ] }'
Creating Locations, Trade Partners, and Products On-the-Go
In many cases, users may need the ability to dynamically create new locations, trade partners, or products directly within the API instead of pre-configuring them within the Wholechain platform. This is particularly useful when dealing with constantly changing locations, new trade partners, or orders that cannot feasibly be manually added to both an ERP system and Wholechain.
To address this need, we’ve introduced the "Details" object within specific sections of the API payload. This allows the API to intelligently handle new or existing entities, ensuring a seamless and flexible experience.
How It Works
Details Section
The "Details" section is used to provide additional metadata for locations, trade partners, or products. The behavior of the API depends on whether the IDs in the payload already exist in your Wholechain account. Here’s how the process works:
1. ID Matching Logic:
- If the ID in the payload already exists in your Wholechain account, the API will skip over the "Details" section and use the pre-existing information from your Wholechain system.
- If the ID is new (i.e., it does not exist in your Wholechain account), the API will use the information in the "Details" section to create a new location, trade partner, or product.
2. Mix-and-Match Capabilities:
- You can mix new and existing entities within the same API request. For example:
- Use a new location ID with details for creation.
- Reference an existing trade partner ID without additional details.
- Reference an existing product ID while creating a new location or trade partner.
3. Required Fields for New Entities:
- When creating a new entity (location, trade partner, or product), provide an ID that does not currently exist in your Wholechain account. Include additional metadata in the "Details" section (e.g., name, address, GLN, and other relevant fields).
Example Payload Behavior
ShipFromLocation
- If the
ShipFromLocation.Id
exists in your Wholechain account: - The API skips the "Details" section and pulls the existing location information.
- If the
ShipFromLocation.Id
does not exist: - The API reads the "Details" section to create a new location.
TradePartner in ShipFromLocation
- If the
TradePartner.Id
exists in your Wholechain account: - The API skips the trade partner details and references the existing data.
- If the
TradePartner.Id
is new: - The API uses the trade partner information from the "Details" section to create a new trade partner.
ProductInstances
- If the
Product.Id
exists in your Wholechain account: - The API skips the product details and references the existing product information.
- If the
Product.Id
is new: - The API creates a new product based on the details provided in the payload.
Key Considerations
- Ensure that IDs for new entities (locations, trade partners, products) are unique and do not conflict with existing IDs in your Wholechain account.
- The "Details" section provides flexibility to dynamically create new entities while still allowing references to existing ones.
- If a field is skipped (e.g., "Details" for an existing ID), no changes will be made to the existing entity in Wholechain.
Location Details Object
Column Name | Data Type | Description | Identifier | Required |
---|---|---|---|---|
TradePartner |
OBJECT | Details of the trade partner associated with the location. | Not Primary | Yes if creating new |
TradePartner.Id |
STRING | Unique identifier for the trade partner. | Primary | Yes if creating new |
TradePartner.Name |
STRING | Name of the trade partner. | Not Primary | Yes if creating new |
TradePartner.ConnectionType |
STRING | Type of connection (e.g., SUPPLIER). | Not Primary | Yes if creating new |
TradePartner.Duns |
STRING | DUNS (Data Universal Numbering System) number of the partner. | Not Primary | Yes if creating new |
Name |
STRING | Name of the location. | Not Primary | Yes if creating new |
Gln |
STRING | Global Location Number of the location. | Not Primary | No |
Extension |
STRING | Additional location information. | Not Primary | No |
ContactInformation |
OBJECT | Contact information for the location. | Not Primary | Yes if creating new |
ContactInformation.Name |
STRING | Name of the contact person at the location. | Not Primary | Yes if creating new |
ContactInformation.Phone |
STRING | Phone number of the contact person. | Not Primary | Yes if creating new |
ContactInformation.Email |
STRING | Email address of the contact person. | Not Primary | Yes if creating new |
Address |
OBJECT | Address details of the location. | Not Primary | Yes if creating new |
Address.City |
STRING | City where the location is situated. | Not Primary | Yes if creating new |
Address.State |
STRING | State where the location is situated. | Not Primary | Yes if creating new |
Address.Country |
STRING | Country of the location. | Not Primary | Yes if creating new |
Address.AddressLine1 |
STRING | Primary address line of the location. | Not Primary | Yes if creating new |
Address.AddressLine2 |
STRING | Secondary address line of the location. | Not Primary | No |
Address.PostalCode |
STRING | Postal code of the location. | Not Primary | Yes if creating new |
Address.GeoCoordinates |
OBJECT | Geographical coordinates of the location. | Not Primary | No |
GeoCoordinates.Latitude |
DECIMAL | Latitude of the location. | Not Primary | No |
GeoCoordinates.Longitude |
DECIMAL | Longitude of the location. | Not Primary | No |
ProductInstance Details Object
Column Name | Data Type | Description | Identifier | Required |
---|---|---|---|---|
Quantity |
DECIMAL | Quantity of the product instance. | Not Primary | Yes if creating new |
LotSerial |
STRING | Lot or serial number of the product instance. | Not Primary | Yes if creating new |
Product |
OBJECT | Details of the product being received. | Not Primary | Yes if creating new |
Product.Id |
STRING | Unique identifier for the product. | Primary | Yes if creating new |
Product.Details |
OBJECT | Additional product metadata. | Not Primary | Yes if creating new |
Product.Details.Name |
STRING | Name of the product. | Not Primary | Yes if creating new |
Product.Details.SimpleUnitOfMeasurement |
STRING | Unit of measurement (e.g., Lbs). | Not Primary | Yes if creating new |
Product.Details.SharingPolicy |
STRING | Sharing policy for the product (e.g., Restricted). | Not Primary | Yes if creating new |
Product.Details.ProductIdentifierType |
STRING | Type of product identifier (e.g., Lot). | Not Primary | Yes if creating new |
TlcSource |
OBJECT | Source information for the traceability lot code (TLC). | Not Primary | No |
TlcSource.Name |
STRING | Name of the source. | Not Primary | No |
TlcSource.City |
STRING | City of the source. | Not Primary | No |
TlcSource.State |
STRING | State of the source. | Not Primary | No |
TlcSource.Country |
STRING | Country of the source. | Not Primary | No |
TlcSource.AddressLine1 |
STRING | Primary address line of the source. | Not Primary | No |
TlcSource.AddressLine2 |
STRING | Secondary address line of the source. | Not Primary | No |
TlcSource.PostalCode |
STRING | Postal code of the source. | Not Primary | No |
TlcSource.GeoCoordinates |
OBJECT | Geographical coordinates of the source. | Not Primary | No |
GeoCoordinates.Latitude |
DECIMAL | Latitude of the source. | Not Primary | No |
GeoCoordinates.Longitude |
DECIMAL | Longitude of the source. | Not Primary | No |
Example Payload
{
"Events": [
{
"$type": "ship",
"ShipFromLocation": {
"Id": "processing_000",
"Details": {
"TradePartner": {
"Id": "TpId123",
"Name": "Me",
"ConnectionType": "SELF",
"Duns": "123456789"
},
"Name": "Processing",
"Gln": "9506000140445",
"Extension": "SomeExtension",
"ContactInformation": {
"Name": "Contact Name",
"Phone": "+1234567890",
"Email": "contact@example.com"
},
"Address": {
"City": "City Name",
"State": "State Name",
"Country": "Country Name",
"AddressLine1": "123 Main St",
"AddressLine2": "Apt 4B",
"PostalCode": "12345",
"GeoCoordinates": {
"Latitude": 12.345678,
"Longitude": 98.765432
}
}
}
},
"ShipToLocation": {
"Id": "buyer_000",
"Details": {
"TradePartner": {
"Id": "buyer_123",
"Name": "BuyerTP",
"ConnectionType": "BUYER",
"Duns": "123456789"
},
"Name": "Buyer Location",
"Gln": "9506000140445",
"Extension": "SomeExtension",
"CaptainsName": "Captain John",
"DunsPlus4": "1234",
"Vessel": {
"VesselName": "Vessel One",
"VesselFlagState": "Flag State",
"IMONumber": "IMO1234567",
"VesselSatelliteTrackingAuthority": "Authority",
"VesselPublicRegistryLink": "http://registry.link",
"VesselRegistration": "Registration123",
"UnloadingPort": "Port Name"
},
"ContactInformation": {
"Name": "Contact Name",
"Phone": "+1234567890",
"Email": "contact@example.com"
},
"Address": {
"City": "City Name",
"State": "State Name",
"Country": "Country Name",
"AddressLine1": "123 Main St",
"AddressLine2": "Apt 4B",
"PostalCode": "12345",
"GeoCoordinates": {
"Latitude": 12.345678,
"Longitude": 98.765432
}
}
}
},
"ProductInstances": [
{
"Quantity": 190.75,
"LotSerial": "123",
"Product": {
"Id": "raw_goods_000",
"Details": {
"Name": "RawGoods",
"SimpleUnitOfMeasurement": "Lbs",
"SharingPolicy": "Restricted",
"ProductIdentifierType": "Lot"
}
},
"TlcSource": {
"Name": "TLC_123",
"City": "City Name",
"State": "State Name",
"Country": "Country Name",
"AddressLine1": "123 Main St",
"AddressLine2": "Apt 4B",
"PostalCode": "12345",
"GeoCoordinates": {
"Latitude": 12.345678,
"Longitude": 98.765432
}
}
}
],
"Container": {},
"Id": "0004",
"PurchaseOrder": "1990091",
"InvoiceNumber": "12314154",
"BizStep": "urn:epcglobal:cbv:bizstep:shipping",
"Disposition": "urn:epcglobal:cbv:disp:in_transit",
"EventTime": "2024-03-30T16:00:00+00:00",
"EventTimeZone": "-05:00",
"CustomProperties": [
{
"Name": "expiry_date",
"Namespace": "",
"Value": "2024-03-30",
"PropertyLocation": "ILMD"
}
],
"CertificationList": [
{
"Type": "urn:gdst:certType:harvestCoC",
"Standard": "MSC Chain of Custody",
"Agency": "MSC",
"Value": "NO",
"Identification": "NA"
},
{
"Type": "urn:gdst:certType:fishingAuth",
"Standard": "Los Angeles Fishing Authorization",
"Agency": "Los Angeles Fishing Authorization",
"Value": "",
"Identification": ""
},
{
"CertificationType": "urn:gdst:certType:humanPolicy",
"Standard": "WHO Human Decency Policy",
"Agency": "WHO",
"Value": "",
"Identification": ""
}
]
}
]
}
{
"Events": [
{
"$type": "ship",
"ShipFromLocation": {
"Id": "processing_000",
"Details": {
"TradePartner": {
"Id": "TpId123",
"Name": "Me",
"ConnectionType": "SELF",
"Duns": "123456789"
},
"Name": "Processing",
"Gln": "9506000140445",
"Extension": "SomeExtension",
"ContactInformation": {
"Name": "Contact Name",
"Phone": "+1234567890",
"Email": "contact@example.com"
},
"Address": {
"City": "City Name",
"State": "State Name",
"Country": "Country Name",
"AddressLine1": "123 Main St",
"AddressLine2": "Apt 4B",
"PostalCode": "12345",
"GeoCoordinates": {
"Latitude": 12.345678,
"Longitude": 98.765432
}
}
}
},
"ShipToLocation": {
"Id": "buyer_000",
"Details": {
"TradePartner": {
"Id": "buyer_123",
"Name": "BuyerTP",
"ConnectionType": "BUYER",
"Duns": "123456789"
},
"Name": "Buyer Location",
"Gln": "9506000140445",
"Extension": "SomeExtension",
"CaptainsName": "Captain John",
"DunsPlus4": "1234",
"Vessel": {
"VesselName": "Vessel One",
"VesselFlagState": "Flag State",
"IMONumber": "IMO1234567",
"VesselSatelliteTrackingAuthority": "Authority",
"VesselPublicRegistryLink": "http://registry.link",
"VesselRegistration": "Registration123",
"UnloadingPort": "Port Name"
},
"ContactInformation": {
"Name": "Contact Name",
"Phone": "+1234567890",
"Email": "contact@example.com"
},
"Address": {
"City": "City Name",
"State": "State Name",
"Country": "Country Name",
"AddressLine1": "123 Main St",
"AddressLine2": "Apt 4B",
"PostalCode": "12345",
"GeoCoordinates": {
"Latitude": 12.345678,
"Longitude": 98.765432
}
}
}
},
"ProductInstances": [],
"Container": {
"Id": "123456"
},
"Id": "0004",
"PurchaseOrder": "1990091",
"InvoiceNumber": "12314154",
"BizStep": "urn:epcglobal:cbv:bizstep:shipping",
"Disposition": "urn:epcglobal:cbv:disp:in_transit",
"EventTime": "2024-03-30T16:00:00+00:00",
"EventTimeZone": "-05:00",
"CustomProperties": [
{
"Name": "expiry_date",
"Namespace": "",
"Value": "2024-03-30",
"PropertyLocation": "ILMD"
}
],
"CertificationList": [
{
"Type": "urn:gdst:certType:harvestCoC",
"Standard": "MSC Chain of Custody",
"Agency": "MSC",
"Value": "NO",
"Identification": "NA"
},
{
"Type": "urn:gdst:certType:fishingAuth",
"Standard": "Los Angeles Fishing Authorization",
"Agency": "Los Angeles Fishing Authorization",
"Value": "",
"Identification": ""
},
{
"CertificationType": "urn:gdst:certType:humanPolicy",
"Standard": "WHO Human Decency Policy",
"Agency": "WHO",
"Value": "",
"Identification": ""
}
]
}
]
}