-
Notifications
You must be signed in to change notification settings - Fork 8
Open
Description
Parent epic
Description
Implement the pixel-based ID sync endpoint that partners use to write their user ID against an EC hash.
Scope: ec/sync_pixel.rs, router update
Acceptance criteria
- Missing required query params (
partner,uid,return) →400. - No valid
ts-eccookie → redirect to{return}?ts_synced=0&ts_reason=no_ec. - Unknown
partnerID →400. returnURL hostname not inpartner.allowed_return_domains→400.- Consent uses
ec_context.consent. Optionalconsentquery param is fallback only — used whenec_context.consent.is_empty()returnstrue. UseConsentContext::is_empty()directly. When fallback applies, decode locally and assign intoec_context.consent. Do NOT re-callbuild_consent_context(). Denied/absent → redirect{return}?ts_synced=0&ts_reason=no_consent. - Rate limit exceeded →
429 Too Many Requests(no redirect). - KV write failure → redirect
{return}?ts_synced=0&ts_reason=write_failed. kv.upsert_partner_id()creates minimal live root entry when EC exists in cookie but KV entry missing.- Success → redirect
{return}?ts_synced=1. - Return URL construction correctly appends
&or?. - Rate counter key:
{partner_id}:{ec_hash}, 1-hour window,fastly::erl::RateCounter. - Unit tests cover all redirect/response codes and return URL construction.
Spec ref
docs/internal/ssc_technical_spec.md §8
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels