Scope3 Measure API

The Measure API from Scope3 — 1 operation(s) for measure.

OpenAPI Specification

scope3-measure-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  version: 1.0.0
  title: AI Impact Measurement Measure API
security:
- bearerAuth: []
tags:
- name: Measure
paths:
  /measure:
    post:
      summary: Emissions Measurement
      description: Calculates the carbon footprint for advertising media
      operationId: measure
      security:
      - bearerAuth: []
      parameters:
      - in: query
        name: includeRows
        description: Whether to include all rows in the response
        schema:
          type: boolean
      - in: query
        name: latest
        description: Whether to use latest available data
        schema:
          type: boolean
      - in: query
        name: fields
        description: Comma separated list of fields to include in the row level response
        schema:
          type: array
          items:
            $ref: '#/components/schemas/MeasureResponseFields'
      - in: query
        name: framework
        description: Default is scope3
        schema:
          $ref: '#/components/schemas/Framework'
      requestBody:
        description: Rows of delivered media to measure
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MeasureRequest'
      responses:
        '200':
          description: Success response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MeasureResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      tags:
      - Measure
components:
  schemas:
    Framework:
      type: string
      enum:
      - scope3
      - scope3-consumer-device
      - gmsf
      example: scope3
      description: GMSF framework support is currently in beta.
    BuyingMethod:
      type: string
      enum:
      - programmatic-open
      - programmatic-pmp
      - programmatic-guaranteed
      - direct
      - direct-takeover
      example: programmatic-open
      description: The method used to buy the impressions
    DailyDeliveryRow:
      type: object
      required:
      - utcDatetime
      properties:
        rowIdentifier:
          type: string
          example: nytimes
          description: An identifier for this row to be used in the response.
        impressions:
          type: integer
          example: 13821
        utcDatetime:
          $ref: '#/components/schemas/DatetimeInput'
        inventoryId:
          $ref: '#/components/schemas/InventoryIdentifier'
        appStore:
          $ref: '#/components/schemas/AppStore'
        country:
          $ref: '#/components/schemas/CountryInput'
        region:
          $ref: '#/components/schemas/RegionInput'
        deviceType:
          $ref: '#/components/schemas/DeviceTypeInput'
        channel:
          $ref: '#/components/schemas/Channel'
        network:
          $ref: '#/components/schemas/NetworkInput'
        creative:
          $ref: '#/components/schemas/CreativeInput'
        sellerDomain:
          $ref: '#/components/schemas/SellerDomain'
        sellerName:
          $ref: '#/components/schemas/SellerName'
        buyingMethod:
          $ref: '#/components/schemas/BuyingMethod'
        dealId:
          $ref: '#/components/schemas/DealId'
        globalPlacementId:
          type: string
          description: This is a publisher-specified placement identifier that is passed unchanged by all supply-side platforms.
        venueCategory:
          $ref: '#/components/schemas/VenueCategory'
        plays:
          $ref: '#/components/schemas/Plays'
        views:
          $ref: '#/components/schemas/Views'
        playDuration:
          $ref: '#/components/schemas/PlayDuration'
        mediaOwner:
          $ref: '#/components/schemas/MediaOwner'
        compensationRate:
          type: number
          format: double
          example: 0.05
          description: The rate at which emissions are compensated. Greater than or equal to zero. If not provided, the reporting customer's compensation rules will be used.
        isApp:
          type: boolean
          example: true
          description: Whether the inventory is an app.
        broadcastMethod:
          $ref: '#/components/schemas/BroadcastMethod'
        uniqueReach:
          type: integer
          example: 203043
          description: Number of unique individuals reached.
        averageFrequency:
          type: number
          example: 176
          description: Average number of times each individual has seen the ad.
        displayDurationDays:
          type: integer
          example: 30
          description: Number of days the classic-ooh ad was displayed.
        campaignStartDate:
          $ref: '#/components/schemas/DatetimeInput'
        campaignEndDate:
          $ref: '#/components/schemas/DatetimeInput'
        shareOfTimePct:
          type: number
          format: double
          example: 50
          description: Share of time the ad was visible on the classic-ooh screen as a percentage (0-100).
        physicalWidthMeters:
          type: number
          format: double
          example: 2.5
          description: Physical width of the classic-ooh ad in meters.
        physicalHeightMeters:
          type: number
          format: double
          example: 3
          description: Physical height of the classic-ooh ad in meters.
        printMedium:
          $ref: '#/components/schemas/PrintMedium'
        printCirculations:
          type: integer
          example: 50000
          description: Number of copies distributed for the print campaign.
    Error:
      type: object
      required:
      - message
      properties:
        message:
          type: string
    Scope3TechManipulationEmissionsBreakdown:
      type: object
      required:
      - total
      - breakdown
      properties:
        total:
          type: number
          format: double
          example: 0.15
          description: Total tech manipulation emissions in grams of CO₂e
        breakdown:
          $ref: '#/components/schemas/Scope3TechManipulationEmissionsBreakdownDetails'
    MeasureRequest:
      type: object
      required:
      - rows
      properties:
        rows:
          type: array
          items:
            $ref: '#/components/schemas/DailyDeliveryRow'
    Metric:
      type: string
      enum:
      - impressions
      - rows
      - uniqueCount
    GMSFMeasureResponseRowEmissionsBreakdown:
      type: object
      properties:
        compensated:
          $ref: '#/components/schemas/GMSFCompensatedEmissionsBreakdown'
        adSelection:
          $ref: '#/components/schemas/GMSFAdSelectionEmissionsBreakdown'
        creativeDelivery:
          $ref: '#/components/schemas/GMSFCreativeDeliveryEmissionsBreakdown'
        techManipulation:
          $ref: '#/components/schemas/GMSFTechManipulationEmissionsBreakdown'
        disposal:
          $ref: '#/components/schemas/GMSFDisposalEmissionsBreakdown'
    MeasureResponse:
      type: object
      required:
      - totalEmissions
      - totalEmissionsBreakdown
      - coverage
      properties:
        requestId:
          $ref: '#/components/schemas/RequestId'
        totalEmissions:
          type: number
          format: double
          example: 2823.9
          description: The total emissions in grams of CO₂e
        rows:
          description: Only included if the includeRows parameter is true.
          type: array
          items:
            $ref: '#/components/schemas/CalculateOutputRow'
        policies:
          type: array
          items:
            $ref: '#/components/schemas/SummaryPolicy'
        totalEmissionsBreakdown:
          $ref: '#/components/schemas/MeasureResponseEmissionsBreakdown'
        coverage:
          $ref: '#/components/schemas/MeasureResponseCoverage'
    VerifiedSummaryMetric:
      type: object
      required:
      - metric
      - modeled
      - unknown
      properties:
        metric:
          $ref: '#/components/schemas/Metric'
        modeled:
          type: integer
          example: 8132
        unknown:
          type: integer
          example: 48
        verifiedRate:
          type: number
          format: double
          example: 25
    GMSFCompensatedEmissions:
      type: object
      required:
      - emissions
      - provider
      properties:
        emissions:
          type: number
          format: double
          example: 0.15
          description: Emissions compensated by the provider in grams of CO₂e.
        provider:
          type: string
          example: Carbon Direct
    CoverageDetails:
      type: object
      required:
      - value
      properties:
        value:
          type: string
        verified:
          type: boolean
          example: true
    Scope3MediaDistributionEmissionsBreakdownDetails:
      type: object
      properties:
        dataTransfer:
          $ref: '#/components/schemas/Emissions'
        corporate:
          $ref: '#/components/schemas/Emissions'
        storageAndTransport:
          $ref: '#/components/schemas/Emissions'
    GMSFDisposalEmissionsBreakdown:
      type: object
      required:
      - total
      - breakdown
      properties:
        total:
          type: number
          format: double
          example: 0.15
          description: Total tech manipulation emissions in grams of CO₂e
        breakdown:
          $ref: '#/components/schemas/GMSFDisposalEmissionsBreakdownDetails'
    Scope3ConsumerDeviceCompensatedEmissions:
      type: object
      required:
      - emissions
      - provider
      properties:
        emissions:
          type: number
          format: double
          example: 0.15
          description: Emissions compensated by the provider in grams of CO₂e.
        provider:
          type: string
          example: Carbon Direct
    Scope3MeasureResponseEmissionsBreakdownDetails:
      type: object
      properties:
        mediaDistribution:
          type: number
          format: double
          example: 0.15
          description: Total media distribution emissions in grams of CO₂e
        adSelection:
          type: number
          format: double
          example: 0.15
          description: Total ad selection emissions in grams of CO₂e
        creativeDelivery:
          type: number
          format: double
          example: 0.15
          description: Total creative delivery emissions in grams of CO₂e
        compensated:
          type: number
          format: double
          example: 0.15
          description: Total compensated emissions in grams of CO₂e
        techManipulation:
          type: number
          format: double
          example: 0.15
          description: Total tech manipulation emissions in grams of CO₂e
        disposal:
          type: number
          format: double
          example: 0.15
          description: Total disposal emissions in grams of CO₂e
    Scope3CreativeDeliveryEmissionsBreakdown:
      type: object
      required:
      - total
      - breakdown
      properties:
        total:
          type: number
          format: double
          example: 0.15
          description: Total creative Delivery emissions in grams of CO₂e
        breakdown:
          $ref: '#/components/schemas/Scope3CreativeDeliveryEmissionsBreakdownDetails'
    AdFormat:
      type: string
      example: generic-instream-video
      description: The identifier for either a platform ad format or vendor-provided ad format
    Channel:
      type: string
      enum:
      - app
      - web
      - streaming-video
      - social
      - digital-audio
      - dooh
      - ctv-bvod
      - linear-tv
      - search
      - traditional-radio
      - classic-ooh
      - print
      example: web
      description: If not provided, we will infer the channel from the the inventory id.  'digital-audio', 'dooh' channels are currently in beta.
    GMSFMeasureResponseEmissionsBreakdownDetails:
      type: object
      properties:
        adSelection:
          type: number
          format: double
          example: 0.15
          description: Total ad selection emissions in grams of CO₂e
        creativeDelivery:
          type: number
          format: double
          example: 0.15
          description: Total creative delivery emissions in grams of CO₂e
        compensated:
          type: number
          format: double
          example: 0.15
          description: Total compensated emissions in grams of CO₂e
        techManipulation:
          type: number
          format: double
          example: 0.15
          description: Total tech manipulation emissions in grams of CO₂e
        disposal:
          type: number
          format: double
          example: 0.15
          description: Total disposal emissions in grams of CO₂e
    Scope3ConsumerDeviceCreativeDeliveryEmissionsBreakdown:
      type: object
      required:
      - total
      - breakdown
      properties:
        total:
          type: number
          format: double
          example: 0.15
          description: Total creative Delivery emissions in grams of CO₂e
        breakdown:
          $ref: '#/components/schemas/Scope3ConsumerDeviceCreativeDeliveryEmissionsBreakdownDetails'
    DealId:
      type: string
      example: '12345'
      description: The identifier of the deal being bought
    MeasureResponseRowEmissions:
      type: object
      required:
      - framework
      - breakdown
      properties:
        framework:
          $ref: '#/components/schemas/Framework'
        breakdown:
          oneOf:
          - $ref: '#/components/schemas/Scope3MeasureResponseRowEmissionsBreakdown'
          - $ref: '#/components/schemas/Scope3ConsumerDeviceMeasureResponseRowEmissionsBreakdown'
          - $ref: '#/components/schemas/GMSFMeasureResponseRowEmissionsBreakdown'
    GMSFCompensatedEmissionsBreakdownDetails:
      type: object
      required:
      - compensation
      properties:
        compensation:
          $ref: '#/components/schemas/GMSFCompensatedEmissions'
    GMSFCreativeDeliveryEmissionsBreakdown:
      type: object
      required:
      - total
      - breakdown
      properties:
        total:
          type: number
          format: double
          example: 0.15
          description: Total creative Delivery emissions in grams of CO₂e
        breakdown:
          $ref: '#/components/schemas/GMSFCreativeDeliveryEmissionsBreakdownDetails'
    GMSFTechManipulationEmissionsBreakdownDetails:
      type: object
      properties:
        creativeStorage:
          $ref: '#/components/schemas/Emissions'
        physicalProduction:
          $ref: '#/components/schemas/Emissions'
        creativeTranscoding:
          $ref: '#/components/schemas/Emissions'
    GMSFAdSelectionEmissionsBreakdownDetails:
      type: object
      properties:
        adPlatform:
          $ref: '#/components/schemas/Emissions'
        dataTransfer:
          $ref: '#/components/schemas/Emissions'
    Scope3ConsumerDeviceMediaDistributionEmissionsBreakdownDetails:
      type: object
      properties:
        dataTransfer:
          $ref: '#/components/schemas/Emissions'
        corporate:
          $ref: '#/components/schemas/Emissions'
        consumerDevice:
          $ref: '#/components/schemas/Emissions'
        storageAndTransport:
          $ref: '#/components/schemas/Emissions'
    Scope3DisposalEmissionsBreakdownDetails:
      type: object
      properties:
        adMaterial:
          $ref: '#/components/schemas/Emissions'
        other:
          $ref: '#/components/schemas/Emissions'
        media:
          $ref: '#/components/schemas/Emissions'
    MeasureResponseCoverage:
      type: object
      required:
      - totalImpressions
      - totalRows
      properties:
        totalImpressions:
          $ref: '#/components/schemas/SummaryMetric'
        totalRows:
          $ref: '#/components/schemas/SummaryMetric'
        sellers:
          $ref: '#/components/schemas/VerifiedSummaryMetric'
        properties:
          $ref: '#/components/schemas/VerifiedSummaryMetric'
        channels:
          $ref: '#/components/schemas/MatchSummaryMetric'
        mediaOwners:
          $ref: '#/components/schemas/VerifiedSummaryMetric'
        adFormats:
          $ref: '#/components/schemas/AdFormatSummaryMetric'
    PlayDuration:
      type: number
      format: double
      example: 10
      description: 'How duration in seconds that an ad was on screen. (Supported Channels: DOOH, Linear TV)'
    Plays:
      type: integer
      example: 10
      description: 'How many times an ad was shown. (Supported Channels: DOOH, Linear TV)'
    NetworkInput:
      type: string
      enum:
      - fixed
      - mobile
      example: fixed
      description: The networking connection used by the consumer device
    DeviceTypeInput:
      type: string
      enum:
      - phone
      - tablet
      - pc
      - tv
      - smart-speaker
      - radio
      example: pc
      description: The consumer device. If not provided, we will infer the device type from the the channel. smart-speaker is only allowed for digital-audio channel radio is only allowed for traditional-radio channel
    Policy:
      type: object
      required:
      - policy
      - policyOwner
      - compliant
      properties:
        policy:
          type: string
          example: climateRisk
          description: Policy that was matched.
        policyOwner:
          type: string
          example: Scope3
          description: Owner of the policy that was matched.
        compliant:
          type: boolean
          example: true
          description: Whether the calculated emissions are in compliance with the policy or not.
    SummaryMetric:
      type: object
      required:
      - metric
      - modeled
      - skipped
      properties:
        metric:
          $ref: '#/components/schemas/Metric'
        modeled:
          type: integer
          example: 8132
        skipped:
          type: integer
          example: 48
    ImpressionsCoverageDetails:
      type: object
      required:
      - modeled
      - skipped
      - processed
      properties:
        modeled:
          type: integer
          example: 80
          description: Number of impressions that were modeled for this row for this row.
        skipped:
          type: integer
          example: 10
          description: Number of impressions that were skipped for this row.
        processed:
          type: integer
          example: 80
          description: Number of impressions that were processed for this row. For DOOH channel this is derived from plays if impressions are not provided. For all other channels and cases this is equal to the input impressions.
    Scope3ConsumerDeviceMeasureResponseEmissionsBreakdownDetails:
      type: object
      properties:
        mediaDistribution:
          type: number
          format: double
          example: 0.15
          description: Total media distribution emissions in grams of CO₂e
        adSelection:
          type: number
          format: double
          example: 0.15
          description: Total ad selection emissions in grams of CO₂e
        creativeDelivery:
          type: number
          format: double
          example: 0.15
          description: Total creative delivery emissions in grams of CO₂e
        compensated:
          type: number
          format: double
          example: 0.15
          description: Total compensated emissions in grams of CO₂e
        techManipulation:
          type: number
          format: double
          example: 0.15
          description: Total tech manipulation emissions in grams of CO₂e
        disposal:
          type: number
          format: double
          example: 0.15
          description: Total disposal emissions in grams of CO₂e
    MeasureResponseRowCoverage:
      type: object
      required:
      - impressions
      properties:
        impressions:
          $ref: '#/components/schemas/ImpressionsCoverageDetails'
        seller:
          $ref: '#/components/schemas/CoverageDetails'
        property:
          $ref: '#/components/schemas/CoverageDetails'
        channel:
          $ref: '#/components/schemas/CoverageDetails'
        mediaOwner:
          $ref: '#/components/schemas/CoverageDetails'
        venueCategory:
          $ref: '#/components/schemas/CoverageDetails'
        adFormat:
          $ref: '#/components/schemas/AdFormatCoverageDetails'
        supplyGraph:
          $ref: '#/components/schemas/SupplyGraph'
        compensationProvider:
          $ref: '#/components/schemas/CoverageDetails'
        inventoryClassification:
          $ref: '#/components/schemas/CoverageDetails'
    CreativeVendor:
      type: string
      example: YouTube
      description: The name of vendor organization that owns the ad format. Should not be provided for platform ad formats.
    Scope3ConsumerDeviceAdSelectionEmissionsBreakdown:
      type: object
      required:
      - total
      - breakdown
      properties:
        total:
          type: number
          format: double
          example: 0.15
          description: Total ad selection emissions in grams of CO₂e
        breakdown:
          $ref: '#/components/schemas/Scope3ConsumerDeviceAdSelectionEmissionsBreakdownDetails'
    SellerDomain:
      type: string
      example: xandr.com
      description: Canonical domain of the seller entity that sold the media
    DatetimeInput:
      type: string
      description: 'Dates must be in the past (i.e. prior to today) in the UTC timezone (Supported Formats: YYYY-MM-DD, YYYYMMDD, YYYY/MM/DD,  YYYYMMddThh:mm:ss.s, YYYYMMddThh:mm:ss, yyyy/mm/ddThh:mm:ss.s, yyyy/mm/ddThh:mm:ss, yyyy-mm-ddThh:mm:ss.s,yyyy-mm-ddThh:mm:ss)'
      example: '2023-03-01'
    Scope3CompensatedEmissions:
      type: object
      required:
      - emissions
      - provider
      properties:
        emissions:
          type: number
          format: double
          example: 0.15
          description: Emissions compensated by the provider in grams of CO₂e.
        provider:
          type: string
          example: Carbon Direct
    AdFormatSummaryMetric:
      type: object
      required:
      - metric
      - vendorSpecific
      - generic
      - unknown
      properties:
        metric:
          $ref: '#/components/schemas/Metric'
        vendorSpecific:
          type: integer
          example: 8
        generic:
          type: integer
          example: 25
        unknown:
          type: integer
          example: 2
    Views:
      type: integer
      example: 10
      description: The number of views counted.
    GMSFDisposalEmissionsBreakdownDetails:
      type: object
      properties:
        adMaterial:
          $ref: '#/components/schemas/Emissions'
        other:
          $ref: '#/components/schemas/Emissions'
    Scope3MediaDistributionEmissionsBreakdown:
      type: object
      required:
      - total
      - breakdown
      properties:
        total:
          type: number
          format: double
          example: 0.15
          description: Total media distribution emissions in grams of CO₂e
        breakdown:
          $ref: '#/components/schemas/Scope3MediaDistributionEmissionsBreakdownDetails'
    InventoryIdentifier:
      type: string
      example: nytimes.com
      description: This field can accept either a domain, app id, or screen id
    GMSFCompensatedEmissionsBreakdown:
      type: object
      required:
      - total
      - breakdown
      properties:
        total:
          type: number
          format: double
          example: 0.15
          description: Total compensated emissions in grams of CO₂e
        breakdown:
          $ref: '#/components/schemas/GMSFCompensatedEmissionsBreakdownDetails'
    Scope3CompensatedEmissionsBreakdownDetails:
      type: object
      required:
      - compensation
      properties:
        compensation:
          $ref: '#/components/schemas/Scope3CompensatedEmissions'
    CountryInput:
      type: string
      description: 'This is the country ISO 3166-2 alpha-2 code, alpha-3 code, or a country name e.g. US, USA, United States. (Supported Languages: English)'
      example: US
    RequestId:
      type: string
      description: Auto generated request identifier
    MatchSummaryMetric:
      type: object
      required:
      - metric
      - modeled
      - unknown
      - deprecated
      properties:
        metric:
          $ref: '#/components/schemas/Metric'
        modeled:
          type: integer
          example: 5
        unknown:
          type: integer
          example: 2
        deprecated:
          type: integer
          example: 1
    Scope3ConsumerDeviceCompensatedEmissionsBreakdownDetails:
      type: object
      required:
      - compensation
      properties:
        compensation:
          $ref: '#/components/schemas/Scope3ConsumerDeviceCompensatedEmissions'
    CreativeInput:
      type: object
      properties:
        adFormat:
          $ref: '#/components/schemas/AdFormat'
        vendor:
          $ref: '#/components/schemas/CreativeVendor'
        totalImageDataTransferBytes:
          type: integer
          example: 150000
          description: Total bytes for the data transfer for the image itself for all impressions, ideally measured by the CDN
        imageSizesPixels:
          type: array
          items:
            type: string
          example:
          - 300x250
          - 970x250
          description: Array of images width x height of creative (basic image only)
        renderedWidthPixels:
          type: integer
          example: 300
          description: Width of the rendered image or video in pixels
        renderedHeightPixels:
          type: integer
          example: 250
          description: Height of the rendered image or video in pixels
        totalAudioDataTransferBytes:
          type: integer
          example: 15
          description: Total bytes for the data transfer for the core audio asset for all impressions, ideally measured by the CDN
        audioDurationSeconds:
          type: number
          format: double
          example: 90.1
          description: Average audio duration in seconds for a single impression
        totalVideoDataTransferBytes:
          type: integer
          example: 72800
          description: Total bytes for the data transfer for the core video asset for all loads, ideally measured by the CDN
        videoVastBytes:
          type: integer
          example: 12000
          description: Average size of VAST/VPAID wrapper for the video in bytes for a single load
        videoBitrateKbps:
          type: integer
          example: 500
          description: Video bitrate *as delivered* in kilobits per second
        videoSizeBytes:
          type: integer
          example: 150000
          description: Average video size _as delivered_ in bytes for a single load
        videoDurationSeconds:
          type: number
          format: double
          example: 30.5
          description: Video duration in seconds
        videoViewTimeSeconds:
          type: number
          format: double
          example: 15
          description: Average time, in seconds, that a video is viewed
        videoViewRate:
          type: number
          format: double
          example: 0.8
          description: The percentage of the video that is viewed
        timeInViewSeconds:
          type: number
          format: double
          example: 15
          description: Time that the creative was visible on the device
        adTechPlatformVideoPlayerDomain:
          type: string
          example: seenthis.co
          description: The canonical domain of the ad tech platform that owns the video player or 'default'
        adTechPlatformCreativeAdserverDomains:
          type: array
          items:
            type: string
          example: []
          description: The canonical domains of the creative adservers
        otherAssetsBytes:
          type: integer
          example: 15000
          description: Metadata, text, html, etc.
        is3PServed:
          type: boolean
          example: true
          description: Does this ad format expect/support the creative to be served by a third party ad server
    LogicalSupplyGraph:
      type: object
      properties:
        minDepth:
          type: integer
          example: 1
          description: Minimum depth of ad selection path to the matched seller OR the maximum depth of all property ads txt nodes Based on the minimum depth, buying method and seller type.
        maxDepth:
          type: integer
          example: 5
          description: Maximum depth of ad selection path to the matched seller OR the maximum depth of all property ads txt nodes Based on the maximum depth, buying method and seller type.
        averageDepth:
          type: number
          format: double
          example: 3
          description: Average depth of ad selection path to the matched seller OR the maximum depth of all property ads txt nodes Based on the average depth, buying method and seller type.
      description: Logical information calculates depth based on the full ad selection graph.
    Scope3TechManipulationEmissionsBreakdownDetails:
      type: object
      properties:
        creativeStorage:
          $ref: '#/components/schemas/Emissions'
        physicalProduction:
          $ref: '#/components/schemas/Emissions'
        mediaPhysicalProduction:
          $ref: '#/components/schemas/Emissions'
    Scope3MeasureResponseRowEmissionsBreakdown:
      type: object
      properties:
        compensated:
          $ref: '#/components/schemas/Scope3CompensatedEmissionsBreakdown'
        mediaDistribution:
          $ref: '#/components/schemas/Scope3MediaDistributionEmissionsBreakdown'
        adSelection:
          $ref: '#/components/schemas/Scope3AdSelectionEmissionsBreakdown'
        creativeDelivery:
          $ref: '#/components/schemas/Scope3CreativeDeliveryEmissionsBreakdown'
        techManipulation:
          $ref: '#/components/schemas/Scope3TechManipulationEmissionsBreakdown'
        disposal:
          $ref: '#/components/schemas/Scope3DisposalEmissionsBreakdown'
    Scope3ConsumerDeviceMeasureResponseRowEmissionsBreakdown:
      type: object
      properties:
        compensated:
          $ref: '#/components/schemas/Scope3ConsumerDeviceCompensatedEmissionsBreakdown'
        mediaDistribution:
          $ref: '#/components/schemas/Scope3ConsumerDeviceMediaDistributionEmissionsBreakdown'
        adSelection:
          $ref: '#/components/schemas/Scope3ConsumerDeviceAdSelectionEmissionsBreakdown'
        creativeDelivery:
          $ref: '#/components/schemas/Scope3ConsumerDeviceCreativeDeliveryEmissionsBreakdown'
        techManipulation:
          $ref: '#/components/schemas/Scope3TechManipulationEmissionsBreakdown'
        disposal:
          $ref: '#/components/schemas/Scope3DisposalEmissionsBreakdown'
    Scope3CreativeDeliveryEmissionsBreakdownDetails:
      type: object
      properties:
        dataTransfer:
          $ref: '#/components/schemas/Emissions'
        adPlatform:
          $ref: '#/components/schemas/Emissions'
        outdoorDisplay:
          $ref: '#/components/schemas/Emissions'
        storageAndTransport:
          $ref: '#/components/schemas/Emissions'
    MeasureResponseEmissionsBreakdown:
      type: object
      required:
      - framework
      - totals
      properties:
        framework:
          $ref: '#/components/schemas/Framework'
        totals:
          oneOf:
          - $ref: '#/components/schemas/Scope3MeasureResponseEmissionsBreakdownDetails'
          - $ref: '#/components/schemas/Scope3ConsumerDeviceMeasureResponseEmissionsBreakdownDetails'
          - $ref: '#/components/schemas/GMSFMeasureResponseEmissionsBreakdownDetails'
    GMSFCreativeDeliveryEmissionsBreakdownDetails:
      type: object
      properties:
        dataTransfer:
          $ref: '#/components/schemas/Emissions'
        consumerDevice:
          $ref: '#/components/schemas/Emissions'
        adPlatform:
          $ref: '#/components/schemas/Emissions'
        outdoorDisplay:
          $ref: '#/components/schemas/Emissions'
        storageAndTransport:
          $ref: '#/components/schemas/Emissions'
    Scope3DisposalEmissionsBreakdown:
      type: object
      required:
      - total
      - breakdown
      properties:
        total:
          type: number
          format: double
          example: 0.15
          description: Total tech manipulation emissions in grams

# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/scope3/refs/heads/main/openapi/scope3-measure-api-openapi.yml