Skip to content

Retire products

POST /api/v1/products/retire: request fields and declared response contract.

POST/api/v1/products/retire

Authorization
Permissionproducts.install
Workspace scoperequired
Scope targetworkspace

Request body

Request body fields
FieldTypeRequiredNullableDefault
installationIdstringrequirednon-null—
expectedInstallUpdatedAtstringrequirednon-null—

Response

201

Response fields
FieldTypeRequiredNullableDefault
dataobjectrequirednon-null—
data.outcome"retired" | "requires_resolution"requirednon-null—
data.installationobjectrequirednon-null—
data.installation.idstringrequirednon-null—
data.installation.companyIdstringrequirednon-null—
data.installation.workspaceIdstringrequirednon-null—
data.installation.productKeystringrequirednon-null—
data.installation.productVersionstringrequirednon-null—
data.installation.namespacestringrequirednon-null—
data.installation.manifestDigeststringrequirednon-null—
data.installation.normalizedInputsobjectrequirednon-null—
data.installation.normalizedInputs.bindingsobjectrequirednon-null—
data.installation.normalizedInputs.roleSatisfactionsobjectoptionalnon-null—
data.installation.normalizedInputs.productConfigobjectoptionalnon-null—
data.installation.normalizedInputs.configurationProjectionDigeststringoptionalnon-null—
data.installation.normalizedInputs.profileobjectoptionalnon-null—
data.installation.normalizedInputs.configurationResolutionobjectoptionalnon-null—
data.installation.normalizedInputs.referenceInputsobjectoptionalnon-null—
data.installation.lifecycleState"installing" | "partial" | "installed" | "requires_resolution" | "failed" | "retired"requirednon-null—
data.installation.installedByPrincipalIdunknownrequirednon-null—
data.installation.ownedPackageInstallationIdunknownrequirednon-null—
data.installation.installedAtunknownrequirednon-null—
data.installation.updatedAtunknownrequirednon-null—
data.referencesarrayrequirednon-null—
data.ownedContentReceiptobjectoptionalnon-null—
data.ownedContentReceipt.installationIdstringrequirednon-null—
data.ownedContentReceipt.namespacestringrequirednon-null—
data.ownedContentReceipt.statusstringrequirednon-null—
data.ownedContentReceipt.retiredResourceCountintegerrequirednon-null—
data.auditBindingRevocationobjectoptionalnon-null—
data.auditBindingRevocation.revokedbooleanrequirednon-null—
data.auditBindingRevocation.bindingVersionintegeroptionalnon-null—
data.auditBindingRevocation.profileIdstringoptionalnon-null—
data.auditBindingRevocation.profileVersionstringoptionalnon-null—
data.terminalReceiptobjectoptionalnon-null—

Declared failures

Declared failures
PRODUCT_OPERATION_FAILED500 — not retryable
PRODUCT_REQUIRES_RESOLUTION409 — not retryable
PRODUCT_STALE409 — not retryable

Readback

Read the result back with:

  • products.inspectInstalled

Request example

Schematic only. Replace placeholders with real values and include all required nested fields.

POST /api/v1/products/retire HTTP/1.1
Authorization: Bearer <token>
x-merulan-workspace-id: <workspace-id>
Content-Type: application/json

{
  "installationId": "<installationId>",
  "expectedInstallUpdatedAt": "<expectedInstallUpdatedAt>"
}