Skip to main content

Webhook Topics

Webhook topics define the types of events you can subscribe to. Each topic represents a specific event type in the Xemelgo system.

Topic Format

Topics follow a hierarchical naming convention: {resource}.{action} (e.g., asset.created, inventory.cycle_count, package.moved).

Available Topics

TopicDescription
asset.createdTriggered when an asset is created
asset.cycle_countTriggered when an asset cycle count is submitted
asset.cycle_count.countsTriggered when an asset cycle count is submitted (counts only)
asset.movedTriggered when an asset moves to a new location
inventory.auditTriggered when an inventory audit is submitted
inventory.audit.countsTriggered when an inventory audit is submitted (counts only)
inventory.consumedTriggered when an inventory item is consumed
inventory.createdTriggered when an inventory item is created
inventory.cycle_countTriggered when an inventory cycle count is submitted
inventory.cycle_count.countsTriggered when an inventory cycle count is submitted (counts only)
inventory.movedTriggered when an inventory item moves to a new location
inventory.returnedTriggered when an inventory item is returned
package.createdTriggered when a package is created
package.movedTriggered when a package moves to a new location

Additional topics will be documented as they become available. Contact your Xemelgo representative for information about upcoming topics.


Generic Webhook Events

All webhook events follow a standard structure with the following fields:

{
"id": "c1314cc5-60f7-ddba-7be3-900030a8ee05",
"eventTimestamp": 1765572297000,
"topic": "inventory.cycle_count",
"data": {}
}

Event Structure

PropertyTypeDescription
idStringWebhook event UUID (unique identifier)
eventTimestampAWSTimestampUnique timestamp for event
topicStringWebhook topic that identifies the event type
dataObjectTopic-specific payload containing event data

Topic Specific Payloads

asset.created

Occurs when an asset is created.

Data Structure

{
"comments": "Asset Create 1 Comments",
"creationDate": 1745420060123,
"customProperties": {},
"description": "Asset Create 1 Description",
"dueDate": 1765420060189,
"id": "ASSET-CREATE-1",
"images": ["img1.jpg"],
"lastDetectedAtLocation": null,
"lastUpdatedDate": 1766420060113,
"location": null,
"name": "Asset Create 1",
"state": "incoming",
"type": {
"customProperties": {},
"description": null,
"id": "TYPE-1",
"imagePath": null,
"name": null,
"number": null,
"quantity": null,
"unit": null
},
"uuid": "1753075b-7945-4a64-84f8-3361913672d6"
}

asset.cycle_count

Occurs whenever an asset cycle count is submitted. Provides item level information and aggregate counts.

Data Structure

{
"uuid": "6ccd5f10-31e9-6a7e-1005-638be25f786a",
"creationDate": 1764126384655,
"locationId": "Zone 1",
"customerId": null,
"submittedByUser": {
"alias": "Person 1",
"firstName": "Given Name",
"lastName": "Family Name"
},
"assetTypes": [
{
"id": "TypeA",
"name": "Type A Name",
"detectedCount": 1,
"movedCount": 1,
"addedCount": 1,
"foundCount": 1,
"missingCount": 1,
"removedCount": 1,
"noActionCount": 1,
"totalCount": 7,
"assets": [
{ "action": "DETECTED", "trackerSerial": "012345", "id": "item-a1" },
{ "action": "MOVED", "trackerSerial": "012346", "id": "item-a2" },
{ "action": "ADDED", "trackerSerial": "012347", "id": "item-a3" },
{ "action": "FOUND", "trackerSerial": "012348", "id": "item-a4" },
{ "action": "MISSING", "trackerSerial": "012349", "id": "item-a5" },
{ "action": "REMOVED", "trackerSerial": "012350", "id": "item-a6" },
{ "action": "NONE", "trackerSerial": "012351", "id": "item-a7" }
]
}
]
}

asset.cycle_count.counts

Occurs whenever an asset cycle count is submitted. Provides item type aggregated counts.

Data Structure

{
"uuid": "6ccd5f10-31e9-6a7e-1005-638be25f786a",
"creationDate": 1764126384655,
"locationId": "Zone 1",
"customerId": null,
"submittedByUser": {
"alias": "Person 1",
"firstName": "Given Name",
"lastName": "Family Name"
},
"assetTypes": [
{
"id": "TypeA",
"name": "Type A Name",
"detectedCount": 1,
"movedCount": 1,
"addedCount": 1,
"foundCount": 1,
"missingCount": 1,
"removedCount": 1,
"noActionCount": 1,
"totalCount": 7
}
]
}

asset.moved

Occurs when an asset moves to a new location.

Data Structure

