---
title: "Submit an ODCS contract"
method: POST
path: "/groups/{groupId}/contracts"
tags: ["Contracts"]
---

# Submit an ODCS contract

`POST /groups/{groupId}/contracts`

Submits an ODCS v3.1 YAML contract. The contract is parsed, stored as an ODCS_CONTRACT artifact, and its contents are projected onto the referenced schema artifact (labels, rules, field tags).

## Response `200`

The contract was created (or updated if it already exists) and projected onto the referenced schema artifact.

- OdcsContractResult — Result of submitting or updating an ODCS contract.
  - `contractId` string — The contract artifact ID.
  - `version` string — The ODCS contract version.
  - `projection` OdcsProjectionSummary — Summary of the projection performed when an ODCS contract is applied.
    - `rulesApplied` integer — Number of CEL quality rules projected onto the schema artifact.
    - `labelsApplied` integer — Number of contract.* labels set on the schema artifact.
    - `tagsApplied` integer — Number of field-tag.* labels set on the schema artifact version.
    - `warnings` string[] — Any warnings encountered during projection.

## Other responses

- `400` — Common response for all operations that can return a `400` error.
- `500` — Common response for all operations that can fail with an unexpected server error.

---

[API](https://skmtc.net/apicurio/apis/apicurio-registry-api-v3.md) · [All operations](https://skmtc.net/apicurio/apis/apicurio-registry-api-v3/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/apicurio/apicurio-registry-api-v3/revisions/c39cb56d7dbc/schema)
