Gist · Schema
Fractional Attribution Standalone Report
Schema for standalone attribution report documents delivered outside a session document. The standalone carriage exists because attribution may be computed asynchronously, and by a different emitter than the platform - a third-party attribution provider. Modelled on the standalone event envelope (telemetry-event.json): a document_type discriminator plus session reference.
CompanyArtificial IntelligenceGenerative AIAdvertisingMarketingBrand VisibilityPublishersSearchContentAnswer EngineAttributionContent LicensingMediaRAGAdvertising Technology
Properties
| Name | Type | Description |
|---|---|---|
| document_type | string | Document type discriminator. MUST be 'attribution_report'. Extends the delivery-format set of spec 7.1; consumers that do not support this extension ignore the document. |
| schema_version | string | The Content Telemetry specification version this document references. |
| extension_version | string | Fractional attribution extension version (date string). |
| session_id | string | The session whose output is attributed. REQUIRED - a report is meaningless unreferenced. Consumers join on session_id (and each report's turn_id) and MUST tolerate reports for sessions they have not y |
| agent_id | string | The agent that produced the attributed output (mirrors the session field; aids joining when the session document arrives late). |
| reporter | object | Who computed these reports. REQUIRED on standalone documents - the point of this carriage is that the reporter may not be the platform. |
| reports | array | Attribution reports, all for the session named by session_id (per-turn via each report's turn_id). Reports for different sessions MUST be delivered as separate documents, as with event batches (spec 7 |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://contenttelemetry.org/extensions/attribution/attribution-report.json",
"$comment": "Extension of Content Telemetry v0.1. Canonical specification: https://contenttelemetry.org. This URI is reserved for registration; it does not resolve yet. Extension: org.contenttelemetry.attribution, version 2026-07-13. PROPOSAL DRAFT.",
"title": "Fractional Attribution Standalone Report",
"description": "Schema for standalone attribution report documents delivered outside a session document. The standalone carriage exists because attribution may be computed asynchronously, and by a different emitter than the platform - a third-party attribution provider. Modelled on the standalone event envelope (telemetry-event.json): a document_type discriminator plus session reference.",
"type": "object",
"required": ["document_type", "schema_version", "extension_version", "session_id", "reporter", "reports"],
"properties": {
"document_type": {
"type": "string",
"const": "attribution_report",
"description": "Document type discriminator. MUST be 'attribution_report'. Extends the delivery-format set of spec 7.1; consumers that do not support this extension ignore the document."
},
"schema_version": {
"type": "string",
"const": "0.1",
"description": "The Content Telemetry specification version this document references."
},
"extension_version": {
"type": "string",
"const": "2026-07-13",
"description": "Fractional attribution extension version (date string)."
},
"session_id": {
"type": "string",
"format": "uuid",
"description": "The session whose output is attributed. REQUIRED - a report is meaningless unreferenced. Consumers join on session_id (and each report's turn_id) and MUST tolerate reports for sessions they have not yet received, exactly as they reconstruct sessions from standalone events (spec 7.1)."
},
"agent_id": {
"type": "string",
"description": "The agent that produced the attributed output (mirrors the session field; aids joining when the session document arrives late)."
},
"reporter": {
"$ref": "attribution-extension.json#/$defs/Reporter",
"description": "Who computed these reports. REQUIRED on standalone documents - the point of this carriage is that the reporter may not be the platform."
},
"reports": {
"type": "array",
"minItems": 1,
"items": { "$ref": "attribution-extension.json#/$defs/AttributionReport" },
"description": "Attribution reports, all for the session named by session_id (per-turn via each report's turn_id). Reports for different sessions MUST be delivered as separate documents, as with event batches (spec 7.1)."
}
},
"additionalProperties": true
}