> ## Documentation Index
> Fetch the complete documentation index at: https://docs.voyantcloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Contract Series

> Update metadata or numbering rules for a contract series.

## Method

`PUT` `/v1/contract-series/:id`

## Path Parameters

<ParamField path="id" type="uuid" required>Contract series ID.</ParamField>

## Body Parameters

<ParamField name="name" type="string">Updated name.</ParamField>
<ParamField name="prefix" type="string">Updated prefix (set to `null` to remove).</ParamField>
<ParamField name="pattern" type="string">Updated numbering pattern.</ParamField>
<ParamField name="resetPeriod" type="string">One of `year`, `quarter`, `month`, or `never`.</ParamField>
<ParamField name="startValue" type="integer">Updated starting sequence.</ParamField>
<ParamField name="enforceGapless" type="boolean">Toggle gapless numbering.</ParamField>
<ParamField name="enforceMonotonicDates" type="boolean">Toggle monotonic date enforcement.</ParamField>
<ParamField name="active" type="boolean">Enable or disable the series.</ParamField>
<ParamField name="defaultForBe" type="boolean">Toggle booking engine default flag.</ParamField>

## Headers

<ParamField header="Authorization" type="string">Bearer token (requires `contract-series:write`).</ParamField>
<ParamField header="content-type" type="string">`application/json`</ParamField>

## Request Example

<RequestExample>
  ```bash cURL theme={null}
  curl -X PUT "https://api.voyantcloud.com/v1/contract-series/cs_01HZYQ0RN0AT4Z2ZEYQXT4S1B2" \
    -H "Authorization: Bearer $VOYANT_API_KEY" \
    -H "content-type: application/json" \
    -d '{
      "name": "Core Contracts (2025)",
      "startValue": 500,
      "defaultForBe": false
    }'
  ```

  ```javascript Node.js theme={null}
  await fetch("https://api.voyantcloud.com/v1/contract-series/cs_01HZYQ0RN0AT4Z2ZEYQXT4S1B2", {
    method: "PUT",
    headers: {
      Authorization: `Bearer ${process.env.VOYANT_API_KEY}`,
      "content-type": "application/json",
    },
    body: JSON.stringify({
      prefix: null,
      active: false,
    }),
  })
  ```

  ```python Python theme={null}
  import os, requests

  payload = {
    "pattern": "CNT-{year}-{sequence:04}",
    "enforceGapless": True
  }

  resp = requests.put(
    "https://api.voyantcloud.com/v1/contract-series/cs_01HZYQ0RN0AT4Z2ZEYQXT4S1B2",
    headers={
      "Authorization": f"Bearer {os.environ['VOYANT_API_KEY']}",
      "content-type": "application/json",
    },
    json=payload,
  )
  updated = resp.json()
  ```
</RequestExample>

## Response

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "series": {
      "id": "cs_01HZYQ0RN0AT4Z2ZEYQXT4S1B2",
      "workspaceId": "ws_01HZYPM2QF2R8X9SZQ0J9SYBCN",
      "name": "Core Contracts (2025)",
      "prefix": null,
      "pattern": "CNT-{year}-{sequence:04}",
      "resetPeriod": "year",
      "startValue": 500,
      "enforceGapless": true,
      "enforceMonotonicDates": true,
      "active": false,
      "defaultForBe": false,
      "createdAt": "2025-01-06T10:14:32.000Z",
      "updatedAt": "2025-03-22T09:41:55.000Z"
    }
  }
  ```
</ResponseExample>

<Warning>
  Updating `defaultForBe` does not automatically set another series as default—use the [Set default](./set-default) endpoint when promoting a series.
</Warning>
