---
title: "Transition contract status"
method: POST
path: "/groups/{groupId}/artifacts/{artifactId}/contract/status"
tags: ["Contracts"]
---

# Transition contract status

`POST /groups/{groupId}/artifacts/{artifactId}/contract/status`

## Request

- The document declares no server URL.
- Auth: none declared

Transitions the contract status. Valid transitions: DRAFT to STABLE, DRAFT to DEPRECATED, STABLE to DEPRECATED. Reverse transitions are not allowed.

## Request body

- ContractStatusTransition: Request body for transitioning the contract lifecycle status.
  - `status` 'DRAFT' | 'STABLE' | 'DEPRECATED', required: The target lifecycle status. Valid transitions: DRAFT to STABLE, DRAFT to DEPRECATED, STABLE to DEPRECATED.

## Response `200`

The updated contract metadata after the status transition.

- ContractMetadata: Contract metadata for an artifact.
  - `status` 'DRAFT' | 'STABLE' | 'DEPRECATED': The contract lifecycle status.
  - `ownerTeam` string: The team that owns the contract.
  - `ownerDomain` string: The domain the contract belongs to.
  - `supportContact` string: Support contact email.
  - `classification` 'PUBLIC' | 'INTERNAL' | 'CONFIDENTIAL' | 'RESTRICTED': Data classification level.
  - `stage` 'DEV' | 'STAGE' | 'PROD': Promotion stage.
  - `stableDate` string: ISO-8601 date when contract became stable.
  - `deprecatedDate` string: ISO-8601 date when contract was deprecated.
  - `deprecationReason` string: Reason for deprecation.
  - `compatibilityGroup` string: Compatibility group for schema evolution scoping.

## Other responses

- `400`: Common response for all operations that can return a `400` error.
- `404`: Common response for all operations that can return a `404` error.
- `409`: Common response used when an input conflicts with existing data.
- `500`: Common response for all operations that can fail with an unexpected server error.

## Changes

- **2026-10-31** `ff9684af2aad`: 20 info
  - added the optional property `ruleViolation/causes/items/code` to the response with the `400` status
  - added the optional property `ruleViolation/causes/items/code` to the response with the `404` status
  - added the optional property `ruleViolation/causes/items/code` to the response with the `409` status
  - added the optional property `ruleViolation/causes/items/code` to the response with the `500` status
  - …16 more
- **2026-10-29** `f17f5df4e79c`: 4 info
  - added the optional property `ruleViolation` to the response with the `400` status
  - added the optional property `ruleViolation` to the response with the `404` status
  - added the optional property `ruleViolation` to the response with the `409` status
  - added the optional property `ruleViolation` to the response with the `500` status
- **2026-05-19** `96ff089c4fd9`: 1 info
  - added the optional property `compatibilityGroup` to the response with the `200` status
- **2026-04-16** `9547b63c5be8`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/apicurio/apis/apicurio-registry-api-v3/changes/groups/:groupId/artifacts/:artifactId/contract/status/post.md)

---

[API](https://skmtc.dev/apicurio/apis/apicurio-registry-api-v3.md) - [All operations](https://skmtc.dev/apicurio/apis/apicurio-registry-api-v3/llms.txt) - [OpenAPI document](https://skmtc.dev/apicurio/apis/apicurio-registry-api-v3/revisions/ff9684af2aad?raw)
