---
title: "Update deployment"
method: PATCH
path: "/deployments/{deployment}"
tags: ["deployment"]
---

# Update deployment

`PATCH /deployments/{deployment}`

Updates an existing deployment configuration, such as the endpoint address or invocation headers.
By default, service schemas are not re-discovered. Set `overwrite: true` to trigger re-discovery.

## Path parameters

- `deployment` string, required

## Request body

- union
  - object — Update HTTP deployment request
    - `additional_headers` SerdeableHeaderHashMap — Proxy type to implement HashMap<HeaderName, HeaderValue> ser/de Use it directly or with `#[serde(with = "serde_with::As::<serde_with::FromInto<restate_serde_util::SerdeableHeaderMap>>")]`.
    - `dry_run` boolean — # Dry-run mode If `true`, discovery will run but the deployment will not be registered. This is useful to see the impact of a new deployment before registering it.
    - `overwrite` boolean — # Overwrite If `true`, the update will overwrite the schema information, including the exposed service and handlers and service configuration, allowing **breaking changes** too. Use with caution.
    - `uri` string, uri, nullable — # Uri Uri to use to discover/invoke the http deployment.
    - `use_http_11` boolean, nullable — # Use http1.1 If `true`, discovery will be attempted using a client that defaults to HTTP1.1 instead of a prior-knowledge HTTP2 client. HTTP2 may still be used for TLS servers that advertise HTTP2 support via ALPN. HTTP1.1 deployments will only work in request-response mode.
  - object — Update Lambda deployment request
    - `additional_headers` SerdeableHeaderHashMap — Proxy type to implement HashMap<HeaderName, HeaderValue> ser/de Use it directly or with `#[serde(with = "serde_with::As::<serde_with::FromInto<restate_serde_util::SerdeableHeaderMap>>")]`.
    - `arn` string, nullable — # ARN ARN to use to discover/invoke the lambda deployment.
    - `assume_role_arn` string, nullable — # Assume role ARN Optional ARN of a role to assume when invoking the addressed Lambda, to support role chaining.
    - `dry_run` boolean — # Dry-run mode If `true`, discovery will run but the deployment will not be registered. This is useful to see the impact of a new deployment before registering it.
    - `overwrite` boolean — # Overwrite If `true`, the update will overwrite the schema information, including the exposed service and handlers and service configuration, allowing **breaking changes** too. Use with caution.

## Response `200`

Deployment updated successfully. Address and invocation options are updated. Service schemas are only updated if overwrite was set to true.

