> ## 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.

# Revalidate data delivery credential

> Re-runs the destination Probe (GCS write+delete, warehouse SELECT 1) for a single credential and returns the updated record with a fresh status (VALIDATED or FAILED). Use after fixing a buyer-side destination access issue (e.g., re-granting GCS bucket IAM) without otherwise editing the credential.



## OpenAPI

````yaml /v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/data-delivery-credentials/{name}/validate
openapi: 3.0.0
info:
  title: Scope3 Buyer API
  version: 2.0.0
  description: |-
    REST API for advertisers to manage advertisers, campaigns, and reporting.

    ## Authentication

    All endpoints require a Bearer token in the Authorization header:
    ```
    Authorization: Bearer your-api-key
    ```

    ## Base URL

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

    ## For AI Agents

    AI agents can use the MCP endpoint at `/mcp/v2/buyer` 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/buyer
    description: Production server
security: []
tags:
  - name: Account
    description: Account management, service tokens, and preferences
  - name: Advertisers
    description: Manage advertisers
  - name: Product Discovery
    description: Discover and select products
  - name: Campaigns
    description: Manage advertising campaigns
  - name: Creatives
    description: Build, manage, and sync campaign creatives via AdCP Creative Protocol
  - name: Reporting
    description: Access performance metrics
  - name: Event Sources
    description: >-
      Manage event source configurations and log conversion/marketing events for
      attribution
  - name: Property Lists
    description: Validate property lists against AAO registry
  - name: Sales Agents
    description: View and connect sales agents
  - name: Measurement
    description: Measurement sources, records, context, and freshness
  - name: Syndication
    description: Syndicate resources to ADCP agents
  - name: Tasks
    description: Track async operation status
  - name: Planning Briefs
    description: >-
      Share prospective briefs with publishers and collect their
      fit/quote/clarify/decline/book responses (gated by the
      demand-supply-signals flag).
  - name: Buyer Billing
    description: >-
      Consolidated invoicing for buyers — invoices and pending invoice items
      issued by Scope3 across the buyer customer.
  - name: MCP
    description: Model Context Protocol endpoints for AI agents
