---
title: "purge_development_applications"
description: "Generated reference for the management action purge_development_applications: its description, access metadata, payload contract, and registration status."
slug: /reference/actions/purge-development-applications
order: 93
visibility: public
redirects_from: []
---

# purge\_development\_applications

Generated automatically from the [published contract sources](/reference/about#contract-sources).

**Build metadata:** Registered in this build. Registration describes the default dispatcher in this build. It does not guarantee that a caller has the required credential or grant, that a tool is listed for that connection, or that the required service is configured.

A script calls this action over HTTPS at `POST https://turnzero.ai/api/v1/actions/purge_development_applications`, with a bearer credential and the action's payload as the JSON body.

## Contract description

Delete your own account's applications you list on the development estate, with no pending action and no browser approval: the bake start's step for the operator's standing applications\. Super\-admin \(platform operator\) only; a session calls it at the operator's word\. Returns 202 at once with each id's state, \`walking\` or \`not\_held\`, the second for an id your account does not hold; the walks then run detached, and \`read\_platform\_usage\` shows each application gone\. A listed application whose deletion is already in flight refuses the whole call \`deletion\_in\_progress\`; finish it through \`delete\_application\` and its approval\. Production and every other estate refuse the call \`development\_estate\_required\`\.

## Access and action metadata

```json
{
  "name": "purge_development_applications",
  "resource": "account",
  "tier": "reversible",
  "grant": "super_admin",
  "summary": "Super-admin: delete your own account's applications you list, on the development estate alone, with no pending action and no browser approval. The call returns 202 at once with each id's state: `walking`, its deletion walk started in list order, or `not_held`, an id your account does not hold, unknown or another account's alike, left untouched. The walks then run detached, one application after another, and `read_platform_usage` shows each application gone. A failed walk leaves the application's deletion marker and its row listed, recorded under a reference. Where one of your listed applications already carries a deletion marker, the whole call is refused 409 `deletion_in_progress` and nothing starts; finish that deletion through `delete_application` and its approval. Every estate but development refuses the call 409 `development_estate_required` before it reads anything.",
  "annotations": {
    "readOnlyHint": false,
    "destructiveHint": true,
    "openWorldHint": true
  }
}
```

## MCP catalog entry

```json
{
  "name": "purge_development_applications",
  "title": "Purge development applications",
  "tier": "reversible",
  "scenario": "API-L0-12",
  "summary": "Delete your own account's applications you list on the development estate, with no pending action and no browser approval: the bake start's step for the operator's standing applications. Super-admin (platform operator) only; a session calls it at the operator's word. Returns 202 at once with each id's state, `walking` or `not_held`, the second for an id your account does not hold; the walks then run detached, and `read_platform_usage` shows each application gone. A listed application whose deletion is already in flight refuses the whole call `deletion_in_progress`; finish it through `delete_application` and its approval. Production and every other estate refuse the call `development_estate_required`.",
  "owners": [
    "MAPI-27",
    "MAPI-04",
    "MAPI-06"
  ]
}
```

## request

| JSON pointer | Description and constraints |
|---|---|
| "" \(root\) | Type: object<br>Required fields: \["applications"\]<br>Additional properties: false |
| /<wbr>properties/<wbr>applications | The ids of your own account's applications to delete, from \`list\_applications\`: one or more\. An id your account does not hold, unknown or another account's, gets the state \`not\_held\` and is left as it is\.<br><br>Type: array<br>Minimum items: 1 |
| /<wbr>properties/<wbr>applications/<wbr>items | Type: string<br>Minimum length: 1 |

## response

| JSON pointer | Description and constraints |
|---|---|
| "" \(root\) | Returns 202 at once; the walks run after the answer, one application after another\.<br><br>Type: object<br>Required fields: \["contract\_version","applications"\]<br>Additional properties: false |
| /<wbr>properties/<wbr>contract\_version | Required value: 1 |
| /<wbr>properties/<wbr>applications | One entry per distinct id you list, in the order you list them\.<br><br>Type: array |
| /<wbr>properties/<wbr>applications/<wbr>items | Type: object<br>Required fields: \["application","state"\]<br>Additional properties: false |
| /<wbr>properties/<wbr>applications/<wbr>items/<wbr>properties/<wbr>application | Type: string |
| /<wbr>properties/<wbr>applications/<wbr>items/<wbr>properties/<wbr>state | \`walking\`: your account's own application, its deletion walk started in list order; \`read\_platform\_usage\` shows it gone once the walk ends\. \`not\_held\`: your account holds no application under the id, unknown or another account's alike, and nothing was touched\.<br><br>Allowed values: \["walking","not\_held"\] |

## Complete payload contract

```json
{
  "request": {
    "type": "object",
    "required": [
      "applications"
    ],
    "properties": {
      "applications": {
        "type": "array",
        "minItems": 1,
        "items": {
          "type": "string",
          "minLength": 1
        },
        "description": "The ids of your own account's applications to delete, from `list_applications`: one or more. An id your account does not hold, unknown or another account's, gets the state `not_held` and is left as it is."
      }
    },
    "additionalProperties": false
  },
  "response": {
    "type": "object",
    "required": [
      "contract_version",
      "applications"
    ],
    "properties": {
      "contract_version": {
        "const": 1
      },
      "applications": {
        "type": "array",
        "description": "One entry per distinct id you list, in the order you list them.",
        "items": {
          "type": "object",
          "required": [
            "application",
            "state"
          ],
          "properties": {
            "application": {
              "type": "string"
            },
            "state": {
              "enum": [
                "walking",
                "not_held"
              ],
              "description": "`walking`: your account's own application, its deletion walk started in list order; `read_platform_usage` shows it gone once the walk ends. `not_held`: your account holds no application under the id, unknown or another account's alike, and nothing was touched."
            }
          },
          "additionalProperties": false
        }
      }
    },
    "additionalProperties": false,
    "description": "Returns 202 at once; the walks run after the answer, one application after another."
  }
}
```

## Shared contracts

- [Refusals](/reference/refusals): every refusal, by surface, with its cause and its remedy
- [schemas/wire\_error\.schema\.json](/reference/sources/schemas/wire-error-schema)
- [schemas/wire\_errors\.json](/reference/sources/schemas/wire-errors)
- [schemas/action\_payloads\.json](/reference/sources/schemas/action-payloads) (includes shared shapes)
- [management\_api\_contract\.md](/reference/sources/management-api-contract)
