|
9168 | 9168 | "post": { |
9169 | 9169 | "operationId": "template-write-update", |
9170 | 9170 | "summary": "Update a template", |
9171 | | - "description": "Replace the content of every channel on an existing template.", |
| 9171 | + "description": "Update an existing template. Channels you omit keep their content; send an empty string to clear one.", |
9172 | 9172 | "tags": [ |
9173 | 9173 | "On-call/Notification templates" |
9174 | 9174 | ], |
|
31116 | 31116 | }, |
31117 | 31117 | "ErrorCode": { |
31118 | 31118 | "type": "string", |
31119 | | - "description": "Flashduty error code enum. Every failed API response sets `error.code` to one of these values. The value is a stable wire string — not a localized message and not a numeric status. HTTP status is informational.", |
| 31119 | + "description": "Flashduty error code enum. Every failed API response sets `error.code` to one of these stable wire strings. HTTP status is informational — the authoritative signal is the enum value.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `OK` | 200 | Reserved — not returned on real errors. |\n| `InvalidParameter` | 400 | A required parameter is missing or failed validation. |\n| `BadRequest` | 400 | Generic 400 used when no more specific code fits. |\n| `InvalidContentType` | 400 | The `Content-Type` header is not `application/json`. |\n| `ResourceNotFound` | 400 | The referenced resource does not exist. Note: returned as HTTP 400, not 404 (historical choice). |\n| `NoLicense` | 400 | The feature is license-gated and no active license was found. |\n| `ReferenceExist` | 400 | Deletion blocked — other entities still reference this resource. |\n| `Unauthorized` | 401 | `app_key` is missing, invalid, or expired. |\n| `BalanceNotEnough` | 402 | Billing-gated operation with insufficient account balance. |\n| `AccessDenied` | 403 | Authenticated but lacking the permission required for this operation. |\n| `RouteNotFound` | 404 | The request URL path is not a known route. |\n| `MethodNotAllowed` | 405 | The HTTP method is not allowed on this otherwise-known path. |\n| `UndonedOrderExist` | 409 | An outstanding billing order blocks this new one. Wait and retry. |\n| `RequestLocked` | 423 | Operation temporarily locked due to repeated failures. |\n| `EntityTooLarge` | 413 | Request body exceeds the configured max size. |\n| `RequestTooFrequently` | 429 | Rate limit hit — API-global, per-account, or per-integration. |\n| `RequestVerifyRequired` | 428 | Second-factor verification required but not supplied. |\n| `DangerousOperation` | 428 | High-risk operation requires MFA verification. |\n| `InternalError` | 500 | Unhandled server-side error. Include `request_id` in the bug report. |\n| `ServiceUnavailable` | 503 | A backend dependency is unavailable. Try again later. |", |
31120 | 31120 | "enum": [ |
31121 | 31121 | "OK", |
31122 | 31122 | "InvalidParameter", |
|
31138 | 31138 | "DangerousOperation", |
31139 | 31139 | "InternalError", |
31140 | 31140 | "ServiceUnavailable" |
31141 | | - ] |
| 31141 | + ], |
| 31142 | + "x-enumDescriptions": { |
| 31143 | + "OK": "Reserved — not returned on real errors.", |
| 31144 | + "InvalidParameter": "A required parameter is missing or failed validation.", |
| 31145 | + "BadRequest": "Generic 400 used when no more specific code fits.", |
| 31146 | + "InvalidContentType": "The `Content-Type` header is not `application/json`.", |
| 31147 | + "ResourceNotFound": "The referenced resource does not exist. Note: returned as HTTP 400, not 404 (historical choice).", |
| 31148 | + "NoLicense": "The feature is license-gated and no active license was found.", |
| 31149 | + "ReferenceExist": "Deletion blocked — other entities still reference this resource.", |
| 31150 | + "Unauthorized": "`app_key` is missing, invalid, or expired.", |
| 31151 | + "BalanceNotEnough": "Billing-gated operation with insufficient account balance.", |
| 31152 | + "AccessDenied": "Authenticated but lacking the permission required for this operation.", |
| 31153 | + "RouteNotFound": "The request URL path is not a known route.", |
| 31154 | + "MethodNotAllowed": "The HTTP method is not allowed on this otherwise-known path.", |
| 31155 | + "UndonedOrderExist": "An outstanding billing order blocks this new one. Wait and retry.", |
| 31156 | + "RequestLocked": "Operation temporarily locked due to repeated failures.", |
| 31157 | + "EntityTooLarge": "Request body exceeds the configured max size.", |
| 31158 | + "RequestTooFrequently": "Rate limit hit — API-global, per-account, or per-integration.", |
| 31159 | + "RequestVerifyRequired": "Second-factor verification required but not supplied.", |
| 31160 | + "DangerousOperation": "High-risk operation requires MFA verification.", |
| 31161 | + "InternalError": "Unhandled server-side error. Include `request_id` in the bug report.", |
| 31162 | + "ServiceUnavailable": "A backend dependency is unavailable. Try again later." |
| 31163 | + }, |
| 31164 | + "example": "InvalidParameter" |
31142 | 31165 | }, |
31143 | 31166 | "DutyError": { |
31144 | 31167 | "type": "object", |
|
31149 | 31172 | }, |
31150 | 31173 | "message": { |
31151 | 31174 | "type": "string", |
31152 | | - "description": "Human-readable error message, localized by the caller's Accept-Language. May contain field names, IDs, or other context from the failing request." |
| 31175 | + "description": "Human-readable error message, localized by the caller's Accept-Language. May contain field names, IDs, or other context from the failing request.", |
| 31176 | + "example": "The specified parameter template_id is not valid." |
31153 | 31177 | } |
31154 | 31178 | }, |
31155 | 31179 | "required": [ |
|
0 commit comments