Reklam teknolojileri ölçüm API'lerini (Attribution Reporting API veya Private Aggregation API) tetiklediğinde, şifrelenmiş raporlar Chrome tarayıcıdan / istemci tarafında reklam teknolojisinin raporlama uç noktasına gönderilir. Bu uç nokta, reklam teknolojisinin raporlama kaynağına sahip bir .well-known
URL'sidir. Raporlama uç noktası, şifrelenmiş raporları toplamak için reklam teknolojisi tarafından barındırılır.
API başına uç noktalar şunlardır:
Private Aggregation
[reporting-origin]/.well-known/private-aggregation/debug/report-shared-storage
hatalarını ayıkla- Canlı
[reporting-origin]/.well-known/private-aggregation/report-shared-storage
veya/.well-known/private-aggregation/report-protected-audience
İlişkilendirme Raporları
[reporting-origin]/.well-known/attribution-reporting/debug/report-aggregate-attribution
dosyasını hata ayıklama- Canlı
[reporting-origin]/.well-known/attribution-reporting/report-aggregate-attribution
Reklam teknolojisi uzmanları, raporları bir POST çağrısı üzerinden JSON biçiminde alır. Reklam teknolojileri, bu JSON raporlarını toplar ve daha sonra Toplama Hizmeti'nde kullanılan AVRO biçimine dönüştürür. AVRO raporları dönüştürüldükten sonra daha sonra toplu hale getirmek üzere reklam teknolojisinin bulut depolama alanında depolanır.
Reklam teknolojisi toplu işleme hazır olduğunda, raporların reklam teknolojisinin bulut depolama alanından alındığı toplama hizmeti aracılığıyla bir toplama işi isteği tetikler. Toplama Hizmeti, reklam teknolojisinin bulut depolama alanında barındırılır ve izin verilenler listesinde bir resim içermelidir.
Alınan raporlar şuna benzer:
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'u AVRO raporlarına dönüştürme
Toplu işleme sırasında, toplanabilir raporların AVRO biçiminde olması gerekir. AVRO raporu oluşturmak için rapor AVRO şemasına (AVSC) ihtiyacınız vardır.
Aggregation Service GitHub deposunda örnek JavaScript kodu bulunmaktadır.
Tüm raporlarınız için 1 AVRO dosyanız olabilir veya raporları birden fazla AVRO dosyasına bölebilirsiniz. AVRO boyutu sınırsızdır. Performans nedeniyle, AVRO dosyalarının sayısının Cloud örneğiniz için kullanılabilen CPU sayısı ile 1.000 arasında bir sayı olması önerilir.
Aşağıda, Toplanabilir raporlar için AVRO Şeması verilmiştir. Raporlar için farklı alanlar payload
, key_id
ve shared_info
'dir.
{
"type": "record",
"name": "AggregatableReport",
"fields": [
{
"name": "payload",
"type": "bytes"
},
{
"name": "key_id",
"type": "string"
},
{
"name": "shared_info",
"type": "string"
}
]
}
Parametre | Tür | Açıklama |
---|---|---|
payload |
Bayt |
Canlı/üretim raporları için yükün base64 olarak kodunun çözülmesi ve payload 'ten bir bayt dizisine dönüştürülmesi gerekir.
|
debug_cleartext_payload |
Bayt |
Hata ayıklama raporları için yükün base64 kodunun çözülmesi ve debug_cleartext_payload ürününden bir bayt dizisine dönüştürülmesi gerekir.
|
key_id |
Dize | Bu, raporda bulunan key_id dizesi olacaktır. key_id, benzer şekilde 128 bitlik evrensel olarak benzersiz bir tanımlayıcı olacaktır. |
shared_info |
Dize | Bu, report shared_info alanında bulunan değiştirilmemiş dize olacaktır. |
Aşağıda örnek bir rapor JSON'u verilmiştir:
{
"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\"}"
}
Çıkış Alanı AVRO
Toplama Hizmeti'ni kullanarak özet raporlar oluşturmak için reklam teknolojisinde, toplanabilir raporlar ve alan dosyası gerekir. Toplanabilir raporlar, raporlama kaynağında alınan ve AVRO biçimine dönüştürülen JSON raporlarıdır. Çıkış alanları, toplanabilir raporlarınızdan toplanacak ve özet raporlarına yazılacak önceden tanımlanmış anahtarları içerir. İlişkilendirme raporlarındaki bu anahtarlar ve özel toplamadaki anahtarlar hakkında daha fazla bilgi edinin. Çıkış alanı, alan paketini içerir ve paket değeri, paket anahtarınız olur.
Ayrıca alan dosyasının, aşağıdaki şema kullanılarak AVRO biçiminde olması gerekir:
{
"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."
}
]
}
Paket Anahtarı
Paket anahtarı, paket anahtarının on altılık bir bayt dizesi olmalıdır. Buna örnek olarak Ondalık bir değer olarak 1369 anahtarı gösterilebilir. Onaltılık değer olarak dönüştürüldükten sonra 559 olur. Ardından, AVRO çıkış alanına eklemek için 559'u bir bayt dizesine dönüştürmeniz gerekir.
Toplu raporlar
Gizlilik bütçeleri ve gruplandırma hakkında daha fazla bilgi edinmek için gruplandırma stratejileri belgesine gidin. Ayrıca, birleştirilebilir bir raporun yalnızca belirli bir süre içinde gruplandırılabileceğini unutmayın. Bir raporun scheduled_report_time
ile toplu çalıştırma tarihi (şu anda 90 gün) arasındaki MAX_REPORT_AGE değerini aşmaması gerekir.
Özet Raporlar
Toplu işlemden sonra Toplama Hizmeti, özet raporu AVRO biçiminde oluşturur. Özet raporu results.avsc
şemasını kullanır.
Özet rapor, createJob
isteğinde belirtilen output_data_bucket_name
paketindeki output_data_blob_prefix
içinde yer alır.
error_run'ın etkin olduğu Toplama Hizmeti grupları için iki rapor oluşturur. Özet raporu ve hata ayıklama özeti raporu. Hata ayıklama özeti raporu output_data_blob_prefix/debug
klasöründe yer alır.
Oluşturulan hata ayıklama raporunda debug_results.avsc
şeması kullanılır.
Hem özet hem de hata ayıklama raporu [output_data_blob_prefix]-1-of-1.avro
olarak adlandırılır. exit_data_blob_prefix değeriniz summary/summary.avro
ise rapor summary-1-of-1.avro
adlı özet klasöründe bulunur.
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"]
}
}
]
}
Dönüştürüldükten sonra özet raporunuz results.json
örneğine benzer bir görünüme sahip olur. debug_run etkinleştirildiğinde hata ayıklama özeti raporu, debug_results.json
örneğine benzer bir sonuç döndürür.
results.json (örnek)
Toplama Hizmeti'nden gelen AVRO raporları, paket anahtarına ve paket değerlerine ek gürültüyle birlikte özet / toplam değere sahip olduğunuzda benzer görünebilir.
{
"bucket": "\u0005Y",
"metric": 26308
}
error_results.json (örnek)
Toplama Hizmeti'nden gelen hata ayıklama AVRO raporları, paket anahtarlarınızı, unnoised_metric
'yi (paket anahtarlarının gürültü içermeyen özeti) ve unnoised_metric
'ye eklenen gürültüyü aldığınız aşağıdakine benzer görünmelidir.
{
"bucket": "\u0005Y",
"unnoised_metric": 128,
"noise": -17948,
"annotations": [
"in_reports",
"in_domain"
]
}
Ek açıklamalarda in_reports
ve / veya in_domain
ifadeleri de bulunacaktır. Bu durum şu anlamlara gelir:
in_reports
: Paket anahtarı, toplanabilir raporlarda mevcutturin_domain
: Paket anahtarı,output_domain
AVRO dosyasında bulunur.