Sourcepoint Reporting API

REST API exposing aggregated dashboard data for GDPR and U.S. Multi-State Privacy campaigns, including pageview and message data filtered by period for dashboard and BI integration. Powers the Sourcepoint portal's analytics views.

OpenAPI Specification

sourcepoint-reporting-gdpr-openapi.yml Raw ↑
openapi: 3.0.2
info:
  title: Sourcepoint Reporting GDPR API
  version: 1.0.0
  description: Sourcepoint Technologies API for retrieving GDPR TCF dashboard report data.
servers:
- url: https://portal.sourcepoint.com/api/external/v1/reports
paths:
  /tcfv2/dashboard-v2-pv-users/{periodFilter}:
    post:
      tags:
      - GDPR reporting API
      description: Returns pageview data for properties that have implemented GDPR.<br><br>Include your
        API key in the provided **Header** field under **AUTHORIZATION** in the right-hand pane before
        trying your request.<br><br>In addition to the API key, you will also need to include `startDate`,
        `endDate`, and `siteId` in your request.
      summary: GDPR pageview data
      parameters:
      - $ref: '#/components/parameters/periodFilter'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/gdprRequestBody'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/gdprPvResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
  /tcfv2/dashboard-v2-messages/{periodFilter}:
    post:
      tags:
      - GDPR reporting API
      description: Returns message data for properties that have implemented GDPR.<br><br>Include your
        API key in the provided **Header** field under **AUTHORIZATION** in the right-hand pane before
        trying your request.<br><br>In addition to the API key, you will also need to include `startDate`,
        `endDate`, and `siteId` in your request.
      summary: GDPR message data
      parameters:
      - $ref: '#/components/parameters/periodFilter'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/gdprRequestBody'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/gdprMsgResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
