> ## Documentation Index > Fetch the complete documentation index at: https://bunny.net/docs/llms.txt > Use this file to discover all available pages before exploring further. # Patch Application > Partially updates an existing application using JSON Merge Patch semantics. Only provided fields will be updated; existing fields not included in the request will remain unchanged. For arrays (containers, volumes, endpoints), items with matching IDs will be updated, items without IDs will be added as new, and items not included will be deleted. ## OpenAPI ````yaml https://api-mc.opsbunny.net/docs/public/swagger.json patch /apps/{appId} openapi: 3.0.4 info: title: Public API description: 'Public API endpoints for user consumption. Release version: v1.11.1.0' version: '1.0' servers: - url: https://api.bunny.net/mc security: - AccessKey: [] paths: /apps/{appId}: patch: tags: - Applications summary: Patch Application description: >- Partially updates an existing application using JSON Merge Patch semantics. Only provided fields will be updated; existing fields not included in the request will remain unchanged. For arrays (containers, volumes, endpoints), items with matching IDs will be updated, items without IDs will be added as new, and items not included will be deleted. operationId: PatchApplication parameters: - name: appId in: path description: The ID of the application to update required: true schema: type: string requestBody: description: Partial application configuration with only the fields to update content: application/json: schema: $ref: '#/components/schemas/PatchApplicationRequest' text/json: schema: $ref: '#/components/schemas/PatchApplicationRequest' application/*+json: schema: $ref: '#/components/schemas/PatchApplicationRequest' responses: '200': description: Application was successfully updated. content: application/json: schema: $ref: '#/components/schemas/AddApplicationResponse' '400': description: Invalid input. content: application/json: schema: $ref: '#/components/schemas/ErrorDetails' '401': description: User is unauthorized. content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '403': description: User has invalid card or suspended. content: application/json: schema: $ref: '#/components/schemas/ErrorDetails' '404': description: Application not found. content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' '422': description: Unprocessable entity. content: application/json: schema: $ref: '#/components/schemas/ErrorDetails' '500': description: Unexpected server error. content: application/json: schema: $ref: '#/components/schemas/ErrorDetails' components: schemas: PatchApplicationRequest: type: object properties: name: maxLength: 100 minLength: 1 pattern: '[A-Za-z0-9-\s]+' type: string nullable: true runtimeType: $ref: '#/components/schemas/ApplicationRuntimeType' autoScaling: $ref: '#/components/schemas/AutoscalingSettings' regionSettings: $ref: '#/components/schemas/UpdateRegionSettingsRequest' containerTemplates: type: array items: $ref: '#/components/schemas/ContainerRequest' nullable: true volumes: type: array items: $ref: '#/components/schemas/VolumeRequest' nullable: true gpu: $ref: '#/components/schemas/GpuConfig' additionalProperties: false AddApplicationResponse: type: object properties: id: type: string additionalProperties: false ErrorDetails: type: object properties: title: type: string description: A short, human-readable summary of the problem type. readOnly: true status: type: integer description: The HTTP status code. format: int32 readOnly: true detail: type: string description: >- A human-readable explanation specific to this occurrence of the problem. nullable: true readOnly: true instance: type: string description: >- A URI reference that identifies the specific occurrence of the problem. nullable: true readOnly: true errors: type: array items: $ref: '#/components/schemas/ValidationError' description: Additional validation errors for field-specific issues. nullable: true readOnly: true id: type: string description: >- The application ID, returned as an RFC 7807 extension field when relevant (e.g. partial save errors). Matches the "id" field from successful create response for consistency. nullable: true readOnly: true additionalProperties: false description: RFC 7807 Problem Details response model. ProblemDetails: type: object properties: type: type: string nullable: true title: type: string nullable: true status: type: integer format: int32 nullable: true detail: type: string nullable: true instance: type: string nullable: true additionalProperties: {} ApplicationRuntimeType: enum: - shared - reserved type: string AutoscalingSettings: required: - max - min type: object properties: min: maximum: 1000 minimum: 1 type: integer format: int32 example: 1 max: maximum: 1000 minimum: 1 type: integer format: int32 example: 10 additionalProperties: false UpdateRegionSettingsRequest: type: object properties: allowedRegionIds: type: array items: type: string nullable: true example: - DE - UK - US requiredRegionIds: type: array items: type: string nullable: true example: - DE maxAllowedRegions: type: integer format: int32 nullable: true example: 5 nodeSelectors: type: object additionalProperties: type: string nullable: true additionalProperties: false ContainerRequest: required: - imageName - imageNamespace - imageRegistryId - imageTag - name type: object properties: id: type: string description: >- Absence of the id means it is a new container. Presence of the id means it is an update of the existing. nullable: true name: maxLength: 50 minLength: 1 type: string image: type: string nullable: true imageName: minLength: 1 pattern: '[a-zA-Z0-9]+(?:[./_-]{1,2}[a-zA-Z0-9]+)*' type: string imageNamespace: minLength: 1 pattern: '[a-zA-Z0-9]+(?:[./_-]{1,2}[a-zA-Z0-9]+)*' type: string imageTag: minLength: 1 pattern: '[a-zA-Z0-9]+(?:[._-]{1,2}[a-zA-Z0-9]+)*' type: string imageDigest: pattern: sha256:[a-z0-9]{64} type: string nullable: true imageRegistryId: minLength: 1 type: string imagePullPolicy: $ref: '#/components/schemas/ImagePullPolicy' entryPoint: $ref: '#/components/schemas/ContainerEntryPoint' probes: $ref: '#/components/schemas/ContainerProbes' environmentVariables: type: array items: $ref: '#/components/schemas/EnvironmentVariable' endpoints: type: array items: $ref: '#/components/schemas/EndpointRequest' volumeMounts: type: array items: $ref: '#/components/schemas/VolumeMountRequest' additionalProperties: false VolumeRequest: required: - name - size type: object properties: name: maxLength: 50 minLength: 1 type: string size: maximum: 100 minimum: 1 type: integer format: int32 example: 5 additionalProperties: false GpuConfig: required: - type type: object properties: type: minLength: 1 type: string count: maximum: 2147483647 minimum: 1 type: integer format: int32 example: 25 additionalProperties: false ValidationError: required: - message type: object properties: field: type: string nullable: true message: type: string additionalProperties: false ImagePullPolicy: enum: - always - ifNotPresent type: string ContainerEntryPoint: type: object properties: command: type: string nullable: true commandArray: type: array items: type: string nullable: true arguments: type: string nullable: true argumentsArray: type: array items: type: string nullable: true workingDirectory: type: string nullable: true additionalProperties: false ContainerProbes: type: object properties: startup: $ref: '#/components/schemas/ContainerProbe' readiness: $ref: '#/components/schemas/ContainerProbe' liveness: $ref: '#/components/schemas/ContainerProbe' additionalProperties: false EnvironmentVariable: required: - name type: object properties: name: minLength: 1 type: string value: type: string additionalProperties: false EndpointRequest: required: - displayName type: object properties: displayName: maxLength: 50 minLength: 1 type: string cdn: $ref: '#/components/schemas/CdnEndpointRequest' anycast: $ref: '#/components/schemas/AnycastEndpointRequest' additionalProperties: false VolumeMountRequest: required: - mountPath - name type: object properties: name: maxLength: 50 minLength: 1 type: string mountPath: minLength: 1 pattern: ^/(?!.*//)(?!.*\.\.)(?!.*\s)([a-zA-Z0-9._-]+/?)+$ type: string additionalProperties: false ContainerProbe: type: object properties: initialDelaySeconds: maximum: 3600 minimum: 1 type: integer format: int32 default: 10 nullable: true periodSeconds: maximum: 3600 minimum: 1 type: integer format: int32 default: 10 nullable: true timeoutSeconds: maximum: 3600 minimum: 1 type: integer format: int32 default: 7 nullable: true failureThreshold: maximum: 1000 minimum: 1 type: integer format: int32 default: 3 nullable: true successThreshold: maximum: 1000 minimum: 1 type: integer format: int32 default: 1 nullable: true httpGet: $ref: '#/components/schemas/HttpGetProbe' tcpSocket: $ref: '#/components/schemas/TcpSocketProbe' grpc: $ref: '#/components/schemas/GrpcProbe' additionalProperties: false CdnEndpointRequest: type: object properties: isSslEnabled: type: boolean stickySessions: $ref: '#/components/schemas/StickySessionSettings' pullZoneId: type: integer format: int32 nullable: true portMappings: maxItems: 1 minItems: 1 type: array items: $ref: '#/components/schemas/ContainerPortMappingRequest' additionalProperties: false AnycastEndpointRequest: required: - portMappings - type type: object properties: type: $ref: '#/components/schemas/AnycastIpProtocolVersion' portMappings: minItems: 1 type: array items: $ref: '#/components/schemas/ContainerPortMappingRequest' additionalProperties: false HttpGetProbe: type: object properties: request: $ref: '#/components/schemas/HttpGetProbeRequestDetails' response: $ref: '#/components/schemas/HttpGetProbeResponseDetails' additionalProperties: false TcpSocketProbe: type: object properties: request: $ref: '#/components/schemas/TcpSocketProbeRequestDetails' additionalProperties: false GrpcProbe: type: object properties: request: $ref: '#/components/schemas/GrpcProbeRequestDetails' additionalProperties: false StickySessionSettings: required: - sessionHeaders type: object properties: enabled: type: boolean sessionHeaders: maxItems: 3 minItems: 1 type: array items: type: string cookieName: type: string additionalProperties: false ContainerPortMappingRequest: required: - containerPort type: object properties: containerPort: maximum: 65535 minimum: 1 type: integer format: int32 exposedPort: maximum: 65535 minimum: 1 type: integer format: int32 nullable: true protocols: type: array items: $ref: '#/components/schemas/Protocol' additionalProperties: false AnycastIpProtocolVersion: enum: - iPv4 type: string HttpGetProbeRequestDetails: type: object properties: path: type: string portNumber: maximum: 65535 minimum: 1 type: integer format: int32 additionalProperties: false HttpGetProbeResponseDetails: type: object properties: expectedStatusCode: $ref: '#/components/schemas/HttpStatusCode' additionalProperties: false TcpSocketProbeRequestDetails: type: object properties: portNumber: maximum: 65535 minimum: 1 type: integer format: int32 additionalProperties: false GrpcProbeRequestDetails: type: object properties: portNumber: maximum: 65535 minimum: 1 type: integer format: int32 serviceName: type: string description: >- If this is not specified, the default behavior is to probe the server's overall health status. nullable: true additionalProperties: false Protocol: enum: - tcp - udp - sctp type: string HttpStatusCode: enum: - continue - switchingProtocols - processing - earlyHints - ok - created - accepted - nonAuthoritativeInformation - noContent - resetContent - partialContent - multiStatus - alreadyReported - imUsed - multipleChoices - movedPermanently - found - seeOther - notModified - useProxy - unused - temporaryRedirect - permanentRedirect - badRequest - unauthorized - paymentRequired - forbidden - notFound - methodNotAllowed - notAcceptable - proxyAuthenticationRequired - requestTimeout - conflict - gone - lengthRequired - preconditionFailed - requestEntityTooLarge - requestUriTooLong - unsupportedMediaType - requestedRangeNotSatisfiable - expectationFailed - misdirectedRequest - unprocessableEntity - locked - failedDependency - upgradeRequired - preconditionRequired - tooManyRequests - requestHeaderFieldsTooLarge - unavailableForLegalReasons - internalServerError - notImplemented - badGateway - serviceUnavailable - gatewayTimeout - httpVersionNotSupported - variantAlsoNegotiates - insufficientStorage - loopDetected - notExtended - networkAuthenticationRequired type: string securitySchemes: AccessKey: type: apiKey description: Please enter a valid personal API key. name: AccessKey in: header ```` This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.