जब विज्ञापन टेक्नोलॉजी, मेज़रमेंट एपीआई (Attribution Reporting API या Private Aggregation API) को ट्रिगर करती हैं, तो एन्क्रिप्ट की गई रिपोर्ट, Chrome ब्राउज़र / क्लाइंट साइड से विज्ञापन टेक्नोलॉजी के रिपोर्टिंग एंडपॉइंट पर भेजी जाती हैं. यह विज्ञापन टेक्नोलॉजी के रिपोर्टिंग ऑरिजिन वाला .well-known
यूआरएल होता है. एन्क्रिप्ट की गई रिपोर्ट इकट्ठा करने के लिए, रिपोर्टिंग एंडपॉइंट को AdTech होस्ट करता है.
हर एपीआई के लिए एंडपॉइंट यहां दिए गए हैं:
Private Aggregation
[reporting-origin]/.well-known/private-aggregation/debug/report-shared-storage
को डीबग करना- लाइव
[reporting-origin]/.well-known/private-aggregation/report-shared-storage
या/.well-known/private-aggregation/report-protected-audience
Attribution Reporting
[reporting-origin]/.well-known/attribution-reporting/debug/report-aggregate-attribution
डीबग करें- लाइव
[reporting-origin]/.well-known/attribution-reporting/report-aggregate-attribution
विज्ञापन टेक्नोलॉजी कंपनियों को पोस्ट कॉल के ज़रिए, JSON फ़ॉर्मैट में रिपोर्ट मिलेंगी. विज्ञापन टेक्नोलॉजी विशेषज्ञ, इन JSON रिपोर्ट को इकट्ठा करेंगे और बाद में उन्हें AVRO फ़ॉर्मैट में बदल देंगे. इसका इस्तेमाल एग्रीगेशन सेवा में किया जाता है. बदलने के बाद, AVRO रिपोर्ट को विज्ञापन टेक्नोलॉजी के क्लाउड स्टोरेज में सेव किया जाता है, ताकि बाद में उन्हें एक साथ भेजा जा सके.
जब विज्ञापन टेक्नोलॉजी, एक साथ कई बैच बनाने के लिए तैयार हो जाती है, तो AdTech, एग्रीगेशन सेवा की मदद से एग्रीगेशन जॉब का अनुरोध ट्रिगर करेगी. इसके लिए, AdTech के क्लाउड स्टोरेज से रिपोर्ट ली जाएंगी. एग्रीगेशन सेवा को विज्ञापन टेक्नोलॉजी के क्लाउड स्टोरेज पर होस्ट किया जाता है. इसमें अनुमति वाली सूची में शामिल इमेज होनी चाहिए.
मिलने वाली रिपोर्ट कुछ ऐसी दिखती हैं:
Private Aggregation API
{
"aggregation_coordinator_origin": "https://publickeyservice.msmt.aws.privacysandboxservices.com",
"aggregation_service_payloads": [ {
"key_id": "1a2baa3f-5d48-46cf-91f0-772633c12640",
"payload": "8Cjr1s3FVkCYkjzBvyzJn14yardVjd5N4vLCA69LQAPbIkJ0B58hAqUGBCNXpvTjW9ZpIoZbCSiUOsUDuoA/S+tqVolLMkame6sWC07cfUmZcVsbU+La3pzTMtCgdtNc8MIWgD3C63CMw7rWroRlechewVUajvAYVK/0HJq0YyGrTiFZZm36zi0jjyHLAXKV8p1Lvy1d0o/wnBxC5oVo5BV6LPkxqQEcoYS2GyixUuht6wD0RzuH+BxxuH6vY/ynp2xDrnwftjvqwDUAxUWLFTunthM6BXZVxlrvOBim1h2dvPqWSyKZ5gafo+MgW9EM4SraavNM3XzZSCjdtAfSMJMrynSu2j0opyAq+9e1jq1xeYN00yZrJ0Y/GTI45IGjgCnVmvmuoI9ucW2SnXP31CQBwHqk4gtUgMsYGFSUYfhtnAQ/8TSbaXyS2LX+cQW87LqkvIraWw6o37O24VFBreFoFFXpu3IUeCZfji+Sr4/ykfZuHeMzQbBavyNnHKzPZlbLSXMiucx4/vWzYyOzHeIlbtupXVvbi40V2PieDShaSbjI266kGgFkeCk6z51AaAGebDPtRT1lhBpcoQ6JdF0Yp5VWSnyFARKFtCZ1aEBrlUlrEHLUQY/pFtmDxJQiicRz1YPjR8jRr3C7hlRhWwov0dMocqnMz5209hHGVZWSsaGc9kWjtxREW2ULXfoIwOGbX+WZsyFW2RhXksQPJ5fhyNc4ROkAzUthLb68gC5e0yZHvmLIAU4hcWe0UanJv+jRljn8PAPaJHKFUxQNJyBA7mTbn5mkpycxGrX6T3ZYdPHqvckqt9llJZWjr8NneizzZFRuJk423BDs38fXkvcTAsAckd2Zu0u2KC45WR93sN2/CWrqB7/QU9BsgNdonl/ehAWhU1LbcRRvBTcR9+0wL7vRL7cv5LG3+gRYRKsWI6U2nDSWp0cNpo9+HU0JNiifa5X0cguihqU2bSk6ABozgRtCZ7m+7eqWXMLSzBdmc1CPUoQppo6Wmf6ujdNqI6v2S6pDH781lph8Z2v7ZpxGdhVVPEL51cVn"
} ],
"debug_key": "1234",
"shared_info": "{\"api\":\"shared-storage\",\"report_id\":\"05e3b948-cb8d-4404-be29-bfeac7ad9710\",\"reporting_origin\":\"https://privacy-sandbox-demos-dsp.dev\",\"scheduled_report_time\":\"1707784729\",\"version\":\"0.1\"}"
}
Attribution Reporting API
{
"aggregation_coordinator_origin": "https://publickeyservice.msmt.aws.privacysandboxservices.com",
"aggregation_service_payloads": [ {
"key_id": "2dee0f3f-2aee-4a4a-8238-9154ed3d6f72",
"payload": "pHvTHhcxvNKaCmnLpvYQsXlJpiNRuFO5Zj1QqUlqgWPOfuoHLfiXiFjmpvY8a53/OYnS4bKwHwJReFcofldsu8E9BzTTJ3CEk+B7vbEjnDPaljhpIBMTuQXy3QHGK4slWR/yNZVm2uXRWR/DVVzXziBoTDjN7qaPstRoLKUUMdfY2u8oq4tnLY00Y+NDZttZ4wJvC7hPmvY3lqHjdl14JPD2ytZZ4NViYzno3WKdH/oZc0jhGK4zI38lAM0qpahF/B9yb4zOu7IRIjQpNx73P8naDyddxLldoVlW/qHpO04FguWymscvI/8i6NwUR6Kj8seRlWS0iIUhETt/ai3lilKUHUb+uz0YG2kxjoXq7Ldk+MP56nNl67ZRNi2YZ7bOGI/okYWoT/wt2uWPe/5xAEMmadxl0hQQrG7YXHRSD8rDnaVPXo+AKIxdg727yJeB1ZENZvovl/kIevdRAmdBe2h1U3J6Uz6psly/46fvjgkj5QD+kO2uaYirzvmwS19luJsN/Qvh/R3ZO4qlJIQI0nDJPWwUJ4ODpyVmj4a0xQp3t2ESEnf4EmY7+khn3xpF5+MwEWKES2ZeDf7SHalR99pvZA8G3Fr8M0PWFmT00cmKCBwpQgZyd3Eay70UlqdkbFEedxiCVWKNNOUz41m5KG/7K3aR+dYx57l57Wct4gOFQg3jiUEBJWrFIVCXf12BT5iz5rBQh1N1CUt2oCOhYL/sPuBl6OV5GWHSIj8FUdpoDolqKXWINXfE88MUijE2ghNRpJN25BXIErUQtO9wFQv7zotC6d2BIaF0x8AkKg/7yzBQRySX/FZP3H3lMkpOz9rQMV8DjZ2lz7nV4k6CFo8qhT6cpYJD7GpYl81xJbglNqcJt5Pe5YUHrdBMyAFsTh3yoJvYnhQib/0xVN/a93lbYccxsd0yi375n4Xz0i1HUoe2ps+WlU8XysAUA1agG936eshaY1anTtbJbrcoaH+BNSacKiq4saprgUGl4eDjaR/uBhvUnO52WkmAGon8De3EFMZ/kwpPBNSXi7/MIAMjotsSKBc19bfg"
} ],
"shared_info": "{\"api\":\"attribution-reporting\",\"attribution_destination\":\"https://privacy-sandbox-demos-shop.dev\",\"report_id\":\"5b052748-f5fb-4f14-b291-de03484ed59e\",\"reporting_origin\":\"https://privacy-sandbox-demos-dsp.dev\",\"scheduled_report_time\":\"1707786751\",\"source_registration_time\":\"0\",\"version\":\"0.1\"}",
"source_debug_key": "123456789",
"trigger_debug_key": "123456789"
}
JSON को AVRO रिपोर्ट में बदलें
एक साथ कई रिपोर्ट अपलोड करते समय, एग्रीगेट की जा सकने वाली रिपोर्ट AVRO फ़ॉर्मैट में होनी चाहिए. AVRO रिपोर्ट बनाने के लिए, आपको रिपोर्ट AVRO स्कीमा (AVSC) की ज़रूरत होगी.
एग्रीगेशन सेवा के GitHub रिपॉज़िटरी में, JavaScript का सैंपल कोड उपलब्ध है.
आपके पास अपनी सभी रिपोर्ट के लिए एक Avro फ़ाइल या रिपोर्ट को कई Avro फ़ाइलों में बांटने का विकल्प होता है. AVRO फ़ॉर्मैट के साइज़ की कोई सीमा नहीं है. परफ़ॉर्मेंस की वजह से, हमारा सुझाव है कि आप अपने Cloud इंस्टेंस के लिए उपलब्ध सीपीयू और 1,000 के बीच, AVRO फ़ाइलों की संख्या रखें.
एग्रीगेट की जा सकने वाली रिपोर्ट के लिए, AVRO स्कीमा यहां दिया गया है. रिपोर्ट के लिए अलग-अलग फ़ील्ड payload
, key_id
, और shared_info
हैं.
{
"type": "record",
"name": "AggregatableReport",
"fields": [
{
"name": "payload",
"type": "bytes"
},
{
"name": "key_id",
"type": "string"
},
{
"name": "shared_info",
"type": "string"
}
]
}
पैरामीटर | टाइप | ब्यौरा |
---|---|---|
payload |
बाइट |
लाइव / प्रोडक्शन रिपोर्ट के लिए, पेलोड को base64 कोड से डिकोड करना होगा और payload से बाइट कलेक्शन में बदलना होगा.
|
debug_cleartext_payload |
बाइट |
डीबग रिपोर्ट के लिए, पेलोड को base64 से डिकोड करके debug_cleartext_payload से बाइट कलेक्शन में बदलना होगा.
|
key_id |
स्ट्रिंग | यह रिपोर्ट में मिलने वाली key_id स्ट्रिंग होगी. key_id, 128-बिट वाला ऐसा यूनीक आइडेंटिफ़ायर होगा जो दुनिया भर में इस्तेमाल किया जाता है. |
shared_info |
स्ट्रिंग | यह रिपोर्ट के shared_info फ़ील्ड में मौजूद, बिना छेड़छाड़ वाली स्ट्रिंग होगी. |
रिपोर्ट के JSON फ़ॉर्मैट का उदाहरण:
{
"aggregation_coordinator_identifier": "aws-cloud",
"aggregation_service_payloads": [{
"debug_cleartext_payload": "omRkYXhgaJldmFsdWVEAAAAgGZidWNrZXRQAAAAAAAAAAAAAAAAAAAFWW1vcGVyYX",
"key_id": "3c6e2850-edf6-4886-eb70-eb3f2a7a7596",
"payload": "oapYz92Mb1yam9YQ2AnK8dduTt2RwFUSApGcKqXnG1q+aGXfJ5DGpSxMj0NxdZgp7Cq"
}],
"debug_key": "1234",
"shared_info":
"{\"api\":\"shared-storage\",\"debug_mode\":\"enabled\",\"report_id\":\"b029b922-93e9-4d66-a8c6-8cdeec762aed\",\"reporting_origin\":\"https://privacy-sandbox-demos-dsp.dev\",\"scheduled_report_time\":\"1719251997\",\"version\":\"0.1\"}"
}
आउटपुट डोमेन AVRO
एग्रीगेशन सेवा का इस्तेमाल करके खास जानकारी वाली रिपोर्ट जनरेट करने के लिए, विज्ञापन टेक्नोलॉजी को एग्रीगेट की जा सकने वाली रिपोर्ट और डोमेन फ़ाइल की ज़रूरत होती है. एग्रीगेट की जा सकने वाली रिपोर्ट, रिपोर्टिंग ऑरिजिन में मिली JSON रिपोर्ट होंगी और उन्हें AVRO फ़ॉर्मैट में बदल दिया जाएगा. आउटपुट डोमेन में, पहले से बताई गई कुंजियां होंगी. इन्हें आपकी एग्रीगेशन रिपोर्ट से इकट्ठा किया जाएगा और इन्हें खास जानकारी वाली रिपोर्ट में लिखा जाएगा. एट्रिब्यूशन रिपोर्टिंग में इन कुंजियों और निजी एग्रीगेशन में इन कुंजियों के बारे में ज़्यादा जानें. आउटपुट डोमेन में फ़ील्ड बकेट होगी और बकेट की वैल्यू आपकी बकेट कुंजी होगी.
डोमेन फ़ाइल को भी AVRO फ़ॉर्मैट में होना चाहिए. इसके लिए, नीचे दिए गए स्कीमा का इस्तेमाल करें:
{
"type": "record",
"name": "AggregationBucket",
"fields": [
{
"name": "bucket",
"type": "bytes",
"doc": "A single bucket that appears in the aggregation service output. 128-bit integer encoded as a 16-byte big-endian bytestring."
}
]
}
बकेट कुंजी
बकेट कुंजी, बकेट कुंजी की हेक्स बाइटस्ट्रिंग होनी चाहिए. इसका एक उदाहरण, दशमलव में 1369 वाली कुंजी होगी. हेक्स में बदलने पर, यह 559 होगा. इसके बाद, आपको आउटपुट डोमेन AVRO में जोड़ने के लिए, 559 को बाइट स्ट्रिंग में बदलना होगा
एक साथ कई रिपोर्ट
निजता बजट और एक साथ कई रिपोर्ट भेजने की सुविधा के बारे में ज़्यादा जानने के लिए, एक साथ कई रिपोर्ट भेजने की रणनीतियों वाला दस्तावेज़ पढ़ें. साथ ही, ध्यान रखें कि एग्रीगेट की जा सकने वाली रिपोर्ट को सिर्फ़ तय समयसीमा के अंदर ही एक साथ भेजा जा सकता है. scheduled_report_time
और बैच के चलने की तारीख (फ़िलहाल 90 दिन) के बीच, रिपोर्ट की उम्र MAX_REPORT_AGE से ज़्यादा नहीं होनी चाहिए.
खास जानकारी वाली रिपोर्ट
बैच करने के बाद, एग्रीगेशन सेवा खास जानकारी वाली रिपोर्ट को AVRO फ़ॉर्मैट में बनाती है. खास जानकारी वाली रिपोर्ट में results.avsc
स्कीमा का इस्तेमाल किया जाता है.
खास जानकारी वाली रिपोर्ट, createJob
अनुरोध में बताए गए output_data_bucket_name
बकेट में output_data_blob_prefix
में मौजूद होगी.
एग्रीगेशन सेवा के उन बैच के लिए जहां debug_run चालू है, यह दो रिपोर्ट बनाता है. खास जानकारी वाली रिपोर्ट और डीबग की खास जानकारी वाली रिपोर्ट. डीबग की खास जानकारी वाली रिपोर्ट, output_data_blob_prefix/debug
फ़ोल्डर में मौजूद होगी.
जनरेट की गई डीबग रिपोर्ट में debug_results.avsc
स्कीमा का इस्तेमाल किया जाता है.
खास जानकारी और डीबग रिपोर्ट, दोनों का नाम [output_data_blob_prefix]-1-of-1.avro
होगा. अगर आपका आउटपुट_data_blob_prefix summary/summary.avro
है, तो रिपोर्ट खास जानकारी वाले फ़ोल्डर में होगी. इसका नाम summary-1-of-1.avro
होगा.
results.avsc
{
"type": "record",
"name": "AggregatedFact",
"fields": [
{
"name": "bucket",
"type": "bytes",
"doc": "Histogram bucket used in aggregation. 128-bit integer encoded as a 16-byte big-endian bytestring. Leading 0-bits will be left out."
},
{
"name": "metric",
"type": "long",
"doc": "Metric associated with the bucket"
}
]
}
debug_results.avsc
{
"type": "record",
"name": "DebugAggregatedFact",
"fields": [
{
"name": "bucket",
"type": "bytes",
"doc": "Histogram bucket used in aggregation. 128-bit integer encoded as a 16-byte big-endian bytestring. Leading 0-bits will be left out."
},
{
"name": "unnoised_metric",
"type": "long",
"doc": "Unnoised metric associated with the bucket."
},
{
"name": "noise",
"type": "long",
"doc": "The noise applied to the metric in the regular result."
}
{
"name":"annotations",
"type": {
"type": "array",
"items": {
"type":"enum",
"name":"bucket_tags",
"symbols":["in_domain","in_reports"]
}
}
]
}
कन्वर्ज़न में बदलने के बाद, आपकी खास जानकारी वाली रिपोर्ट, results.json
के उदाहरण की तरह दिखेगी. डीबग_रन चालू होने पर, डीबग की खास जानकारी वाली रिपोर्ट debug_results.json
के उदाहरण की तरह कुछ दिखाती है.
results.json (उदाहरण)
एग्रीगेशन सेवा से मिलने वाली AVRO रिपोर्ट, उन जगहों पर एक जैसी दिख सकती हैं जहां आपके पास बकेट की कुंजी और बकेट की वैल्यू को जोड़ने के साथ-साथ खास जानकारी / एग्रीगेट वैल्यू होती है.
{
"bucket": "\u0005Y",
"metric": 26308
}
डीबग_results.json (उदाहरण)
एग्रीगेशन सेवा से मिलने वाली डीबग AVRO रिपोर्ट, यहां दी गई रिपोर्ट की तरह दिखनी चाहिए: बकेट की कुंजियां, unnoised_metric
(बिना शोर के बकेट कुंजियों की खास जानकारी) और unnoised_metric
में जोड़ी गई नॉइज़ की जानकारी.
{
"bucket": "\u0005Y",
"unnoised_metric": 128,
"noise": -17948,
"annotations": [
"in_reports",
"in_domain"
]
}
एनोटेशन में in_reports
और / या in_domain
भी शामिल होंगे. इसका मतलब है:
in_reports
: बकेट कुंजी, एग्रीगेट की जा सकने वाली रिपोर्ट में उपलब्ध होती हैin_domain
: बकेट की,output_domain
AVRO फ़ाइल में कुंजी उपलब्ध है