Asset Webhook Sync Configuration
Reference for the attributes, compliance rules, and SDK mapping used in asset sync configuration between Nomad Media and customer systems.
This page documents the configuration variables used by the Lambda functions that sync assets between Nomad Media and customer systems (used with Monday.com, Smartsheet, and custom integrations). The attributes, compliance, and sdkMapping fields referenced in those integration configuration blocks are described here.
Attributes
The attributes object defines the mapping and synchronization rules between Nomad Media and customer systems. Each attribute specifies how data should be synchronized, including sync direction and update conditions.
Attribute Types
| Type | Required | Description |
|---|---|---|
nomadId | Yes | Stores the Nomad asset ID to the customer. Set nomad to null for this type — nomadId is a general property, not a custom attribute. |
customerId | Yes | Stores the customer record ID. |
sync | Yes | Tells the Lambda when to run. |
errorMessage | Yes | Stores error messages that occur in the Lambda. |
shareUrl | No | Creates a share URL for the asset to be stored. |
boolean | No | Boolean value field. |
date | No | Date value field. |
string | No | String value field. |
object | No | Object (linked content definition record) field. |
Attribute Properties
| Property | Type | Required | Description |
|---|---|---|---|
nomad | string | If no customer | The field name in Nomad Media. |
customer | string | If no nomad | The field name in the customer system. |
type | string | Yes | The attribute type (see table above). Supported: string, date, object, plus the required field types. |
syncType | string | Yes | Sync direction: nomadToCustomer, customerToNomad, or both. |
contentDefinitionId | string | If type is object | The Nomad Media content definition ID for the linked object type. |
createRow | boolean | No | Whether to create a new row in the customer system when the value is updated in Nomad Media. |
createNewNomadRecord | boolean | No | If true, creates a new Nomad content definition entry when syncing from customer to Nomad and the record doesn't exist. Only applies when type is object. |
createNewCustomerRecord | boolean | No | If true, creates a new customer record when syncing from Nomad to customer and the record doesn't exist. Only applies when type is object. |
updateConditions | array | No | Conditions that filter when sync occurs (see below). |
Update Conditions
Update conditions filter which state changes trigger a sync operation.
| Property | Type | Description |
|---|---|---|
matchValues | string or array | The value(s) that, when matched, trigger the sync. |
propertyToUpdate | string | The property to update when the condition is met. |
updateValues | string / boolean / object | The new value(s) for the property. If string/boolean, propertyToUpdate is set to this value. If object, the value is looked up by which matchValue was matched. |
syncType | string or null | Override sync direction for this condition. If null, the attribute's syncType is used. |
Sample Configuration
{
"attributes": {
"assetId": {
"nomad": null,
"customer": "Asset Id",
"type": "nomadId"
},
"customerId": {
"nomad": "customerId",
"customer": "id",
"type": "customerId"
},
"sync": {
"nomad": "syncToCustomer",
"customer": null,
"type": "sync"
},
"assetUrl": {
"nomad": null,
"customer": "assetUrl",
"type": "shareUrl"
},
"errorMessage": {
"nomad": "customerErrorMessage",
"customer": null,
"type": "errorMessage"
},
"contact": {
"nomad": "contact",
"customer": "contact",
"type": "object",
"contentDefinitionId": "{{ContactContentDefinitionId}}",
"syncType": "nomadToCustomer",
"createNewCustomerRecord": true
},
"approvalStatus": {
"nomad": "approvalStatus",
"customer": "approvalStatus",
"type": "object",
"contentDefinitionId": "{{ApprovalStatusContentDefinitionId}}",
"createRow": true,
"syncType": "customerToNomad",
"updateConditions": [
{
"matchValues": ["Approved", "Rejected"],
"propertyToUpdate": "approvalStatus",
"updateValues": true
}
]
}
}
}Compliance
The compliance array defines rules for when an attribute is required.
[
{
"property": "attributeName",
"rules": [
{
"type": "required",
"dependencies": [
{
"property": "dependentAttributeName",
"value": "condition"
}
]
}
]
}
]| Field | Required | Description |
|---|---|---|
property | Yes | The attribute name that is conditionally or unconditionally required. |
rules | Yes | The rules this attribute must follow. |
rule.type | Yes | Rule type. Currently supported: required. |
rule.dependencies | No | Conditions that must be met for the rule to apply. If empty, the rule is unconditional. |
dependency.property | If dependencies | The attribute that this rule depends on. |
dependency.value | If dependencies | The value that attribute must have for the rule to pass. |
SDK Mapping
sdkMapping stores the conversion mappings for the getRow method, translating customer API response field names to usable keys.
| Field | Description |
|---|---|
title | The key name of the column header in the customer response. |
data | The key name of the data value in the customer response. |
Example:
Given a customer getRow response like:
{
"title": "Name",
"value": "Test"
}The corresponding sdkMapping would be:
{
"title": "title",
"data": "value"
}