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

TypeRequiredDescription
nomadIdYesStores the Nomad asset ID to the customer. Set nomad to null for this type — nomadId is a general property, not a custom attribute.
customerIdYesStores the customer record ID.
syncYesTells the Lambda when to run.
errorMessageYesStores error messages that occur in the Lambda.
shareUrlNoCreates a share URL for the asset to be stored.
booleanNoBoolean value field.
dateNoDate value field.
stringNoString value field.
objectNoObject (linked content definition record) field.

Attribute Properties

PropertyTypeRequiredDescription
nomadstringIf no customerThe field name in Nomad Media.
customerstringIf no nomadThe field name in the customer system.
typestringYesThe attribute type (see table above). Supported: string, date, object, plus the required field types.
syncTypestringYesSync direction: nomadToCustomer, customerToNomad, or both.
contentDefinitionIdstringIf type is objectThe Nomad Media content definition ID for the linked object type.
createRowbooleanNoWhether to create a new row in the customer system when the value is updated in Nomad Media.
createNewNomadRecordbooleanNoIf 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.
createNewCustomerRecordbooleanNoIf true, creates a new customer record when syncing from Nomad to customer and the record doesn't exist. Only applies when type is object.
updateConditionsarrayNoConditions that filter when sync occurs (see below).

Update Conditions

Update conditions filter which state changes trigger a sync operation.

PropertyTypeDescription
matchValuesstring or arrayThe value(s) that, when matched, trigger the sync.
propertyToUpdatestringThe property to update when the condition is met.
updateValuesstring / boolean / objectThe 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.
syncTypestring or nullOverride 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"
          }
        ]
      }
    ]
  }
]
FieldRequiredDescription
propertyYesThe attribute name that is conditionally or unconditionally required.
rulesYesThe rules this attribute must follow.
rule.typeYesRule type. Currently supported: required.
rule.dependenciesNoConditions that must be met for the rule to apply. If empty, the rule is unconditional.
dependency.propertyIf dependenciesThe attribute that this rule depends on.
dependency.valueIf dependenciesThe 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.

FieldDescription
titleThe key name of the column header in the customer response.
dataThe 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"
}