---
title: "Take everything one app scheduled off the calendar"
method: POST
path: "/schedule/apps/withdraw"
tags: ["Training"]
---

# Take everything one app scheduled off the calendar

`POST /schedule/apps/withdraw`

## Request

- Base URL: `https://bodylab.lol/api/v1`
- URL: `https://bodylab.lol/api/v1/schedule/apps/withdraw`
- Auth: HTTP bearer

The remedy for an assistant that misunderstood: every standing session the app wrote is withdrawn, the same soft withdrawal as `POST /commitments/{id}/withdraw`, and every event it wrote is removed, as `DELETE /events/{id}` would, except one the athlete has since made an A event — that letter builds a season around the date, and choosing it is the athlete taking the event as their own. Nothing the athlete entered themselves is touched, and nothing another app wrote. Works after the app is disconnected: disconnecting stops future writes and leaves the calendar alone, and this is the separate act that clears it. Answers with counts, and with zeros rather than an error when there was nothing to do, so a repeat is harmless. Takes the client id in the body rather than the path because a client id can be a URL.

## Headers

- `X-Client-Platform` string
- `X-Client-Version` string

## Request body

- object
  - `clientId` string, required

## Response `200`

OK

- object
  - `commitmentsWithdrawn` integer, required: Sessions withdrawn by this call. Each stays readable, as any withdrawn commitment does.
  - `eventsRemoved` integer, required: Events removed by this call.
  - `eventsKept` integer, required: Events this app wrote that were left alone because the athlete has since made them A events. Listed still, and removable one at a time with `DELETE /events/{id}`.

## Other responses

- `401`: Error: UNAUTHORIZED.

---

[API](https://skmtc.dev/bodylab/apis/body-lab-api.md) · [All operations](https://skmtc.dev/bodylab/apis/body-lab-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bodylab/apis/body-lab-api/revisions/544c201eaf88?raw)