{
"comments": "Asset Move 1 Comments",
"creationDate": 1745420060123,
"customProperties": {},
"description": "Asset Move 1 Description",
"dueDate": 1765420060189,
"id": "ASSET-MOVE-1",
"images": ["img1.jpg"],
"lastDetectedAtLocation": {
"categoryId": "Store",
"customProperties": {},
"description": "Store 1",
"id": "1-Z",
"name": "Zone 1"
},
"lastUpdatedDate": 1766420060113,
"location": {
"categoryId": "Store",
"customProperties": {},
"description": "Store 1",
"id": "1-Z",
"name": "Zone 1"
},
"name": "Asset Move 1",
"state": "onhand",
"type": {
"customProperties": {},
"description": null,
"id": "TYPE-1",
"imagePath": null,
"name": null,
"number": null,
"quantity": null,
"unit": null
},
"uuid": "1753075b-7945-4a64-84f8-3361913672d6"
}

inventory.audit

Occurs whenever an inventory audit is submitted. Provides item level information and aggregate counts.

Data Structure

{
"uuid": "6ccd5f10-31e9-6a7e-1005-638be25f786a",
"creationDate": 1764126384655,
"locationId": "Zone 1",
"customerId": "Customer 1",
"submittedByUser": {
"alias": "Person 1",
"firstName": "Given Name",
"lastName": "Family Name"
},
"inventoryParts": [
{
"id": "audit-itemType1",
"name": "Audit Item Type 1",
"automaticallyAddedCount": 1,
"customerOnHandCount": 1,
"manuallyAddedCount": 1,
"removedCount": 1,
"scannedCount": 1,
"totalCount": 5,
"inventory": [
{
"id": "AUDIT-ITEM-001",
"action": "MANUALLY ADDED",
"expirationDate": 1766187135000,
"isConsumed": false,
"lotNumber": "LOT-001",
"trackerSerial": "AUDIT-VID-001"
},
{
"id": "AUDIT-ITEM-002",
"action": "SCANNED",
"expirationDate": 1766187135000,
"isConsumed": false,
"lotNumber": "LOT-002",
"trackerSerial": "AUDIT-VID-002"
},
{
"id": "AUDIT-ITEM-003",
"action": "AUTOMATICALLY ADDED",
"isConsumed": false,
"lotNumber": "LOT-003",
"trackerSerial": "AUDIT-VID-003"
},
{
"id": "AUDIT-ITEM-004",
"action": "REMOVED",
"isConsumed": false,
"lotNumber": "LOT-004",
"trackerSerial": "AUDIT-VID-004"
},
{
"id": "AUDIT-ITEM-005",
"action": "CUSTOMER ONHAND",
"isConsumed": false,
"lotNumber": "LOT-005",
"trackerSerial": "AUDIT-VID-005"
}
]
}
]
}

inventory.audit.counts

Occurs whenever an inventory audit is submitted. Provides item type aggregated counts.

Data Structure

{
"uuid": "6ccd5f10-31e9-6a7e-1005-638be25f786a",
"creationDate": 1764126384655,
"locationId": "Zone 1",
"customerId": "Customer 1",
"submittedByUser": {
"alias": "Person 1",
"firstName": "Given Name",
"lastName": "Family Name"
},
"inventoryParts": [
{
"id": "audit-itemType1",
"name": "Audit Item Type 1",
"automaticallyAddedCount": 1,
"customerOnHandCount": 1,
"manuallyAddedCount": 1,
"removedCount": 1,
"scannedCount": 1,
"totalCount": 5
}
]
}

inventory.consumed

Occurs when an inventory item is consumed.

Data Structure

{
"comments": null,
"consumedDate": 1745430020412,
"creationDate": 1745420060123,
"customProperties": {
"inventoryTs": "22345"
},
"description": null,
"expirationDate": null,
"id": "ITEM-CONSUME-2",
"images": [],
"isConsumed": true,
"lastDetectedAtLocation": null,
"lastUpdatedDate": 1745430020412,
"location": null,
"lotNumber": null,
"name": null,
"part": {
"customProperties": {},
"description": null,
"id": "type1",
"imagePath": null,
"name": "type1-name",
"number": null,
"quantity": null,
"unit": null
},
"quantity": null,
"state": "inactive",
"uuid": "1753075b-7945-4a64-84f8-3361913672d6"
}

inventory.created

Occurs when an inventory item is created.

Data Structure

{
"comments": "Inventory Create 1 Comments",
"consumedDate": null,
"creationDate": 1745420060123,
"customProperties": {},
"description": "Inventory Create 1 Description",
"expirationDate": 1765420060189,
"id": "INVENTORY-CREATE-1",
"images": ["img1.jpg"],
"isConsumed": null,
"lastDetectedAtLocation": null,
"lastUpdatedDate": 1766420060113,
"location": null,
"lotNumber": "32",
"name": "Inventory Create 1",
"part": {
"customProperties": {},
"description": null,
"id": "TYPE-1",
"imagePath": null,
"name": null,
"number": null,
"quantity": null,
"unit": null
},
"quantity": 13,
"state": "incoming",
"uuid": "1753075b-7945-4a64-84f8-3361913672d6"
}

inventory.cycle_count

Occurs whenever an inventory cycle count is submitted. Provides item level information and aggregate counts.

Data Structure