- union — Detailed information about Restate deployments
  - object — Detailed deployment response for HTTP deployments
    - `additional_headers` SerdeableHeaderHashMap — Proxy type to implement HashMap<HeaderName, HeaderValue> ser/de Use it directly or with `#[serde(with = "serde_with::As::<serde_with::FromInto<restate_serde_util::SerdeableHeaderMap>>")]`.
    - `auth` HttpAuth — HTTP authentication details.
      - `GoogleIdToken` GoogleIdTokenAuth, required
        - `audience` string, nullable — Explicit OIDC `aud` claim. Leave unset to automatically derive from the deployment URL.
        - `impersonate_service_account` string, nullable — Service account email to impersonate via `iamcredentials:generateIdToken`. Leave unset to use the ambient ADC identity.
    - `created_at` string, required
    - `http_version` string, required — # HTTP Version HTTP Version used to invoke this service deployment.
    - `id` string, required
    - `info` SchemaInfo[] — # Info List of configuration/deprecation information related to this deployment.
      - `code` string, nullable
      - `message` string, required
    - `max_protocol_version` integer, required — # Maximum Service Protocol version During registration, the SDKs declare a range from minimum (included) to maximum (included) Service Protocol supported version.
    - `metadata` object — # Metadata Deployment metadata.
    - `min_protocol_version` integer, required — # Minimum Service Protocol version During registration, the SDKs declare a range from minimum (included) to maximum (included) Service Protocol supported version.
    - `protocol_type` 'RequestResponse' | 'BidiStream', required
    - `sdk_version` string, nullable — # SDK version SDK library and version declared during registration.
    - `services` ServiceMetadata[], required — # Services List of services exposed by this deployment.
      - `abort_timeout` string — # Abort timeout This timer guards against stalled service/handler invocations that are supposed to terminate. The abort timeout is started after the 'inactivity timeout' has expired and the service/handler invocation has been asked to gracefully terminate. Once the timer expires, it will abort the service/handler invocation. This timer potentially **interrupts** user code. If the user code needs longer to gracefully terminate, then this value needs to be set accordingly. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`. If unset, this returns the default abort timeout configured in invoker options.
      - `deployment_id` string, required
      - `documentation` string, nullable — # Documentation Documentation of the service, as propagated by the SDKs.
      - `enable_lazy_state` boolean — # Enable lazy state If true, lazy state will be enabled for all invocations to this service. This is relevant only for Workflows and Virtual Objects.
      - `handlers` HandlerMetadata[], required — # Handlers Handlers for this service.
        - `abort_timeout` string, nullable — # Abort timeout This timer guards against stalled service/handler invocations that are supposed to terminate. The abort timeout is started after the 'inactivity timeout' has expired and the service/handler invocation has been asked to gracefully terminate. Once the timer expires, it will abort the service/handler invocation. This timer potentially **interrupts** user code. If the user code needs longer to gracefully terminate, then this value needs to be set accordingly. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`. If set, it overrides the value set in the service.
        - `documentation` string, nullable — # Documentation Documentation of the handler, as propagated by the SDKs.
        - `enable_lazy_state` boolean, nullable — # Enable lazy state If true, lazy state will be enabled for all invocations to this service. This is relevant only for Workflows and Virtual Objects. If set, it overrides the value set in the service.
        - `idempotency_retention` string, nullable — # Idempotency retention The retention duration of idempotent requests for this handler. If set, it overrides the value set in the service. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.
        - `inactivity_timeout` string, nullable — # Inactivity timeout This timer guards against stalled service/handler invocations. Once it expires, Restate triggers a graceful termination by asking the service invocation to suspend (which preserves intermediate progress). The 'abort timeout' is used to abort the invocation, in case it doesn't react to the request to suspend. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`. If set, it overrides the value set in the service.
        - `info` SchemaInfo[] — # Info List of configuration/deprecation information related to this handler.
          - `code` string, nullable
          - `message` string, required
        - `input_description` string, required — # Human readable input description If empty, no schema was provided by the user at discovery time.
        - `input_json_schema` unknown
        - `journal_retention` string, nullable — # Journal retention The journal retention. When set, this applies to all requests to this handler. In case the invocation has an idempotency key, the `idempotency_retention` caps the maximum `journal_retention` time. In case this handler is a workflow handler, the `workflow_completion_retention` caps the maximum `journal_retention` time. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`. If set, it overrides the value set in the service.
        - `metadata` object — # Metadata Additional handler metadata, as propagated by the SDKs.
        - `name` string, required — # Name The handler name.
        - `output_description` string, required — # Human readable output description If empty, no schema was provided by the user at discovery time.
        - `output_json_schema` unknown
        - `public` boolean — # Public If true, this handler can be invoked through the ingress. If false, this handler can be invoked only from another Restate service.
        - `retry_policy` HandlerRetryPolicyMetadata — # Handler retry policy overrides
          - `exponentiation_factor` number, float, nullable — # Factor The factor to use to compute the next retry attempt.
          - `initial_interval` string, nullable — # Initial Interval Initial interval for the first retry attempt. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.
          - `max_attempts` integer, nullable — # Max attempts Number of maximum attempts (including the initial) before giving up. Infinite retries if unset. No retries if set to 1.
          - `max_interval` string, nullable — # Max interval Maximum interval between retries. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.
          - `on_max_attempts` 'Pause' | 'Kill'
        - `ty` 'Exclusive' | 'Shared' | 'Workflow'
      - `idempotency_retention` string — # Idempotency retention The retention duration of idempotent requests for this service. If not configured, this returns the default idempotency retention. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.
      - `inactivity_timeout` string — # Inactivity timeout This timer guards against stalled service/handler invocations. Once it expires, Restate triggers a graceful termination by asking the service invocation to suspend (which preserves intermediate progress). The 'abort timeout' is used to abort the invocation, in case it doesn't react to the request to suspend. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`. If unset, this returns the default inactivity timeout configured in invoker options.
      - `info` SchemaInfo[] — # Info List of configuration/deprecation information related to this service.
        - `code` string, nullable
        - `message` string, required
      - `journal_retention` string, nullable — # Journal retention The journal retention. When set, this applies to all requests to all handlers of this service. In case the invocation has an idempotency key, the `idempotency_retention` caps the maximum `journal_retention` time. In case the invocation targets a workflow handler, the `workflow_completion_retention` caps the maximum `journal_retention` time. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.
      - `metadata` object — # Metadata Additional service metadata, as propagated by the SDKs.
      - `name` string, required — # Name Fully qualified name of the service
      - `public` boolean — # Public If true, the service can be invoked through the ingress. If false, the service can be invoked only from another Restate service.
      - `retry_policy` ServiceRetryPolicyMetadata — # Service retry policy
        - `exponentiation_factor` number, float — # Factor The factor to use to compute the next retry attempt. Default: `2.0`.
        - `initial_interval` string — # Initial Interval Initial interval for the first retry attempt. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.
        - `max_attempts` integer, nullable — # Max attempts Number of maximum attempts (including the initial) before giving up. Infinite retries if unset. No retries if set to 1.
        - `max_interval` string, nullable — # Max interval Maximum interval between retries. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.
        - `on_max_attempts` 'Pause' | 'Kill'
      - `revision` integer, required
      - `ty` 'Service' | 'VirtualObject' | 'Workflow', required
      - `workflow_completion_retention` string, nullable — # Workflow completion retention The retention duration of workflows. Only available on workflow services. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.
    - `uri` string, uri, required — # Deployment URI URI used to invoke this service deployment.
  - object — Detailed deployment response for Lambda deployments
    - `additional_headers` SerdeableHeaderHashMap — Proxy type to implement HashMap<HeaderName, HeaderValue> ser/de Use it directly or with `#[serde(with = "serde_with::As::<serde_with::FromInto<restate_serde_util::SerdeableHeaderMap>>")]`.
    - `arn` string, required
    - `assume_role_arn` string, nullable — # Assume role ARN Assume role ARN used to invoke this deployment. Check https://docs.restate.dev/category/aws-lambda for more details.
    - `compression` 'Zstd' — Lambda compression
    - `created_at` string, required
    - `id` string, required
    - `info` SchemaInfo[] — # Info List of configuration/deprecation information related to this deployment.
      - `code` string, nullable
      - `message` string, required
    - `max_protocol_version` integer, required — # Maximum Service Protocol version During registration, the SDKs declare a range from minimum (included) to maximum (included) Service Protocol supported version.
    - `metadata` object — # Metadata Deployment metadata.
    - `min_protocol_version` integer, required — # Minimum Service Protocol version During registration, the SDKs declare a range from minimum (included) to maximum (included) Service Protocol supported version.
    - `sdk_version` string, nullable — # SDK version SDK library and version declared during registration.
    - `services` ServiceMetadata[], required — # Services List of services exposed by this deployment.
      - `abort_timeout` string — # Abort timeout This timer guards against stalled service/handler invocations that are supposed to terminate. The abort timeout is started after the 'inactivity timeout' has expired and the service/handler invocation has been asked to gracefully terminate. Once the timer expires, it will abort the service/handler invocation. This timer potentially **interrupts** user code. If the user code needs longer to gracefully terminate, then this value needs to be set accordingly. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`. If unset, this returns the default abort timeout configured in invoker options.
      - `deployment_id` string, required
      - `documentation` string, nullable — # Documentation Documentation of the service, as propagated by the SDKs.
      - `enable_lazy_state` boolean — # Enable lazy state If true, lazy state will be enabled for all invocations to this service. This is relevant only for Workflows and Virtual Objects.
      - `handlers` HandlerMetadata[], required — # Handlers Handlers for this service.
        - `abort_timeout` string, nullable — # Abort timeout This timer guards against stalled service/handler invocations that are supposed to terminate. The abort timeout is started after the 'inactivity timeout' has expired and the service/handler invocation has been asked to gracefully terminate. Once the timer expires, it will abort the service/handler invocation. This timer potentially **interrupts** user code. If the user code needs longer to gracefully terminate, then this value needs to be set accordingly. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`. If set, it overrides the value set in the service.
        - `documentation` string, nullable — # Documentation Documentation of the handler, as propagated by the SDKs.
        - `enable_lazy_state` boolean, nullable — # Enable lazy state If true, lazy state will be enabled for all invocations to this service. This is relevant only for Workflows and Virtual Objects. If set, it overrides the value set in the service.
        - `idempotency_retention` string, nullable — # Idempotency retention The retention duration of idempotent requests for this handler. If set, it overrides the value set in the service. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.
        - `inactivity_timeout` string, nullable — # Inactivity timeout This timer guards against stalled service/handler invocations. Once it expires, Restate triggers a graceful termination by asking the service invocation to suspend (which preserves intermediate progress). The 'abort timeout' is used to abort the invocation, in case it doesn't react to the request to suspend. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`. If set, it overrides the value set in the service.
        - `info` SchemaInfo[] — # Info List of configuration/deprecation information related to this handler.
          - `code` string, nullable
          - `message` string, required
        - `input_description` string, required — # Human readable input description If empty, no schema was provided by the user at discovery time.
        - `input_json_schema` unknown
        - `journal_retention` string, nullable — # Journal retention The journal retention. When set, this applies to all requests to this handler. In case the invocation has an idempotency key, the `idempotency_retention` caps the maximum `journal_retention` time. In case this handler is a workflow handler, the `workflow_completion_retention` caps the maximum `journal_retention` time. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`. If set, it overrides the value set in the service.
        - `metadata` object — # Metadata Additional handler metadata, as propagated by the SDKs.
        - `name` string, required — # Name The handler name.
        - `output_description` string, required — # Human readable output description If empty, no schema was provided by the user at discovery time.
        - `output_json_schema` unknown
        - `public` boolean — # Public If true, this handler can be invoked through the ingress. If false, this handler can be invoked only from another Restate service.
        - `retry_policy` HandlerRetryPolicyMetadata — # Handler retry policy overrides
          - `exponentiation_factor` number, float, nullable — # Factor The factor to use to compute the next retry attempt.
          - `initial_interval` string, nullable — # Initial Interval Initial interval for the first retry attempt. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.
          - `max_attempts` integer, nullable — # Max attempts Number of maximum attempts (including the initial) before giving up. Infinite retries if unset. No retries if set to 1.
          - `max_interval` string, nullable — # Max interval Maximum interval between retries. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.
          - `on_max_attempts` 'Pause' | 'Kill'
        - `ty` 'Exclusive' | 'Shared' | 'Workflow'
      - `idempotency_retention` string — # Idempotency retention The retention duration of idempotent requests for this service. If not configured, this returns the default idempotency retention. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.
      - `inactivity_timeout` string — # Inactivity timeout This timer guards against stalled service/handler invocations. Once it expires, Restate triggers a graceful termination by asking the service invocation to suspend (which preserves intermediate progress). The 'abort timeout' is used to abort the invocation, in case it doesn't react to the request to suspend. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`. If unset, this returns the default inactivity timeout configured in invoker options.
      - `info` SchemaInfo[] — # Info List of configuration/deprecation information related to this service.
        - `code` string, nullable
        - `message` string, required
      - `journal_retention` string, nullable — # Journal retention The journal retention. When set, this applies to all requests to all handlers of this service. In case the invocation has an idempotency key, the `idempotency_retention` caps the maximum `journal_retention` time. In case the invocation targets a workflow handler, the `workflow_completion_retention` caps the maximum `journal_retention` time. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.
      - `metadata` object — # Metadata Additional service metadata, as propagated by the SDKs.
      - `name` string, required — # Name Fully qualified name of the service
      - `public` boolean — # Public If true, the service can be invoked through the ingress. If false, the service can be invoked only from another Restate service.
      - `retry_policy` ServiceRetryPolicyMetadata — # Service retry policy
        - `exponentiation_factor` number, float — # Factor The factor to use to compute the next retry attempt. Default: `2.0`.
        - `initial_interval` string — # Initial Interval Initial interval for the first retry attempt. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.
        - `max_attempts` integer, nullable — # Max attempts Number of maximum attempts (including the initial) before giving up. Infinite retries if unset. No retries if set to 1.
        - `max_interval` string, nullable — # Max interval Maximum interval between retries. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.
        - `on_max_attempts` 'Pause' | 'Kill'
      - `revision` integer, required
      - `ty` 'Service' | 'VirtualObject' | 'Workflow', required
      - `workflow_completion_retention` string, nullable — # Workflow completion retention The retention duration of workflows. Only available on workflow services. Can be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.

## Other responses

- `400` — Bad request
- `404` — Not found
- `405` — Method not allowed
- `409` — Conflict
- `500` — Internal server error

## Changes

> 8 revisions in range; 1 could not be searched.

- **2026-06-19** `7381abc4d9a3` — 1 info
  - added the optional property `oneOf[subschema #1: HttpDetailedDeploymentResponse]/auth` to the response with the `200` status
- **2026-01-30** `059a44500a5c` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/restatedev/apis/admin-api/changes/deployments/:deployment/patch.md)

---

[API](https://skmtc.dev/restatedev/apis/admin-api.md) · [All operations](https://skmtc.dev/restatedev/apis/admin-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/restatedev/admin-api/revisions/5361f4818c71/schema)
