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.
Additional headers added to the discover/invoke requests to the deployment.
When provided, this will overwrite all the headers previously configured for this deployment.
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.
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.
Response
Deployment updated successfully. Address and invocation options are updated. Service schemas are only updated if overwrite was set to true.
Option 1
Option 2
Detailed information about a registered deployment, including the metadata of its services.
The type field tells HTTP and Lambda deployments apart.
SDK library and version declared during registration.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Restate","description":"Restate is the simplest way to build resilient applications.","colors":{"primary":"#4752c4","light":"#7a87e1","dark":"#4752c4"},"logo":{"light":"https://mintcdn.com/restate-6d46e1dc/0MkLgffDAGHkNDIZ/logo/light.svg?fit=max\u0026auto=format\u0026n=0MkLgffDAGHkNDIZ\u0026q=85\u0026s=70e648c2608af2d2c33dc26b3bce13d3","dark":"https://mintcdn.com/restate-6d46e1dc/0MkLgffDAGHkNDIZ/logo/dark.svg?fit=max\u0026auto=format\u0026n=0MkLgffDAGHkNDIZ\u0026q=85\u0026s=5be48044922541993e0e472f203bca46","href":"https://restate.dev"},"favicon":"https://mintcdn.com/restate-6d46e1dc/en_t8BH_S2cXTlbv/favicon.svg?fit=max\u0026auto=format\u0026n=en_t8BH_S2cXTlbv\u0026q=85\u0026s=d282cb3c3124106eca71fa9e9121043f","api":{"playground":{"display":"simple"}},"appearance":{"default":"light","strict":true},"background":{"decoration":"gradient"},"navbar":{"links":[{"icon":"discord","href":"https://discord.restate.dev","label":""},{"icon":"slack","href":"https://slack.restate.dev","label":""},{"icon":"github","href":"https://github.com/restatedev/restate","label":""}]},"footer":{"socials":{"website":"https://restate.dev","github":"https://github.com/restatedev/restate","discord":"https://discord.restate.dev","slack":"https://slack.restate.dev","youtube":"https://www.youtube.com/@restatedev","linkedin":"https://linkedin.com/company/restatedev","x":"https://x.com/restatedev","bluesky":"https://bsky.app/profile/restate.dev"}},"fonts":{"heading":{"family":"Rubik"},"body":{"family":"Manrope"}},"integrations":{"gtm":{"tagId":"GTM-TKTFM2CK"},"cookies":{"key":"restate_cookie_consent","value":"granted"}},"contextual":{"options":["chatgpt","claude","copy"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"restate-6d46e1dc","hasAudioNarration":false,"actualSubdomain":"restate-6d46e1dc","customDomains":["docs.restate.dev"],"gitSource":{"type":"github","owner":"restatedev","repo":"docs-restate","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae45a2c4ebd7542833d5ef8","collectionId":"9a64bf61-919c-4698-b4b1-d7e4abd74636","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae45a2c4ebd7542833d5ef8"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae45a2c4ebd7542833d5ef8","clientVersion":"0.0.4039","searchFilterCounts":[{"language":"default","tag":"Docs","count":150},{"language":"default","tag":"SDKs","count":55},{"language":"default","tag":"References","count":50},{"language":"default","tag":"APIs","count":39},{"language":"default","tag":"AI / Agents","count":34},{"language":"default","tag":"Admin API","count":34},{"language":"default","tag":"Restate Cloud / BYOC / OSS","count":22},{"language":"default","tag":"Services","count":21},{"language":"default","tag":"Self-hosted Restate","count":17},{"language":"default","tag":"Learn","count":16}]},"assistantConfig":{"enableAskAiButton":true,"enableAskAiSearchBar":false,"deflection":{"enabled":false,"email":"[email protected]"}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":false}},"googleFontsInlined":true},"customCss":[{"filePath":"styles.css","content":"@font-face{font-family:'Rubik';src:url(https://fonts.gstatic.com/s/rubik/v28/iJWKBXyIfDnIV7nBrXw.woff2);font-weight:400;font-style:normal;font-display:swap}h1,h2,h3{font-family:'Rubik';letter-spacing:normal!important}.hidden-tabs .tabs-list,.hidden-tabs [data-component-part=tabs-list]{display:none!important}[data-component-part=tabs-list]{flex-wrap:wrap!important;row-gap:.25rem}[data-component-part=tab-button][data-active=true] .tab-icon[src=\"/img/cloud-providers/aws-lambda.svg\"],li[data-active-nav-item=true] img[src=\"/img/cloud-providers/aws-lambda.svg\"]{content:url(/img/cloud-providers/aws-lambda-primary.svg)}[data-component-part=tab-button][data-active=true] .tab-icon[src=\"/img/cloud-providers/cloudflare-workers.svg\"],li[data-active-nav-item=true] img[src=\"/img/cloud-providers/cloudflare-workers.svg\"]{content:url(/img/cloud-providers/cloudflare-workers-primary.svg)}[data-component-part=tab-button][data-active=true] .tab-icon[src=\"/img/cloud-providers/docker.svg\"],li[data-active-nav-item=true] img[src=\"/img/cloud-providers/docker.svg\"]{content:url(/img/cloud-providers/docker-primary.svg)}[data-component-part=tab-button][data-active=true] .tab-icon[src=\"/img/cloud-providers/google-cloud-run.svg\"],li[data-active-nav-item=true] img[src=\"/img/cloud-providers/google-cloud-run.svg\"]{content:url(/img/cloud-providers/google-cloud-run-primary.svg)}[data-component-part=tab-button][data-active=true] .tab-icon[src=\"/img/cloud-providers/kubernetes.svg\"],li[data-active-nav-item=true] img[src=\"/img/cloud-providers/kubernetes.svg\"]{content:url(/img/cloud-providers/kubernetes-primary.svg)}[data-component-part=tab-button][data-active=true] .tab-icon[src=\"/img/cloud-providers/other-serverless.svg\"],li[data-active-nav-item=true] img[src=\"/img/cloud-providers/other-serverless.svg\"]{content:url(/img/cloud-providers/other-serverless-primary.svg)}[data-component-part=tab-button][data-active=true] .tab-icon[src=\"/img/cloud-providers/vercel.svg\"],li[data-active-nav-item=true] img[src=\"/img/cloud-providers/vercel.svg\"]{content:url(/img/cloud-providers/vercel-primary.svg)}[data-component-part=tab-button][data-active=true] .tab-icon[src=\"/img/languages/go.svg\"],li[data-active-nav-item=true] img[src=\"/img/languages/go.svg\"]{content:url(/img/languages/go-primary.svg)}[data-component-part=tab-button][data-active=true] .tab-icon[src=\"/img/languages/java.svg\"],li[data-active-nav-item=true] img[src=\"/img/languages/java.svg\"]{content:url(/img/languages/java-primary.svg)}[data-component-part=tab-button][data-active=true] .tab-icon[src=\"/img/languages/kotlin.svg\"],li[data-active-nav-item=true] img[src=\"/img/languages/kotlin.svg\"]{content:url(/img/languages/kotlin-primary.svg)}[data-component-part=tab-button][data-active=true] .tab-icon[src=\"/img/languages/python.svg\"],li[data-active-nav-item=true] img[src=\"/img/languages/python.svg\"]{content:url(/img/languages/python-primary.svg)}[data-component-part=tab-button][data-active=true] .tab-icon[src=\"/img/languages/ruby.svg\"],li[data-active-nav-item=true] img[src=\"/img/languages/ruby.svg\"]{content:url(/img/languages/ruby-primary.svg)}[data-component-part=tab-button][data-active=true] .tab-icon[src=\"/img/languages/rust.svg\"],li[data-active-nav-item=true] img[src=\"/img/languages/rust.svg\"]{content:url(/img/languages/rust-primary.svg)}[data-component-part=tab-button][data-active=true] .tab-icon[src=\"/img/languages/typescript.svg\"],li[data-active-nav-item=true] img[src=\"/img/languages/typescript.svg\"]{content:url(/img/languages/typescript-primary.svg)}[data-component-part=tab-button][data-active=true] .tab-icon[src=\"/logo/restate-cloud-mini.svg\"],li[data-active-nav-item=true] img[src=\"/logo/restate-cloud-mini.svg\"]{content:url(/logo/restate-cloud-mini-primary.svg)}[data-component-part=tab-button][data-active=true] .tab-icon[src=\"/logo/restate-mini.svg\"],li[data-active-nav-item=true] img[src=\"/logo/restate-mini.svg\"]{content:url(/logo/restate-mini-primary.svg)}#cc-main{--cc-btn-border-radius:0.75rem;--cc-btn-primary-bg:#2563eb;--cc-btn-primary-color:#fff;--cc-btn-primary-border-color:transparent;--cc-btn-primary-hover-bg:#1d4ed8;--cc-btn-secondary-bg:#fff;--cc-btn-secondary-color:#14151a;--cc-btn-secondary-border-color:#dee0e3;--cc-btn-secondary-hover-bg:#f3f4f6}"}],"page":{"pagePath":"admin-api/deployment/update-deployment","slug":"/admin-api/deployment/update-deployment","pageMetadata":{"title":"Update deployment","description":"Updates an existing deployment configuration, such as the endpoint address or invocation headers.\nBy default, service schemas are not re-discovered. Set `overwrite: true` to trigger re-discovery.","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json patch /deployments/{deployment}","href":"/admin-api/deployment/update-deployment","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Updates an existing deployment configuration, such as the endpoint address or invocation headers.\\nBy default, service schemas are not re-discovered. Set \", _jsx(_components.code, {\n children: \"overwrite: true\"\n }), \" to trigger re-discovery.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Update deployment","description":"Updates an existing deployment configuration, such as the endpoint address or invocation headers.\nBy default, service schemas are not re-discovered. Set `overwrite: true` to trigger re-discovery.","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json patch /deployments/{deployment}","href":"/admin-api/deployment/update-deployment","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/restate-6d46e1dc/fe33ed8c8f6baacd/matomo.js","/_mintlify/custom/restate-6d46e1dc/4d0b5d686abf67ad/scarf.js","/_mintlify/custom/restate-6d46e1dc/28474ce7323ba556/cookie-consent.js"],"openApiReferenceData":{"operation":{"tags":["deployment"],"summary":"Update deployment","description":"Updates an existing deployment configuration, such as the endpoint address or invocation headers.\nBy default, service schemas are not re-discovered. Set `overwrite: true` to trigger re-discovery.","operationId":"update_deployment","parameters":["449b836e-c29e-47d4-a138-ed6636a11326"],"requestBody":"61882599-19b6-4cae-a6f8-170dc5549882","responses":{"200":"06dde513-47b0-4dba-989f-b149aaa828ee","400":"ab5e1a79-429b-4d1a-8cb3-32a7de64217b","404":"4932679b-230e-46ae-903f-960d770d25e9","405":"5eba0488-880a-4ad7-9752-aafa68b1b571","409":"78681fd9-c144-4e5e-81b4-f3b04e5b902e","500":"a56daccf-a574-451e-a4c5-f400f163e3a9"},"method":"patch","type":"path","servers":[],"security":[],"path":"/deployments/{deployment}","baseUrlOptions":[],"title":"Update deployment","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"449b836e-c29e-47d4-a138-ed6636a11326":{"name":"deployment","in":"path","description":"Deployment identifier","required":true,"schema":{"type":"string","isRequired":true,"description":"Deployment identifier","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"UpdateHttpDeploymentRequest","description":"Update HTTP deployment request","properties":{"additional_headers":{"oneOf":[{"type":"object","description":"# Additional headers\n\nAdditional headers added to the discover/invoke requests to the deployment.\nWhen provided, this will overwrite all the headers previously configured for this deployment.","additionalProperties":{"type":"string","uniqueKey":"oneOf.0.additional_headers.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"oneOf.0.additional_headers.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"oneOf.0.additional_headers.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.additional_headers","typeLabel":"object | null"},"dry_run":{"type":"boolean","description":"# Dry-run mode\n\nIf `true`, discovery will run but the deployment will not be registered.\nThis is useful to see the impact of a new deployment before registering it.","uniqueKey":"oneOf.0.dry_run","typeLabel":"boolean"},"overwrite":{"type":"boolean","description":"# Overwrite\n\nIf `true`, the update will overwrite the schema information, including the exposed service and handlers and service configuration, allowing **breaking changes** too. Use with caution.","uniqueKey":"oneOf.0.overwrite","typeLabel":"boolean"},"uri":{"oneOf":[{"type":"string","format":"uri","description":"# Uri\n\nUri to use to discover/invoke the http deployment.","uniqueKey":"oneOf.0.uri.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","format":"uri","description":"# Uri\n\nUri to use to discover/invoke the http deployment.","uniqueKey":"oneOf.0.uri.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.uri","typeLabel":"string\u003curi> | null"},"use_http_11":{"oneOf":[{"type":"boolean","description":"# Use http1.1\n\nIf `true`, discovery will be attempted using a client that defaults to HTTP1.1\ninstead of a prior-knowledge HTTP2 client. HTTP2 may still be used for TLS servers\nthat advertise HTTP2 support via ALPN. HTTP1.1 deployments will only work in\nrequest-response mode.","uniqueKey":"oneOf.0.use_http_11.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"# Use http1.1\n\nIf `true`, discovery will be attempted using a client that defaults to HTTP1.1\ninstead of a prior-knowledge HTTP2 client. HTTP2 may still be used for TLS servers\nthat advertise HTTP2 support via ALPN. HTTP1.1 deployments will only work in\nrequest-response mode.","uniqueKey":"oneOf.0.use_http_11.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.use_http_11","typeLabel":"boolean | null"}},"uniqueKey":"oneOf.0","typeLabel":"UpdateHttpDeploymentRequest · object"},{"type":"object","title":"UpdateLambdaDeploymentRequest","description":"Update Lambda deployment request","properties":{"additional_headers":{"oneOf":[{"type":"object","description":"# Additional headers\n\nAdditional headers added to the discover/invoke requests to the deployment.\nWhen provided, this will overwrite all the headers previously configured for this deployment.","additionalProperties":{"type":"string","uniqueKey":"oneOf.1.additional_headers.oneOf.0.additionalProperties","typeLabel":"string"},"uniqueKey":"oneOf.1.additional_headers.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"oneOf.1.additional_headers.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.additional_headers","typeLabel":"object | null"},"arn":{"oneOf":[{"type":"string","description":"# ARN\n\nARN to use to discover/invoke the lambda deployment.","uniqueKey":"oneOf.1.arn.oneOf.0","typeLabel":"string"},{"type":"null","description":"# ARN\n\nARN to use to discover/invoke the lambda deployment.","uniqueKey":"oneOf.1.arn.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.arn","typeLabel":"string | null"},"assume_role_arn":{"oneOf":[{"type":"string","description":"# Assume role ARN\n\nOptional ARN of a role to assume when invoking the addressed Lambda, to support role chaining.","uniqueKey":"oneOf.1.assume_role_arn.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Assume role ARN\n\nOptional ARN of a role to assume when invoking the addressed Lambda, to support role chaining.","uniqueKey":"oneOf.1.assume_role_arn.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.assume_role_arn","typeLabel":"string | null"},"dry_run":{"type":"boolean","description":"# Dry-run mode\n\nIf `true`, discovery will run but the deployment will not be registered.\nThis is useful to see the impact of a new deployment before registering it.","uniqueKey":"oneOf.1.dry_run","typeLabel":"boolean"},"overwrite":{"type":"boolean","description":"# Overwrite\n\nIf `true`, the update will overwrite the schema information, including the exposed service and handlers and service configuration, allowing **breaking changes** too. Use with caution.","uniqueKey":"oneOf.1.overwrite","typeLabel":"boolean"}},"uniqueKey":"oneOf.1","typeLabel":"UpdateLambdaDeploymentRequest · object"}],"uniqueKey":"","typeLabel":"UpdateHttpDeploymentRequest · object | UpdateLambdaDeploymentRequest · object"},"examples":{"Example":{"title":"Example","value":{"additional_headers":{},"dry_run":true,"overwrite":true,"uri":"\u003cstring>","use_http_11":true}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"06dde513-47b0-4dba-989f-b149aaa828ee":{"description":"Deployment updated successfully. Address and invocation options are updated. Service schemas are only updated if overwrite was set to true.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","description":"Detailed information about a registered deployment, including the metadata of its services.\nThe `type` field tells HTTP and Lambda deployments apart.","required":["type","id","uri","protocol_type","http_version","created_at","min_protocol_version","max_protocol_version","services"],"properties":{"created_at":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.created_at","typeLabel":"string"},"http_version":{"type":"string","description":"# HTTP Version\n\nHTTP Version used to invoke this service deployment.","isRequired":true,"uniqueKey":"oneOf.0.http_version","typeLabel":"string"},"id":{"type":"string","description":"# Deployment ID","isRequired":true,"uniqueKey":"oneOf.0.id","typeLabel":"string"},"max_protocol_version":{"type":"integer","format":"int32","description":"# Maximum Service Protocol version\n\nDuring registration, the SDKs declare a range from minimum (included) to maximum (included) Service Protocol supported version.","isRequired":true,"uniqueKey":"oneOf.0.max_protocol_version","typeLabel":"integer\u003cint32>"},"min_protocol_version":{"type":"integer","format":"int32","description":"# Minimum Service Protocol version\n\nDuring registration, the SDKs declare a range from minimum (included) to maximum (included) Service Protocol supported version.","isRequired":true,"uniqueKey":"oneOf.0.min_protocol_version","typeLabel":"integer\u003cint32>"},"protocol_type":{"type":"string","enum":["RequestResponse","BidiStream"],"description":"# Protocol Type\n\nProtocol type used to invoke this service deployment.","isRequired":true,"uniqueKey":"oneOf.0.protocol_type","typeLabel":"enum\u003cstring>"},"services":{"type":"array","items":{"type":"object","description":"Metadata of a registered service.","required":["name","ty","handlers","deployment_id","revision"],"properties":{"deployment_id":{"type":"string","description":"# Deployment Id\n\nDeployment exposing the latest revision of the service.","isRequired":true,"uniqueKey":"oneOf.0.services.items.[INDEX].deployment_id","typeLabel":"string"},"handlers":{"type":"array","items":{"type":"object","description":"Handler metadata","required":["name","input_description","output_description"],"properties":{"input_description":{"type":"string","description":"# Human readable input description\n\nIf empty, no schema was provided by the user at discovery time.","isRequired":true,"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].input_description","typeLabel":"string"},"name":{"type":"string","description":"# Name\n\nThe handler name.","isRequired":true,"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].name","typeLabel":"string"},"output_description":{"type":"string","description":"# Human readable output description\n\nIf empty, no schema was provided by the user at discovery time.","isRequired":true,"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].output_description","typeLabel":"string"},"abort_timeout":{"oneOf":[{"type":"string","description":"# Abort timeout\n\nThis timer guards against stalled service/handler invocations that are supposed to\nterminate. The abort timeout is started after the 'inactivity timeout' has expired\nand the service/handler invocation has been asked to gracefully terminate. Once the\ntimer expires, it will abort the service/handler invocation.\n\nThis timer potentially **interrupts** user code. If the user code needs longer to\ngracefully terminate, then this value needs to be set accordingly.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.\n\nIf set, it overrides the value set in the service.","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].abort_timeout.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Abort timeout\n\nThis timer guards against stalled service/handler invocations that are supposed to\nterminate. The abort timeout is started after the 'inactivity timeout' has expired\nand the service/handler invocation has been asked to gracefully terminate. Once the\ntimer expires, it will abort the service/handler invocation.\n\nThis timer potentially **interrupts** user code. If the user code needs longer to\ngracefully terminate, then this value needs to be set accordingly.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.\n\nIf set, it overrides the value set in the service.","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].abort_timeout.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].abort_timeout","typeLabel":"string | null"},"documentation":{"oneOf":[{"type":"string","description":"# Documentation\n\nDocumentation of the handler, as propagated by the SDKs.","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].documentation.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Documentation\n\nDocumentation of the handler, as propagated by the SDKs.","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].documentation.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].documentation","typeLabel":"string | null"},"enable_lazy_state":{"oneOf":[{"type":"boolean","description":"# Enable lazy state\n\nIf true, lazy state will be enabled for all invocations to this service.\nThis is relevant only for Workflows and Virtual Objects.\n\nIf set, it overrides the value set in the service.","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].enable_lazy_state.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"# Enable lazy state\n\nIf true, lazy state will be enabled for all invocations to this service.\nThis is relevant only for Workflows and Virtual Objects.\n\nIf set, it overrides the value set in the service.","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].enable_lazy_state.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].enable_lazy_state","typeLabel":"boolean | null"},"idempotency_retention":{"oneOf":[{"type":"string","description":"# Idempotency retention\n\nThe retention duration of idempotent requests for this handler. If set, it overrides the value set in the service.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].idempotency_retention.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Idempotency retention\n\nThe retention duration of idempotent requests for this handler. If set, it overrides the value set in the service.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].idempotency_retention.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].idempotency_retention","typeLabel":"string | null"},"inactivity_timeout":{"oneOf":[{"type":"string","description":"# Inactivity timeout\n\nThis timer guards against stalled service/handler invocations. Once it expires,\nRestate triggers a graceful termination by asking the service invocation to\nsuspend (which preserves intermediate progress).\n\nThe 'abort timeout' is used to abort the invocation, in case it doesn't react to\nthe request to suspend.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.\n\nIf set, it overrides the value set in the service.","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].inactivity_timeout.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Inactivity timeout\n\nThis timer guards against stalled service/handler invocations. Once it expires,\nRestate triggers a graceful termination by asking the service invocation to\nsuspend (which preserves intermediate progress).\n\nThe 'abort timeout' is used to abort the invocation, in case it doesn't react to\nthe request to suspend.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.\n\nIf set, it overrides the value set in the service.","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].inactivity_timeout.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].inactivity_timeout","typeLabel":"string | null"},"info":{"type":"array","items":{"type":"object","required":["message"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].info.items.[INDEX].message","typeLabel":"string"},"code":{"oneOf":[{"type":"string","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].info.items.[INDEX].code.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].info.items.[INDEX].code.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].info.items.[INDEX].code","typeLabel":"string | null"}},"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].info.items.[INDEX]","typeLabel":"object"},"description":"# Info\n\nList of configuration/deprecation information related to this handler.","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].info","typeLabel":"object[]"},"input_json_schema":{"description":"# Input JSON Schema\n\nJSON Schema of the handler input","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].input_json_schema","typeLabel":"any"},"journal_retention":{"oneOf":[{"type":"string","description":"# Journal retention\n\nThe journal retention. When set, this applies to all requests to this handler.\n\nIn case the invocation has an idempotency key, the `idempotency_retention` caps the maximum `journal_retention` time.\nIn case this handler is a workflow handler, the `workflow_completion_retention` caps the maximum `journal_retention` time.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.\n\nIf set, it overrides the value set in the service.","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].journal_retention.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Journal retention\n\nThe journal retention. When set, this applies to all requests to this handler.\n\nIn case the invocation has an idempotency key, the `idempotency_retention` caps the maximum `journal_retention` time.\nIn case this handler is a workflow handler, the `workflow_completion_retention` caps the maximum `journal_retention` time.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.\n\nIf set, it overrides the value set in the service.","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].journal_retention.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].journal_retention","typeLabel":"string | null"},"metadata":{"type":"object","description":"# Metadata\n\nAdditional handler metadata, as propagated by the SDKs.","additionalProperties":{"type":"string","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].metadata.additionalProperties","typeLabel":"string"},"propertyNames":{"type":"string"},"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].metadata","typeLabel":"object"},"output_json_schema":{"description":"# Output JSON Schema\n\nJSON Schema of the handler output","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].output_json_schema","typeLabel":"any"},"public":{"type":"boolean","description":"# Public\n\nIf true, this handler can be invoked through the ingress.\nIf false, this handler can be invoked only from another Restate service.","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].public","typeLabel":"boolean"},"retry_policy":{"type":"object","description":"# Retry policy\n\nRetry policy overrides applied for this handler.","properties":{"exponentiation_factor":{"oneOf":[{"type":"number","format":"float","description":"# Factor\n\nThe factor to use to compute the next retry attempt.","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].retry_policy.exponentiation_factor.oneOf.0","typeLabel":"number\u003cfloat>"},{"type":"null","format":"float","description":"# Factor\n\nThe factor to use to compute the next retry attempt.","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].retry_policy.exponentiation_factor.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].retry_policy.exponentiation_factor","typeLabel":"number\u003cfloat> | null"},"initial_interval":{"oneOf":[{"type":"string","description":"# Initial Interval\n\nInitial interval for the first retry attempt.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].retry_policy.initial_interval.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Initial Interval\n\nInitial interval for the first retry attempt.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].retry_policy.initial_interval.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].retry_policy.initial_interval","typeLabel":"string | null"},"max_attempts":{"oneOf":[{"type":"integer","description":"# Max attempts\n\nNumber of maximum attempts (including the initial) before giving up. Infinite retries if unset. No retries if set to 1.","minimum":1,"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].retry_policy.max_attempts.oneOf.0","typeLabel":"integer"},{"type":"null","description":"# Max attempts\n\nNumber of maximum attempts (including the initial) before giving up. Infinite retries if unset. No retries if set to 1.","minimum":1,"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].retry_policy.max_attempts.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].retry_policy.max_attempts","typeLabel":"integer | null"},"max_interval":{"oneOf":[{"type":"string","description":"# Max interval\n\nMaximum interval between retries.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].retry_policy.max_interval.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Max interval\n\nMaximum interval between retries.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].retry_policy.max_interval.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].retry_policy.max_interval","typeLabel":"string | null"},"on_max_attempts":{"oneOf":[{"type":"string","description":"# On max attempts\n\nBehavior when max attempts are reached.","enum":["Pause","Kill"],"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].retry_policy.on_max_attempts.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].retry_policy.on_max_attempts.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].retry_policy.on_max_attempts","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].retry_policy","typeLabel":"object"},"state_preload_policy":{"oneOf":[{"type":"string","description":"# State preload policy\n\nWhich state is preloaded (sent eagerly) at the start of an invocation to this handler.\nThis is relevant only for Workflows and Virtual Objects.\n\nIf set, it overrides the service-level policy.\n\n`\"All\"` preloads all state eagerly; `{\"Partial\": [\"key\", ...]}` preloads only the listed\nkeys eagerly (an empty list means fully lazy state).","enum":["All"],"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].state_preload_policy.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"object","description":"# State preload policy\n\nWhich state is preloaded (sent eagerly) at the start of an invocation to this handler.\nThis is relevant only for Workflows and Virtual Objects.\n\nIf set, it overrides the service-level policy.\n\n`\"All\"` preloads all state eagerly; `{\"Partial\": [\"key\", ...]}` preloads only the listed\nkeys eagerly (an empty list means fully lazy state).","required":["Partial"],"properties":{"Partial":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].state_preload_policy.oneOf.1.Partial.items.[INDEX]","typeLabel":"string"},"description":"Preload only these exact state keys (best-effort, capped by the invoker's eager state size\nlimit); everything else is served on demand. An empty list means fully lazy state.","isRequired":true,"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].state_preload_policy.oneOf.1.Partial","typeLabel":"string[]"}},"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].state_preload_policy.oneOf.1","typeLabel":"object"},{"type":"null","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].state_preload_policy.oneOf.2","typeLabel":"null"}],"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].state_preload_policy","typeLabel":"enum\u003cstring> | object | null"},"ty":{"oneOf":[{"type":"string","description":"# Type\n\nThe handler type.","enum":["Exclusive","Shared","Workflow"],"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].ty.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].ty.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX].ty","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"oneOf.0.services.items.[INDEX].handlers.items.[INDEX]","typeLabel":"object"},"description":"# Handlers\n\nHandlers for this service.","isRequired":true,"uniqueKey":"oneOf.0.services.items.[INDEX].handlers","typeLabel":"object[]"},"name":{"type":"string","description":"# Name\n\nFully qualified name of the service","isRequired":true,"uniqueKey":"oneOf.0.services.items.[INDEX].name","typeLabel":"string"},"revision":{"type":"integer","format":"int32","description":"# Revision\n\nLatest revision of the service.","minimum":0,"isRequired":true,"uniqueKey":"oneOf.0.services.items.[INDEX].revision","typeLabel":"integer\u003cint32>"},"ty":{"type":"string","enum":["Service","VirtualObject","Workflow"],"description":"# Type\n\nService type","isRequired":true,"uniqueKey":"oneOf.0.services.items.[INDEX].ty","typeLabel":"enum\u003cstring>"},"abort_timeout":{"type":"string","description":"# Abort timeout\n\nThis timer guards against stalled service/handler invocations that are supposed to\nterminate. The abort timeout is started after the 'inactivity timeout' has expired\nand the service/handler invocation has been asked to gracefully terminate. Once the\ntimer expires, it will abort the service/handler invocation.\n\nThis timer potentially **interrupts** user code. If the user code needs longer to\ngracefully terminate, then this value needs to be set accordingly.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.\n\nIf unset, this returns the default abort timeout configured in invoker options.","uniqueKey":"oneOf.0.services.items.[INDEX].abort_timeout","typeLabel":"string"},"documentation":{"oneOf":[{"type":"string","description":"# Documentation\n\nDocumentation of the service, as propagated by the SDKs.","uniqueKey":"oneOf.0.services.items.[INDEX].documentation.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Documentation\n\nDocumentation of the service, as propagated by the SDKs.","uniqueKey":"oneOf.0.services.items.[INDEX].documentation.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.services.items.[INDEX].documentation","typeLabel":"string | null"},"enable_lazy_state":{"type":"boolean","description":"# Enable lazy state\n\nIf true, lazy state will be enabled for all invocations to this service.\nThis is relevant only for Workflows and Virtual Objects.","uniqueKey":"oneOf.0.services.items.[INDEX].enable_lazy_state","typeLabel":"boolean"},"idempotency_retention":{"type":"string","description":"# Idempotency retention\n\nThe retention duration of idempotent requests for this service.\n\nIf not configured, this returns the default idempotency retention.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.0.services.items.[INDEX].idempotency_retention","typeLabel":"string"},"inactivity_timeout":{"type":"string","description":"# Inactivity timeout\n\nThis timer guards against stalled service/handler invocations. Once it expires,\nRestate triggers a graceful termination by asking the service invocation to\nsuspend (which preserves intermediate progress).\n\nThe 'abort timeout' is used to abort the invocation, in case it doesn't react to\nthe request to suspend.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.\n\nIf unset, this returns the default inactivity timeout configured in invoker options.","uniqueKey":"oneOf.0.services.items.[INDEX].inactivity_timeout","typeLabel":"string"},"info":{"type":"array","items":{"type":"object","required":["message"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.services.items.[INDEX].info.items.[INDEX].message","typeLabel":"string"},"code":{"oneOf":[{"type":"string","uniqueKey":"oneOf.0.services.items.[INDEX].info.items.[INDEX].code.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"oneOf.0.services.items.[INDEX].info.items.[INDEX].code.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.services.items.[INDEX].info.items.[INDEX].code","typeLabel":"string | null"}},"uniqueKey":"oneOf.0.services.items.[INDEX].info.items.[INDEX]","typeLabel":"object"},"description":"# Info\n\nList of configuration/deprecation information related to this service.","uniqueKey":"oneOf.0.services.items.[INDEX].info","typeLabel":"object[]"},"journal_retention":{"oneOf":[{"type":"string","description":"# Journal retention\n\nThe journal retention. When set, this applies to all requests to all handlers of this service.\n\nIn case the invocation has an idempotency key, the `idempotency_retention` caps the maximum `journal_retention` time.\nIn case the invocation targets a workflow handler, the `workflow_completion_retention` caps the maximum `journal_retention` time.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.0.services.items.[INDEX].journal_retention.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Journal retention\n\nThe journal retention. When set, this applies to all requests to all handlers of this service.\n\nIn case the invocation has an idempotency key, the `idempotency_retention` caps the maximum `journal_retention` time.\nIn case the invocation targets a workflow handler, the `workflow_completion_retention` caps the maximum `journal_retention` time.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.0.services.items.[INDEX].journal_retention.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.services.items.[INDEX].journal_retention","typeLabel":"string | null"},"metadata":{"type":"object","description":"# Metadata\n\nAdditional service metadata, as propagated by the SDKs.","additionalProperties":{"type":"string","uniqueKey":"oneOf.0.services.items.[INDEX].metadata.additionalProperties","typeLabel":"string"},"propertyNames":{"type":"string"},"uniqueKey":"oneOf.0.services.items.[INDEX].metadata","typeLabel":"object"},"public":{"type":"boolean","description":"# Public\n\nIf true, the service can be invoked through the ingress.\nIf false, the service can be invoked only from another Restate service.","uniqueKey":"oneOf.0.services.items.[INDEX].public","typeLabel":"boolean"},"retry_policy":{"type":"object","description":"# Retry policy\n\nRetry policy applied to invocations of this service.\n\nIf unset, it returns the default values configured in the Restate configuration.","properties":{"exponentiation_factor":{"type":"number","format":"float","description":"# Factor\n\nThe factor to use to compute the next retry attempt. Default: `2.0`.","uniqueKey":"oneOf.0.services.items.[INDEX].retry_policy.exponentiation_factor","typeLabel":"number\u003cfloat>"},"initial_interval":{"type":"string","description":"# Initial Interval\n\nInitial interval for the first retry attempt.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.0.services.items.[INDEX].retry_policy.initial_interval","typeLabel":"string"},"max_attempts":{"oneOf":[{"type":"integer","description":"# Max attempts\n\nNumber of maximum attempts (including the initial) before giving up. Infinite retries if unset. No retries if set to 1.","minimum":1,"uniqueKey":"oneOf.0.services.items.[INDEX].retry_policy.max_attempts.oneOf.0","typeLabel":"integer"},{"type":"null","description":"# Max attempts\n\nNumber of maximum attempts (including the initial) before giving up. Infinite retries if unset. No retries if set to 1.","minimum":1,"uniqueKey":"oneOf.0.services.items.[INDEX].retry_policy.max_attempts.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.services.items.[INDEX].retry_policy.max_attempts","typeLabel":"integer | null"},"max_interval":{"oneOf":[{"type":"string","description":"# Max interval\n\nMaximum interval between retries.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.0.services.items.[INDEX].retry_policy.max_interval.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Max interval\n\nMaximum interval between retries.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.0.services.items.[INDEX].retry_policy.max_interval.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.services.items.[INDEX].retry_policy.max_interval","typeLabel":"string | null"},"on_max_attempts":{"type":"string","enum":["Pause","Kill"],"description":"# On max attempts\n\nBehavior when max attempts are reached.","uniqueKey":"oneOf.0.services.items.[INDEX].retry_policy.on_max_attempts","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.0.services.items.[INDEX].retry_policy","typeLabel":"object"},"state_preload_policy":{"oneOf":[{"type":"string","description":"# State preload policy\n\nWhich state is preloaded (sent eagerly) at the start of an invocation to this service.\nThis is relevant only for Workflows and Virtual Objects.\n\n`\"All\"` preloads all state eagerly; `{\"Partial\": [\"key\", ...]}` preloads only the listed\nkeys eagerly (an empty list means fully lazy state).","enum":["All"],"uniqueKey":"oneOf.0.services.items.[INDEX].state_preload_policy.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"object","description":"# State preload policy\n\nWhich state is preloaded (sent eagerly) at the start of an invocation to this service.\nThis is relevant only for Workflows and Virtual Objects.\n\n`\"All\"` preloads all state eagerly; `{\"Partial\": [\"key\", ...]}` preloads only the listed\nkeys eagerly (an empty list means fully lazy state).","required":["Partial"],"properties":{"Partial":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.services.items.[INDEX].state_preload_policy.oneOf.1.Partial.items.[INDEX]","typeLabel":"string"},"description":"Preload only these exact state keys (best-effort, capped by the invoker's eager state size\nlimit); everything else is served on demand. An empty list means fully lazy state.","isRequired":true,"uniqueKey":"oneOf.0.services.items.[INDEX].state_preload_policy.oneOf.1.Partial","typeLabel":"string[]"}},"uniqueKey":"oneOf.0.services.items.[INDEX].state_preload_policy.oneOf.1","typeLabel":"object"}],"uniqueKey":"oneOf.0.services.items.[INDEX].state_preload_policy","typeLabel":"enum\u003cstring> | object"},"workflow_completion_retention":{"oneOf":[{"type":"string","description":"# Workflow completion retention\n\nThe retention duration of workflows. Only available on workflow services.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.0.services.items.[INDEX].workflow_completion_retention.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Workflow completion retention\n\nThe retention duration of workflows. Only available on workflow services.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.0.services.items.[INDEX].workflow_completion_retention.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.services.items.[INDEX].workflow_completion_retention","typeLabel":"string | null"}},"uniqueKey":"oneOf.0.services.items.[INDEX]","typeLabel":"object"},"description":"# Services\n\nList of services exposed by this deployment.","isRequired":true,"uniqueKey":"oneOf.0.services","typeLabel":"object[]"},"type":{"type":"string","description":"# Type\n\nDeployment type discriminator, always `http`.","enum":["http"],"isRequired":true,"uniqueKey":"oneOf.0.type","typeLabel":"enum\u003cstring>"},"uri":{"type":"string","format":"uri","description":"# Deployment URI\n\nURI used to invoke this service deployment.","isRequired":true,"uniqueKey":"oneOf.0.uri","typeLabel":"string\u003curi>"},"additional_headers":{"type":"object","description":"# Additional headers\n\nAdditional headers used to invoke this service deployment.","additionalProperties":{"type":"string","uniqueKey":"oneOf.0.additional_headers.additionalProperties","typeLabel":"string"},"propertyNames":{"type":"string"},"uniqueKey":"oneOf.0.additional_headers","typeLabel":"object"},"auth":{"oneOf":[{"type":"object","description":"# Authentication\n\nPer-deployment authentication, if configured.","required":["GoogleIdToken"],"properties":{"GoogleIdToken":{"type":"object","properties":{"allow_insecure_transport":{"type":"boolean","description":"Allow a deployment URI that is neither https nor a loopback/private IP address, e.g. a\nplain-http endpoint reached through Google Private Service Connect. Minted tokens are then\nsent in cleartext. Defaults to false.","uniqueKey":"oneOf.0.auth.oneOf.0.GoogleIdToken.allow_insecure_transport","typeLabel":"boolean"},"audience":{"oneOf":[{"type":"string","description":"Explicit OIDC `aud` claim. Leave unset to automatically derive from the deployment URL.","uniqueKey":"oneOf.0.auth.oneOf.0.GoogleIdToken.audience.oneOf.0","typeLabel":"string"},{"type":"null","description":"Explicit OIDC `aud` claim. Leave unset to automatically derive from the deployment URL.","uniqueKey":"oneOf.0.auth.oneOf.0.GoogleIdToken.audience.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.auth.oneOf.0.GoogleIdToken.audience","typeLabel":"string | null"},"impersonate_service_account":{"oneOf":[{"type":"string","description":"Service account email to impersonate via `iamcredentials:generateIdToken`. Leave unset to\nuse the ambient ADC identity.","uniqueKey":"oneOf.0.auth.oneOf.0.GoogleIdToken.impersonate_service_account.oneOf.0","typeLabel":"string"},{"type":"null","description":"Service account email to impersonate via `iamcredentials:generateIdToken`. Leave unset to\nuse the ambient ADC identity.","uniqueKey":"oneOf.0.auth.oneOf.0.GoogleIdToken.impersonate_service_account.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.auth.oneOf.0.GoogleIdToken.impersonate_service_account","typeLabel":"string | null"},"workload_identity_provider":{"oneOf":[{"type":"string","description":"Full resource name of a GCP workload identity federation provider, e.g.\n`//iam.googleapis.com/projects/N/locations/global/workloadIdentityPools/P/providers/R`.\nWhen set, use AWS-to-GCP federation instead of ambient Application Default Credentials.\nRequires `impersonate_service_account`.","uniqueKey":"oneOf.0.auth.oneOf.0.GoogleIdToken.workload_identity_provider.oneOf.0","typeLabel":"string"},{"type":"null","description":"Full resource name of a GCP workload identity federation provider, e.g.\n`//iam.googleapis.com/projects/N/locations/global/workloadIdentityPools/P/providers/R`.\nWhen set, use AWS-to-GCP federation instead of ambient Application Default Credentials.\nRequires `impersonate_service_account`.","uniqueKey":"oneOf.0.auth.oneOf.0.GoogleIdToken.workload_identity_provider.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.auth.oneOf.0.GoogleIdToken.workload_identity_provider","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"oneOf.0.auth.oneOf.0.GoogleIdToken","typeLabel":"object"}},"uniqueKey":"oneOf.0.auth.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"oneOf.0.auth.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.auth","typeLabel":"object | null"},"info":{"type":"array","items":{"type":"object","required":["message"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.info.items.[INDEX].message","typeLabel":"string"},"code":{"oneOf":[{"type":"string","uniqueKey":"oneOf.0.info.items.[INDEX].code.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"oneOf.0.info.items.[INDEX].code.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.info.items.[INDEX].code","typeLabel":"string | null"}},"uniqueKey":"oneOf.0.info.items.[INDEX]","typeLabel":"object"},"description":"# Info\n\nList of configuration/deprecation information related to this deployment.","uniqueKey":"oneOf.0.info","typeLabel":"object[]"},"metadata":{"type":"object","description":"# Metadata\n\nDeployment metadata.","additionalProperties":{"type":"string","uniqueKey":"oneOf.0.metadata.additionalProperties","typeLabel":"string"},"propertyNames":{"type":"string"},"uniqueKey":"oneOf.0.metadata","typeLabel":"object"},"sdk_version":{"oneOf":[{"type":"string","description":"# SDK version\n\nSDK library and version declared during registration.","uniqueKey":"oneOf.0.sdk_version.oneOf.0","typeLabel":"string"},{"type":"null","description":"# SDK version\n\nSDK library and version declared during registration.","uniqueKey":"oneOf.0.sdk_version.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.sdk_version","typeLabel":"string | null"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","description":"Detailed information about a registered deployment, including the metadata of its services.\nThe `type` field tells HTTP and Lambda deployments apart.","required":["type","id","arn","created_at","min_protocol_version","max_protocol_version","services"],"properties":{"arn":{"type":"string","description":"# Lambda ARN\n\nLambda ARN used to invoke this service deployment.","isRequired":true,"uniqueKey":"oneOf.1.arn","typeLabel":"string"},"created_at":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.created_at","typeLabel":"string"},"id":{"type":"string","description":"# Deployment ID","isRequired":true,"uniqueKey":"oneOf.1.id","typeLabel":"string"},"max_protocol_version":{"type":"integer","format":"int32","description":"# Maximum Service Protocol version\n\nDuring registration, the SDKs declare a range from minimum (included) to maximum (included) Service Protocol supported version.","isRequired":true,"uniqueKey":"oneOf.1.max_protocol_version","typeLabel":"integer\u003cint32>"},"min_protocol_version":{"type":"integer","format":"int32","description":"# Minimum Service Protocol version\n\nDuring registration, the SDKs declare a range from minimum (included) to maximum (included) Service Protocol supported version.","isRequired":true,"uniqueKey":"oneOf.1.min_protocol_version","typeLabel":"integer\u003cint32>"},"services":{"type":"array","items":{"type":"object","description":"Metadata of a registered service.","required":["name","ty","handlers","deployment_id","revision"],"properties":{"deployment_id":{"type":"string","description":"# Deployment Id\n\nDeployment exposing the latest revision of the service.","isRequired":true,"uniqueKey":"oneOf.1.services.items.[INDEX].deployment_id","typeLabel":"string"},"handlers":{"type":"array","items":{"type":"object","description":"Handler metadata","required":["name","input_description","output_description"],"properties":{"input_description":{"type":"string","description":"# Human readable input description\n\nIf empty, no schema was provided by the user at discovery time.","isRequired":true,"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].input_description","typeLabel":"string"},"name":{"type":"string","description":"# Name\n\nThe handler name.","isRequired":true,"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].name","typeLabel":"string"},"output_description":{"type":"string","description":"# Human readable output description\n\nIf empty, no schema was provided by the user at discovery time.","isRequired":true,"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].output_description","typeLabel":"string"},"abort_timeout":{"oneOf":[{"type":"string","description":"# Abort timeout\n\nThis timer guards against stalled service/handler invocations that are supposed to\nterminate. The abort timeout is started after the 'inactivity timeout' has expired\nand the service/handler invocation has been asked to gracefully terminate. Once the\ntimer expires, it will abort the service/handler invocation.\n\nThis timer potentially **interrupts** user code. If the user code needs longer to\ngracefully terminate, then this value needs to be set accordingly.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.\n\nIf set, it overrides the value set in the service.","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].abort_timeout.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Abort timeout\n\nThis timer guards against stalled service/handler invocations that are supposed to\nterminate. The abort timeout is started after the 'inactivity timeout' has expired\nand the service/handler invocation has been asked to gracefully terminate. Once the\ntimer expires, it will abort the service/handler invocation.\n\nThis timer potentially **interrupts** user code. If the user code needs longer to\ngracefully terminate, then this value needs to be set accordingly.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.\n\nIf set, it overrides the value set in the service.","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].abort_timeout.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].abort_timeout","typeLabel":"string | null"},"documentation":{"oneOf":[{"type":"string","description":"# Documentation\n\nDocumentation of the handler, as propagated by the SDKs.","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].documentation.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Documentation\n\nDocumentation of the handler, as propagated by the SDKs.","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].documentation.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].documentation","typeLabel":"string | null"},"enable_lazy_state":{"oneOf":[{"type":"boolean","description":"# Enable lazy state\n\nIf true, lazy state will be enabled for all invocations to this service.\nThis is relevant only for Workflows and Virtual Objects.\n\nIf set, it overrides the value set in the service.","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].enable_lazy_state.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"# Enable lazy state\n\nIf true, lazy state will be enabled for all invocations to this service.\nThis is relevant only for Workflows and Virtual Objects.\n\nIf set, it overrides the value set in the service.","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].enable_lazy_state.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].enable_lazy_state","typeLabel":"boolean | null"},"idempotency_retention":{"oneOf":[{"type":"string","description":"# Idempotency retention\n\nThe retention duration of idempotent requests for this handler. If set, it overrides the value set in the service.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].idempotency_retention.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Idempotency retention\n\nThe retention duration of idempotent requests for this handler. If set, it overrides the value set in the service.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].idempotency_retention.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].idempotency_retention","typeLabel":"string | null"},"inactivity_timeout":{"oneOf":[{"type":"string","description":"# Inactivity timeout\n\nThis timer guards against stalled service/handler invocations. Once it expires,\nRestate triggers a graceful termination by asking the service invocation to\nsuspend (which preserves intermediate progress).\n\nThe 'abort timeout' is used to abort the invocation, in case it doesn't react to\nthe request to suspend.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.\n\nIf set, it overrides the value set in the service.","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].inactivity_timeout.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Inactivity timeout\n\nThis timer guards against stalled service/handler invocations. Once it expires,\nRestate triggers a graceful termination by asking the service invocation to\nsuspend (which preserves intermediate progress).\n\nThe 'abort timeout' is used to abort the invocation, in case it doesn't react to\nthe request to suspend.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.\n\nIf set, it overrides the value set in the service.","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].inactivity_timeout.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].inactivity_timeout","typeLabel":"string | null"},"info":{"type":"array","items":{"type":"object","required":["message"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].info.items.[INDEX].message","typeLabel":"string"},"code":{"oneOf":[{"type":"string","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].info.items.[INDEX].code.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].info.items.[INDEX].code.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].info.items.[INDEX].code","typeLabel":"string | null"}},"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].info.items.[INDEX]","typeLabel":"object"},"description":"# Info\n\nList of configuration/deprecation information related to this handler.","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].info","typeLabel":"object[]"},"input_json_schema":{"description":"# Input JSON Schema\n\nJSON Schema of the handler input","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].input_json_schema","typeLabel":"any"},"journal_retention":{"oneOf":[{"type":"string","description":"# Journal retention\n\nThe journal retention. When set, this applies to all requests to this handler.\n\nIn case the invocation has an idempotency key, the `idempotency_retention` caps the maximum `journal_retention` time.\nIn case this handler is a workflow handler, the `workflow_completion_retention` caps the maximum `journal_retention` time.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.\n\nIf set, it overrides the value set in the service.","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].journal_retention.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Journal retention\n\nThe journal retention. When set, this applies to all requests to this handler.\n\nIn case the invocation has an idempotency key, the `idempotency_retention` caps the maximum `journal_retention` time.\nIn case this handler is a workflow handler, the `workflow_completion_retention` caps the maximum `journal_retention` time.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.\n\nIf set, it overrides the value set in the service.","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].journal_retention.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].journal_retention","typeLabel":"string | null"},"metadata":{"type":"object","description":"# Metadata\n\nAdditional handler metadata, as propagated by the SDKs.","additionalProperties":{"type":"string","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].metadata.additionalProperties","typeLabel":"string"},"propertyNames":{"type":"string"},"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].metadata","typeLabel":"object"},"output_json_schema":{"description":"# Output JSON Schema\n\nJSON Schema of the handler output","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].output_json_schema","typeLabel":"any"},"public":{"type":"boolean","description":"# Public\n\nIf true, this handler can be invoked through the ingress.\nIf false, this handler can be invoked only from another Restate service.","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].public","typeLabel":"boolean"},"retry_policy":{"type":"object","description":"# Retry policy\n\nRetry policy overrides applied for this handler.","properties":{"exponentiation_factor":{"oneOf":[{"type":"number","format":"float","description":"# Factor\n\nThe factor to use to compute the next retry attempt.","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].retry_policy.exponentiation_factor.oneOf.0","typeLabel":"number\u003cfloat>"},{"type":"null","format":"float","description":"# Factor\n\nThe factor to use to compute the next retry attempt.","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].retry_policy.exponentiation_factor.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].retry_policy.exponentiation_factor","typeLabel":"number\u003cfloat> | null"},"initial_interval":{"oneOf":[{"type":"string","description":"# Initial Interval\n\nInitial interval for the first retry attempt.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].retry_policy.initial_interval.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Initial Interval\n\nInitial interval for the first retry attempt.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].retry_policy.initial_interval.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].retry_policy.initial_interval","typeLabel":"string | null"},"max_attempts":{"oneOf":[{"type":"integer","description":"# Max attempts\n\nNumber of maximum attempts (including the initial) before giving up. Infinite retries if unset. No retries if set to 1.","minimum":1,"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].retry_policy.max_attempts.oneOf.0","typeLabel":"integer"},{"type":"null","description":"# Max attempts\n\nNumber of maximum attempts (including the initial) before giving up. Infinite retries if unset. No retries if set to 1.","minimum":1,"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].retry_policy.max_attempts.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].retry_policy.max_attempts","typeLabel":"integer | null"},"max_interval":{"oneOf":[{"type":"string","description":"# Max interval\n\nMaximum interval between retries.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].retry_policy.max_interval.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Max interval\n\nMaximum interval between retries.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].retry_policy.max_interval.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].retry_policy.max_interval","typeLabel":"string | null"},"on_max_attempts":{"oneOf":[{"type":"string","description":"# On max attempts\n\nBehavior when max attempts are reached.","enum":["Pause","Kill"],"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].retry_policy.on_max_attempts.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].retry_policy.on_max_attempts.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].retry_policy.on_max_attempts","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].retry_policy","typeLabel":"object"},"state_preload_policy":{"oneOf":[{"type":"string","description":"# State preload policy\n\nWhich state is preloaded (sent eagerly) at the start of an invocation to this handler.\nThis is relevant only for Workflows and Virtual Objects.\n\nIf set, it overrides the service-level policy.\n\n`\"All\"` preloads all state eagerly; `{\"Partial\": [\"key\", ...]}` preloads only the listed\nkeys eagerly (an empty list means fully lazy state).","enum":["All"],"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].state_preload_policy.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"object","description":"# State preload policy\n\nWhich state is preloaded (sent eagerly) at the start of an invocation to this handler.\nThis is relevant only for Workflows and Virtual Objects.\n\nIf set, it overrides the service-level policy.\n\n`\"All\"` preloads all state eagerly; `{\"Partial\": [\"key\", ...]}` preloads only the listed\nkeys eagerly (an empty list means fully lazy state).","required":["Partial"],"properties":{"Partial":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].state_preload_policy.oneOf.1.Partial.items.[INDEX]","typeLabel":"string"},"description":"Preload only these exact state keys (best-effort, capped by the invoker's eager state size\nlimit); everything else is served on demand. An empty list means fully lazy state.","isRequired":true,"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].state_preload_policy.oneOf.1.Partial","typeLabel":"string[]"}},"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].state_preload_policy.oneOf.1","typeLabel":"object"},{"type":"null","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].state_preload_policy.oneOf.2","typeLabel":"null"}],"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].state_preload_policy","typeLabel":"enum\u003cstring> | object | null"},"ty":{"oneOf":[{"type":"string","description":"# Type\n\nThe handler type.","enum":["Exclusive","Shared","Workflow"],"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].ty.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].ty.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX].ty","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"oneOf.1.services.items.[INDEX].handlers.items.[INDEX]","typeLabel":"object"},"description":"# Handlers\n\nHandlers for this service.","isRequired":true,"uniqueKey":"oneOf.1.services.items.[INDEX].handlers","typeLabel":"object[]"},"name":{"type":"string","description":"# Name\n\nFully qualified name of the service","isRequired":true,"uniqueKey":"oneOf.1.services.items.[INDEX].name","typeLabel":"string"},"revision":{"type":"integer","format":"int32","description":"# Revision\n\nLatest revision of the service.","minimum":0,"isRequired":true,"uniqueKey":"oneOf.1.services.items.[INDEX].revision","typeLabel":"integer\u003cint32>"},"ty":{"type":"string","enum":["Service","VirtualObject","Workflow"],"description":"# Type\n\nService type","isRequired":true,"uniqueKey":"oneOf.1.services.items.[INDEX].ty","typeLabel":"enum\u003cstring>"},"abort_timeout":{"type":"string","description":"# Abort timeout\n\nThis timer guards against stalled service/handler invocations that are supposed to\nterminate. The abort timeout is started after the 'inactivity timeout' has expired\nand the service/handler invocation has been asked to gracefully terminate. Once the\ntimer expires, it will abort the service/handler invocation.\n\nThis timer potentially **interrupts** user code. If the user code needs longer to\ngracefully terminate, then this value needs to be set accordingly.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.\n\nIf unset, this returns the default abort timeout configured in invoker options.","uniqueKey":"oneOf.1.services.items.[INDEX].abort_timeout","typeLabel":"string"},"documentation":{"oneOf":[{"type":"string","description":"# Documentation\n\nDocumentation of the service, as propagated by the SDKs.","uniqueKey":"oneOf.1.services.items.[INDEX].documentation.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Documentation\n\nDocumentation of the service, as propagated by the SDKs.","uniqueKey":"oneOf.1.services.items.[INDEX].documentation.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.services.items.[INDEX].documentation","typeLabel":"string | null"},"enable_lazy_state":{"type":"boolean","description":"# Enable lazy state\n\nIf true, lazy state will be enabled for all invocations to this service.\nThis is relevant only for Workflows and Virtual Objects.","uniqueKey":"oneOf.1.services.items.[INDEX].enable_lazy_state","typeLabel":"boolean"},"idempotency_retention":{"type":"string","description":"# Idempotency retention\n\nThe retention duration of idempotent requests for this service.\n\nIf not configured, this returns the default idempotency retention.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.1.services.items.[INDEX].idempotency_retention","typeLabel":"string"},"inactivity_timeout":{"type":"string","description":"# Inactivity timeout\n\nThis timer guards against stalled service/handler invocations. Once it expires,\nRestate triggers a graceful termination by asking the service invocation to\nsuspend (which preserves intermediate progress).\n\nThe 'abort timeout' is used to abort the invocation, in case it doesn't react to\nthe request to suspend.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.\n\nIf unset, this returns the default inactivity timeout configured in invoker options.","uniqueKey":"oneOf.1.services.items.[INDEX].inactivity_timeout","typeLabel":"string"},"info":{"type":"array","items":{"type":"object","required":["message"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.services.items.[INDEX].info.items.[INDEX].message","typeLabel":"string"},"code":{"oneOf":[{"type":"string","uniqueKey":"oneOf.1.services.items.[INDEX].info.items.[INDEX].code.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"oneOf.1.services.items.[INDEX].info.items.[INDEX].code.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.services.items.[INDEX].info.items.[INDEX].code","typeLabel":"string | null"}},"uniqueKey":"oneOf.1.services.items.[INDEX].info.items.[INDEX]","typeLabel":"object"},"description":"# Info\n\nList of configuration/deprecation information related to this service.","uniqueKey":"oneOf.1.services.items.[INDEX].info","typeLabel":"object[]"},"journal_retention":{"oneOf":[{"type":"string","description":"# Journal retention\n\nThe journal retention. When set, this applies to all requests to all handlers of this service.\n\nIn case the invocation has an idempotency key, the `idempotency_retention` caps the maximum `journal_retention` time.\nIn case the invocation targets a workflow handler, the `workflow_completion_retention` caps the maximum `journal_retention` time.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.1.services.items.[INDEX].journal_retention.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Journal retention\n\nThe journal retention. When set, this applies to all requests to all handlers of this service.\n\nIn case the invocation has an idempotency key, the `idempotency_retention` caps the maximum `journal_retention` time.\nIn case the invocation targets a workflow handler, the `workflow_completion_retention` caps the maximum `journal_retention` time.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.1.services.items.[INDEX].journal_retention.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.services.items.[INDEX].journal_retention","typeLabel":"string | null"},"metadata":{"type":"object","description":"# Metadata\n\nAdditional service metadata, as propagated by the SDKs.","additionalProperties":{"type":"string","uniqueKey":"oneOf.1.services.items.[INDEX].metadata.additionalProperties","typeLabel":"string"},"propertyNames":{"type":"string"},"uniqueKey":"oneOf.1.services.items.[INDEX].metadata","typeLabel":"object"},"public":{"type":"boolean","description":"# Public\n\nIf true, the service can be invoked through the ingress.\nIf false, the service can be invoked only from another Restate service.","uniqueKey":"oneOf.1.services.items.[INDEX].public","typeLabel":"boolean"},"retry_policy":{"type":"object","description":"# Retry policy\n\nRetry policy applied to invocations of this service.\n\nIf unset, it returns the default values configured in the Restate configuration.","properties":{"exponentiation_factor":{"type":"number","format":"float","description":"# Factor\n\nThe factor to use to compute the next retry attempt. Default: `2.0`.","uniqueKey":"oneOf.1.services.items.[INDEX].retry_policy.exponentiation_factor","typeLabel":"number\u003cfloat>"},"initial_interval":{"type":"string","description":"# Initial Interval\n\nInitial interval for the first retry attempt.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.1.services.items.[INDEX].retry_policy.initial_interval","typeLabel":"string"},"max_attempts":{"oneOf":[{"type":"integer","description":"# Max attempts\n\nNumber of maximum attempts (including the initial) before giving up. Infinite retries if unset. No retries if set to 1.","minimum":1,"uniqueKey":"oneOf.1.services.items.[INDEX].retry_policy.max_attempts.oneOf.0","typeLabel":"integer"},{"type":"null","description":"# Max attempts\n\nNumber of maximum attempts (including the initial) before giving up. Infinite retries if unset. No retries if set to 1.","minimum":1,"uniqueKey":"oneOf.1.services.items.[INDEX].retry_policy.max_attempts.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.services.items.[INDEX].retry_policy.max_attempts","typeLabel":"integer | null"},"max_interval":{"oneOf":[{"type":"string","description":"# Max interval\n\nMaximum interval between retries.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.1.services.items.[INDEX].retry_policy.max_interval.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Max interval\n\nMaximum interval between retries.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.1.services.items.[INDEX].retry_policy.max_interval.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.services.items.[INDEX].retry_policy.max_interval","typeLabel":"string | null"},"on_max_attempts":{"type":"string","enum":["Pause","Kill"],"description":"# On max attempts\n\nBehavior when max attempts are reached.","uniqueKey":"oneOf.1.services.items.[INDEX].retry_policy.on_max_attempts","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.1.services.items.[INDEX].retry_policy","typeLabel":"object"},"state_preload_policy":{"oneOf":[{"type":"string","description":"# State preload policy\n\nWhich state is preloaded (sent eagerly) at the start of an invocation to this service.\nThis is relevant only for Workflows and Virtual Objects.\n\n`\"All\"` preloads all state eagerly; `{\"Partial\": [\"key\", ...]}` preloads only the listed\nkeys eagerly (an empty list means fully lazy state).","enum":["All"],"uniqueKey":"oneOf.1.services.items.[INDEX].state_preload_policy.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"object","description":"# State preload policy\n\nWhich state is preloaded (sent eagerly) at the start of an invocation to this service.\nThis is relevant only for Workflows and Virtual Objects.\n\n`\"All\"` preloads all state eagerly; `{\"Partial\": [\"key\", ...]}` preloads only the listed\nkeys eagerly (an empty list means fully lazy state).","required":["Partial"],"properties":{"Partial":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.services.items.[INDEX].state_preload_policy.oneOf.1.Partial.items.[INDEX]","typeLabel":"string"},"description":"Preload only these exact state keys (best-effort, capped by the invoker's eager state size\nlimit); everything else is served on demand. An empty list means fully lazy state.","isRequired":true,"uniqueKey":"oneOf.1.services.items.[INDEX].state_preload_policy.oneOf.1.Partial","typeLabel":"string[]"}},"uniqueKey":"oneOf.1.services.items.[INDEX].state_preload_policy.oneOf.1","typeLabel":"object"}],"uniqueKey":"oneOf.1.services.items.[INDEX].state_preload_policy","typeLabel":"enum\u003cstring> | object"},"workflow_completion_retention":{"oneOf":[{"type":"string","description":"# Workflow completion retention\n\nThe retention duration of workflows. Only available on workflow services.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.1.services.items.[INDEX].workflow_completion_retention.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Workflow completion retention\n\nThe retention duration of workflows. Only available on workflow services.\n\nCan be configured using the [`jiff::fmt::friendly`](https://docs.rs/jiff/latest/jiff/fmt/friendly/index.html) format or ISO8601, for example `5 hours`.","uniqueKey":"oneOf.1.services.items.[INDEX].workflow_completion_retention.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.services.items.[INDEX].workflow_completion_retention","typeLabel":"string | null"}},"uniqueKey":"oneOf.1.services.items.[INDEX]","typeLabel":"object"},"description":"# Services\n\nList of services exposed by this deployment.","isRequired":true,"uniqueKey":"oneOf.1.services","typeLabel":"object[]"},"type":{"type":"string","description":"# Type\n\nDeployment type discriminator, always `lambda`.","enum":["lambda"],"isRequired":true,"uniqueKey":"oneOf.1.type","typeLabel":"enum\u003cstring>"},"additional_headers":{"type":"object","description":"# Additional headers\n\nAdditional headers used to invoke this service deployment.","additionalProperties":{"type":"string","uniqueKey":"oneOf.1.additional_headers.additionalProperties","typeLabel":"string"},"propertyNames":{"type":"string"},"uniqueKey":"oneOf.1.additional_headers","typeLabel":"object"},"assume_role_arn":{"oneOf":[{"type":"string","description":"# Assume role ARN\n\nAssume role ARN used to invoke this deployment. Check https://docs.restate.dev/category/aws-lambda for more details.","uniqueKey":"oneOf.1.assume_role_arn.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Assume role ARN\n\nAssume role ARN used to invoke this deployment. Check https://docs.restate.dev/category/aws-lambda for more details.","uniqueKey":"oneOf.1.assume_role_arn.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.assume_role_arn","typeLabel":"string | null"},"compression":{"oneOf":[{"type":"string","description":"# Compression\n\nCompression algorithm used for invoking Lambda.","enum":["Zstd"],"uniqueKey":"oneOf.1.compression.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"oneOf.1.compression.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.compression","typeLabel":"enum\u003cstring> | null"},"info":{"type":"array","items":{"type":"object","required":["message"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"oneOf.1.info.items.[INDEX].message","typeLabel":"string"},"code":{"oneOf":[{"type":"string","uniqueKey":"oneOf.1.info.items.[INDEX].code.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"oneOf.1.info.items.[INDEX].code.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.info.items.[INDEX].code","typeLabel":"string | null"}},"uniqueKey":"oneOf.1.info.items.[INDEX]","typeLabel":"object"},"description":"# Info\n\nList of configuration/deprecation information related to this deployment.","uniqueKey":"oneOf.1.info","typeLabel":"object[]"},"metadata":{"type":"object","description":"# Metadata\n\nDeployment metadata.","additionalProperties":{"type":"string","uniqueKey":"oneOf.1.metadata.additionalProperties","typeLabel":"string"},"propertyNames":{"type":"string"},"uniqueKey":"oneOf.1.metadata","typeLabel":"object"},"sdk_version":{"oneOf":[{"type":"string","description":"# SDK version\n\nSDK library and version declared during registration.","uniqueKey":"oneOf.1.sdk_version.oneOf.0","typeLabel":"string"},{"type":"null","description":"# SDK version\n\nSDK library and version declared during registration.","uniqueKey":"oneOf.1.sdk_version.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.sdk_version","typeLabel":"string | null"}},"uniqueKey":"oneOf.1","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"created_at":"\u003cstring>","http_version":"\u003cstring>","id":"\u003cstring>","max_protocol_version":123,"min_protocol_version":123,"protocol_type":"RequestResponse","services":[{"deployment_id":"\u003cstring>","handlers":[{"input_description":"\u003cstring>","name":"\u003cstring>","output_description":"\u003cstring>","abort_timeout":"\u003cstring>","documentation":"\u003cstring>","enable_lazy_state":true,"idempotency_retention":"\u003cstring>","inactivity_timeout":"\u003cstring>","info":[{"message":"\u003cstring>","code":"\u003cstring>"}],"input_json_schema":"\u003cunknown>","journal_retention":"\u003cstring>","metadata":{},"output_json_schema":"\u003cunknown>","public":true,"retry_policy":{"exponentiation_factor":123,"initial_interval":"\u003cstring>","max_attempts":2,"max_interval":"\u003cstring>","on_max_attempts":"Pause"},"state_preload_policy":"All","ty":"Exclusive"}],"name":"\u003cstring>","revision":1,"ty":"Service","abort_timeout":"\u003cstring>","documentation":"\u003cstring>","enable_lazy_state":true,"idempotency_retention":"\u003cstring>","inactivity_timeout":"\u003cstring>","info":[{"message":"\u003cstring>","code":"\u003cstring>"}],"journal_retention":"\u003cstring>","metadata":{},"public":true,"retry_policy":{"exponentiation_factor":123,"initial_interval":"\u003cstring>","max_attempts":2,"max_interval":"\u003cstring>","on_max_attempts":"Pause"},"state_preload_policy":"All","workflow_completion_retention":"\u003cstring>"}],"type":"http","uri":"\u003cstring>","additional_headers":{},"auth":{"GoogleIdToken":{"allow_insecure_transport":true,"audience":"\u003cstring>","impersonate_service_account":"\u003cstring>","workload_identity_provider":"\u003cstring>"}},"info":[{"message":"\u003cstring>","code":"\u003cstring>"}],"metadata":{},"sdk_version":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"ab5e1a79-429b-4d1a-8cb3-32a7de64217b":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","description":"# Error description response\n\nError details of the response","required":["message"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"restate_code":{"oneOf":[{"type":"string","description":"# Restate code\n\nRestate error code describing this error","uniqueKey":"restate_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Restate code\n\nRestate error code describing this error","uniqueKey":"restate_code.oneOf.1","typeLabel":"null"}],"uniqueKey":"restate_code","typeLabel":"string | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","restate_code":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"4932679b-230e-46ae-903f-960d770d25e9":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","description":"# Error description response\n\nError details of the response","required":["message"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"restate_code":{"oneOf":[{"type":"string","description":"# Restate code\n\nRestate error code describing this error","uniqueKey":"restate_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Restate code\n\nRestate error code describing this error","uniqueKey":"restate_code.oneOf.1","typeLabel":"null"}],"uniqueKey":"restate_code","typeLabel":"string | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","restate_code":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"5eba0488-880a-4ad7-9752-aafa68b1b571":{"description":"Method not allowed","content":{"application/json":{"schema":{"type":"object","description":"# Error description response\n\nError details of the response","required":["message"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"restate_code":{"oneOf":[{"type":"string","description":"# Restate code\n\nRestate error code describing this error","uniqueKey":"restate_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Restate code\n\nRestate error code describing this error","uniqueKey":"restate_code.oneOf.1","typeLabel":"null"}],"uniqueKey":"restate_code","typeLabel":"string | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","restate_code":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"78681fd9-c144-4e5e-81b4-f3b04e5b902e":{"description":"Conflict","content":{"application/json":{"schema":{"type":"object","description":"# Error description response\n\nError details of the response","required":["message"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"restate_code":{"oneOf":[{"type":"string","description":"# Restate code\n\nRestate error code describing this error","uniqueKey":"restate_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Restate code\n\nRestate error code describing this error","uniqueKey":"restate_code.oneOf.1","typeLabel":"null"}],"uniqueKey":"restate_code","typeLabel":"string | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","restate_code":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"a56daccf-a574-451e-a4c5-f400f163e3a9":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","description":"# Error description response\n\nError details of the response","required":["message"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"restate_code":{"oneOf":[{"type":"string","description":"# Restate code\n\nRestate error code describing this error","uniqueKey":"restate_code.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Restate code\n\nRestate error code describing this error","uniqueKey":"restate_code.oneOf.1","typeLabel":"null"}],"uniqueKey":"restate_code","typeLabel":"string | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","restate_code":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{},"servers":{}},"originalFileLocation":"schemas/openapi-admin.json"},"subdomain":"restate-6d46e1dc","siteName":"Restate","title":"Update deployment - Restate","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-14T14:32:59.493Z","originalFileLocation":"admin-api/deployment/update-deployment.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"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.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Restate\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/restate-6d46e1dc/aPguAmH_f4I6oEvV/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/restate-6d46e1dc/aPguAmH_f4I6oEvV/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/restate-6d46e1dc/aPguAmH_f4I6oEvV/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/restate-6d46e1dc/aPguAmH_f4I6oEvV/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/restate-6d46e1dc/aPguAmH_f4I6oEvV/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/restate-6d46e1dc/aPguAmH_f4I6oEvV/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/restate-6d46e1dc/aPguAmH_f4I6oEvV/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/restate-6d46e1dc/aPguAmH_f4I6oEvV/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/restate-6d46e1dc/aPguAmH_f4I6oEvV/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Update deployment - Restate\">\u003cmeta data-mint-head property=\"og:description\" content=\"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.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Restate\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.restate.dev/admin-api/deployment/update-deployment\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://restate-6d46e1dc.mintlify.app/_mintlify/api/og/v2?division=deployment\u0026amp;title=Update+deployment\u0026amp;description=Updates+an+existing+deployment+configuration%2C+such+as+the+endpoint+address+or+invocation+headers.%0ABy+default%2C+service+schemas+are+not+re-discovered.+Set+%60overwr\u0026amp;theme=35f97c6a72f75e34ad939f4f\u0026amp;signature=87104b025c59aa2274274c619f116f09e24ab84a71102929467a14475ad2d054\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Update deployment - Restate\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"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.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://restate-6d46e1dc.mintlify.app/_mintlify/api/og/v2?division=deployment\u0026amp;title=Update+deployment\u0026amp;description=Updates+an+existing+deployment+configuration%2C+such+as+the+endpoint+address+or+invocation+headers.%0ABy+default%2C+service+schemas+are+not+re-discovered.+Set+%60overwr\u0026amp;theme=35f97c6a72f75e34ad939f4f\u0026amp;signature=87104b025c59aa2274274c619f116f09e24ab84a71102929467a14475ad2d054\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/restate-6d46e1dc/aPguAmH_f4I6oEvV/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Restate\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4752c4\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.restate.dev/admin-api/deployment/update-deployment\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/admin-api/deployment/update-deployment.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.restate.dev/#organization\",\"name\":\"Restate\",\"url\":\"https://docs.restate.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/restate-6d46e1dc/0MkLgffDAGHkNDIZ/logo/light.svg?fit=max\u0026auto=format\u0026n=0MkLgffDAGHkNDIZ\u0026q=85\u0026s=70e648c2608af2d2c33dc26b3bce13d3\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.restate.dev#website\",\"name\":\"Restate\",\"url\":\"https://docs.restate.dev\",\"publisher\":{\"@id\":\"https://docs.restate.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.restate.dev/admin-api/deployment/update-deployment#webpage\",\"url\":\"https://docs.restate.dev/admin-api/deployment/update-deployment\",\"name\":\"Update deployment\",\"description\":\"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.\",\"dateModified\":\"2026-10-14T14:32:59.493Z\",\"isPartOf\":{\"@id\":\"https://docs.restate.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.restate.dev/admin-api/deployment/update-deployment#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.restate.dev/admin-api/deployment/update-deployment#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"References\",\"item\":\"https://docs.restate.dev/admin-api/deployment/list-deployments\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"APIs\",\"item\":\"https://docs.restate.dev/admin-api/deployment/list-deployments\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Admin API\",\"item\":\"https://docs.restate.dev/admin-api/deployment/list-deployments\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"deployment\",\"item\":\"https://docs.restate.dev/admin-api/deployment/list-deployments\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Update deployment\",\"item\":\"https://docs.restate.dev/admin-api/deployment/update-deployment\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.restate.dev/admin-api/deployment/update-deployment#apireference\",\"headline\":\"Update deployment\",\"name\":\"Update deployment\",\"description\":\"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.\",\"url\":\"https://docs.restate.dev/admin-api/deployment/update-deployment\",\"mainEntityOfPage\":{\"@id\":\"https://docs.restate.dev/admin-api/deployment/update-deployment#webpage\"},\"dateModified\":\"2026-10-14T14:32:59.493Z\",\"publisher\":{\"@id\":\"https://docs.restate.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.restate.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Restate\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Restate","nav":{"global":null,"tabs":[{"tab":"Learn","icon":"graduation-cap","pages":[{"title":"Learn","href":""}]},{"tab":"Docs","icon":"hammer","pages":[{"title":"Documentation","sidebarTitle":"Overview","icon":"book-open","mode":"wide","href":"/docs"},{"title":"Installation","icon":"download","href":"/installation"},{"group":"SDKs","pages":[{"group":"TypeScript","icon":"/img/languages/typescript.svg","pages":[{"title":"Services","icon":"brackets-curly","href":"/develop/ts/services"},{"title":"Durable Steps","icon":"list-check","href":"/develop/ts/durable-steps"},{"title":"Service Communication","sidebarTitle":"Communication","icon":"comment","href":"/develop/ts/service-communication"},{"title":"State","icon":"database","href":"/develop/ts/state"},{"title":"Signals and external events","icon":"hourglass-start","href":"/develop/ts/external-events"},{"title":"Scheduling \u0026 Timers","icon":"timer","href":"/develop/ts/durable-timers"},{"title":"Concurrency / Coroutines","icon":"merge","href":"/develop/ts/concurrent-tasks"},{"title":"Error Handling","icon":"triangle-exclamation","href":"/develop/ts/error-handling"},{"title":"Hooks","icon":"plug","href":"/develop/ts/hooks"},{"title":"Serialization","icon":"file-code","href":"/develop/ts/serialization"},{"title":"Serving","icon":"globe","href":"/develop/ts/serving"},{"title":"Testing","icon":"bug","href":"/develop/ts/testing"},{"title":"Logging","icon":"file-lines","href":"/develop/ts/logging"},{"title":"Tracing","icon":"magnifying-glass","href":"/develop/ts/tracing"}]},{"group":"Java/Kotlin","icon":"/img/languages/java.svg","pages":[{"title":"Services","icon":"brackets-curly","href":"/develop/java/services"},{"title":"Durable Steps","icon":"list-check","href":"/develop/java/durable-steps"},{"title":"Service Communication","sidebarTitle":"Communication","icon":"comment","href":"/develop/java/service-communication"},{"title":"State","icon":"database","href":"/develop/java/state"},{"title":"Signals and external events","icon":"hourglass-start","href":"/develop/java/external-events"},{"title":"Scheduling \u0026 Timers","icon":"timer","href":"/develop/java/durable-timers"},{"title":"Concurrent Tasks","icon":"merge","href":"/develop/java/concurrent-tasks"},{"title":"Error Handling","icon":"triangle-exclamation","href":"/develop/java/error-handling"},{"title":"Serialization","icon":"file-code","href":"/develop/java/serialization"},{"title":"Serving","icon":"globe","href":"/develop/java/serving"},{"title":"Spring Boot","icon":"leaf","href":"/develop/java/spring-boot"},{"title":"Testing","icon":"bug","href":"/develop/java/testing"},{"title":"Logging","icon":"file-lines","href":"/develop/java/logging"},{"title":"Tracing","icon":"magnifying-glass","href":"/develop/java/tracing"}]},{"group":"Python","icon":"/img/languages/python.svg","pages":[{"title":"Services","icon":"brackets-curly","href":"/develop/python/services"},{"title":"Durable Steps","icon":"list-check","href":"/develop/python/durable-steps"},{"title":"Service Communication","sidebarTitle":"Communication","icon":"comment","href":"/develop/python/service-communication"},{"title":"State","icon":"database","href":"/develop/python/state"},{"title":"Signals and external events","icon":"hourglass-start","href":"/develop/python/external-events"},{"title":"Scheduling \u0026 Timers","icon":"timer","href":"/develop/python/durable-timers"},{"title":"Concurrent Tasks","icon":"merge","href":"/develop/python/concurrent-tasks"},{"title":"Error Handling","icon":"triangle-exclamation","href":"/develop/python/error-handling"},{"title":"Serialization","icon":"file-code","href":"/develop/python/serialization"},{"title":"Serving","icon":"globe","href":"/develop/python/serving"},{"title":"Testing","icon":"bug","href":"/develop/python/testing"},{"title":"Logging","icon":"file-lines","href":"/develop/python/logging"}]},{"group":"Go","icon":"/img/languages/go.svg","pages":[{"title":"Services","icon":"brackets-curly","href":"/develop/go/services"},{"title":"Durable Steps","icon":"list-check","href":"/develop/go/durable-steps"},{"title":"Service Communication","sidebarTitle":"Communication","icon":"comment","href":"/develop/go/service-communication"},{"title":"State","icon":"database","href":"/develop/go/state"},{"title":"Signals and external events","icon":"hourglass-start","href":"/develop/go/external-events"},{"title":"Scheduling \u0026 Timers","icon":"timer","href":"/develop/go/durable-timers"},{"title":"Concurrent Tasks","icon":"merge","href":"/develop/go/concurrent-tasks"},{"title":"Error Handling","icon":"triangle-exclamation","href":"/develop/go/error-handling"},{"title":"Serving","icon":"globe","href":"/develop/go/serving"},{"title":"Testing","icon":"bug","href":"/develop/go/testing"},{"title":"Logging","icon":"file-lines","href":"/develop/go/logging"},{"title":"Code Generation","icon":"code","href":"/develop/go/code-generation"}]},{"title":"Rust SDK","icon":"https://mintlify.s3.us-west-1.amazonaws.com/restate-6d46e1dc/img/languages/rust.svg","url":"https://docs.rs/restate-sdk/latest/restate_sdk/","href":"/develop/rust"},{"title":"Ruby SDK","icon":"https://mintlify.s3.us-west-1.amazonaws.com/restate-6d46e1dc/img/languages/ruby.svg","url":"https://github.com/restatedev/sdk-ruby","href":"/develop/ruby"},{"title":"Develop with AI","icon":"robot","href":"/develop/ai-assistant"}]},{"group":"Services","pages":[{"group":"Deploy","icon":"box","pages":[{"title":"Kubernetes","icon":"https://mintlify.s3.us-west-1.amazonaws.com/restate-6d46e1dc/img/cloud-providers/kubernetes.svg","href":"/services/deploy/kubernetes"},{"title":"Google Cloud Run","icon":"https://mintlify.s3.us-west-1.amazonaws.com/restate-6d46e1dc/img/cloud-providers/google-cloud-run.svg","href":"/services/deploy/cloud-run"},{"title":"Vercel","icon":"https://mintlify.s3.us-west-1.amazonaws.com/restate-6d46e1dc/img/cloud-providers/vercel.svg","href":"/services/deploy/vercel"},{"title":"AWS Lambda","icon":"https://mintlify.s3.us-west-1.amazonaws.com/restate-6d46e1dc/img/cloud-providers/aws-lambda.svg","href":"/services/deploy/lambda"},{"title":"Cloudflare Workers","icon":"https://mintlify.s3.us-west-1.amazonaws.com/restate-6d46e1dc/img/cloud-providers/cloudflare-workers.svg","href":"/services/deploy/cloudflare-workers"},{"title":"Other serverless platforms","icon":"https://mintlify.s3.us-west-1.amazonaws.com/restate-6d46e1dc/img/cloud-providers/other-serverless.svg","href":"/services/deploy/other-serverless-platforms"},{"title":"Containers and VMs","icon":"https://mintlify.s3.us-west-1.amazonaws.com/restate-6d46e1dc/img/cloud-providers/docker.svg","href":"/services/deploy/standalone"}]},{"group":"Invocation","icon":"phone","pages":[{"title":"HTTP","href":"/services/invocation/http"},{"group":"SDK Clients","pages":[{"title":"TypeScript SDK Clients","sidebarTitle":"TypeScript","icon":"https://mintlify.s3.us-west-1.amazonaws.com/restate-6d46e1dc/img/languages/typescript.svg","href":"/services/invocation/clients/typescript-sdk"},{"title":"Java/Kotlin SDK Clients","sidebarTitle":"Java/Kotlin","icon":"https://mintlify.s3.us-west-1.amazonaws.com/restate-6d46e1dc/img/languages/java.svg","href":"/services/invocation/clients/java-sdk"},{"title":"Python SDK Clients","sidebarTitle":"Python","icon":"https://mintlify.s3.us-west-1.amazonaws.com/restate-6d46e1dc/img/languages/python.svg","href":"/services/invocation/clients/python-sdk"},{"title":"Go SDK Clients","sidebarTitle":"Go","icon":"https://mintlify.s3.us-west-1.amazonaws.com/restate-6d46e1dc/img/languages/go.svg","href":"/services/invocation/clients/go-sdk"}]},{"title":"Kafka","href":"/services/invocation/kafka"},{"title":"Managing Invocations","sidebarTitle":"Managing Invocations","href":"/services/invocation/managing-invocations"}]},{"group":"Integrations","icon":"circle-nodes","pages":[{"title":"Kafka","href":"/services/integrations/kafka"},{"title":"Build your own integration","href":"/services/integrations/build_your_own"}]},{"title":"Flow Control","sidebarTitle":"Flow control","icon":"gauge","href":"/services/flow-control"},{"title":"Versioning","icon":"send-backward","href":"/services/versioning"},{"title":"Security","icon":"shield","href":"/services/security"},{"title":"Service Configuration","sidebarTitle":"Configuration","icon":"sliders-simple","href":"/services/configuration"},{"title":"Introspection","icon":"magnifying-glass","href":"/services/introspection"}]},{"group":"Restate Cloud / BYOC / OSS","pages":[{"title":"Choose how to run Restate","sidebarTitle":"Overview","icon":"scale-balanced","href":"/hosting/overview"},{"title":"Restate Cloud","icon":"https://mintlify.s3.us-west-1.amazonaws.com/restate-6d46e1dc/logo/restate-cloud-mini.svg","href":"/cloud/getting-started"},{"group":"Restate BYOC","icon":"/logo/restate-cloud-mini.svg","expanded":false,"pages":[{"title":"Restate BYOC","sidebarTitle":"What is BYOC?","icon":"cloud-arrow-down","href":"/byoc/overview"},{"title":"Installation","sidebarTitle":"Installation","icon":"wrench","href":"/byoc/installation"},{"title":"Security Model","sidebarTitle":"Security","icon":"shield","href":"/byoc/security"}]},{"group":"Self-hosted Restate","icon":"/logo/restate-mini.svg","pages":[{"title":"Self-hosted Restate Overview","sidebarTitle":"Overview","icon":"book-open","href":"/server/overview"},{"group":"Deploy","icon":"box","pages":[{"sidebarTitle":"Kubernetes","icon":"https://mintlify.s3.us-west-1.amazonaws.com/restate-6d46e1dc/img/cloud-providers/kubernetes.svg","title":null,"href":"/server/deploy/kubernetes"},{"group":"Cloud providers","icon":"cloud","pages":[{"title":"Deploying Restate on AWS","sidebarTitle":"AWS","icon":"https://mintlify.s3.us-west-1.amazonaws.com/restate-6d46e1dc/img/cloud-providers/aws.svg","href":"/server/deploy/aws"},{"title":"Deploying Restate on GCP","sidebarTitle":"GCP","icon":"https://mintlify.s3.us-west-1.amazonaws.com/restate-6d46e1dc/img/cloud-providers/gcp.svg","href":"/server/deploy/gcp"},{"title":"Deploying Restate on Azure","sidebarTitle":"Azure","icon":"https://mintlify.s3.us-west-1.amazonaws.com/restate-6d46e1dc/img/cloud-providers/azure.svg","href":"/server/deploy/azure"}]},{"title":"Docker","sidebarTitle":"Docker","icon":"https://mintlify.s3.us-west-1.amazonaws.com/restate-6d46e1dc/img/cloud-providers/docker.svg","href":"/server/deploy/docker"}]},{"group":"Configuration","icon":"gear","pages":[{"title":"Restate Server Configuration","sidebarTitle":"Configuration methods","icon":"sliders","href":"/server/configuration"},{"title":"Memory Configuration","sidebarTitle":"Memory","icon":"memory","href":"/server/memory"},{"title":"Networking","icon":"network-wired","href":"/server/networking"}]},{"group":"Clusters and Data","icon":"cubes-stacked","pages":[{"title":"Highly-Available Clusters","icon":"circle-nodes","href":"/server/clusters"},{"title":"Metadata Storage","icon":"database","href":"/server/metadata"},{"title":"Snapshots \u0026 Backups","icon":"camera","href":"/server/snapshots"}]},{"title":"Security","icon":"shield","href":"/server/security"},{"group":"Monitor","icon":"chart-line","pages":[{"title":"Logging","icon":"file-lines","href":"/server/monitoring/logging"},{"title":"Tracing","icon":"route","href":"/server/monitoring/tracing"},{"title":"Metrics","icon":"chart-simple","href":"/server/monitoring/metrics"}]},{"title":"Upgrading Restate","sidebarTitle":"Upgrading","icon":"arrow-up","href":"/server/upgrading"}]}]},{"group":"References","pages":[{"group":"APIs","expanded":false,"pages":[{"group":"Admin API","pages":[{"group":"deployment","pages":[{"title":"List deployments","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json get /deployments","href":"/admin-api/deployment/list-deployments"},{"title":"Register deployment","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json post /deployments","href":"/admin-api/deployment/register-deployment"},{"title":"Get deployment","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json get /deployments/{deployment}","href":"/admin-api/deployment/get-deployment"},{"title":"Delete deployment","description":"Delete a deployment. Currently, only forced deletions are supported.\n**Use with caution**: forcing a deployment deletion can break in-flight invocations.","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json delete /deployments/{deployment}","href":"/admin-api/deployment/delete-deployment"},{"title":"Update deployment","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json patch /deployments/{deployment}","href":"/admin-api/deployment/update-deployment"}]},{"group":"health","pages":[{"title":"Health check endpoint","description":null,"deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json get /health","href":"/admin-api/health/health-check-endpoint"}]},{"group":"invocation","pages":[{"title":"Delete an invocation","deprecated":true,"version":null,"openapi":"/schemas/openapi-admin.json delete /invocations/{invocation_id}","href":"/admin-api/invocation/delete-an-invocation"},{"title":"Cancel an invocation","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json patch /invocations/{invocation_id}/cancel","href":"/admin-api/invocation/cancel-an-invocation"},{"title":"Kill an invocation","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json patch /invocations/{invocation_id}/kill","href":"/admin-api/invocation/kill-an-invocation"},{"title":"Pause an invocation","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json patch /invocations/{invocation_id}/pause","href":"/admin-api/invocation/pause-an-invocation"},{"title":"Purge a completed invocation","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json patch /invocations/{invocation_id}/purge","href":"/admin-api/invocation/purge-a-completed-invocation"},{"title":"Purge invocation journal","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json patch /invocations/{invocation_id}/purge-journal","href":"/admin-api/invocation/purge-invocation-journal"},{"title":"Restart invocation as new","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json patch /invocations/{invocation_id}/restart-as-new","href":"/admin-api/invocation/restart-invocation-as-new"},{"title":"Resume an invocation","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json patch /invocations/{invocation_id}/resume","href":"/admin-api/invocation/resume-an-invocation"}]},{"group":"kafka_cluster","pages":[{"title":"List Kafka clusters","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json get /kafka-clusters","href":"/admin-api/kafka_cluster/list-kafka-clusters"},{"title":"Create Kafka cluster","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json post /kafka-clusters","href":"/admin-api/kafka_cluster/create-kafka-cluster"},{"title":"Get Kafka cluster","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json get /kafka-clusters/{cluster_name}","href":"/admin-api/kafka_cluster/get-kafka-cluster"},{"title":"Delete Kafka cluster","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json delete /kafka-clusters/{cluster_name}","href":"/admin-api/kafka_cluster/delete-kafka-cluster"},{"title":"Update Kafka cluster","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json patch /kafka-clusters/{cluster_name}","href":"/admin-api/kafka_cluster/update-kafka-cluster"}]},{"group":"rule","pages":[{"title":"Upsert a batch of rules.","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json put /limits/rules","href":"/admin-api/rule/upsert-a-batch-of-rules"},{"title":"Delete a batch of rules by pattern.","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json post /limits/rules/bulk-delete","href":"/admin-api/rule/delete-a-batch-of-rules-by-pattern"}]},{"group":"introspection","pages":[{"title":"Query the system and service state by using SQL.","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json post /query","href":"/admin-api/introspection/query-the-system-and-service-state-by-using-sql"}]},{"group":"service","pages":[{"title":"List services","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json get /services","href":"/admin-api/service/list-services"},{"title":"Get service","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json get /services/{service}","href":"/admin-api/service/get-service"},{"title":"Modify service configuration","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json patch /services/{service}","href":"/admin-api/service/modify-service-configuration"},{"title":"Get service OpenAPI definition","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json get /services/{service}/openapi","href":"/admin-api/service/get-service-openapi-definition"},{"title":"Modify service state","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json post /services/{service}/state","href":"/admin-api/service/modify-service-state"}]},{"group":"service_handler","pages":[{"title":"List service handlers","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json get /services/{service}/handlers","href":"/admin-api/service_handler/list-service-handlers"},{"title":"Get service handler","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json get /services/{service}/handlers/{handler}","href":"/admin-api/service_handler/get-service-handler"}]},{"group":"subscription","pages":[{"title":"List subscriptions","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json get /subscriptions","href":"/admin-api/subscription/list-subscriptions"},{"title":"Create subscription","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json post /subscriptions","href":"/admin-api/subscription/create-subscription"},{"title":"Get subscription","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json get /subscriptions/{subscription}","href":"/admin-api/subscription/get-subscription"},{"title":"Delete subscription","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json delete /subscriptions/{subscription}","href":"/admin-api/subscription/delete-subscription"}]},{"group":"version","pages":[{"title":"Get version information","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json get /version","href":"/admin-api/version/get-version-information"}]}]},{"title":"Typescript API","url":"https://restatedev.github.io/sdk-typescript/","href":"/references/tsdocs"},{"title":"Javadocs","url":"https://restatedev.github.io/sdk-java/javadocs/","href":"/references/javadocs"},{"title":"KotlinDocs","url":"https://restatedev.github.io/sdk-java/ktdocs/","href":"/references/ktdocs"},{"title":"Go API","url":"https://pkg.go.dev/github.com/restatedev/sdk-go","href":"/references/gopkg"},{"title":"SQL Introspection API","href":"/references/sql-introspection"}]},{"group":"Configuration","expanded":false,"pages":[{"title":"Restate Server Configuration","href":"/references/server-config"},{"title":"CLI Configuration","href":"/references/cli-config"}]},{"title":"Restate Architecture","sidebarTitle":"Architecture","href":"/references/architecture"},{"group":"Changelog","expanded":false,"pages":[{"title":"Restate Server changelog","sidebarTitle":"Restate Server","href":"/changelog/server"},{"title":"TypeScript SDK changelog","sidebarTitle":"TypeScript SDK","href":"/changelog/typescript-sdk"},{"title":"Python SDK changelog","sidebarTitle":"Python SDK","href":"/changelog/python-sdk"},{"title":"Java/Kotlin SDK changelog","sidebarTitle":"Java/Kotlin SDK","href":"/changelog/java-kotlin-sdk"},{"title":"Go SDK changelog","sidebarTitle":"Go SDK","href":"/changelog/go-sdk"},{"title":"Rust SDK changelog","sidebarTitle":"Rust SDK","href":"/changelog/rust-sdk"},{"title":"Kubernetes Operator changelog","sidebarTitle":"Kubernetes Operator","href":"/changelog/operator"}]},{"title":"Error Codes","href":"/references/errors"}]}]},{"tab":"Guides","icon":"book","pages":[{"title":"Guides","href":"/guides"}]},{"tab":"Roadmap","icon":"map","pages":[{"title":"Roadmap","href":"/roadmap/oss"}]},{"tab":"AI / Agents","icon":"robot","pages":[{"title":"AI / Agents","href":"/ai"}]}]},"basePath":"","title":"Update deployment - Restate","buildId":"dpl_77Hw7ZuAABM8E3WMbYAf2ohQCr3v","deploymentId":"dpl_77Hw7ZuAABM8E3WMbYAf2ohQCr3v","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CVpqyvFO.js","utils-vpweLD0v.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BIOodqb0.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B1LM3qmu.js","snippetPresets-C5xK0GtN.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CCsxLnQl.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C2-WKG22.js","shallow-SdoLUC-q.js","getApiPlaygroundDisplay-BnI8L2hB.js","CodeSnippet-D5M8NCHI.js","CodeSnippets-CXRO8Uom.js","Page-CN9QbZiA.js","getPastedJson-CrfHEdRt.js","icon-Cr8AyUnW.js","MethodPill-J_Cs0kNw.js","DuplicateIcon-DrMboxGw.js","createIcon-B4CIWVbU.js","DynamicMarkdown-D9cdbgj9.js","SectionHeading-BO4CouT0.js","axios-vUo_bRtp.js","Markdown-L1m1-PSi.js","clsx-rIpTdK8h.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-ptfS1uB_.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-D31Sm3f9.js"]}