HookLogic (Criteo) · Agentic Access

HookLogic (Criteo) Agentic Access

x-agentic-access generated

HookLogic (Criteo) exposes 114 API operations that an AI agent could call, of which 74 are state-changing ‘acting’ operations. This is a recommended x-agentic-access execution contract — the scope, audience, consequence tier, short-lived token constraints, and escalation each action should carry before it is handed to an autonomous agent.

By consequence: 40 read, 72 write, and 2 safety-critical.

2 operations are classed safety-critical and should require human-in-the-loop approval at runtime.

Contracts are classified heuristically from the provider’s OpenAPI and refresh on every APIs.io network build; audience is bound per deployment. The model follows Curity’s Access Intelligence (apidays Munich 2026). Browse every provider’s agent contracts at agentic-access.apis.io.

CompanyCommerceRetail MediaAdvertisingE-commerceMarketingRetailAPIs
Operations: 114 Acting: 74 Human-in-the-loop: 2 Method: generated

By consequence

read 40 write 72 safety-critical 2

Highest-consequence actions

The physical and safety-critical operations an agent could invoke — the ones that most warrant scoped tokens, tight TTLs, and escalation. Full per-operation contracts are in the source below.

MethodPathConsequenceHuman-in-loop
PUT /2026-07/retail-media/campaigns/{campaignId}/campaign-budget-overrides safety-critical required
PUT /2026-07/retail-media/line-items/{lineItemId}/line-item-budget-overrides safety-critical required

Source

Agentic Access

Raw ↑
generated: '2026-07-19'
method: generated
source: openapi/hooklogic-criteo-retailmedia-openapi-original.json
description: Recommended x-agentic-access execution contracts, classified heuristically from
  the OpenAPI. A governance starting point for exposing this API to AI agents — review and bind
  audience per deployment. See research/curity/agentic-governance/.
summary:
  operations: 114
  by_action_class:
    acting: 74
    connected: 40
  by_consequence:
    write: 72
    read: 40
    safety-critical: 2
  human_in_the_loop_required: 2
