> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Maintenance Mode

> Updates maintenance mode settings for an API proxy. When maintenance mode is enabled, all incoming requests to the API proxy are rejected with a configurable HTTP status code and message.

## Endpoint

```
PATCH /apiops/projects/{projectName}/apiProxies/{apiProxyName}/settings/maintenance-mode/
```

## Authentication

Requires a Personal API Access Token.

### Header

```
Authorization: Bearer YOUR_TOKEN
```

## Request

### Headers

| Header        | Value            | Required |
| ------------- | ---------------- | -------- |
| Authorization | Bearer {token}   | Yes      |
| Content-Type  | application/json | Yes      |

### Path Parameters

| Parameter    | Type   | Required | Description    |
| ------------ | ------ | -------- | -------------- |
| projectName  | string | Yes      | Project name   |
| apiProxyName | string | Yes      | API Proxy name |

### Request Body

#### Full JSON Body Example

```json theme={null}
{
  "enabled": true,
  "httpStatusCode": 503,
  "contentType": "application/json; charset=utf-8",
  "message": "{\"status\": 503, \"message\": \"Service is currently under maintenance. Please try again later.\"}",
  "deploy": false,
  "deployTargetEnvironmentNameList": []
}
```

#### Request Body Fields

| Field                           | Type           | Required | Default                         | Description                                                        |
| ------------------------------- | -------------- | -------- | ------------------------------- | ------------------------------------------------------------------ |
| enabled                         | boolean        | No       | false                           | Enable or disable maintenance mode                                 |
| httpStatusCode                  | integer        | No       | 403                             | HTTP status code returned to clients during maintenance            |
| contentType                     | string         | No       | application/json; charset=utf-8 | Content-Type header of the maintenance response                    |
| message                         | string         | No       | (default message)               | Response body message returned to clients during maintenance       |
| deploy                          | boolean        | No       | false                           | If true, deploy the API proxy after saving changes                 |
| deployTargetEnvironmentNameList | array\[string] | No       | -                               | List of environment names to deploy to (required when deploy=true) |

**Note:** All fields are optional. Only provided fields are updated. Omitted fields retain their current values.

## Response

### Success Response (200 OK)

```json theme={null}
{
  "success": true
}
```

#### Response Fields

| Field   | Type    | Description                             |
| ------- | ------- | --------------------------------------- |
| success | boolean | Indicates if the request was successful |

When `deploy=true` is specified:

```json theme={null}
{
  "success": true,
  "deploymentResult": {
    "success": true,
    "deploymentResults": [
      {
        "environmentName": "production",
        "success": true,
        "message": "Deployment successful"
      }
    ]
  }
}
```

| Field                              | Type    | Description                                        |
| ---------------------------------- | ------- | -------------------------------------------------- |
| deploymentResult                   | object  | Only present when deploy=true                      |
| deploymentResult.success           | boolean | Indicates if the overall deployment was successful |
| deploymentResult.deploymentResults | array   | List of deployment results per environment         |

### Error Response (401 Unauthorized)

```json theme={null}
{
  "error": "unauthorized_client",
  "error_description": "Invalid token"
}
```

### Error Response (400 Bad Request)

```json theme={null}
{
  "error": "bad_request",
  "error_description": "ApiProxy (name: MyAPI) was not found!"
}
```

## cURL Example

### Example 1: Enable Maintenance Mode

```bash theme={null}
curl -X PATCH \
  "https://demo.apinizer.com/apiops/projects/MyProject/apiProxies/MyAPI/settings/maintenance-mode/" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true,
    "httpStatusCode": 503,
    "contentType": "application/json; charset=utf-8",
    "message": "{\"status\": 503, \"message\": \"Service is under maintenance\"}"
  }'
```

### Example 2: Disable Maintenance Mode

```bash theme={null}
curl -X PATCH \
  "https://demo.apinizer.com/apiops/projects/MyProject/apiProxies/MyAPI/settings/maintenance-mode/" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": false
  }'
```

### Example 3: Update Only the Status Code

```bash theme={null}
curl -X PATCH \
  "https://demo.apinizer.com/apiops/projects/MyProject/apiProxies/MyAPI/settings/maintenance-mode/" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "httpStatusCode": 503
  }'
```

### Example 4: Save and Deploy

```bash theme={null}
curl -X PATCH \
  "https://demo.apinizer.com/apiops/projects/MyProject/apiProxies/MyAPI/settings/maintenance-mode/" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true,
    "httpStatusCode": 503,
    "deploy": true,
    "deployTargetEnvironmentNameList": ["production"]
  }'
```

## Permissions

User must have **`API_MANAGEMENT` + `MANAGE`** permission in the project.

## Notes and Warnings

* **Partial Update**: Only provided fields are updated. You can send just the fields you want to change
* **Immediate Effect**: Changes take effect after the API proxy is redeployed
* **Custom Message**: The `message` field accepts any string content. For JSON responses, ensure proper escaping
* **Content Type**: The `contentType` field controls the `Content-Type` header of the maintenance mode response
* **Default Status Code**: If not specified, the default HTTP status code is `403 Forbidden`
* **Deploy**: When `deploy=true`, the API proxy is automatically deployed to the specified environments after saving

## Related Documentation

* [Get API Proxy Detail](/api-reference/api-proxies/crud/get-api-proxy) - Get API proxy details
* [Update Traffic Log Settings](/api-reference/api-proxies/settings/update-traffic-log-settings) - Configure traffic logging
* [Update Trace Settings](/api-reference/api-proxies/settings/update-trace-settings) - Configure trace settings
* [Deploy API Proxy](/api-reference/api-proxies/deployment/deploy-api-proxy) - Deploy API proxy to apply changes
