---
title: "Patch Container Template"
method: PATCH
path: "/apps/{appId}/containers/{containerId}"
tags: ["Containers"]
---

# Patch Container Template

`PATCH /apps/{appId}/containers/{containerId}`

Partially updates a container template within an application. Only provided fields will be updated; existing fields not included in the request will remain unchanged.

## Path parameters

- `appId` string, required
- `containerId` string, required

## Request body

- PatchContainerRequest
  - `name` string, nullable
  - `image` string, nullable
  - `imageName` string, nullable
  - `imageNamespace` string, nullable
  - `imageTag` string, nullable
  - `imageDigest` string, nullable
  - `imageRegistryId` string, nullable
  - `imagePullPolicy` 'always' | 'ifNotPresent'
  - `entryPoint` ContainerEntryPoint
    - `command` string, nullable
    - `commandArray` string[], nullable
    - `arguments` string, nullable
    - `argumentsArray` string[], nullable
    - `workingDirectory` string, nullable
  - `probes` ContainerProbes
    - `startup` ContainerProbe
      - `initialDelaySeconds` integer, nullable
      - `periodSeconds` integer, nullable
      - `timeoutSeconds` integer, nullable
      - `failureThreshold` integer, nullable
      - `successThreshold` integer, nullable
      - `httpGet` HttpGetProbe
        - `request` HttpGetProbeRequestDetails
          - `path` string
          - `portNumber` integer
        - `response` HttpGetProbeResponseDetails
          - `expectedStatusCode` 100 | 101 | 102 | 103 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 421 | 422 | 423 | 424 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511 — 100 = Continue 101 = SwitchingProtocols 102 = Processing 103 = EarlyHints 200 = OK 201 = Created 202 = Accepted 203 = NonAuthoritativeInformation 204 = NoContent 205 = ResetContent 206 = PartialContent 207 = MultiStatus 208 = AlreadyReported 226 = IMUsed 300 = MultipleChoices 300 = Ambiguous 301 = MovedPermanently 301 = Moved 302 = Found 302 = Redirect 303 = SeeOther 303 = RedirectMethod 304 = NotModified 305 = UseProxy 306 = Unused 307 = TemporaryRedirect 307 = RedirectKeepVerb 308 = PermanentRedirect 400 = BadRequest 401 = Unauthorized 402 = PaymentRequired 403 = Forbidden 404 = NotFound 405 = MethodNotAllowed 406 = NotAcceptable 407 = ProxyAuthenticationRequired 408 = RequestTimeout 409 = Conflict 410 = Gone 411 = LengthRequired 412 = PreconditionFailed 413 = RequestEntityTooLarge 414 = RequestUriTooLong 415 = UnsupportedMediaType 416 = RequestedRangeNotSatisfiable 417 = ExpectationFailed 421 = MisdirectedRequest 422 = UnprocessableEntity 422 = UnprocessableContent 423 = Locked 424 = FailedDependency 426 = UpgradeRequired 428 = PreconditionRequired 429 = TooManyRequests 431 = RequestHeaderFieldsTooLarge 451 = UnavailableForLegalReasons 500 = InternalServerError 501 = NotImplemented 502 = BadGateway 503 = ServiceUnavailable 504 = GatewayTimeout 505 = HttpVersionNotSupported 506 = VariantAlsoNegotiates 507 = InsufficientStorage 508 = LoopDetected 510 = NotExtended 511 = NetworkAuthenticationRequired
      - `tcpSocket` TcpSocketProbe
        - `request` TcpSocketProbeRequestDetails
          - `portNumber` integer
      - `grpc` GrpcProbe
        - `request` GrpcProbeRequestDetails
          - `portNumber` integer
          - `serviceName` string, nullable — If this is not specified, the default behavior is to probe the server's overall health status.
    - `readiness` ContainerProbe
      - `initialDelaySeconds` integer, nullable
      - `periodSeconds` integer, nullable
      - `timeoutSeconds` integer, nullable
      - `failureThreshold` integer, nullable
      - `successThreshold` integer, nullable
      - `httpGet` HttpGetProbe
        - `request` HttpGetProbeRequestDetails
          - `path` string
          - `portNumber` integer
        - `response` HttpGetProbeResponseDetails
          - `expectedStatusCode` 100 | 101 | 102 | 103 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 421 | 422 | 423 | 424 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511 — 100 = Continue 101 = SwitchingProtocols 102 = Processing 103 = EarlyHints 200 = OK 201 = Created 202 = Accepted 203 = NonAuthoritativeInformation 204 = NoContent 205 = ResetContent 206 = PartialContent 207 = MultiStatus 208 = AlreadyReported 226 = IMUsed 300 = MultipleChoices 300 = Ambiguous 301 = MovedPermanently 301 = Moved 302 = Found 302 = Redirect 303 = SeeOther 303 = RedirectMethod 304 = NotModified 305 = UseProxy 306 = Unused 307 = TemporaryRedirect 307 = RedirectKeepVerb 308 = PermanentRedirect 400 = BadRequest 401 = Unauthorized 402 = PaymentRequired 403 = Forbidden 404 = NotFound 405 = MethodNotAllowed 406 = NotAcceptable 407 = ProxyAuthenticationRequired 408 = RequestTimeout 409 = Conflict 410 = Gone 411 = LengthRequired 412 = PreconditionFailed 413 = RequestEntityTooLarge 414 = RequestUriTooLong 415 = UnsupportedMediaType 416 = RequestedRangeNotSatisfiable 417 = ExpectationFailed 421 = MisdirectedRequest 422 = UnprocessableEntity 422 = UnprocessableContent 423 = Locked 424 = FailedDependency 426 = UpgradeRequired 428 = PreconditionRequired 429 = TooManyRequests 431 = RequestHeaderFieldsTooLarge 451 = UnavailableForLegalReasons 500 = InternalServerError 501 = NotImplemented 502 = BadGateway 503 = ServiceUnavailable 504 = GatewayTimeout 505 = HttpVersionNotSupported 506 = VariantAlsoNegotiates 507 = InsufficientStorage 508 = LoopDetected 510 = NotExtended 511 = NetworkAuthenticationRequired
      - `tcpSocket` TcpSocketProbe
        - `request` TcpSocketProbeRequestDetails
          - `portNumber` integer
      - `grpc` GrpcProbe
        - `request` GrpcProbeRequestDetails
          - `portNumber` integer
          - `serviceName` string, nullable — If this is not specified, the default behavior is to probe the server's overall health status.
    - `liveness` ContainerProbe
      - `initialDelaySeconds` integer, nullable
      - `periodSeconds` integer, nullable
      - `timeoutSeconds` integer, nullable
      - `failureThreshold` integer, nullable
      - `successThreshold` integer, nullable
      - `httpGet` HttpGetProbe
        - `request` HttpGetProbeRequestDetails
          - `path` string
          - `portNumber` integer
        - `response` HttpGetProbeResponseDetails
          - `expectedStatusCode` 100 | 101 | 102 | 103 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 421 | 422 | 423 | 424 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511 — 100 = Continue 101 = SwitchingProtocols 102 = Processing 103 = EarlyHints 200 = OK 201 = Created 202 = Accepted 203 = NonAuthoritativeInformation 204 = NoContent 205 = ResetContent 206 = PartialContent 207 = MultiStatus 208 = AlreadyReported 226 = IMUsed 300 = MultipleChoices 300 = Ambiguous 301 = MovedPermanently 301 = Moved 302 = Found 302 = Redirect 303 = SeeOther 303 = RedirectMethod 304 = NotModified 305 = UseProxy 306 = Unused 307 = TemporaryRedirect 307 = RedirectKeepVerb 308 = PermanentRedirect 400 = BadRequest 401 = Unauthorized 402 = PaymentRequired 403 = Forbidden 404 = NotFound 405 = MethodNotAllowed 406 = NotAcceptable 407 = ProxyAuthenticationRequired 408 = RequestTimeout 409 = Conflict 410 = Gone 411 = LengthRequired 412 = PreconditionFailed 413 = RequestEntityTooLarge 414 = RequestUriTooLong 415 = UnsupportedMediaType 416 = RequestedRangeNotSatisfiable 417 = ExpectationFailed 421 = MisdirectedRequest 422 = UnprocessableEntity 422 = UnprocessableContent 423 = Locked 424 = FailedDependency 426 = UpgradeRequired 428 = PreconditionRequired 429 = TooManyRequests 431 = RequestHeaderFieldsTooLarge 451 = UnavailableForLegalReasons 500 = InternalServerError 501 = NotImplemented 502 = BadGateway 503 = ServiceUnavailable 504 = GatewayTimeout 505 = HttpVersionNotSupported 506 = VariantAlsoNegotiates 507 = InsufficientStorage 508 = LoopDetected 510 = NotExtended 511 = NetworkAuthenticationRequired
      - `tcpSocket` TcpSocketProbe
        - `request` TcpSocketProbeRequestDetails
          - `portNumber` integer
      - `grpc` GrpcProbe
        - `request` GrpcProbeRequestDetails
          - `portNumber` integer
          - `serviceName` string, nullable — If this is not specified, the default behavior is to probe the server's overall health status.
  - `environmentVariables` EnvironmentVariable[], nullable
    - `name` string, required
    - `value` string
  - `endpoints` EndpointRequest[], nullable
    - `displayName` string, required
    - `cdn` CdnEndpointRequest
      - `isSslEnabled` boolean
      - `stickySessions` StickySessionSettings
        - `enabled` boolean
        - `sessionHeaders` string[], required
        - `cookieName` string
      - `pullZoneId` integer, nullable
      - `portMappings` ContainerPortMappingRequest[]
        - `containerPort` integer, required
        - `exposedPort` integer, nullable
        - `protocols` Protocol[]
    - `anycast` AnycastEndpointRequest
      - `type` 'iPv4', required
      - `portMappings` ContainerPortMappingRequest[], required
        - `containerPort` integer, required
        - `exposedPort` integer, nullable
        - `protocols` Protocol[]
  - `volumeMounts` VolumeMountRequest[], nullable
    - `name` string, required
    - `mountPath` string, required