operations:
- path: /2026-07/retail-media/account-management/accounts/{accountId}/brands/add
  method: post
  operationId: AddBrands
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Accounts_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/account-management/accounts/{accountId}/brands/remove
  method: post
  operationId: RemoveBrands
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Accounts_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/account-management/accounts/{accountId}/create-brand-account
  method: post
  operationId: CreatePrivateMarketDemandBrandAccount
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Accounts_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/account-management/accounts/{accountId}/create-seller-account
  method: post
  operationId: CreatePrivateMarketDemandSellerAccount
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Accounts_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/account-management/accounts/{accountId}/private-market-child-accounts
  method: get
  operationId: GetPrivateMarketChildAccountsByAccountId
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Accounts_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/account-management/accounts/{accountId}/sellers
  method: put
  operationId: UpdateSellers
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Accounts_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts
  method: get
  operationId: GetAccounts
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Accounts_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/accounts/{account-id}/audience-segments
  method: patch
  operationId: bulkUpdateAudienceSegments
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Audience_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/{account-id}/audience-segments/{audience-segment-id}/contact-list
  method: get
  operationId: getAudienceSegmentContactListStatistics
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Audience_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/accounts/{account-id}/audience-segments/create
  method: post
  operationId: bulkCreateAudienceSegments
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Audience_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/{account-id}/audience-segments/delete
  method: post
  operationId: bulkDeleteAudienceSegments
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Audience_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/{account-id}/audience-segments/search
  method: post
  operationId: searchAudienceSegments
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Audience_Read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/{account-id}/audiences/search
  method: post
  operationId: searchAudiences
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Audience_Read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/{account-id}/balances
  method: get
  operationId: GetBalancesByAccountId
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Balance_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/accounts/{account-id}/balances
  method: post
  operationId: CreateBalanceByAccountId
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Balance_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/{account-id}/balances/{balance-id}
  method: get
  operationId: GetBalanceByAccountAndBalanceId
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Balance_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/accounts/{account-id}/balances/{balance-id}
  method: patch
  operationId: ModifyBalanceByAccountAndBalanceId
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Balance_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/{account-id}/balances/{balance-id}/add-funds
  method: post
  operationId: AddFundsByAccountAndBalanceId
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Balance_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/{account-id}/balances/{balance-id}/change-dates
  method: post
  operationId: ChangeDatesByAccountAndBalanceId
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Balance_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/{account-id}/campaigns
  method: get
  operationId: GetCampaignsByAccountId
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/accounts/{account-id}/campaigns
  method: post
  operationId: CreateCampaignsByAccountId
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/{account-id}/creatives
  method: get
  operationId: GetAccountCreatives
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/accounts/{account-id}/creatives
  method: post
  operationId: CreateCreative
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/{account-id}/creatives/{creative-id}
  method: get
  operationId: GetCreative
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/accounts/{account-id}/creatives/{creative-id}
  method: put
  operationId: UpdateCreative
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/{account-id}/creatives/search
  method: post
  operationId: SearchAccountCreatives
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/{account-id}/keywords/in-review-report
  method: get
  operationId: GetKeywordInReviewReport
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/accounts/{account-id}/line-items
  method: get
  operationId: GetLineItemsByAccountId
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/accounts/{accountId}/brand-catalog-export
  method: post
  operationId: CreateBrandCatalogExport
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/{accountId}/brands
  method: get
  operationId: GetBrandsByAccountId
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/accounts/{accountId}/catalogs
  method: post
  operationId: CatalogApi_PostApiV1ExternalAccountCatalogsByAccountId
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/{accountId}/catalogs/sellers
  method: post
  operationId: Catalog_PostApiExternalV1AccountCatalogsSellersByAccountId
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/{accountId}/grant-consent
  method: post
  operationId: GrantConsent
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Accounts_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/{accountId}/retailers/search
  method: post
  operationId: SearchAccountRetailers
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/{accountId}/seller-catalog-export
  method: post
  operationId: CreateSellerCatalogExport
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/fees/search
  method: post
  operationId: AccountFeesSearch
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Accounts_Read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/fees/update
  method: post
  operationId: UpdateAccountFees
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Accounts_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/accounts/sellers/search
  method: post
  operationId: SearchSellers
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Accounts_Read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/assets
  method: post
  operationId: CreateAsset
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/auction-line-items/{lineItemId}
  method: get
  operationId: GetAuctionLineItem
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/auction-line-items/{lineItemId}
  method: put
  operationId: UpdateAuctionLineItem
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/audience-segments/{audience-segment-id}/contact-list/add-remove
  method: post
  operationId: AddRemoveContactListByAudienceSegment
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Audience_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/audience-segments/{audience-segment-id}/contact-list/clear
  method: post
  operationId: ClearContactListByAudienceSegment
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Audience_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/balances/{balance-id}/campaigns
  method: get
  operationId: GetCampaignsByBalanceId
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Balance_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/balances/{balance-id}/campaigns/append
  method: post
  operationId: AppendCampaignsByBalanceId
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/balances/{balance-id}/campaigns/delete
  method: post
  operationId: DeleteCampaignsByBalanceId
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/balances/{balanceId}/history
  method: get
  operationId: GetBalanceHistory
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Balance_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/billing/partner-report
  method: post
  operationId: CreatePartnerBillingReportRequestV1
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Billing_Read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/billing/partner-report/{requestId}/output
  method: get
  operationId: GetPartnerBillingReportOutputV1
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Billing_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/billing/partner-report/{requestId}/status
  method: get
  operationId: GetPartnerBillingReportStatusV1
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Billing_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/brands/search
  method: post
  operationId: SearchBrands
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Accounts_Read
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/campaigns/{campaign-id}/preferred-line-items
  method: get
  operationId: GetPreferredLineItemsByCampaignId
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/campaigns/{campaign-id}/preferred-line-items
  method: post
  operationId: CreatePreferredLineItemByCampaignId
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/campaigns/{campaignId}
  method: get
  operationId: GetCampaignByCampaignId
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/campaigns/{campaignId}
  method: put
  operationId: UpdateCampaignByCampaignId
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/campaigns/{campaignId}/auction-line-items
  method: get
  operationId: GetAuctionLineItemsByCampaign
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/campaigns/{campaignId}/auction-line-items
  method: post
  operationId: CreateAuctionLineItem
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/campaigns/{campaignId}/campaign-budget-overrides
  method: get
  operationId: GetCampaignBudgetOverrides
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/campaigns/{campaignId}/campaign-budget-overrides
  method: put
  operationId: UpdateCampaignBudgetOverrides
  x-agentic-access:
    action-class: acting
    consequence: safety-critical
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 120
      exchange: true
      purpose-required: true
      proof-of-possession: true
    escalation:
      human-in-the-loop: required
    audit: required
