> ## Documentation Index
> Fetch the complete documentation index at: https://docs.interchange.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Reconcile an incoming AdCP advertiser identity

> Append an authorized binding revision only when the advertiser matches the complete authenticated BrandRef, operator, currency, and sandbox tuple.



## OpenAPI

````yaml /v2/storefront-api-v2.yaml put /organization/advertisers/{relationshipRef}/reconciliation
openapi: 3.0.0
info:
  title: Scope3 Storefront API
  version: 2.0.0
  description: >-
    REST API for partners to manage Seller Accounts, inventory sources, and
    billing.


    ## Authentication


    All endpoints require a Bearer token in the Authorization header:

    ```

    Authorization: Bearer your-api-key

    ```


    ## Base URL


    `https://api.interchange.io/api/v2/storefront`


    ## For AI Agents


    AI agents can use the MCP endpoint at `/mcp/v2/storefront` with three tools:

    - `initialize`: Start an MCP session

    - `api_call`: Make REST API calls

    - `ask_about_capability`: Learn about API features
servers:
  - url: https://api.interchange.io/api/v2/storefront
    description: Production server
security: []
tags:
  - name: Account
    description: Account management, service tokens, and preferences
  - name: Asks
    description: >-
      What you are waiting on Scope3 for — support, product, and supply asks in
      one list
  - name: Storefront
    description: Manage storefront and inventory sources
  - name: Storefront Agents
    description: List and manage registered sales, signals, and outcomes agents
  - name: Storefront Activity
    description: Audit log of configuration and inventory changes on the storefront
  - name: Storefront Billing
    description: Payout bank details and billing configuration for Seller Accounts
  - name: AI Usage
    description: Seller Account AI token usage visibility by model
  - name: MCP
    description: Model Context Protocol endpoints