## Response `200`

Container template was successfully updated.

- ContainerTemplate — Container template model
  - `id` string, required
  - `name` string, required
  - `packageId` string, required
  - `image` string, required
  - `imageName` string, required
  - `imageNamespace` string, required
  - `imageTag` string, required
  - `imageRegistryId` string, required
  - `imageDigest` string, required
  - `imagePullPolicy` 'always' | 'ifNotPresent', required
  - `entryPoint` ContainerEntryPoint, required
    - `command` string, nullable
    - `commandArray` string[], nullable
    - `arguments` string, nullable
    - `argumentsArray` string[], nullable
    - `workingDirectory` string, nullable
  - `probes` ContainerProbes, required
    - `startup` ContainerProbe
      - `initialDelaySeconds` integer, nullable
      - `periodSeconds` integer, nullable
      - `timeoutSeconds` integer, nullable
      - `failureThreshold` integer, nullable
      - `successThreshold` integer, nullable
      - `httpGet` HttpGetProbe
        - `request` HttpGetProbeRequestDetails
          - `path` string
          - `portNumber` integer
        - `response` HttpGetProbeResponseDetails
          - `expectedStatusCode` 100 | 101 | 102 | 103 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 421 | 422 | 423 | 424 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511 — 100 = Continue 101 = SwitchingProtocols 102 = Processing 103 = EarlyHints 200 = OK 201 = Created 202 = Accepted 203 = NonAuthoritativeInformation 204 = NoContent 205 = ResetContent 206 = PartialContent 207 = MultiStatus 208 = AlreadyReported 226 = IMUsed 300 = MultipleChoices 300 = Ambiguous 301 = MovedPermanently 301 = Moved 302 = Found 302 = Redirect 303 = SeeOther 303 = RedirectMethod 304 = NotModified 305 = UseProxy 306 = Unused 307 = TemporaryRedirect 307 = RedirectKeepVerb 308 = PermanentRedirect 400 = BadRequest 401 = Unauthorized 402 = PaymentRequired 403 = Forbidden 404 = NotFound 405 = MethodNotAllowed 406 = NotAcceptable 407 = ProxyAuthenticationRequired 408 = RequestTimeout 409 = Conflict 410 = Gone 411 = LengthRequired 412 = PreconditionFailed 413 = RequestEntityTooLarge 414 = RequestUriTooLong 415 = UnsupportedMediaType 416 = RequestedRangeNotSatisfiable 417 = ExpectationFailed 421 = MisdirectedRequest 422 = UnprocessableEntity 422 = UnprocessableContent 423 = Locked 424 = FailedDependency 426 = UpgradeRequired 428 = PreconditionRequired 429 = TooManyRequests 431 = RequestHeaderFieldsTooLarge 451 = UnavailableForLegalReasons 500 = InternalServerError 501 = NotImplemented 502 = BadGateway 503 = ServiceUnavailable 504 = GatewayTimeout 505 = HttpVersionNotSupported 506 = VariantAlsoNegotiates 507 = InsufficientStorage 508 = LoopDetected 510 = NotExtended 511 = NetworkAuthenticationRequired
      - `tcpSocket` TcpSocketProbe
        - `request` TcpSocketProbeRequestDetails
          - `portNumber` integer
      - `grpc` GrpcProbe
        - `request` GrpcProbeRequestDetails
          - `portNumber` integer
          - `serviceName` string, nullable — If this is not specified, the default behavior is to probe the server's overall health status.
    - `readiness` ContainerProbe
      - `initialDelaySeconds` integer, nullable
      - `periodSeconds` integer, nullable
      - `timeoutSeconds` integer, nullable
      - `failureThreshold` integer, nullable
      - `successThreshold` integer, nullable
      - `httpGet` HttpGetProbe
        - `request` HttpGetProbeRequestDetails
          - `path` string
          - `portNumber` integer
        - `response` HttpGetProbeResponseDetails
          - `expectedStatusCode` 100 | 101 | 102 | 103 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 421 | 422 | 423 | 424 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511 — 100 = Continue 101 = SwitchingProtocols 102 = Processing 103 = EarlyHints 200 = OK 201 = Created 202 = Accepted 203 = NonAuthoritativeInformation 204 = NoContent 205 = ResetContent 206 = PartialContent 207 = MultiStatus 208 = AlreadyReported 226 = IMUsed 300 = MultipleChoices 300 = Ambiguous 301 = MovedPermanently 301 = Moved 302 = Found 302 = Redirect 303 = SeeOther 303 = RedirectMethod 304 = NotModified 305 = UseProxy 306 = Unused 307 = TemporaryRedirect 307 = RedirectKeepVerb 308 = PermanentRedirect 400 = BadRequest 401 = Unauthorized 402 = PaymentRequired 403 = Forbidden 404 = NotFound 405 = MethodNotAllowed 406 = NotAcceptable 407 = ProxyAuthenticationRequired 408 = RequestTimeout 409 = Conflict 410 = Gone 411 = LengthRequired 412 = PreconditionFailed 413 = RequestEntityTooLarge 414 = RequestUriTooLong 415 = UnsupportedMediaType 416 = RequestedRangeNotSatisfiable 417 = ExpectationFailed 421 = MisdirectedRequest 422 = UnprocessableEntity 422 = UnprocessableContent 423 = Locked 424 = FailedDependency 426 = UpgradeRequired 428 = PreconditionRequired 429 = TooManyRequests 431 = RequestHeaderFieldsTooLarge 451 = UnavailableForLegalReasons 500 = InternalServerError 501 = NotImplemented 502 = BadGateway 503 = ServiceUnavailable 504 = GatewayTimeout 505 = HttpVersionNotSupported 506 = VariantAlsoNegotiates 507 = InsufficientStorage 508 = LoopDetected 510 = NotExtended 511 = NetworkAuthenticationRequired
      - `tcpSocket` TcpSocketProbe
        - `request` TcpSocketProbeRequestDetails
          - `portNumber` integer
      - `grpc` GrpcProbe
        - `request` GrpcProbeRequestDetails
          - `portNumber` integer
          - `serviceName` string, nullable — If this is not specified, the default behavior is to probe the server's overall health status.
    - `liveness` ContainerProbe
      - `initialDelaySeconds` integer, nullable
      - `periodSeconds` integer, nullable
      - `timeoutSeconds` integer, nullable
      - `failureThreshold` integer, nullable
      - `successThreshold` integer, nullable
      - `httpGet` HttpGetProbe
        - `request` HttpGetProbeRequestDetails
          - `path` string
          - `portNumber` integer
        - `response` HttpGetProbeResponseDetails
          - `expectedStatusCode` 100 | 101 | 102 | 103 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 421 | 422 | 423 | 424 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511 — 100 = Continue 101 = SwitchingProtocols 102 = Processing 103 = EarlyHints 200 = OK 201 = Created 202 = Accepted 203 = NonAuthoritativeInformation 204 = NoContent 205 = ResetContent 206 = PartialContent 207 = MultiStatus 208 = AlreadyReported 226 = IMUsed 300 = MultipleChoices 300 = Ambiguous 301 = MovedPermanently 301 = Moved 302 = Found 302 = Redirect 303 = SeeOther 303 = RedirectMethod 304 = NotModified 305 = UseProxy 306 = Unused 307 = TemporaryRedirect 307 = RedirectKeepVerb 308 = PermanentRedirect 400 = BadRequest 401 = Unauthorized 402 = PaymentRequired 403 = Forbidden 404 = NotFound 405 = MethodNotAllowed 406 = NotAcceptable 407 = ProxyAuthenticationRequired 408 = RequestTimeout 409 = Conflict 410 = Gone 411 = LengthRequired 412 = PreconditionFailed 413 = RequestEntityTooLarge 414 = RequestUriTooLong 415 = UnsupportedMediaType 416 = RequestedRangeNotSatisfiable 417 = ExpectationFailed 421 = MisdirectedRequest 422 = UnprocessableEntity 422 = UnprocessableContent 423 = Locked 424 = FailedDependency 426 = UpgradeRequired 428 = PreconditionRequired 429 = TooManyRequests 431 = RequestHeaderFieldsTooLarge 451 = UnavailableForLegalReasons 500 = InternalServerError 501 = NotImplemented 502 = BadGateway 503 = ServiceUnavailable 504 = GatewayTimeout 505 = HttpVersionNotSupported 506 = VariantAlsoNegotiates 507 = InsufficientStorage 508 = LoopDetected 510 = NotExtended 511 = NetworkAuthenticationRequired
      - `tcpSocket` TcpSocketProbe
        - `request` TcpSocketProbeRequestDetails
          - `portNumber` integer
      - `grpc` GrpcProbe
        - `request` GrpcProbeRequestDetails
          - `portNumber` integer
          - `serviceName` string, nullable — If this is not specified, the default behavior is to probe the server's overall health status.
  - `environmentVariables` EnvironmentVariable[], required
    - `name` string, required
    - `value` string
  - `endpoints` ContainerEndpoint[], required
    - `id` string, required — Unique endpoint id. Use this value as `container_endpoint_id` when creating a pull zone that targets this endpoint.
    - `displayName` string, required
    - `publicHost` string, required
    - `type` 'cdn' | 'anycast' | 'publicIp', required
    - `isSslEnabled` boolean, required
    - `pullZoneId` string, required
    - `portMappings` EndpointPortMapping[], required
      - `containerPort` integer, required
      - `exposedPort` integer, required
      - `protocols` ProtocolV3[], required
    - `stickySessions` EndpointStickySession
      - `enabled` boolean, required
      - `sessionHeaders` string[], required
      - `cookieName` string, required
    - `internalIpAddresses` EndpointInternalIp[], nullable
      - `address` string, required
      - `region` string, required
    - `publicIpAddresses` EndpointInternalIp[], nullable
      - `address` string, required
      - `region` string, required
  - `volumeMounts` ContainerVolumeMount[], required
    - `name` string, required
    - `mountPath` string, required

## Other responses

- `400` — Invalid input.
- `401` — User is unauthorized.
- `403` — User has invalid card or suspended.
- `404` — Application or container template not found.
- `500` — Unexpected server error.

---

[API](https://skmtc.net/bunny/apis/bunny-net-cdn-logging.md) · [All operations](https://skmtc.net/bunny/apis/bunny-net-cdn-logging/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bunny/bunny-net-cdn-logging/versions/9e622620664b/schema)
