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

# Change an exact advertiser admission role bundle

> Replace the canonical advertiser role bundle for one current approved admission as a directly authenticated Seller administrator. The current role, expected revision, exact capabilities, and idempotency key fail closed on stale or changed requests. Billing, payment, and Campaign execution capabilities are not part of this contract.



## OpenAPI

````yaml /v2/storefront-api-v2.yaml put /organization/advertisers/{advertiserId}/admissions/{admissionId}/capabilities
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/{advertiserId}/admissions/{admissionId}/capabilities:
    servers:
      - url: https://api.interchange.io/api/v2
        description: Production server
    put:
      tags:
        - Advertisers
      summary: Change an exact advertiser admission role bundle
      description: >-
        Replace the canonical advertiser role bundle for one current approved
        admission as a directly authenticated Seller administrator. The current
        role, expected revision, exact capabilities, and idempotency key fail
        closed on stale or changed requests. Billing, payment, and Campaign
        execution capabilities are not part of this contract.
      operationId: changeOrganizationAdvertiserAdmissionCapabilities
      parameters:
        - in: path
          name: advertiserId
          schema:
            type: string
            pattern: ^[1-9][0-9]*$
          required: true
        - in: path
          name: admissionId
          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:
              type: object
              properties:
                expectedRevision:
                  type: string
                  pattern: ^[1-9][0-9]*$
                expectedRoleSlug:
                  type: string
                  enum:
                    - advertiser-viewer
                    - advertiser-editor
                    - advertiser-admin
                requestedRoleSlug:
                  type: string
                  enum:
                    - advertiser-viewer
                    - advertiser-editor
                    - advertiser-admin
                requestedCapabilities:
                  minItems: 1
                  maxItems: 3
                  type: array
                  items:
                    type: string
                    enum:
                      - read
                      - write
                      - admin
                reason:
                  type: string
                  minLength: 3
                  maxLength: 1000
                idempotencyKey:
                  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:
                - expectedRevision
                - expectedRoleSlug
                - requestedRoleSlug
                - requestedCapabilities
                - reason
                - idempotencyKey
              additionalProperties: false
      responses:
        '200':
          description: Change an exact advertiser admission role bundle
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/OrganizationAdvertiserAdmissionCapabilityChangeApiResponse
        '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, entitlement, seller, advertiser, admission, member, or
            principal is outside the exact direct-human Seller-admin boundary
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            The revision, current role, replay key, lifecycle state, grant,
            identity, or direct assignment is no longer current
          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:
    OrganizationAdvertiserAdmissionCapabilityChangeApiResponse:
      type: object
      properties:
        data:
          $ref: >-
            #/components/schemas/OrganizationAdvertiserAdmissionCapabilityChangeResponse
        error:
          type: string
          nullable: true
          enum:
            - null
      required:
        - data
        - error
      additionalProperties: false
    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
    OrganizationAdvertiserAdmissionCapabilityChangeResponse:
      type: object
      properties:
        admissionId:
          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
          pattern: ^[1-9][0-9]*$
        revision:
          type: string
          pattern: ^[1-9][0-9]*$
        requestedRoleSlug:
          type: string
          enum:
            - advertiser-viewer
            - advertiser-editor
            - advertiser-admin
        requestedCapabilities:
          minItems: 1
          maxItems: 3
          type: array
          items:
            type: string
            enum:
              - read
              - write
              - admin
      required:
        - admissionId
        - advertiserId
        - revision
        - requestedRoleSlug
        - requestedCapabilities
      additionalProperties: false
      description: >-
        Audited requested capability replacement for one exact advertiser
        admission. Refetch the roster for effective assignment readback.
    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
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key or access token

````