{
"uuid": "6ccd5f10-31e9-6a7e-1005-638be25f786a",
"creationDate": 1764126384655,
"locationId": "WEBHOOK_ZONE1",
"customerId": null,
"submittedByUser": {
"alias": "WEBHOOK_APIS_PERSON_1",
"firstName": "WEBHOOK_APIS_GIVEN_1",
"lastName": "WEBHOOK_APIS_FAMILY_1"
},
"inventoryParts": [
{
"id": "TypeA",
"name": "Type A Name",
"detectedCount": 1,
"movedCount": 1,
"addedCount": 1,
"foundCount": 1,
"missingCount": 1,
"removedCount": 1,
"noActionCount": 1,
"totalCount": 7,
"inventory": [
{ "action": "DETECTED", "trackerSerial": "012345", "id": "item-a1" },
{ "action": "MOVED", "trackerSerial": "012346", "id": "item-a2" },
{ "action": "ADDED", "trackerSerial": "012347", "id": "item-a3" },
{ "action": "FOUND", "trackerSerial": "012348", "id": "item-a4" },
{ "action": "MISSING", "trackerSerial": "012349", "id": "item-a5" },
{ "action": "REMOVED", "trackerSerial": "012350", "id": "item-a6" },
{ "action": "NONE", "trackerSerial": "012351", "id": "item-a7" }
]
}
]
}

inventory.cycle_count.counts

Occurs whenever an inventory cycle count is submitted. Provides item type aggregated counts.

Data Structure

{
"uuid": "6ccd5f10-31e9-6a7e-1005-638be25f786a",
"creationDate": 1764126384655,
"locationId": "Zone 1",
"customerId": null,
"submittedByUser": {
"alias": "Person 1",
"firstName": "Given Name",
"lastName": "Family Name"
},
"inventoryParts": [
{
"id": "TypeA",
"name": "Type A Name",
"detectedCount": 1,
"movedCount": 1,
"addedCount": 1,
"foundCount": 1,
"missingCount": 1,
"removedCount": 1,
"noActionCount": 1,
"totalCount": 7
}
]
}

inventory.moved

Occurs when an inventory item moves to a new location.

Data Structure

{
"comments": "Inventory Move 1 Comments",
"consumedDate": null,
"creationDate": 1745420060123,
"customProperties": {},
"description": "Inventory Create 1 Description",
"expirationDate": 1765420060189,
"id": "INVENTORY-MOVE-1",
"images": ["img1.jpg"],
"isConsumed": null,
"lastDetectedAtLocation": {
"categoryId": "Store",
"customProperties": {},
"description": "Store 1",
"id": "1-Z",
"name": "Zone 1"
},
"lastUpdatedDate": 1766420060113,
"location": {
"categoryId": "Store",
"customProperties": {},
"description": "Store 1",
"id": "1-Z",
"name": "Zone 1"
},
"lotNumber": "32",
"name": "Inventory Move 1",
"part": {
"customProperties": {},
"description": null,
"id": "TYPE-1",
"imagePath": null,
"name": null,
"number": null,
"quantity": null,
"unit": null
},
"quantity": 13,
"state": "onhand",
"uuid": "1753075b-7945-4a64-84f8-3361913672d6"
}

inventory.returned

Occurs when an inventory item is returned.

Data Structure

{
"comments": null,
"consumedDate": 0,
"creationDate": 1745420060123,
"customProperties": {
"inventoryTs": "22345"
},
"description": null,
"expirationDate": null,
"id": "ITEM-CONSUME-2",
"images": [],
"isConsumed": false,
"lastDetectedAtLocation": null,
"lastUpdatedDate": 1745430020412,
"location": null,
"lotNumber": null,
"name": null,
"part": {
"customProperties": {},
"description": null,
"id": "type1",
"imagePath": null,
"name": "type1-name",
"number": null,
"quantity": null,
"unit": null
},
"quantity": null,
"state": "incoming",
"uuid": "1753075b-7945-4a64-84f8-3361913672d6"
}

package.created

Occurs when a package is created.

Data Structure

{
"comments": "Package Create 1 Comments",
"creationDate": 1745420060123,
"customProperties": {},
"description": "Package Create 1 Description",
"id": "PACKAGE-CREATE-1",
"images": ["img1.jpg"],
"lastDetectedAtLocation": null,
"lastUpdatedDate": 1766420060113,
"location": null,
"name": "Package Create 1",
"uuid": "1753075b-7945-4a64-84f8-3361913672d6"
}

package.moved

Occurs when a package moves to a new location.

Data Structure

{
"comments": "Package Move 1 Comments",
"creationDate": 1745420060123,
"customProperties": {},
"description": "Package Move 1 Description",
"id": "PACKAGE-MOVE-1",
"images": ["img1.jpg"],
"lastDetectedAtLocation": {
"categoryId": "Store",
"customProperties": {},
"description": "Store 1",
"id": "1-Z",
"name": "Zone 1"
},
"lastUpdatedDate": 1766420060113,
"location": {
"categoryId": "Store",
"customProperties": {},
"description": "Store 1",
"id": "1-Z",
"name": "Zone 1"
},
"name": "Package Move 1",
"uuid": "1753075b-7945-4a64-84f8-3361913672d6"
}