platformdtc.app.toml at its root, and each extension by a
platformdtc.extension.toml in its own folder. The CLI validates both before it calls
the partner API, and dtc app config push / dtc app deploy send them as an app update plus a new
version. The format follows shopify.app.toml, so a Shopify app’s config maps over
key for key where the concept exists.
platformdtc.app.toml
Top level
The
client_secret never goes in this file. dtc app config link writes it to .env as
PLATFORMDTC_API_SECRET; keep .env out of version control.
[access_scopes]
[access_scopes.justifications] is required: one non-empty string per scope in scopes, keyed by the
scope. The merchant reads this text on the consent screen, and review checks it
(scope_justifications_complete, see App Store listing).
[auth]
[webhooks]
Each [[webhooks.subscriptions]] entry has a uri and either topics or compliance_topics.
Two platform rules:
- One endpoint for events. Every non-compliance topic of an app is delivered to one endpoint (the
app’s
webhook_endpoint_url), so alltopicssubscriptions must resolve to the same URL. Different URLs are a validation error. - Compliance topics may each have their own URL. Public apps must declare all three compliance topics.
[app_proxy]
Serves a path on the merchant’s storefront domain from your app:
https://<store domain>/<prefix>/<subpath>/* is forwarded to url with a signed query string.
[[nav_links]]
Links shown under your app in the merchant dashboard sidebar. Embedded apps only; at most 10.
[extensions]
[skill]
For type = "skill" only. See Skill apps.
[build]
platformdtc.extension.toml
Agent tools
A folder withtype = "agent_tools" declares the tools the merchant’s AI assistant can call on
your app (see Agent tools). It has no bundle: it takes type, handle,
name and tools only, and an app has at most one.
Each tool in the file:
extensions/assistant/platformdtc.extension.toml
extensions/assistant/tools.json
Complete example
platformdtc.app.toml
How the file maps to the API
App fields change with
PATCH /partner/apps/{id}. Everything in the version column creates a new version,
and a new version needs a new review before merchants can install it.