Apps
Apps represent the server-side integrations that call Commerce APIs. Create an app when you need a new API identity for a service, environment, tenant, or backend integration.
The app object
An app object contains the human-readable metadata and stable identifier for a Commerce API identity. Secret key values are not returned on normal app lookups; the initial token appears only in the response from Create an app.
Properties
Create an app
Create a Commerce app and its first secret key. Use this endpoint when provisioning a new backend service, environment, or integration that needs its own API identity.
Store app.secret_key.token immediately after the response is received. The full token is returned only at creation time and is not included in later lookup or update responses.
Request attributes
Response shape
The response returns a top-level app object. The object includes the new app ID, app metadata, creation timestamp, and a create-only secret_key object.
Response attributes
Request
curl https://api.zebo.dev/apps/create \
-H "Authorization: Bearer $COMMERCE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"alias": "acme-prod-api",
"description": "Production Commerce API for Acme Marketplace",
"legal_entity_type": "business",
"name": "Acme Production API"
}'
{
"app": {
"alias": "acme-prod-api",
"created_at": "2025-02-15T14:30:00Z",
"description": "Production Commerce API for Acme Marketplace",
"id": "app_F2gH4iJ6kL8mN0oP2qR4sT6uV8wX0yZ",
"name": "Acme Production API",
"relationship": {
"child_app_id": "app_F2gH4iJ6kL8mN0oP2qR4sT6uV8wX0yZ",
"child_standing": "controlled",
"created_at": "2025-02-15T14:30:00Z",
"id": "apprel_2xL4nP6rT8vX0zB2dF4hJ6lN8pR0tV2x",
"kind": "placement",
"placement_parent_app_id": "app_M8nP0qR2sT4uV6wX8yZ0aB2cD4eF6gH",
"policy_version": "app_relationship_authority.v1",
"relationship_policy": {
"child_standing": "controlled",
"credentials": "child",
"management": "parent"
},
"status": "active"
},
"secret_key": {
"id": "sk_Q1wE3rT5yU7iO9pA2sD4fG6hJ8kL0zX",
"issued_at": "2025-02-15T14:30:00Z",
"token": "<SECRET_KEY_TOKEN>",
"token_type": "bearer"
}
}
}
Lookup an app
Retrieve the app associated with the API key used on the request. Use this endpoint to confirm which app a secret key authenticates as, or to display app metadata in your own tooling.
The request has no body. The response includes app metadata only; it does not include secret key values.
Request attributes
No request body is required.
Response shape
The response returns a top-level app object for the authenticated app.
Response attributes
Request
curl -X POST https://api.zebo.dev/apps/lookup \
-H "Authorization: Bearer $COMMERCE_API_KEY"
{
"app": {
"alias": "acme-prod-api",
"created_at": "2025-02-15T14:30:00Z",
"description": "Production Commerce API for Acme Marketplace",
"id": "app_F2gH4iJ6kL8mN0oP2qR4sT6uV8wX0yZ",
"name": "Acme Production API",
"updated_at": "2025-02-16T09:45:30Z"
}
}
Update an app
Update metadata for the app associated with the API key used on the request. This endpoint changes app labels and classification; it does not rotate secret keys or move resources between apps.
Send at least one mutable attribute. Empty alias and description values clear those fields. Empty name is rejected.
Request attributes
Response shape
The response returns a top-level app object with the current metadata after the update.
Response attributes
Request
curl https://api.zebo.dev/apps/update \
-H "Authorization: Bearer $COMMERCE_API_KEY" \
-H "Idempotency-Key: app-update-acme-checkout-001" \
-H "Content-Type: application/json" \
-d '{
"alias": "acme-checkout-api",
"description": "Checkout API for Acme Marketplace",
"legal_entity_type": "business",
"name": "Acme Checkout API"
}'
Reuse the same Idempotency-Key value when retrying the same update after a
timeout or network failure. A different key starts a new update operation.
{
"app": {
"alias": "acme-checkout-api",
"created_at": "2025-02-15T14:30:00Z",
"description": "Checkout API for Acme Marketplace",
"id": "app_F2gH4iJ6kL8mN0oP2qR4sT6uV8wX0yZ",
"name": "Acme Checkout API",
"updated_at": "2025-02-16T09:45:30Z"
}
}