ChangeDetails
Field-level change record for a single API entity within a transaction.
Declaration
object ChangeDetailsProperties
| Name | Type | Description |
|---|---|---|
transactionId | string | The unique identifier for the transaction that produced this change record. |
detailId | string | A unique identifier for this specific entity change within the transaction. |
eventType | AuditEventType | The type of change operation performed. See AuditEventType. |
entityType | string | The API entity type that changed, matching the name of the API entity in the Apple Ads Platform API (for example, |
entityId | string | The platform ID of the entity that changed (for example, a campaign ID or ad group ID). |
eventTime | date-time | The UTC timestamp of when the change occurred, in ISO 8601 format. |
userType | AuditUserType | The category of actor that performed the change. See AuditUserType for possible values. Read-only. |
modifiedBy | string | The identifier of the user or service that performed the change. We don’t expose user email, only |
entityMetaData | ChangeDetails.EntityMetaData | A key-value map of entity metadata captured at the time of the change (for example, entity name, parent IDs). See ChangeDetails.EntityMetaData. Keys and values are strings and vary by entity type. Read-only. |
details | [ActivityDetail] | An array of ActivityDetail objects. Each entry contains a |
Overview
Each ChangeDetails record represents one entity’s complete change history for a single transaction. The details array contains ActivityDetail objects, each of which holds a changes array of field change objects capturing the field name, oldValues, and newValues.
Example
{
"transactionId": "998877665",
"detailId": "AdGroup.555666777.998877665",
"eventType": "UPDATE",
"entityType": "AdGroup",
"entityId": "555666777",
"eventTime": "2025-03-15T14:30:00.000Z",
"userType": "CUSTOMER",
"modifiedBy": "111222333",
"entityMetaData": {
"name": "AwayFinder iOS - New Users 18-34",
"campaignId": "444555666"
},
"details": [
{
"transactionId": "998877665",
"changes": [
{
"field": "status",
"oldValues": [
"ENABLED"
],
"newValues": [
"PAUSED"
]
}
]
}
]
}Discussion
Relationship to AuditSummary
The ChangeDetails object is the field-level expansion of an AuditSummary row. The count field on a summary row tells you how many field change entries to expect across all ActivityDetail objects in details.
`entityMetaData` vs `metas`
The ChangeDetails always populates entityMetaData (when metadata is available) regardless of the request’s options.metadata setting. It represents a point-in-time snapshot of key entity attributes captured at change time. This differs from the metas field on AuditSummary, which the request’s options.metadata query option controls.
Understand `oldValues` and `newValues`
Both fields are string arrays. For scalar fields, each array contains a single element. For array-valued fields, each array represents the full set of values before and after the change. Interpretation by event type:
|
|
|
|---|---|---|
| Empty | Values at creation |
| Previous value(s) | Updated value(s) |
| Last known value(s) | Typically empty |