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
View JSON Schema on GitHub

JSON Schema

gist-attribution-report.json Raw ↑
{
  "$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
}