Skip to content
admin

/api/v1/admin/aggregator/upsert

POST
/api/v1/admin/aggregator/upsert
curl --request POST \
--url https://dpg.example.com/api/v1/admin/aggregator/upsert \
--header 'Content-Type: application/json' \
--header 'x-acting-org-id: example' \
--header 'x-api-key: <x-api-key>' \
--data '{ "external_id": "example", "name": "example", "slug": "example", "logo_url": "https://example.com", "domains": [ "example" ], "metadata": { "additionalProperty": "example" } }'
x-acting-org-id
required
string

Organization this request acts on behalf of. Required for admin/aggregator operations.

Media typeapplication/json
object
external_id
required

Aggregator-dpg primary key for this aggregator

string
>= 1 characters
name
required

Display name

string
>= 1 characters
slug
required

Stable url-safe identifier; lookup key for upsert

string
>= 1 characters /^[a-z0-9-]+$/
logo_url

Optional logo url shown in dashboards

string format: uri
domains

Item domains this aggregator’s dashboard reports on (e.g. [‘seeker’] or [‘seeker’,‘provider’]). Persisted as org.metadata.domains. Defaults to [] when omitted; dashboard returns 400 NO_DOMAINS_CONFIGURED until set.

Array<string>
metadata

Opaque metadata stored alongside external_id on the org

object
key
additional properties
Examplegenerated
{
"external_id": "example",
"name": "example",
"slug": "example",
"logo_url": "https://example.com",
"domains": [
"example"
],
"metadata": {
"additionalProperty": "example"
}
}

Default Response

Media typeapplication/json
object
org_id
required

Signals organization id (prefixed org_)

string
created
required

True on first upsert; false when an existing org was updated

boolean
Examplegenerated
{
"org_id": "example",
"created": true
}