{
  "disclosures": [
    {
      "identifier": "paistry_uid",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*"
      ],
      "purposes": [
        1,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10
      ],
      "description": "Visitor number on partner websites, written by the PAISTRY loader; only with consent."
    },
    {
      "identifier": "paistry_consent_state",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*"
      ],
      "purposes": [],
      "specialPurposes": [
        3
      ],
      "description": "Last consent state the loader saw on the partner website."
    },
    {
      "identifier": "paistry_uid_at",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*"
      ],
      "purposes": [],
      "specialPurposes": [
        3
      ],
      "description": "When the visitor decided; the visitor number ends 395 days later."
    },
    {
      "identifier": "paistry_consent_state_at",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*"
      ],
      "purposes": [],
      "specialPurposes": [
        3
      ],
      "description": "When the consent state was stored; it ends 395 days later."
    },
    {
      "identifier": "paistry_consent_source",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*"
      ],
      "purposes": [],
      "specialPurposes": [
        3
      ],
      "description": "Where the last consent decision came from (the site's consent manager or the agent's own question)."
    },
    {
      "identifier": "paistry_test",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*"
      ],
      "purposes": [],
      "specialPurposes": [
        1
      ],
      "description": "Marks a PAISTRY test device so its visits are not counted as readers; never set for readers."
    },
    {
      "identifier": "paistry_tracker_sid*",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*"
      ],
      "purposes": [
        7,
        8
      ],
      "specialPurposes": [
        1,
        2
      ],
      "description": "Session number of one visit on the partner website (ends 30 minutes after the last activity)."
    },
    {
      "identifier": "paistry:overlay-preset:*",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*"
      ],
      "purposes": [],
      "specialPurposes": [
        2
      ],
      "description": "The position of the agent window the visitor chose on the partner website, for this tab."
    },
    {
      "identifier": "paistry:reopen",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*"
      ],
      "purposes": [],
      "specialPurposes": [
        2
      ],
      "description": "Reopens the agent after a link in the agent leads to another page of the same partner website."
    },
    {
      "identifier": "paistry:asg:*",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*"
      ],
      "purposes": [
        11
      ],
      "specialPurposes": [
        2
      ],
      "description": "Suggested questions for the article being read, cached for this tab."
    },
    {
      "identifier": "paistry_user_id",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [
        1,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10
      ],
      "description": "Visitor number on PAISTRY agent pages; only after consent."
    },
    {
      "identifier": "paistry_user_id_at",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [],
      "specialPurposes": [
        3
      ],
      "description": "When the visitor said yes; the visitor number ends 395 days later."
    },
    {
      "identifier": "paistry_loader_uid",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [
        1,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10
      ],
      "description": "Copy of the visitor number for this tab; only with consent."
    },
    {
      "identifier": "paistry_conversational_consent",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [],
      "specialPurposes": [
        3
      ],
      "description": "The visitor's answer to the consent question in the agent."
    },
    {
      "identifier": "paistry_consent_asked",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [],
      "specialPurposes": [
        3
      ],
      "description": "The consent question was already asked in this visit."
    },
    {
      "identifier": "paistry_session_id:*",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [
        7,
        8
      ],
      "specialPurposes": [
        1,
        2
      ],
      "description": "Session number that holds a conversation together while the tab is open."
    },
    {
      "identifier": "paistry_loader_sid",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [
        7,
        8
      ],
      "specialPurposes": [
        1,
        2
      ],
      "description": "Session number handed over by the loader on a partner website."
    },
    {
      "identifier": "paistry_view_id",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [
        8
      ],
      "description": "Number of the current page view, so it is counted once."
    },
    {
      "identifier": "paistry_session_has_page_view",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [
        8
      ],
      "description": "This visit already counted its first page view."
    },
    {
      "identifier": "paistry_entry_tap:*",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [
        7,
        8
      ],
      "description": "A question tapped on a link into the agent was already counted in this visit, so a reload does not count it twice; for the tab."
    },
    {
      "identifier": "paistry_referer",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [
        7,
        8
      ],
      "description": "The partner page the agent was opened from."
    },
    {
      "identifier": "paistry_landing_page",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [
        7,
        8
      ],
      "description": "First page of this visit."
    },
    {
      "identifier": "paistry_utm_*",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [
        7
      ],
      "description": "Campaign parameters of the link this visit came from."
    },
    {
      "identifier": "cupcake-syrup-state-v2:*",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [],
      "specialPurposes": [
        2
      ],
      "description": "Former key of the conversation history; no longer written, and the agent removes it."
    },
    {
      "identifier": "cupcake:cache:*",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [],
      "specialPurposes": [
        2
      ],
      "description": "Cached configuration and answers for this tab."
    },
    {
      "identifier": "cupcake:view-restore-v2*",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [],
      "specialPurposes": [
        2
      ],
      "description": "Restores the view after the embedding page reloads; 2 minutes."
    },
    {
      "identifier": "cupcake:feed-scroll:*",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [],
      "specialPurposes": [
        2
      ],
      "description": "Scroll position in the feed; at most 30 minutes."
    },
    {
      "identifier": "cupcake:chunk-reload:*",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [],
      "specialPurposes": [
        2
      ],
      "description": "Reloads the agent once after an update."
    },
    {
      "identifier": "cupcake-preload-reload",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [],
      "specialPurposes": [
        2
      ],
      "description": "Reloads the agent once after an update."
    },
    {
      "identifier": "paistry_onboarding_dismissed:*",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [],
      "specialPurposes": [
        2
      ],
      "description": "The welcome card was closed in this visit."
    },
    {
      "identifier": "paistry_welcome_video_dismissed:*",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [],
      "specialPurposes": [
        2
      ],
      "description": "The welcome video was closed in this visit."
    },
    {
      "identifier": "paistry.videoChatHint.shown",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [],
      "specialPurposes": [
        2
      ],
      "description": "The hint next to the video was shown in this visit."
    },
    {
      "identifier": "cupcake-motion-quiz-pulse",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [],
      "specialPurposes": [
        2
      ],
      "description": "The quiz animation was shown in this visit."
    },
    {
      "identifier": "cupcake-product-view",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [],
      "specialPurposes": [
        2
      ],
      "description": "The visitor's choice of product list or grid; kept until deleted."
    },
    {
      "identifier": "cupcake-color-mode",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [],
      "specialPurposes": [
        2
      ],
      "description": "The visitor's light or dark mode; kept until deleted."
    },
    {
      "identifier": "cupcake-syrup-state-v3:*",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [],
      "specialPurposes": [
        2
      ],
      "description": "Conversation history, so a reload does not lose it (only where the agent offers it): for the tab, or 395 days from the visitor's consent to be recognised."
    },
    {
      "identifier": "cupcake-chat-state-v1:*",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [],
      "specialPurposes": [
        2
      ],
      "description": "Conversation history of the chat view, kept like cupcake-syrup-state-v3."
    },
    {
      "identifier": "cupcake-watchlist-v1:*",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [],
      "specialPurposes": [
        2
      ],
      "description": "Products the visitor saved or recently opened in the agent's product list (only where the agent offers it), kept like cupcake-syrup-state-v3."
    },
    {
      "identifier": "cupcake-about-seen:*",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [],
      "specialPurposes": [
        2
      ],
      "description": "The note about this agent was already shown, so it does not open by itself on every visit; kept until deleted."
    },
    {
      "identifier": "cupcake-intro-seen:*",
      "type": "web",
      "maxAgeSeconds": null,
      "domains": [
        "*.paistry.tech"
      ],
      "purposes": [],
      "specialPurposes": [
        2
      ],
      "description": "The short intro of this agent was already shown, so it does not start by itself again: kept for the visit (session), or until deleted where the agent shows its intro only once per device."
    }
  ],
  "domains": [
    {
      "domain": "paistry.tech",
      "use": "Company website, privacy notice and disclosures."
    },
    {
      "domain": "cupcake.paistry.tech",
      "use": "Delivers the PAISTRY agents, standalone and embedded as an iframe on partner websites."
    },
    {
      "domain": "stroodl.paistry.tech",
      "use": "Stroodl, PAISTRY's own shopping advisor page."
    },
    {
      "domain": "loader.paistry.tech",
      "use": "Delivers the loader script that embeds the agent on partner websites."
    },
    {
      "domain": "api.paistry.tech",
      "use": "Receives questions and usage events and returns the agent's answers."
    }
  ],
  "sdks": []
}