paths:
  /organization/advertisers/{relationshipRef}/reconciliation:
    servers:
      - url: https://api.interchange.io/api/v2
        description: Production server
    put:
      tags:
        - Advertisers
      summary: Reconcile an incoming AdCP advertiser identity
      description: >-
        Append an authorized binding revision only when the advertiser matches
        the complete authenticated BrandRef, operator, currency, and sandbox
        tuple.
      operationId: reconcileAdcpAdvertiserIdentity
      parameters:
        - in: path
          name: relationshipRef
          schema:
            type: string
            format: uuid
            pattern: >-
              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconcileAdcpAdvertiserIdentityBody'
      responses:
        '200':
          description: Reconcile an incoming AdCP advertiser identity
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ReconcileAdcpAdvertiserIdentityApiResponse
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            The caller is not a direct Media Company administrator or the
            account is not entitled
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            The relationship, grant, advertiser, or complete identity evidence
            conflicts
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - bearerAuth: []
components:
  schemas:
    ReconcileAdcpAdvertiserIdentityBody:
      type: object
      properties:
        advertiserId:
          type: string
          pattern: ^[1-9][0-9]*$
        identity:
          type: object
          properties:
            brand:
              type: object
              properties:
                domain:
                  type: string
                  maxLength: 253
                  pattern: >-
                    ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$
                id:
                  nullable: true
                  type: string
                  minLength: 1
                  maxLength: 255
                countries:
                  maxItems: 249
                  type: array
                  items:
                    type: string
                    enum:
                      - AD
                      - AE
                      - AF
                      - AG
                      - AI
                      - AL
                      - AM
                      - AO
                      - AQ
                      - AR
                      - AS
                      - AT
                      - AU
                      - AW
                      - AX
                      - AZ
                      - BA
                      - BB
                      - BD
                      - BE
                      - BF
                      - BG
                      - BH
                      - BI
                      - BJ
                      - BL
                      - BM
                      - BN
                      - BO
                      - BQ
                      - BR
                      - BS
                      - BT
                      - BV
                      - BW
                      - BY
                      - BZ
                      - CA
                      - CC
                      - CD
                      - CF
                      - CG
                      - CH
                      - CI
                      - CK
                      - CL
                      - CM
                      - CN
                      - CO
                      - CR
                      - CU
                      - CV
                      - CW
                      - CX
                      - CY
                      - CZ
                      - DE
                      - DJ
                      - DK
                      - DM
                      - DO
                      - DZ
                      - EC
                      - EE
                      - EG
                      - EH
                      - ER
                      - ES
                      - ET
                      - FI
                      - FJ
                      - FK
                      - FM
                      - FO
                      - FR
                      - GA
                      - GB
                      - GD
                      - GE
                      - GF
                      - GG
                      - GH
                      - GI
                      - GL
                      - GM
                      - GN
                      - GP
                      - GQ
                      - GR
                      - GS
                      - GT
                      - GU
                      - GW
                      - GY
                      - HK
                      - HM
                      - HN
                      - HR
                      - HT
                      - HU
                      - ID
                      - IE
                      - IL
                      - IM
                      - IN
                      - IO
                      - IQ
                      - IR
                      - IS
                      - IT
                      - JE
                      - JM
                      - JO
                      - JP
                      - KE
                      - KG
                      - KH
                      - KI
                      - KM
                      - KN
                      - KP
                      - KR
                      - KW
                      - KY
                      - KZ
                      - LA
                      - LB
                      - LC
                      - LI
                      - LK
                      - LR
                      - LS
                      - LT
                      - LU
                      - LV
                      - LY
                      - MA
                      - MC
                      - MD
                      - ME
                      - MF
                      - MG
                      - MH
                      - MK
                      - ML
                      - MM
                      - MN
                      - MO
                      - MP
                      - MQ
                      - MR
                      - MS
                      - MT
                      - MU
                      - MV
                      - MW
                      - MX
                      - MY
                      - MZ
                      - NA
                      - NC
                      - NE
                      - NF
                      - NG
                      - NI
                      - NL
                      - 'NO'
                      - NP
                      - NR
                      - NU
                      - NZ
                      - OM
                      - PA
                      - PE
                      - PF
                      - PG
                      - PH
                      - PK
                      - PL
                      - PM
                      - PN
                      - PR
                      - PS
                      - PT
                      - PW
                      - PY
                      - QA
                      - RE
                      - RO
                      - RS
                      - RU
                      - RW
                      - SA
                      - SB
                      - SC
                      - SD
                      - SE
                      - SG
                      - SH
                      - SI
                      - SJ
                      - SK
                      - SL
                      - SM
                      - SN
                      - SO
                      - SR
                      - SS
                      - ST
                      - SV
                      - SX
                      - SY
                      - SZ
                      - TC
                      - TD
                      - TF
                      - TG
                      - TH
                      - TJ
                      - TK
                      - TL
                      - TM
                      - TN
                      - TO
                      - TR
                      - TT
                      - TV
                      - TW
                      - TZ
                      - UA
                      - UG
                      - UM
                      - US
                      - UY
                      - UZ
                      - VA
                      - VC
                      - VE
                      - VG
                      - VI
                      - VN
                      - VU
                      - WF
                      - WS
                      - YE
                      - YT
                      - ZA
                      - ZM
                      - ZW
              required:
                - domain
                - id
                - countries
              additionalProperties: false
            operator:
              type: object
              properties:
                domain:
                  type: string
                  maxLength: 253
                  pattern: >-
                    ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$
                unitId:
                  nullable: true
                  type: string
                  minLength: 1
                  maxLength: 255
              required:
                - domain
                - unitId
              additionalProperties: false
            fixedCurrency:
              type: string
              pattern: ^[A-Z]{3}$
            sandbox:
              type: boolean
          required:
            - brand
            - operator
            - fixedCurrency
            - sandbox
          additionalProperties: false
        operatingMode:
          type: string
          enum:
            - managed
            - self_serve
      required:
        - advertiserId
        - identity
        - operatingMode
      additionalProperties: false
      description: >-
        Explicit complete AdCP advertiser identity assertion. Seller-local
        account IDs and arrival paths are never accepted as identity input.
    ReconcileAdcpAdvertiserIdentityApiResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/ReconcileAdcpAdvertiserIdentityResponse'
        error:
          type: string
          nullable: true
          enum:
            - null
      required:
        - data
        - error
      additionalProperties: false
      description: >-
        Standard successful API envelope containing the repaired identity
        binding.
    ErrorResponse:
      type: object
      properties:
        data:
          type: string
          nullable: true
          enum:
            - null
        error:
          $ref: '#/components/schemas/ApiError'
      required:
        - data
        - error
      additionalProperties: false
      description: Standard error response
    ReconcileAdcpAdvertiserIdentityResponse:
      type: object
      properties:
        entry:
          $ref: '#/components/schemas/AdvertiserRosterEntry'
        revision:
          type: integer
          minimum: 0
          exclusiveMinimum: true
          maximum: 9007199254740991
      required:
        - entry
        - revision
      additionalProperties: false
      description: >-
        The reconciled counterparty roster entry and append-only binding
        revision.
    ApiError:
      type: object
      properties:
        code:
          type: string
          description: Machine-readable error code
        message:
          type: string
          description: Human-readable error message
        field:
          description: Field path associated with the error
          type: string
        details:
          description: Additional error context
          type: object
          additionalProperties: {}
      required:
        - code
        - message
      additionalProperties: false
      description: Structured error object
    AdvertiserRosterEntry:
      type: object
      properties:
        rosterEntryId:
          type: string
          minLength: 1
        advertiserId:
          type: string
          minLength: 1
        displayName:
          type: string
          minLength: 1
        relationshipClass:
          type: string
          enum:
            - owned
            - delegated
            - counterparty
        operatorRelationship:
          type: string
          enum:
            - organization
            - client
            - external
        operatingMode:
          type: string
          enum:
            - managed
            - self_serve
        sandbox:
          type: boolean
        system:
          type: boolean
        binding:
          type: object
          properties:
            provenance:
              type: string
              enum:
                - compatibility_account
                - seller_buyer_sponsorship
                - advertiser_grant
                - adcp_account
            state:
              type: string
              enum:
                - resolved
                - partial
                - conflict
            reason:
              nullable: true
              type: string
              enum:
                - backing_account_missing
                - backing_account_is_container
                - display_name_missing
                - self_serve_sponsorship_missing
                - sponsorship_parent_mismatch
                - sponsorship_storefront_missing
                - duplicate_backing_records
          required:
            - provenance
            - state
            - reason
          additionalProperties: false
        backing:
          $ref: '#/components/schemas/AdvertiserRosterBacking'
        delegation:
          nullable: true
          type: object
          properties:
            grantRef:
              type: string
              format: uuid
              pattern: >-
                ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
            owner:
              type: object
              properties:
                organizationRef:
                  type: string
                  format: uuid
                  pattern: >-
                    ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                displayName:
                  type: string
                  minLength: 1
                  maxLength: 200
              required:
                - organizationRef
                - displayName
              additionalProperties: false
            capabilities:
              minItems: 1
              type: array
              items:
                type: string
                enum:
                  - advertiser.read
                  - campaign.read
                  - campaign.manage
            status:
              type: string
              enum:
                - active
            expiresAt:
              type: string
              format: date-time
              pattern: >-
                ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
          required:
            - grantRef
            - owner
            - capabilities
            - status
            - expiresAt
          additionalProperties: false
        capabilities:
          type: object
          properties:
            read:
              type: boolean
              enum:
                - true
            advertiserManagement:
              type: string
              enum:
                - available
                - account_switch_required
                - unavailable
            campaignManagement:
              type: string
              enum:
                - available
                - account_switch_required
                - unavailable
            relationshipManagement:
              type: string
              enum:
                - available
                - account_switch_required
                - unavailable
          required:
            - read
            - advertiserManagement
            - campaignManagement
            - relationshipManagement
          additionalProperties: false
        readiness:
          type: object
          properties:
            state:
              type: string
              enum:
                - ready
                - pending
                - suspended
                - revoked
                - disabled
                - incomplete
          required:
            - state
          additionalProperties: false
        operatorDomain:
          type: string
          maxLength: 253
          pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$
        operatorDisplayName:
          nullable: true
          type: string
          minLength: 1
        brandDomain:
          type: string
          maxLength: 253
          pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$
      required:
        - rosterEntryId
        - advertiserId
        - displayName
        - relationshipClass
        - operatorRelationship
        - operatingMode
        - sandbox
        - system
        - binding
        - backing
        - delegation
        - capabilities
        - readiness
      additionalProperties: false
      description: >-
        One canonical advertiser relationship visible to the organization
        caller.
    AdvertiserRosterBacking:
      oneOf:
        - type: object
          properties:
            kind:
              type: string
              enum:
                - compatibility_account
            accountId:
              type: integer
              minimum: 0
              exclusiveMinimum: true
              maximum: 9007199254740991
            advertiserId:
              type: string
              minLength: 1
          required:
            - kind
            - accountId
            - advertiserId
          additionalProperties: false
        - type: object
          properties:
            kind:
              type: string
              enum:
                - authorized_relationship
            relationshipRef:
              type: string
              format: uuid
              pattern: >-
                ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
            advertiserId:
              type: string
              minLength: 1
          required:
            - kind
            - relationshipRef
            - advertiserId
          additionalProperties: false
      description: >-
        Authorized backing boundary. Foreign tenant identifiers are never
        exposed.
      type: object
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key or access token

````