cancel-contract
dci cancel-contract <customerID> <contractID> [body]
Cancels (deactivates) a contract. Active contracts cannot be deleted; cancel is the terminal operation.
customerID— Identifier of the resource.contractID— Identifier of the resource.
Pass the request body as name: value arguments or pipe JSON on stdin — see Command structure.
Examples
# Preview the cancellation without sending a request.
dci cancel-contract <customer-id> <contract-id> --dry-run
# Cancel with a reason, confirmed for scripts (active contracts cannot be deleted; cancel is the terminal operation).
dci cancel-contract <customer-id> <contract-id> reason: "Customer moved to a direct agreement" --yes
# Cancel without a reason and read the resulting status as JSON.
dci cancel-contract <customer-id> <contract-id> --yes --output json
Request
Content-Type: application/json
| Field | Type | Required | Description |
|---|---|---|---|
reason | string | Optional cancellation reason. |
Raw JSON schema
{
"type": "object",
"properties": {
"reason": {
"type": "string",
"description": "Optional cancellation reason."
}
}
}
Output
OK - Contract cancelled.
By default dci renders the result as a table. Use --output json to get the full structure described below — see Output formats.
| Field | Type | Description |
|---|---|---|
contractId | string | The contract identifier. |
status | string | The contract status after the operation (active, scheduled, or cancelled). One of: "active", "scheduled", "cancelled". |
Raw JSON schema
{
"type": "object",
"description": "Result of an activate or cancel operation.",
"properties": {
"contractId": {
"type": "string",
"description": "The contract identifier."
},
"status": {
"type": "string",
"description": "The contract status after the operation (`active`, `scheduled`, or `cancelled`).",
"enum": [
"active",
"scheduled",
"cancelled"
]
}
}
}
Errors
On failure, dci prints a single error message — with a hint when one is available — and exits with a typed code your scripts can branch on. See Errors and exit codes for the full contract.
HTTP status to exit code mapping
| HTTP status | Exit code | Error code | Meaning |
|---|---|---|---|
| 400 | 30 | VALIDATION_ERROR | The arguments or request body were rejected. Review the command's flags and payload. |
| 401 | 10 | AUTHENTICATION_FAILED | Not signed in, or the API token is invalid. Run dci login or check DCI_API_KEY. |
| 403 | 11 | PERMISSION_DENIED | The DoiT user or the active customer context does not have access. |
| 404 | 20 | RESOURCE_NOT_FOUND | The requested resource does not exist. Check the identifier argument. |
Related
- activate-contract — Activate contract
- get-contract — Retrieve a contract
- list-contracts — List contracts
- update-contract — Update contract
- API reference: POST /customers/{customerID}/contracts/{contractID}/cancel
Aliases: cancelcontract