paths:
  /advertisers/{advertiserId}/data-delivery-credentials/{name}/validate:
    post:
      tags:
        - Advertisers
      summary: Revalidate data delivery credential
      description: >-
        Re-runs the destination Probe (GCS write+delete, warehouse SELECT 1) for
        a single credential and returns the updated record with a fresh status
        (VALIDATED or FAILED). Use after fixing a buyer-side destination access
        issue (e.g., re-granting GCS bucket IAM) without otherwise editing the
        credential.
      operationId: revalidateDataDeliveryCredential
      parameters:
        - in: path
          name: advertiserId
          schema:
            description: Advertiser ID (numeric, as a string).
            type: string
            minLength: 1
          required: true
          description: Advertiser ID (numeric, as a string).
        - in: path
          name: name
          schema:
            description: Credential name (unique per advertiser).
            type: string
            minLength: 1
          required: true
          description: Credential name (unique per advertiser).
      responses:
        '200':
          description: Revalidate data delivery credential
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RevalidateDataDeliveryCredentialResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          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:
    RevalidateDataDeliveryCredentialResponse:
      description: Updated credential after re-running the destination Probe.
      type: object
      properties:
        credential:
          $ref: '#/components/schemas/DataDeliveryCredential'
      required:
        - credential
      additionalProperties: false
    ErrorResponse:
      description: Standard error response
      type: object
      properties:
        data:
          type: string
          nullable: true
          enum:
            - null
        error:
          $ref: '#/components/schemas/ApiError'
      required:
        - data
        - error
      additionalProperties: false
    DataDeliveryCredential:
      description: Resolved Data Delivery Credential as returned by the API.
      type: object
      properties:
        credentialId:
          description: Database identifier for the credential row.
          type: string
        name:
          type: string
        destinationType:
          type: string
          enum:
            - GCS
            - S3
            - AZURE_BLOB
            - SNOWFLAKE
            - DATABRICKS
        config:
          $ref: '#/components/schemas/CredentialConfig'
        status:
          description: >-
            Outcome of the most recent Probe. PENDING until the first Probe
            completes, VALIDATED when the credential is reachable, FAILED when
            not. Data Delivery Outputs may reference any status;
            ReportDeliveryWorkflow checks at run time.
          type: string
          enum:
            - PENDING
            - VALIDATED
            - FAILED
        statusError:
          description: Human-readable Probe failure reason when status=FAILED.
          type: string
        validatedAt:
          description: ISO timestamp of the most recent successful Probe.
          type: string
        expiresAt:
          description: >-
            ISO timestamp at which the credential is known to expire. Populated
            for credential shapes that carry an expiry claim (e.g., the `se=`
            field of an Azure SAS token). Absent when the destination does not
            encode an expiry.
          type: string
        createdAt:
          type: string
        updatedAt:
          type: string
      required:
        - credentialId
        - name
        - destinationType
        - config
        - status
        - createdAt
        - updatedAt
      additionalProperties: false
    ApiError:
      description: Structured error object
      type: object
      properties:
        code:
          description: Machine-readable error code
          type: string
        message:
          description: Human-readable error message
          type: string
        field:
          description: Field path associated with the error
          type: string
        details:
          description: Additional error context
          type: object
          additionalProperties: {}
      required:
        - code
        - message
      additionalProperties: false
    CredentialConfig:
      description: >-
        Destination-specific auth target as stored on the credential row.
        AZURE_BLOB omits the SAS token — the token lives in Google Secret
        Manager and is fetched at probe / delivery time.
      oneOf:
        - $ref: '#/components/schemas/GcsCredentialConfigOutput'
        - $ref: '#/components/schemas/S3CredentialConfigOutput'
        - $ref: '#/components/schemas/AzureBlobCredentialConfig'
      type: object
      discriminator:
        propertyName: type
        mapping:
          GCS:
            $ref: '#/components/schemas/GcsCredentialConfigOutput'
          S3:
            $ref: '#/components/schemas/S3CredentialConfigOutput'
          AZURE_BLOB:
            $ref: '#/components/schemas/AzureBlobCredentialConfig'
    GcsCredentialConfigOutput:
      type: object
      properties:
        type:
          type: string
          enum:
            - GCS
        bucket:
          description: >-
            Target GCS bucket the Probe writes to and Data Delivery Outputs ship
            objects into. The Scope3 service account must have objectCreator on
            this bucket.
          type: string
          minLength: 1
          maxLength: 222
          pattern: ^[a-z0-9][a-z0-9._-]*[a-z0-9]$
      required:
        - type
        - bucket
      additionalProperties: false
    S3CredentialConfigOutput:
      type: object
      properties:
        type:
          type: string
          enum:
            - S3
        bucket:
          description: >-
            Target S3 bucket the Probe writes to and Data Delivery Outputs ship
            objects into. The bucket policy must grant the Scope3 AWS IAM
            principal s3:PutObject (and s3:DeleteObject for the Probe sweep) on
            objects under the Output path prefix.
          type: string
          minLength: 3
          maxLength: 63
          pattern: ^[a-z0-9][a-z0-9.-]*[a-z0-9]$
        region:
          description: >-
            AWS region of the target bucket. Supports commercial, GovCloud, and
            ISO partitions (e.g., us-east-1, us-gov-east-1).
          type: string
          pattern: ^[a-z]{2}(-[a-z]+)+-\d+$
      required:
        - type
        - bucket
        - region
      additionalProperties: false
    AzureBlobCredentialConfig:
      type: object
      properties:
        type:
          type: string
          enum:
            - AZURE_BLOB
        storageAccountName:
          description: >-
            Azure Storage account hosting the target container, e.g.
            `datareports`. The container is accessed at
            `https://<storageAccountName>.blob.core.windows.net/`.
          type: string
          minLength: 3
          maxLength: 24
          pattern: ^[a-z0-9]+$
        containerName:
          description: >-
            Azure Blob container that the Probe writes to and Data Delivery
            Outputs ship objects into.
          type: string
          minLength: 3
          maxLength: 63
          pattern: ^(?!.*--)[a-z0-9][a-z0-9-]*[a-z0-9]$
        auth:
          $ref: '#/components/schemas/AzureBlobAuthStored'
      required:
        - type
        - storageAccountName
        - containerName
        - auth
      additionalProperties: false
    AzureBlobAuthStored:
      oneOf:
        - $ref: '#/components/schemas/AzureBlobSasAuthStored'
      type: object
      discriminator:
        propertyName: mode
        mapping:
          SAS_TOKEN:
            $ref: '#/components/schemas/AzureBlobSasAuthStored'
    AzureBlobSasAuthStored:
      type: object
      properties:
        mode:
          type: string
          enum:
            - SAS_TOKEN
      required:
        - mode
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key or access token

````