UpdatePublisherRequest
Request to update a publisher
Properties
| Property | Type | Required | Description |
|---|---|---|---|
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)"
}
}
}