# docs/compliance/sub-processors.example.yml — annotated reference for the sub-processors schema # # This file is NOT generated. It shows both kinds of entries that appear in # compliance/sub-processors.yml and explains what each field means. # # Generated artifact : compliance/sub-processors.yml # Generator : pnpm compliance:sub-processors # Sources : (1) docs/library-decisions/*.md — frontmatter where is-sub-processor: true # (2) compliance/sub-processors.manual.yml — hand-authored non-SDK vendors # # The two entry kinds are described below. Fields are rendered in a fixed order: # package first, then remaining fields alphabetically. sub-processors: # ── Kind 1: library-trace entry ─────────────────────────────────────────────── # Sourced automatically from a library-decision file in docs/library-decisions/. # To register a library as a sub-processor, add these fields to its frontmatter: # # is-sub-processor: true # data-sent: "user email and display name for transactional notifications" # region: EU # dpa-signed: true # sccs-required: false # contact: https://acme-sdk.example/privacy/dpa # # The generator reads package, version, and decision from the existing trace # frontmatter and merges the sub-processor fields automatically. - package: "@acme/notifications-sdk" # npm package name (natural sort key; must match package: in trace) contact: https://acme-sdk.example/privacy/dpa # DPA / privacy contact URL data-sent: "user email address and display name for transactional notification delivery" # Plain-language description of what data is transmitted decision: approved # Carry-through from library trace (approved | rejected | …) dpa-signed: true # Data Processing Agreement in place with this vendor region: EU # Primary data-residency region for this processor sccs-required: false # Standard Contractual Clauses required for data transfer? # Required when region is outside the EEA and no adequacy decision source: library-trace # Fixed value for entries sourced from a library decision file version: "^2.3.0" # npm version specifier from the library trace # ── Kind 2: manual entry ────────────────────────────────────────────────────── # For sub-processors that are NOT npm packages (REST APIs, SaaS integrations, # infrastructure providers, etc.), create compliance/sub-processors.manual.yml # and add entries there. The generator merges this file at emit time and injects # source: "manual" automatically. # # Format for compliance/sub-processors.manual.yml (simple YAML list, no header): # # - package: acme-email-service # version: REST API v3 # data-sent: "user email address and message content" # region: EU # dpa-signed: true # sccs-required: false # contact: https://acme-email.example/legal/dpa # decision: approved # # The "package" field is used as the sort key; use a slug-style identifier. - package: acme-email-service # Slug identifier for non-npm vendors (no @ prefix) contact: https://acme-email.example/legal/dpa data-sent: "user email address and message body for transactional email delivery" decision: approved dpa-signed: true region: EU sccs-required: false source: manual # Fixed value for entries sourced from sub-processors.manual.yml version: "REST API v3" # Non-npm version descriptor; use the API version or contract date