---
title: "Shift Trial Window"
method: PUT
path: "/api/v1/admin/block/requests/{request_id}/trial-window"
tags: ["Admin APIs", "block-data-approvals"]
---

# Shift Trial Window

`PUT /api/v1/admin/block/requests/{request_id}/trial-window`

QA lever: time-warp a request's trial window so it ends N seconds
from now, with ``trial_start_date`` derived from
``trial_duration_months`` so the row stays internally consistent.
Disabled in production.

Seconds is the wire unit so callers can pick any granularity (days,
hours, minutes, seconds). Useful for two test cases without waiting
real time:
- "Trial has X left" — pass a small positive ``seconds_until_end``.
- "Trial starts in X" (cancellation-cutoff UI) — pass
  ``trial_duration_months * 30 * 86400 + X``.

## Path parameters

- `request_id` string, uuid, required

## Request body

- ShiftTrialWindowBody — Time-warp the trial window so it ends ``seconds_until_end`` from now; start is derived from ``trial_duration_months`` so the row stays internally consistent. Seconds is the wire unit so the caller can pick any granularity (days/hours/minutes/seconds). Must be ``>= 0``: negative values would land the end in the past and skip the auto-expire transition path. Cap is 366 days (31_622_400s) — the UI presents a max of 366 in the chosen unit, so 366 days is the largest possible wire value.
  - `seconds_until_end` integer, required

## Response `200`

Successful Response

- BlockRequestRead
  - `id` string, uuid, required
  - `dataset_id` string, required
  - `lag` string, nullable
  - `cut` string, nullable
  - `label` string, nullable
  - `internal_name` string, nullable
  - `core_source` string, nullable
  - `client_id` string, uuid, required
  - `client_polaris_principal_missing` boolean
  - `client_name` string, nullable
  - `requestor_email` string, required
  - `status` 'pending_block_admin' | 'pending_compliance' | 'pending_internal' | 'approved' | 'intake_pending' | 'provisioning' | 'provisioning_failed' | 'trial_pending' | 'trial_active' | 'contracted' | 'contract_expired' | 'request_cancelled' | 'trial_cancelled' | 'contract_cancelled' | 'block_cancelled' | 'rejected', required
  - `internal_queue_step` 'accounts' | 'legal' | 'engineering' | 'complete'
  - `rejection_source` 'client_block_admin' | 'client_compliance' | 'carbonarc_accounts' | 'carbonarc_legal' | 'carbonarc_engineering'
  - `rejection_message` string, nullable
  - `rejected_by` string, nullable
  - `fee_type` 'one_time' | 'annual', required
  - `trial_duration_months` integer, required
  - `annual_price` string, nullable
  - `original_trial_duration_months` integer, nullable
  - `original_annual_price` string, nullable
  - `custom_adjustment_rationale` string, nullable
  - `additional_email_recipients` string[]
  - `use_case` string, nullable
  - `trial_start_date` string, date-time, nullable
  - `trial_end_date` string, date-time, nullable
  - `original_trial_start_date` string, date-time, nullable
  - `original_trial_end_date` string, date-time, nullable
  - `first_ingestion_at` string, date-time, nullable
  - `trial_start_trigger` 'first_ingestion' | 'auto_start'
  - `approved_by_block_admin` string, nullable
  - `approved_by_compliance` string, nullable
  - `approved_at` string, date-time, nullable
  - `cancellation_requested_at` string, date-time, nullable
  - `cancellation_requested_by` string, nullable
  - `cancellation_request_reason` string, nullable
  - `compliance_tear_sheet` BlockComplianceTearSheetMeta — Per-dataset compliance tear sheet metadata. Mirrors the ``ComplianceTearSheetMeta`` TypedDict in ``app.services.compliance_tear_sheet`` so the same dict shape can be model_validate'd onto a pydantic schema.
    - `available` boolean, required
    - `size_bytes` integer, nullable
    - `updated_at` string, date-time, nullable
    - `download_url` string, nullable
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## 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)
