Products
A product is a piece of software the workspace builds and tests, such as a website, an API or a CLI. It runs in environments through deployments, and its test runs and secrets belong to it.
The Product object
Software the workspace builds and tests.
Attributes
idstringRequiredUnique ID of the product.
slugstringRequiredLowercase letters, digits and hyphens, unique in the workspace, such as storefront.
namestringRequiredThe product's display name.
typestringRequiredWhat kind of software the product is.
websiteapiclimobile_appdesktop_appagentdescriptionnullable stringRequiredA short description, or null.
repositorynullable stringRequiredThe source repository, such as acme/storefront, that agent sessions report.
archivedAtnullable stringRequiredWhen it was archived, as an ISO 8601 timestamp; null while active.
createdAtstringRequiredWhen it was created, as an ISO 8601 timestamp.
updatedAtstringRequiredWhen it last changed, as an ISO 8601 timestamp.
Deployments whose environment is active.
{ "id": "Pr4GtY9sLm3B", "slug": "storefront", "name": "Storefront", "type": "website", "description": "The customer-facing shop.", "repository": "acme/storefront", "archivedAt": null, "createdAt": "2026-10-01T16:20:00.000Z", "updatedAt": "2026-10-14T09:05:12.000Z", "deployments": [ { "id": "Dp3FkR8wNv2T", "product": { "id": "Pr4GtY9sLm3B", "slug": "storefront", "name": "Storefront", "type": "website", "archived": false }, "environment": { "id": "En8RqZ2vKp5D", "slug": "staging", "name": "Staging", "class": "non-production", "emoji": "🧪", "archived": false }, "baseUrl": "https://staging.acme.dev", "fixtureUrl": "https://staging.acme.dev/fixtures", "version": "9f2c41e", "versionUpdatedAt": "2026-10-14T09:05:12.000Z", "active": true, "createdAt": "2026-10-01T16:20:00.000Z", "updatedAt": "2026-10-14T09:05:12.000Z" } ]}List products
GET/Returns the workspace's products with their active deployments. Archived products are left out unless archived asks for them.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
Query parameters
archivedstringWhich archived objects to return: exclude (the default), include or only archived ones.
excludeincludeonlyReturns
Returns an object with these fields. Status 200.
The products, sorted by name.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl https://api.qa.clankership.net/v1/workspaces/acme/products \ -H "Authorization: Bearer $CLANKER_API_KEY"{ "products": [ { "id": "Pr4GtY9sLm3B", "slug": "storefront", "name": "Storefront", "type": "website", "description": "The customer-facing shop.", "repository": "acme/storefront", "archivedAt": null, "createdAt": "2026-10-01T16:20:00.000Z", "updatedAt": "2026-10-14T09:05:12.000Z", "deployments": [ { "id": "Dp3FkR8wNv2T", "product": { "id": "Pr4GtY9sLm3B", "slug": "storefront", "name": "Storefront", "type": "website", "archived": false }, "environment": { "id": "En8RqZ2vKp5D", "slug": "staging", "name": "Staging", "class": "non-production", "emoji": "🧪", "archived": false }, "baseUrl": "https://staging.acme.dev", "fixtureUrl": "https://staging.acme.dev/fixtures", "version": "9f2c41e", "versionUpdatedAt": "2026-10-14T09:05:12.000Z", "active": true, "createdAt": "2026-10-01T16:20:00.000Z", "updatedAt": "2026-10-14T09:05:12.000Z" } ] } ]}Create a product
POST/Adds a product to the workspace. Viewers cannot create products, and the slug must be unused.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
Body parameters
slugstringRequiredLowercase letters, digits and hyphens, unique in the workspace, such as storefront.
namestringRequiredThe product's display name.
typestringRequiredWhat kind of software this is.
websiteapiclimobile_appdesktop_appagentdescriptionnullable stringA short description.
repositorynullable stringThe source repository as owner/name, such as acme/storefront.
Returns
Returns the Product object. Status 201.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl -X POST https://api.qa.clankership.net/v1/workspaces/acme/products \ -H "Authorization: Bearer $CLANKER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "slug": "storefront", "name": "Storefront", "type": "website", "repository": "acme/storefront" }'{ "id": "Pr4GtY9sLm3B", "slug": "storefront", "name": "Storefront", "type": "website", "description": "The customer-facing shop.", "repository": "acme/storefront", "archivedAt": null, "createdAt": "2026-10-01T16:20:00.000Z", "updatedAt": "2026-10-14T09:05:12.000Z", "deployments": [ { "id": "Dp3FkR8wNv2T", "product": { "id": "Pr4GtY9sLm3B", "slug": "storefront", "name": "Storefront", "type": "website", "archived": false }, "environment": { "id": "En8RqZ2vKp5D", "slug": "staging", "name": "Staging", "class": "non-production", "emoji": "🧪", "archived": false }, "baseUrl": "https://staging.acme.dev", "fixtureUrl": "https://staging.acme.dev/fixtures", "version": "9f2c41e", "versionUpdatedAt": "2026-10-14T09:05:12.000Z", "active": true, "createdAt": "2026-10-01T16:20:00.000Z", "updatedAt": "2026-10-14T09:05:12.000Z" } ]}Get a product
GET/Returns one product, archived or not, with its active deployments.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
productstringRequiredThe product's slug or ID, such as storefront.
Returns
Returns the Product object. Status 200.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl https://api.qa.clankership.net/v1/workspaces/acme/products/{product} \ -H "Authorization: Bearer $CLANKER_API_KEY"{ "id": "Pr4GtY9sLm3B", "slug": "storefront", "name": "Storefront", "type": "website", "description": "The customer-facing shop.", "repository": "acme/storefront", "archivedAt": null, "createdAt": "2026-10-01T16:20:00.000Z", "updatedAt": "2026-10-14T09:05:12.000Z", "deployments": [ { "id": "Dp3FkR8wNv2T", "product": { "id": "Pr4GtY9sLm3B", "slug": "storefront", "name": "Storefront", "type": "website", "archived": false }, "environment": { "id": "En8RqZ2vKp5D", "slug": "staging", "name": "Staging", "class": "non-production", "emoji": "🧪", "archived": false }, "baseUrl": "https://staging.acme.dev", "fixtureUrl": "https://staging.acme.dev/fixtures", "version": "9f2c41e", "versionUpdatedAt": "2026-10-14T09:05:12.000Z", "active": true, "createdAt": "2026-10-01T16:20:00.000Z", "updatedAt": "2026-10-14T09:05:12.000Z" } ]}Update a product
PATCH/Changes only the fields sent. A new slug must be unused in the workspace.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
productstringRequiredThe product's slug or ID, such as storefront.
Body parameters
slugstringLowercase letters, digits and hyphens, unique in the workspace, such as storefront.
namestringThe product's display name.
typestringWhat kind of software this is.
websiteapiclimobile_appdesktop_appagentdescriptionnullable stringA short description. null clears it.
repositorynullable stringThe source repository as owner/name, such as acme/storefront. null clears it.
Returns
Returns the Product object. Status 200.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl -X PATCH https://api.qa.clankership.net/v1/workspaces/acme/products/{product} \ -H "Authorization: Bearer $CLANKER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Storefront web", "repository": "acme/storefront" }'{ "id": "Pr4GtY9sLm3B", "slug": "storefront", "name": "Storefront", "type": "website", "description": "The customer-facing shop.", "repository": "acme/storefront", "archivedAt": null, "createdAt": "2026-10-01T16:20:00.000Z", "updatedAt": "2026-10-14T09:05:12.000Z", "deployments": [ { "id": "Dp3FkR8wNv2T", "product": { "id": "Pr4GtY9sLm3B", "slug": "storefront", "name": "Storefront", "type": "website", "archived": false }, "environment": { "id": "En8RqZ2vKp5D", "slug": "staging", "name": "Staging", "class": "non-production", "emoji": "🧪", "archived": false }, "baseUrl": "https://staging.acme.dev", "fixtureUrl": "https://staging.acme.dev/fixtures", "version": "9f2c41e", "versionUpdatedAt": "2026-10-14T09:05:12.000Z", "active": true, "createdAt": "2026-10-01T16:20:00.000Z", "updatedAt": "2026-10-14T09:05:12.000Z" } ]}Archive a product
POST/Hides the product and refuses vault pulls for its deployments until it is restored. Archiving an archived product changes nothing.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
productstringRequiredThe product's slug or ID, such as storefront.
Returns
Returns the Product object. Status 200.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl -X POST https://api.qa.clankership.net/v1/workspaces/acme/products/{product}/archive \ -H "Authorization: Bearer $CLANKER_API_KEY"{ "id": "Pr4GtY9sLm3B", "slug": "storefront", "name": "Storefront", "type": "website", "description": "The customer-facing shop.", "repository": "acme/storefront", "archivedAt": null, "createdAt": "2026-10-01T16:20:00.000Z", "updatedAt": "2026-10-14T09:05:12.000Z", "deployments": [ { "id": "Dp3FkR8wNv2T", "product": { "id": "Pr4GtY9sLm3B", "slug": "storefront", "name": "Storefront", "type": "website", "archived": false }, "environment": { "id": "En8RqZ2vKp5D", "slug": "staging", "name": "Staging", "class": "non-production", "emoji": "🧪", "archived": false }, "baseUrl": "https://staging.acme.dev", "fixtureUrl": "https://staging.acme.dev/fixtures", "version": "9f2c41e", "versionUpdatedAt": "2026-10-14T09:05:12.000Z", "active": true, "createdAt": "2026-10-01T16:20:00.000Z", "updatedAt": "2026-10-14T09:05:12.000Z" } ]}Restore a product
POST/Brings an archived product back with its deployments and secrets. Restoring an active product changes nothing.
Path parameters
slugstringRequiredThe workspace's slug or ID, such as acme.
productstringRequiredThe product's slug or ID, such as storefront.
Returns
Returns the Product object. Status 200.
Errors
- 400
InvalidInputThe request is malformed, or a value is not allowed.- 401
UnauthorizedThe request has no valid API key.- 403
ForbiddenThe key's user or role may not do this.- 404
NotFoundThe workspace or object does not exist, or the caller cannot see it.- 409
ConflictThe change conflicts with current data, such as a slug that is already in use.- 500
InternalClanker Ship failed to handle the request. Retry, or report the response's x-request-id.
curl -X POST https://api.qa.clankership.net/v1/workspaces/acme/products/{product}/restore \ -H "Authorization: Bearer $CLANKER_API_KEY"{ "id": "Pr4GtY9sLm3B", "slug": "storefront", "name": "Storefront", "type": "website", "description": "The customer-facing shop.", "repository": "acme/storefront", "archivedAt": null, "createdAt": "2026-10-01T16:20:00.000Z", "updatedAt": "2026-10-14T09:05:12.000Z", "deployments": [ { "id": "Dp3FkR8wNv2T", "product": { "id": "Pr4GtY9sLm3B", "slug": "storefront", "name": "Storefront", "type": "website", "archived": false }, "environment": { "id": "En8RqZ2vKp5D", "slug": "staging", "name": "Staging", "class": "non-production", "emoji": "🧪", "archived": false }, "baseUrl": "https://staging.acme.dev", "fixtureUrl": "https://staging.acme.dev/fixtures", "version": "9f2c41e", "versionUpdatedAt": "2026-10-14T09:05:12.000Z", "active": true, "createdAt": "2026-10-01T16:20:00.000Z", "updatedAt": "2026-10-14T09:05:12.000Z" } ]}