curl --request PUT \
--url https://api.interchange.io/api/v2/storefront/esa/{esaId}/execution-currency \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"executionCurrency": "USD"
}
'import requests
url = "https://api.interchange.io/api/v2/storefront/esa/{esaId}/execution-currency"
payload = { "executionCurrency": "USD" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({executionCurrency: 'USD'})
};
fetch('https://api.interchange.io/api/v2/storefront/esa/{esaId}/execution-currency', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "<string>",
"name": "<string>",
"customerId": 0,
"tenantId": "<string>",
"mcpUrl": "<string>",
"a2aUrl": "<string>",
"adServer": {
"type": "google_ad_manager",
"networkCode": "12345678"
},
"serviceAccountEmail": "jsmith@example.com",
"lastError": "<string>",
"lastErrorCode": "<string>",
"lastTestedAt": "2023-11-07T05:31:56Z",
"provisionedAt": "2023-11-07T05:31:56Z",
"deactivatedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"inventorySync": {
"status": "unknown",
"lastRunAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z",
"itemCount": 0,
"error": "<string>",
"updatedAt": "2023-11-07T05:31:56Z"
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}Set a FreeWheel execution currency
Declare an existing FreeWheel source’s execution currency without replacing its write-only credentials. The currency must be one the storefront settles. ESA refuses an unread network or a declaration contradicted by existing insertion orders before changing the source.
curl --request PUT \
--url https://api.interchange.io/api/v2/storefront/esa/{esaId}/execution-currency \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"executionCurrency": "USD"
}
'import requests
url = "https://api.interchange.io/api/v2/storefront/esa/{esaId}/execution-currency"
payload = { "executionCurrency": "USD" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({executionCurrency: 'USD'})
};
fetch('https://api.interchange.io/api/v2/storefront/esa/{esaId}/execution-currency', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "<string>",
"name": "<string>",
"customerId": 0,
"tenantId": "<string>",
"mcpUrl": "<string>",
"a2aUrl": "<string>",
"adServer": {
"type": "google_ad_manager",
"networkCode": "12345678"
},
"serviceAccountEmail": "jsmith@example.com",
"lastError": "<string>",
"lastErrorCode": "<string>",
"lastTestedAt": "2023-11-07T05:31:56Z",
"provisionedAt": "2023-11-07T05:31:56Z",
"deactivatedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"inventorySync": {
"status": "unknown",
"lastRunAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z",
"itemCount": 0,
"error": "<string>",
"updatedAt": "2023-11-07T05:31:56Z"
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}Authorizations
API key or access token
Path Parameters
Ad server source connection id. The wire field remains esaId for API compatibility.
0 < x <= 9007199254740991123
Body
Three-letter uppercase ISO 4217 execution currency.
^[A-Z]{3}$"USD"
Response
Set a FreeWheel execution currency
Storefront → managed ad-server source connection. A storefront can have multiple connections, each addressed by id.
Stable id for this managed ad-server source. Use this id to address per-source actions (provision, deactivate, save ad-server config, etc.). A customer can have multiple managed sources.
Seller-facing inventory-source name linked to this managed ad-server source. Null when there is no active linked inventory-source row.
Owning customer/storefront id.
-9007199254740991 <= x <= 9007199254740991Upstream managed-source id for the managed ad-server source. Null until provisioning succeeds.
MCP endpoint exposed by the provisioned managed ad-server source. May be a relative path (e.g. /mcp/) — the consumer composes the absolute URL using the upstream base URL.
A2A endpoint exposed by the provisioned managed ad-server source. May be a relative path (e.g. /a2a) — see mcpUrl for resolution.
Publisher-supplied ad-server config. Null if not yet collected.
- Option 1
- Option 2
- Option 3
- Option 4
Show child attributes
Show child attributes
Per-customer service-account email the publisher must grant access to in their ad server. Created when ad-server config is saved. Surfaced so the UI can show it during onboarding.
^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$Failure reason from the most recent provisioning or test-connection attempt, or the current adapter-configuration reconciliation state.
Machine-readable classification of the most recent provisioning failure or a configuration change awaiting reconciliation. ADAPTER_NETWORK_NOT_FOUND, ADAPTER_PERMISSION_DENIED, ADAPTER_INVALID_CREDENTIALS, ADAPTER_INVALID_CONFIG, and ADAPTER_CONNECTION_FAILED are adapter probe failures. ADAPTER_CONFIG_* and EXECUTION_CURRENCY_* describe configuration work that has not settled. INTERNAL_ERROR indicates an upstream or platform problem. Null when there has been no failure and no pending configuration work.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$Cached inventory-sync state. Null when no signal has landed yet (no webhook delivered and no /status poll has run).
Show child attributes
Show child attributes