This document describes the format of verbose debugging reports.
The report data is included in the request body as a JSON list of dictionaries.
Each dictionary has a string field type
and a dictionary field body
, e.g.:
[{
"type": "source-destination-limit",
"body": {
"attribution_destination": "https://destination.example",
"limit": "100",
"source_debug_key": "1234567890",
"source_event_id": "12340873456",
"source_site": "https://source.example"
}
}]
The content of the body
field depends on the type
.
The following reports are produced in response to attribution source registrations.
The body
will contain the following fields for all source debugging reports:
attribution_destination
: The source registration's parseddestination
sites (i.e. with URLs replaced with sites, duplicates removed, and sorted). This will be a string if there was one such site, or a list of strings if there were multiple.source_event_id
: The source registration'ssource_event_id
.source_site
: The top-level site on which the source registration occurred.
Additionally:
- If the source registration contained a valid
debug_key
and cookie-based debugging was allowed, then thebody
will also contain asource_debug_key
field. - If the source registration was rejected due to an API limit, then the
body
will also contain a string-typedlimit
field.
The source was rejected due to the channel-capacity limit.
Additional fields: limit
The source was rejected due to the destination limit.
Additional fields: limit
The source was rejected due to the destinations per source and reporting site per day rate limit.
Additional fields: limit
The source was rejected due to the destinations per source and reporting site rate limit.
Additional fields: limit
A source is rejected due to the event state limit.
Additional fields: limit
The source was successfully registered, but it will not be attributable by any subsequent trigger because noise has been applied.
The body
may also include a source_destination_limit
field if the
destination limit was exceeded.
The source was rejected due to the reporting origins per source and reporting site limit.
Additional fields: limit
The source was rejected due to the attribution scope channel-capacity limit.
Additional fields: limit
The source was rejected due to a storage limit.
Additional fields: limit
The source was successfully registered or the source was rejected for one of the following reasons:
- unattributed reporting origin limit
- reporting origins per source and reporting site rate limit
- destinations per source site rate limit
These error conditions are deliberately not distinguished from a successful registration for security purposes.
The body
may also include a source_destination_limit
field if the
destination limit was exceeded.
The source was rejected due to the trigger-state cardinality limit.
Additional fields: limit
The source was rejected due to an internal error.
The following reports are produced in response to attribution trigger registrations.
The body
will contain the following fields for all trigger debugging reports
except trigger-event-low-priority
and
trigger-event-excessive-reports
:
attribution_destination
: The top-level site on which the trigger registration occurred.
Additionally:
- If the trigger registration contained a valid
debug_key
and cookie-based debugging was allowed, then thebody
will also contain atrigger_debug_key
field. - If the trigger registration was rejected due to an API limit, then the
body
will also contain a string-typedlimit
field. - If the trigger was attributed to a source, then the
body
will also contain the following fields:source_event_id
: The source registration'ssource_event_id
.source_site
: The top-level site on which the source registration occurred.source_debug_key
: The source registration'sdebug_key
, but omitted if the source registration did not contain a validdebug_key
or cookie-based debugging was prohibited.
Aggregatable attribution for the trigger failed due to the max attributions rate limit.
Additional fields: limit
Aggregatable attribution for the trigger was deduplicated.
Aggregatable attribution for the trigger failed because the attributed source had already reached the maximum number of reports.
Additional fields: limit
Aggregatable attribution for the trigger failed because the attributed source had insufficient budget.
Additional fields: limit
Aggregatable attribution for the trigger failed because the attributed source had insufficient named budget.
Additional fields: name
, limit
Aggregatable attribution for the trigger failed because no histogram contributions were produced.
Aggregatable attribution for the trigger failed because the attributed source's aggregatable [report window][attribution trigger algorithm] had passed.
Aggregatable attribution for the trigger failed due to the storage limit.
Additional fields: limit
Event-level attribution for the trigger failed due to the max attributions rate limit.
Additional fields: limit
Event-level attribution for the trigger was deduplicated.
Event-level attribution for the trigger failed because the attributed source had already reached the maximum number of reports.
The body
will be identical to the event-level report body that would have
been produced had attribution succeeded.
Event-level attribution for the trigger failed because the matching
event_trigger_data
's priority
was lower than that of
any pending event-level reports for the same source.
The body
will be identical to the event-level report body that would have
been produced had attribution succeeded.
Event-level attribution for the trigger failed because no event_trigger_data
entry matched the attributed source.
Event-level attribution for the trigger failed because the attributed source was subject to noise.
Event-level attribution for the trigger failed because the attributed source's event-level report window hadn't begun.
Event-level attribution for the trigger failed because the attributed source's event-level report window had passed.
Event-level attribution for the trigger failed due to the storage limit.
Additional fields: limit
The trigger was rejected because its top-level filters did not match the attributed source's filter data.
The trigger was rejected because its <reporting origin, destination site> pair could not be matched to a source.
The trigger was rejected due to the attributed reporting origin limit.
Additional fields: limit
The trigger was rejected due to an internal error.