SerenAI

Pay Per Call Agentic Commerce

UpdatePublisherRequest

Request to update a publisher

Properties

PropertyTypeRequiredDescription
a2a_endpoint_url string,null No A2A endpoint base URL (for compute_type = agent)
add_asset_ids array,null No Asset IDs to add to accepted assets
allowed_passthrough_headers array,null No Whitelist of agent-provided headers allowed to pass through to upstream
api_headers any No Headers for API requests (will be encrypted)
api_key_header string,null No Header name to inject upstream_api_key into (e.g., "Authorization", "X-API-Key")
api_key_query_param string,null No Query parameter name to inject upstream_api_key into (e.g., "api_key")
api_url string,null No External API URL (for integration_type = api)
auth_type string,null No Upstream auth mode ("static" or "jwt")
base_price_per_1000_rows string,null No
billing_model string,null No Billing model ("x402_per_request", "prepaid_credits", "x402_passthrough", "pay_per_use")
branch_id string,null No SerenDB branch ID (for database_type = serendb)
capabilities array,null No Publisher-declared capabilities for task matching (e.g., "web_scraping", "ai_search")
categories array,null No
compute_type any No
database_config any No Provider-specific configuration
database_name string,null No Database name within the SerenDB project
database_type any No
description string,null No
email string,null No Publisher contact email for notifications and support
endpoints array,null No Structured endpoint definitions for LLM discoverability and access control
gateway_fee_percent string,null No Gateway fee percentage for upstream x402 payments (pass-through).
grace_period_minutes integer,null No
hourly_rate string,null No
integration_type any No
is_active boolean,null No
jwt_access_key string,null No JWT access key / issuer claim (plaintext)
jwt_algorithm string,null No JWT signing algorithm ("HS256", "HS384", "HS512")
jwt_expiration_seconds integer,null No JWT expiration seconds
jwt_secret_key string,null No JWT secret key (will be encrypted)
logo_url string,null No Optional publisher branding URL
low_balance_threshold string,null No
markup_multiplier string,null No
mcp_endpoint string,null No MCP server endpoint URL (for integration_type = mcp)
minimum_balance string,null No
name string,null No
oauth2_client_id string,null No OAuth2 client ID for Client Credentials flow
oauth2_client_secret string,null No OAuth2 client secret for Client Credentials flow (will be encrypted)
oauth2_scopes array,null No OAuth2 scopes to request during Client Credentials flow
oauth2_token_url string,null No OAuth2 token endpoint URL for Client Credentials flow
oauth_provider_id string,null No OAuth provider ID for BYOC (Bring Your Own Credentials) authentication. Set to enable user-specific OAuth tokens for this publisher.
ownership_tracking_enabled boolean,null No Enable resource ownership tracking (legacy gateway parity)
price_per_call string,null No
price_per_delete string,null No
price_per_execution string,null No Price per execution for agent templates or usage-based billing
price_per_get string,null No
price_per_patch string,null No
price_per_post string,null No
price_per_put string,null No
project_id string,null No SerenDB project ID (for database_type = serendb)
protected_operations any No Protected operations configuration - legacy, use endpoints[].is_protected instead
publisher_category any No
remove_asset_ids array,null No Asset IDs to remove from accepted assets
request_content_type string,null No Content-Type for upstream API requests (default: application/json)
requires_user_oauth boolean,null No If true, users must connect via OAuth before using this publisher (BYOC mode). Requires oauth_provider_id to be set.
reserve_max_charge string,null No Maximum amount to reserve up-front for pay_per_use pre-authorization.
resource_description string,null No
resource_id_response_path string,null No JSONPath to resource ID in response body (for ownership tracking)
resource_id_url_pattern string,null No URL pattern with :resourceId placeholder (for ownership tracking)
resource_name string,null No
routing any No
token_cache_ttl_seconds integer,null No TTL for cached exchanged tokens in seconds (60-86400)
token_exchange_method string,null No HTTP method for exchange endpoint (POST or GET)
token_exchange_mode string,null No How to send Seren token: header, body, or query
token_exchange_url string,null No URL to call for exchanging Seren API keys for publisher auth tokens
token_response_field string,null No JSON field in exchange response containing the token (default: access_token)
undocumented_endpoint_policy any No
unresolved_fallback_charge string,null No Fallback charge used when pay_per_use cost cannot be resolved from upstream response or token estimates.
upstream_api_key string,null No Upstream static API key (will be encrypted)
upstream_cost_response_path string,null No Dot-separated path to upstream cost in response body (for pay_per_use and prepaid passthrough billing). Example: "usage.cost"
upstream_headers any No Non-sensitive headers to send to upstream API (e.g., User-Agent)
usage_examples array,null No Usage examples showing how to call the publisher's API
use_cases array,null No Human-readable use case descriptions (e.g., "Scrape dynamic JavaScript websites")
wallet_address any No
wallet_network_id string,null No Network ID for wallet (must be provided if changing wallet_address)
View JSON Schema
{
  "type": "object",
  "description": "Request to update a publisher",
  "properties": {
    "a2a_endpoint_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "A2A endpoint base URL (for compute_type = agent)"
    },
    "add_asset_ids": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "Asset IDs to add to accepted assets"
    },
    "allowed_passthrough_headers": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      },
      "description": "Whitelist of agent-provided headers allowed to pass through to upstream"
    },
    "api_headers": {
      "description": "Headers for API requests (will be encrypted)"
    },
    "api_key_header": {
      "type": [
        "string",
        "null"
      ],
      "description": "Header name to inject upstream_api_key into (e.g., \"Authorization\", \"X-API-Key\")"
    },
    "api_key_query_param": {
      "type": [
        "string",
        "null"
      ],
      "description": "Query parameter name to inject upstream_api_key into (e.g., \"api_key\")"
    },
    "api_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "External API URL (for integration_type = api)"
    },
    "auth_type": {
      "type": [
        "string",
        "null"
      ],
      "description": "Upstream auth mode (\"static\" or \"jwt\")"
    },
    "base_price_per_1000_rows": {
      "type": [
        "string",
        "null"
      ]
    },
    "billing_model": {
      "type": [
        "string",
        "null"
      ],
      "description": "Billing model (\"x402_per_request\", \"prepaid_credits\", \"x402_passthrough\", \"pay_per_use\")"
    },
    "branch_id": {
      "type": [
        "string",
        "null"
      ],
      "format": "uuid",
      "description": "SerenDB branch ID (for database_type = serendb)"
    },
    "capabilities": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      },
      "description": "Publisher-declared capabilities for task matching (e.g., \"web_scraping\", \"ai_search\")"
    },
    "categories": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      }
    },
    "compute_type": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/components/schemas/ComputeType",
          "description": "Compute type when publisher_category = compute"
        }
      ]
    },
    "database_config": {
      "description": "Provider-specific configuration"
    },
    "database_name": {
      "type": [
        "string",
        "null"
      ],
      "description": "Database name within the SerenDB project"
    },
    "database_type": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/components/schemas/DatabaseType",
          "description": "Database type when publisher_category = database"
        }
      ]
    },
    "description": {
      "type": [
        "string",
        "null"
      ]
    },
    "email": {
      "type": [
        "string",
        "null"
      ],
      "description": "Publisher contact email for notifications and support"
    },
    "endpoints": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/components/schemas/EndpointDefinition"
      },
      "description": "Structured endpoint definitions for LLM discoverability and access control"
    },
    "gateway_fee_percent": {
      "type": [
        "string",
        "null"
      ],
      "description": "Gateway fee percentage for upstream x402 payments (pass-through)."
    },
    "grace_period_minutes": {
      "type": [
        "integer",
        "null"
      ],
      "format": "int32"
    },
    "hourly_rate": {
      "type": [
        "string",
        "null"
      ]
    },
    "integration_type": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/components/schemas/IntegrationType",
          "description": "Integration type when publisher_category = integration"
        }
      ]
    },
    "is_active": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "jwt_access_key": {
      "type": [
        "string",
        "null"
      ],
      "description": "JWT access key / issuer claim (plaintext)"
    },
    "jwt_algorithm": {
      "type": [
        "string",
        "null"
      ],
      "description": "JWT signing algorithm (\"HS256\", \"HS384\", \"HS512\")"
    },
    "jwt_expiration_seconds": {
      "type": [
        "integer",
        "null"
      ],
      "format": "int32",
      "description": "JWT expiration seconds"
    },
    "jwt_secret_key": {
      "type": [
        "string",
        "null"
      ],
      "description": "JWT secret key (will be encrypted)"
    },
    "logo_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional publisher branding URL"
    },
    "low_balance_threshold": {
      "type": [
        "string",
        "null"
      ]
    },
    "markup_multiplier": {
      "type": [
        "string",
        "null"
      ]
    },
    "mcp_endpoint": {
      "type": [
        "string",
        "null"
      ],
      "description": "MCP server endpoint URL (for integration_type = mcp)"
    },
    "minimum_balance": {
      "type": [
        "string",
        "null"
      ]
    },
    "name": {
      "type": [
        "string",
        "null"
      ]
    },
    "oauth2_client_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "OAuth2 client ID for Client Credentials flow"
    },
    "oauth2_client_secret": {
      "type": [
        "string",
        "null"
      ],
      "description": "OAuth2 client secret for Client Credentials flow (will be encrypted)"
    },
    "oauth2_scopes": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      },
      "description": "OAuth2 scopes to request during Client Credentials flow"
    },
    "oauth2_token_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "OAuth2 token endpoint URL for Client Credentials flow"
    },
    "oauth_provider_id": {
      "type": [
        "string",
        "null"
      ],
      "format": "uuid",
      "description": "OAuth provider ID for BYOC (Bring Your Own Credentials) authentication.\nSet to enable user-specific OAuth tokens for this publisher."
    },
    "ownership_tracking_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Enable resource ownership tracking (legacy gateway parity)"
    },
    "price_per_call": {
      "type": [
        "string",
        "null"
      ]
    },
    "price_per_delete": {
      "type": [
        "string",
        "null"
      ]
    },
    "price_per_execution": {
      "type": [
        "string",
        "null"
      ],
      "description": "Price per execution for agent templates or usage-based billing"
    },
    "price_per_get": {
      "type": [
        "string",
        "null"
      ]
    },
    "price_per_patch": {
      "type": [
        "string",
        "null"
      ]
    },
    "price_per_post": {
      "type": [
        "string",
        "null"
      ]
    },
    "price_per_put": {
      "type": [
        "string",
        "null"
      ]
    },
    "project_id": {
      "type": [
        "string",
        "null"
      ],
      "format": "uuid",
      "description": "SerenDB project ID (for database_type = serendb)"
    },
    "protected_operations": {
      "description": "Protected operations configuration - legacy, use endpoints[].is_protected instead"
    },
    "publisher_category": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/components/schemas/PublisherCategory",
          "description": "Publisher category: database, integration, or compute\nNote: Changing category is a significant change and requires corresponding type field"
        }
      ]
    },
    "remove_asset_ids": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "description": "Asset IDs to remove from accepted assets"
    },
    "request_content_type": {
      "type": [
        "string",
        "null"
      ],
      "description": "Content-Type for upstream API requests (default: application/json)"
    },
    "requires_user_oauth": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "If true, users must connect via OAuth before using this publisher (BYOC mode).\nRequires oauth_provider_id to be set."
    },
    "reserve_max_charge": {
      "type": [
        "string",
        "null"
      ],
      "description": "Maximum amount to reserve up-front for pay_per_use pre-authorization."
    },
    "resource_description": {
      "type": [
        "string",
        "null"
      ]
    },
    "resource_id_response_path": {
      "type": [
        "string",
        "null"
      ],
      "description": "JSONPath to resource ID in response body (for ownership tracking)"
    },
    "resource_id_url_pattern": {
      "type": [
        "string",
        "null"
      ],
      "description": "URL pattern with :resourceId placeholder (for ownership tracking)"
    },
    "resource_name": {
      "type": [
        "string",
        "null"
      ]
    },
    "routing": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/components/schemas/GeoRoutingConfig",
          "description": "Geographic routing configuration for geo-restricted upstream APIs"
        }
      ]
    },
    "token_cache_ttl_seconds": {
      "type": [
        "integer",
        "null"
      ],
      "format": "int32",
      "description": "TTL for cached exchanged tokens in seconds (60-86400)"
    },
    "token_exchange_method": {
      "type": [
        "string",
        "null"
      ],
      "description": "HTTP method for exchange endpoint (POST or GET)"
    },
    "token_exchange_mode": {
      "type": [
        "string",
        "null"
      ],
      "description": "How to send Seren token: header, body, or query"
    },
    "token_exchange_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "URL to call for exchanging Seren API keys for publisher auth tokens"
    },
    "token_response_field": {
      "type": [
        "string",
        "null"
      ],
      "description": "JSON field in exchange response containing the token (default: access_token)"
    },
    "undocumented_endpoint_policy": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/components/schemas/UndocumentedEndpointPolicy",
          "description": "Policy for handling requests to paths not in the endpoints catalog (\"allow\" or \"block\")"
        }
      ]
    },
    "unresolved_fallback_charge": {
      "type": [
        "string",
        "null"
      ],
      "description": "Fallback charge used when pay_per_use cost cannot be resolved from upstream response or token estimates."
    },
    "upstream_api_key": {
      "type": [
        "string",
        "null"
      ],
      "description": "Upstream static API key (will be encrypted)"
    },
    "upstream_cost_response_path": {
      "type": [
        "string",
        "null"
      ],
      "description": "Dot-separated path to upstream cost in response body (for pay_per_use and prepaid passthrough billing).\nExample: \"usage.cost\""
    },
    "upstream_headers": {
      "description": "Non-sensitive headers to send to upstream API (e.g., User-Agent)"
    },
    "usage_examples": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/components/schemas/UsageExample"
      },
      "description": "Usage examples showing how to call the publisher's API"
    },
    "use_cases": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      },
      "description": "Human-readable use case descriptions (e.g., \"Scrape dynamic JavaScript websites\")"
    },
    "wallet_address": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "$ref": "#/components/schemas/WalletAddress",
          "description": "New wallet address for receiving payments"
        }
      ]
    },
    "wallet_network_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Network ID for wallet (must be provided if changing wallet_address)"
    }
  }
}