Promotions, Groups & Secrets¶
Three smaller domains round out a seller catalog. Each has its own CLI command group and SDK namespace. Promotions and groups are authored as files and uploaded (like specs); secrets live only on the platform.
Promotions¶
A promotion is a price rule that discounts your services for customers. You
author a promotion.* file (it can live anywhere in the repo — it's keyed by
name) and upload it; you then activate or pause it remotely.
// promotions/launch-week.json
{
"name": "launch-week",
"description": "20% off all LLM listings",
"scope": { "service_type": "llm" }, // which services it applies to
"pricing": { "type": "percentage", "value": "20" },
"apply_at": "list_price",
"priority": 100,
"status": "paused"
}
Upload, then manage status:
usvc_seller specs upload -t promotions # upload just promotions
usvc_seller promotions list
usvc_seller promotions show launch-week
usvc_seller promotions activate launch-week # status → active
usvc_seller promotions pause launch-week # status → paused
usvc_seller promotions delete launch-week
Key fields: scope (which services), pricing (the discount), apply_at,
priority, expires_at, max_uses. Full reference in
File Schemas.
Service groups¶
A service group bundles related services behind one addressable path
(/g/<group>), so a customer can call the group and the platform routes to a
member. You author a service_group.* file and upload it.
// groups/llm.json
{
"name": "llm",
"display_name": "LLM pool",
"group_type": "load_balance",
"membership_rules": { "service_type": "llm" },
"status": "active"
}
usvc_seller specs upload -t groups
usvc_seller groups list
usvc_seller groups show llm
usvc_seller groups delete llm
Key fields: group_type, membership_rules (which services join),
parent_group_name, access_interface_data_template, sort_order. See
File Schemas. A capability pool (/p/<capability>) is a
platform-managed group — see Service Templates.
Secrets¶
A secret is a named value (an upstream API key) stored on the platform and referenced by name from your specs and params — the raw value never appears in your files or commands.
usvc_seller secrets set UPSTREAM_API_KEY # create or rotate (idempotent); prompts for the value
usvc_seller secrets list # metadata only — values are never returned
usvc_seller secrets show UPSTREAM_API_KEY
usvc_seller secrets delete UPSTREAM_API_KEY # services referencing it will stop resolving
Reference a secret from a service by name, using the namespace that declares who owns it (see Service Types):
${ secrets.UPSTREAM_API_KEY }— a seller-owned secret (managed services).${ customer_secrets.UPSTREAM_API_KEY }— a customer-owned secret (BYOK).
When instantiating a template, a secret-typed parameter takes the secret name, not the value — so create the secret first.
SDK¶
All three are available as SDK namespaces: client.promotions, client.groups,
client.secrets. See the SDK Guide.