components:
  schemas:
    gdprRequestBody:
      description: Request body for GDPR reporting data request
      type: object
      properties:
        startDate:
          type: string
          description: Start date for the periodization. Format YYYY-MM-DD
          example: YYYY-MM-DD
        endDate:
          type: string
          description: End date for the periodization. Format YYYY-MM-DD
          example: YYYY-MM-DD
        siteId:
          type: array
          description: Array of property IDs in the Sourcepoint portal that will be included in the report
            data.
          items:
            type: string
          example:
          - 22
          - 1584
        geo:
          type: array
          description: Array of alpha-2 country codes (ISO 3166-1) that will be included in the report
            data. Preset regions (EU, EEA, etc...) is *not* permitted. If geo property is omitted then
            *all* countries and regions will be included in the report data.
          items:
            type: string
          example:
          - DE
          - FR
        device:
          type: array
          items:
            type: string
            enum:
            - desktop
            - mobile
            - tablet
            - tv
          description: Array of devices that will be included in the report data. If device property is
            omitted then *all* devices will be included in report data.
          example:
          - desktop
          - mobile
        browser:
          type: array
          description: Array of browsers that will be included in the report data. If browser property
            is omitted then *all* browsers will be included in report data.
          items:
            type: string
            enum:
            - Amazon Silk
            - Android Browser
            - Bada
            - BlackBerry
            - Chrome
            - Chromium
            - Epiphany
            - Firefox
            - Focus
            - Generic
            - Googlebot
            - Internet Explorer
            - K-Meleon
            - Maxthon
            - Microsoft Edge
            - MZ Browser
            - NAVER Whale Browser
            - Opera
            - Opera Coast
            - PhantomJS
            - Puffin
            - QupZilla
            - Safari
            - Sailfish
            - Samsung Internet for Android
            - SeaMonkey
            - Sleipnir
            - Swing
            - Tizen
            - UC Browser
            - WebOS Browser
            - WeChat
            - Yandex Browser
          example:
          - Firefox
          - Chrome
        os:
          type: array
          description: Array of operating systems that will be included in the report data. If os property
            is omitted then *all* operating systems will be included in report data.
          items:
            type: string
            enum:
            - Windows
            - iOS
            - Windows Phone
            - MacOS
            - Android
            - WebOS
            - BlackBerry
            - Bada
            - Tizen
            - Linux
            - Chrome OS
            - Playstation 4
            - Roku
          example:
          - Windows
          - MacOS
        breakdownBy:
          type: array
          description: Array of different parameters that can be selected to breakdown/organize the returned
            results. Options include geo, operating system (ua_os), device (ua_device), browser (ua_browser)
          items:
            type: string
            enum:
            - geo
            - ua_os
            - ua_device
            - ua_browser
          example:
          - geo
      required:
      - startDate
      - endDate
      - siteId
    gdprPvResponse:
      type: object
      description: Successful response for GDPR pageview report request
      properties:
        performanceData:
          type: object
          description: Ignore. For internal troubleshooting.
          properties:
            total:
              type: integer
            propertiesResults:
              type: integer
        results:
          type: array
          items:
            type: object
            properties:
              ymd:
                type: string
                description: Year, month and day. Returned only for Daily periodization
                example: '2023-09-02T00:00:00.000Z'
              geo:
                type: string
                description: Geographic region to which the results pertain. Returned when request uses
                  geo in the breakdownBy parameter
                example: DE
              ua_os:
                type: string
                description: Operating system type to which the results pertain. Returned when request
                  uses ua_os in the breakdownBy parameter
                example: macOS
              ua_device:
                type: string
                description: Device type to which the results pertain. Returned when request uses ua_device
                  in the breakdownBy parameter
                example: desktop
              ua_browser:
                type: string
                description: Browser type to which the results pertain. Returned when request uses ua_browser
                  in the breakdownBy parameter
                example: Chrome
              site_id:
                type: string
                description: Property ID within the Sourcepoint portal
                example: 12345
              domain:
                type: string
                description: Domain reported upon
                example: '"www.sourcepoint.com"'
              pv:
                type: string
                description: Number of pageviews for the given periodization
                example: 784
              pv_status_opt_in_all:
                type: string
                description: Page views across users who have accepted all purposes and vendors on the
                  most recent version of the vendor list.
                example: 218
              pv_status_opt_out_all:
                type: string
                description: Page views across users who have rejected all purposes and vendors across
                  any version of the vendor list.
                example: 51
              pv_status_li_only:
                type: string
                description: Page views across users who selected Save and Exit across any version of
                  the vendor list if legitimate interest is a legal basis for at least one of your purposes.
                example: 0
              pv_status_other:
                type: string
                description: Page views across users who have made choices on the privacy manager that
                  do not fall into the categories Accept All, Reject All, Previous Accept All or, Legitimate
                  Interest Only on any version of the vendor list.
                example: 0
              pv_default_consent_only:
                type: string
                description: Page views across users who have not made any choices on the consent banner
                  on any version of the vendor list.
                example: 496
              pv_status_previous_optin_all:
                type: string
                description: Page views across users who have accepted all purposes and vendors on a previous
                  version of the vendor list. These users may be eligible to receive a re-consent experience.
                example: 0
              unique_users:
                type: string
                description: Total number of users for the selected properties in the configured periodization.
                example: 372
              user_status_opt_in_all:
                type: string
                description: Unique users who have accepted all purposes and vendors on the most recent
                  version of the vendor list.
                example: 68
              user_status_opt_out_all:
                type: string
                description: Unique users who have rejected all purposes and vendors across any version
                  of the vendor list.
                example: 33
              user_status_li_only:
                type: string
                description: Unique users who have clicked Save and Exit across any version of the vendor
                  list if you have legitimate interest as a legal basis for at least one of your purposes.
                example: 0
              user_status_other:
                type: string
                description: Unique users who have made choices on the privacy manager that do not fall
                  into the categories Accept All, Reject All, Previous Accept All or, Legitimate Interest
                  Only on any version of the vendor list.
                example: 0
              user_default_consent_only:
                type: string
                description: Unique users who have not made any choices on the consent banner on any version
                  of the vendor list.
                example: 273
              user_status_previous_optin_all:
                type: string
                description: Unique users who have accepted all purposes and vendors on a previous version
                  of the vendor list. These users may be eligible to receive a re-consent experience.
                example: 0
    gdprMsgResponse:
      type: object
      description: Successful response for GDPR message report request
      properties:
        performanceData:
          type: object
          description: Ignore. For internal troubleshooting.
          properties:
            total:
              type: integer
            messagesResults:
              type: integer
        results:
          type: array
          items:
            type: object
            properties:
              ymd:
                type: string
                description: Year, month and day. Returned only for Daily periodization
                example: '2023-09-02T00:00:00.000Z'
              geo:
                type: string
                description: Geographic region to which the results pertain. Returned when request uses
                  geo in the breakdownBy parameter
                example: DE
              ua_os:
                type: string
                description: Operating system type to which the results pertain. Returned when request
                  uses ua_os in the breakdownBy parameter
                example: macOS
              ua_device:
                type: string
                description: Device type to which the results pertain. Returned when request uses ua_device
                  in the breakdownBy parameter
                example: desktop
              ua_browser:
                type: string
                description: Browser type to which the results pertain. Returned when request uses ua_browser
                  in the breakdownBy parameter
                example: Chrome
              site_id:
                type: string
                description: Property ID within the Sourcepoint portal
                example: 12345
              domain:
                type: string
                description: Domain reported upon
                example: '"www.sourcepoint.com"'
              messaged_users:
                type: string
                description: Unique users within the periodization who received a message.
                example: 3
              message_id:
                type: string
                description: Message ID. Typically will be the ID for the first layer message but can
                  be the ID of a privacy manager if consent action was given from a privacy manager without
                  viewing first layer message first.
                example: 987654
              privacy_manager_id:
                type: string
                description: Returned only when consent action was given from a privacy manager. If consent
                  action was given from a privacy manager without viewing a first layer message first
                  then message_id and privacy_manager_id will be the same.
                example: 123456
              msg_name:
                type: string
                description: Message name
                example: '"2.20.21 Desktop TCF v2 Notice"'
              msg_type:
                type: string
                description: 'Possible values: message-v1 | message-v2 | privacy-manager. message-v1 response
                  is a legacy response while message-v2 is the first layer message'
                example: '"message-v2"'
              msg_category_type:
                type: string
                description: The campaign type
                example: '"gdpr"'
              msg_sub_category_type:
                type: string
                description: 'The type of message delivered. Possible values: notice | privacy_manager
                  | subject_access_request | dsar | notice-tcf-v2 | notice-native | privacy_manager_ott
                  | notice_non_iab | privacy_manager_non_iab | ios | ccpa_ott | ccpa_pm | custom | native-ott'
                example: '"notice-tcf-v2"'
              total_actions:
                type: string
                description: Total number of end-user actions
                example: 3
              adjusted_actions:
                type: string
                description: Special processing to fix an issue
                example: 3
              message_opt_in_all:
                type: string
                description: Unique users within the periodization who received a message and then accepted
                  all vendors and purposes.
                example: 3
              message_opt_out_all:
                type: string
                description: Unique users within the periodization who received a message and then rejected
                  all vendors and purposes.
                example: 0
              message_li_only:
                type: string
                description: Unique users within the periodization who received a message and then clicked
                  Save and Exit on the privacy manager if you have legitimate interest as a legal basis
                  for at least one of your purposes.
                example: 0
              message_other:
                type: string
                description: Unique users within the periodization who received a message and then made
                  choices on the privacy manager that do not fall into the categories Accept All, Reject
                  All, Previous Accept All or, Legitimate Interest Only.
                example: 0
              message_previous_optin_to_all:
                type: string
                description: Unique users within the periodization who received a message and then made
                  choices on the privacy manager that do not fall into the categories Accept All, Reject
                  All, Previous Accept All or, Legitimate Interest Only. Property should always return
                  0.
                example: 0
  parameters:
    periodFilter:
      name: periodFilter
      in: path
      description: '- **Daily**: The maximum duration of this period is 31 days between the `startDate`
        and `endDate`

        - **Weekly**: A week is a period of 7 days that starts on a Monday and ends on a Sunday. If the
        requested `startDate` is not a Monday, Sourcepoint will backdate the reporting period to the Monday
        for the week in its reporting aggregation.

        - **Monthly**: A month begins on the first day of that month. If the requested `startDate` is
        not the first day of the month, Sourcepoint will backdate the reporting period to the first day
        of the month in its reporting aggregation.

        '
      required: true
      schema:
        type: string
        enum:
        - daily
        - weekly
        - monthly
  responses:
    UnauthorizedError:
      description: API key is missing or invalid
      headers:
        WWW-Authenticate:
          schema:
            type: string
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY
security:
- ApiKeyAuth: []
x-readme:
  explorer-enabled: true
  proxy-enabled: true