- Arpana Hosabettu (arpanah@chromium.org)
- Nan Lin (linnan@chromium.org)
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 parseddestinationsites (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_keyand cookie-based debugging was allowed, then thebodywill also contain asource_debug_keyfield. - If the source registration was rejected due to an API limit, then the
bodywill also contain a string-typedlimitfield.
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_keyand cookie-based debugging was allowed, then thebodywill also contain atrigger_debug_keyfield. - If the trigger registration was rejected due to an API limit, then the
bodywill also contain a string-typedlimitfield. - If the trigger was attributed to a source, then the
bodywill 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_keyor 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.