---
title: "Extend Contract Grace"
method: POST
path: "/api/v1/admin/block/requests/{request_id}/contract-grace/extend"
tags: ["Admin APIs", "block-data-approvals"]
---

# Extend Contract Grace

`POST /api/v1/admin/block/requests/{request_id}/contract-grace/extend`

Account Management lengthens a contract's post-term access window.

Gated on the Accounts permission rather than the generic approvals one:
extending paid access is a commercial decision, like the cancellation
approve/decline pair.

Nested under ``/requests/{request_id}/`` deliberately — that path shape is
what makes ``AdminAuditLoggingMiddleware`` record the actor, body and
timestamp, so who/when/why come for free and the extension appears in the
request's existing timeline with no new table.

Extensions are monotonic: 422 if the proposal doesn't move the date later.
409 if the contract is no longer live — revoked access has to be
re-provisioned, not restored by editing a date.

## Path parameters

- `request_id` string, uuid, required

## Request body

- BlockGraceExtensionBody — Body for ``POST /block/requests/{id}/contract-grace/extend``. Exactly one of ``extend_until`` / ``additional_days``. ``reason`` is required and CarbonArc-internal — it IS the audit record, and is never returned to the customer.
  - `extend_until` string, date-time, nullable
  - `additional_days` integer, nullable
  - `grace_period_days` integer, nullable
  - `reason` string, required

## Response `200`

Successful Response

- BlockContractGraceRead — Post-term access window for one Block contract. ADMIN-ONLY: ``grace_extension_reason`` / ``grace_extended_by`` are internal audit text and must never appear on a customer-facing schema.
  - `block_request_id` string, uuid, required
  - `contract_status` string, required
  - `request_status` string, required
  - `contract_ended_at` string, date-time, nullable
  - `last_invoice_due_date` string, date-time, nullable
  - `grace_period_days_effective` integer, required
  - `grace_period_days_override` integer, nullable
  - `grace_extended_until` string, date-time, nullable
  - `grace_extended_at` string, date-time, nullable
  - `grace_extended_by` string, nullable
  - `grace_extension_reason` string, nullable
  - `access_ends_at` string, date-time, nullable
  - `in_grace` boolean
  - `grace_days_remaining` integer, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/carbonarc/apis/carbon-arc-client-admin-api.md) · [All operations](https://skmtc.net/carbonarc/apis/carbon-arc-client-admin-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/carbonarc/carbon-arc-client-admin-api/revisions/a8ca30023371/schema)