- path: /2026-07/retail-media/catalog/merchants/{merchantId}/store-inventory/delete
  method: post
  operationId: DeleteStoreInventoryPerMerchantId
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Catalog_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/catalog/merchants/{merchantId}/store-inventory/upsert
  method: post
  operationId: UpsertStoreInventoryPerMerchantId
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Catalog_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/catalogs/{catalogId}/output
  method: get
  operationId: GetCatalogOutput
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/catalogs/{catalogId}/status
  method: get
  operationId: GetCatalogStatus
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/categories
  method: get
  operationId: CategorySearch_GetApiExternalV1Categories
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/categories/{categoryId}
  method: get
  operationId: GetCategory
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/line-items/{externalLineItemId}/keywords/recommended
  method: get
  operationId: GetRecommendedKeywords
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/line-items/{id}/keywords
  method: get
  operationId: FetchKeywords
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/line-items/{id}/keywords/add-remove
  method: post
  operationId: AddRemoveKeywords
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/line-items/{id}/keywords/set-bid
  method: post
  operationId: SetKeywordBids
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/line-items/{line-item-id}
  method: get
  operationId: GetLineItemsByCampaignId
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/line-items/{line-item-id}/bid-multipliers
  method: get
  operationId: GetBidMultipliersByLineItemId
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/line-items/{line-item-id}/bid-multipliers
  method: put
  operationId: UpdateBidMultipliersByLineItemId
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/line-items/{line-item-id}/keywords/review
  method: post
  operationId: UpdateKeywordReviews
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/line-items/{line-item-id}/products
  method: get
  operationId: FetchPromotedProducts
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/line-items/{line-item-id}/products/append
  method: post
  operationId: AppendPromotedProducts
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/line-items/{line-item-id}/products/delete
  method: post
  operationId: DeletePromotedProducts
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/line-items/{line-item-id}/products/pause
  method: post
  operationId: PausePromotedProducts
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/line-items/{line-item-id}/products/unpause
  method: post
  operationId: UnpausePromotedProducts
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/line-items/{lineItemId}/line-item-budget-overrides
  method: get
  operationId: GetLineItemBudgetOverrides
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/line-items/{lineItemId}/line-item-budget-overrides
  method: put
  operationId: UpdateLineItemBudgetOverrides
  x-agentic-access:
    action-class: acting
    consequence: safety-critical
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 120
      exchange: true
      purpose-required: true
      proof-of-possession: true
    escalation:
      human-in-the-loop: required
    audit: required
- path: /2026-07/retail-media/me
  method: get
  operationId: GetCurrentApplication
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/preferred-line-items/{line-item-id}
  method: get
  operationId: GetPreferredLineItemsByLineItemId
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path: /2026-07/retail-media/preferred-line-items/{line-item-id}
  method: put
  operationId: UpdatePreferredLineItemByLineItemId
  x-agentic-access:
    action-class: acting
    consequence: write
    subject: required
    scope:
    - RetailMedia_Campaign_Manage
    audience: null
    token:
      max-ttl: 900
    escalation:
      human-in-the-loop: conditional
      triggers:
      - abnormal
      - high-value
    audit: required
- path: /2026-07/retail-media/preferred-line-items/{line-item-id}/targeting/add-to-basket
  method: get
  operationId: GetAddToBasketTargetsByLineItemId
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    scope:
    - RetailMedia_Campaign_Read
    token:
      max-ttl: 3600
    audit: none
- path

# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/hooklogic-criteo/refs/heads/main/agentic-access/hooklogic-criteo-agentic-access.yml