---
title: "Arrange cover for a bounded window"
method: POST
path: "/api/{org_id}/oncall/teams/{team_id}/overrides"
tags: ["OnCall"]
---

# Arrange cover for a bounded window

`POST /api/{org_id}/oncall/teams/{team_id}/overrides`

## Request

- Base URL: `https://api.openobserve.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openobserve.ai/api/{org_id}/oncall/teams/{team_id}/overrides`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/openobserve/apis/openobserve-api-http/docs/api/:org_id/oncall/teams/:team_id/overrides/post.ts> (a function with typed inputs; its response is checked against the schema)

## Path parameters

- `org_id` string, required
- `team_id` string, required

## Request body

- CreateOverrideRequest: "Cover for me" — `architecture/02` §5, as one request.
  - `covering_for` string, nullable: Optional: "cover tonight" is real even before whose shift tonight is has been worked out.
  - `end_at` integer, required: Micros, exclusive — a cover ending exactly when the next begins does not overlap it.
  - `reason` string, nullable
  - `rotation_id` string, nullable: Omitted means the primary; an unknown rotation is refused, or a cover staffs nothing.
  - `start_at` integer, required: Micros, inclusive.
  - `user_email` string, required: Must be a user of this org: an override outranks every layer, so a bad address is no pager.

## Response `200`

Success

- ScheduleOverride: One person taking a bounded slice of somebody else's on-call. `architecture/02` §5: absolute ranges, no recurrence, stored in micros. A separate record rather than an edit to the member list, so deleting it restores the computed result.
  - `covering_for` string, nullable: Who is being covered. Optional: "cover tonight" is a real request even when nobody has worked out whose shift tonight is.
  - `created_at` integer, required
  - `created_by` string, required
  - `end_at` integer, required: Exclusive, so two back-to-back overrides never both cover the instant between them — the same rule the handover boundary follows.
  - `id` string, required
  - `org_id` string, required
  - `reason` string, nullable
  - `rotation_id` string, required: Which rotation is being covered. A cover stands in for one position. Covering two of them is two covers, said out loud, rather than one that silently lands the same person in both.
  - `start_at` integer, required: Inclusive.
  - `team_id` string, required
  - `user_email` string, required: Who is actually holding the pager for this window.

## Other responses

- `400`: Invalid
- `404`: No such team

---

[API](https://skmtc.dev/openobserve/apis/openobserve-api-http.md) - [All operations](https://skmtc.dev/openobserve/apis/openobserve-api-http/llms.txt) - [OpenAPI document](https://skmtc.dev/openobserve/apis/openobserve-api-http/revisions/0529b8a10252?raw)
