Registers a new deployment (HTTP or Lambda). Restate will invoke the endpoint to discover available services and handlers,
and make them available for invocation. For more information, see the deployment documentation.
Optional per-deployment authentication configuration. When set to GoogleIdToken,
Restate mints a Google-signed OIDC ID token for each request and attaches it as
X-Serverless-Authorization: Bearer <token>. Cloud Run validates this header in
precedence over Authorization and strips it before forwarding to the container, so any
Authorization placed in additional_headers passes through to the workload unchanged.
If true, discovery will run but the deployment will not be registered.
This is useful to see the impact of a new deployment before registering it.
force and breaking will be respected.
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 already exists. No change if force = false, services overwritten if force = true
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.4044","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":"turbopuffer-dual-write","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},{"name":"sso-setup-deadline-banner","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/register-deployment","slug":"/admin-api/deployment/register-deployment","pageMetadata":{"title":"Register deployment","description":"Registers a new deployment (HTTP or Lambda). Restate will invoke the endpoint to discover available services and handlers,\nand make them available for invocation. For more information, see the [deployment documentation](https://docs.restate.dev/services/versioning#registering-a-deployment).","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json post /deployments","href":"/admin-api/deployment/register-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 a: \"a\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Registers a new deployment (HTTP or Lambda). Restate will invoke the endpoint to discover available services and handlers,\\nand make them available for invocation. For more information, see the \", _jsx(_components.a, {\n href: \"https://docs.restate.dev/services/versioning#registering-a-deployment\",\n children: \"deployment documentation\"\n }), \".\"]\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":"Register deployment","description":"Registers a new deployment (HTTP or Lambda). Restate will invoke the endpoint to discover available services and handlers,\nand make them available for invocation. For more information, see the [deployment documentation](https://docs.restate.dev/services/versioning#registering-a-deployment).","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json post /deployments","href":"/admin-api/deployment/register-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":"Register deployment","description":"Registers a new deployment (HTTP or Lambda). Restate will invoke the endpoint to discover available services and handlers,\nand make them available for invocation. For more information, see the [deployment documentation](https://docs.restate.dev/services/versioning#registering-a-deployment).","operationId":"create_deployment","requestBody":"16ad3632-e07b-4813-b156-3afeb0c056a0","responses":{"200":"8f5fb46a-f678-4a64-85c1-044f6c52a92d","201":"9484a0d4-9b7b-4910-8921-ced41317ad25","400":"a78546d5-e7e2-4033-8aa4-1f0eaf6a2a73","404":"e67de79c-e118-4de8-b1f0-a56d50264ed2","405":"8d73200a-6a9f-40b3-8462-10312d34070d","409":"37861fec-9c49-4f51-9b25-a4a8cb4f44e0","500":"af14b27a-b92a-4af3-8234-8846c247f5a9"},"method":"post","type":"path","servers":[],"security":[],"path":"/deployments","baseUrlOptions":[],"title":"Register deployment","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"RegisterHttpDeploymentRequest","description":"Register HTTP deployment request","required":["uri"],"properties":{"uri":{"type":"string","format":"uri","description":"# Uri\n\nUri to use to discover/invoke the http deployment.","isRequired":true,"uniqueKey":"oneOf.0.uri","typeLabel":"string\u003curi>"},"additional_headers":{"oneOf":[{"type":"object","description":"# Additional headers\n\nAdditional headers added to every discover/invoke request to the deployment.\n\nYou typically want to include here API keys and other tokens required to send requests to deployments.","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"},"auth":{"oneOf":[{"type":"object","description":"# Authentication\n\nOptional per-deployment authentication configuration. When set to `GoogleIdToken`,\nRestate mints a Google-signed OIDC ID token for each request and attaches it as\n`X-Serverless-Authorization: Bearer \u003ctoken>`. Cloud Run validates this header in\nprecedence over `Authorization` and strips it before forwarding to the container, so any\n`Authorization` placed in `additional_headers` passes through to the workload unchanged.","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"},"breaking":{"type":"boolean","description":"# Breaking\n\nIf `true`, it allows registering new service revisions with\nschemas incompatible with previous service revisions, such as changing the service type.\n\nSee the [versioning documentation](https://docs.restate.dev/services/versioning) for more information.","uniqueKey":"oneOf.0.breaking","typeLabel":"boolean"},"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.\n`force` and `breaking` will be respected.","uniqueKey":"oneOf.0.dry_run","typeLabel":"boolean"},"force":{"oneOf":[{"type":"boolean","description":"# Force\n\nIf `true`, it overrides, if existing, any deployment using the same `uri`.\nBeware that this can lead inflight invocations to an unrecoverable error state.\n\nWhen set to `true`, it implies `breaking = true`.\n\nSee the [versioning documentation](https://docs.restate.dev/services/versioning) for more information.","default":true,"uniqueKey":"oneOf.0.force.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"# Force\n\nIf `true`, it overrides, if existing, any deployment using the same `uri`.\nBeware that this can lead inflight invocations to an unrecoverable error state.\n\nWhen set to `true`, it implies `breaking = true`.\n\nSee the [versioning documentation](https://docs.restate.dev/services/versioning) for more information.","default":true,"uniqueKey":"oneOf.0.force.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.0.force","typeLabel":"boolean | null"},"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"},"use_http_11":{"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.\n","uniqueKey":"oneOf.0.use_http_11","typeLabel":"boolean"}},"uniqueKey":"oneOf.0","typeLabel":"RegisterHttpDeploymentRequest · object"},{"type":"object","title":"RegisterLambdaDeploymentRequest","description":"Register Lambda deployment request","required":["arn"],"properties":{"arn":{"type":"string","description":"# ARN\n\nARN to use to discover/invoke the lambda deployment.","isRequired":true,"uniqueKey":"oneOf.1.arn","typeLabel":"string"},"additional_headers":{"oneOf":[{"type":"object","description":"# Additional headers\n\nAdditional headers added to every discover/invoke request to the 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"},"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"},"breaking":{"type":"boolean","description":"# Breaking\n\nIf `true`, it allows registering new service revisions with\nschemas incompatible with previous service revisions, such as changing the service type.\n\nSee the [versioning documentation](https://docs.restate.dev/services/versioning) for more information.","uniqueKey":"oneOf.1.breaking","typeLabel":"boolean"},"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.\n`force` and `breaking` will be respected.","uniqueKey":"oneOf.1.dry_run","typeLabel":"boolean"},"force":{"oneOf":[{"type":"boolean","description":"# Force\n\nIf `true`, it overrides, if existing, any deployment using the same `uri`.\nBeware that this can lead inflight invocations to an unrecoverable error state.\n\nThis implies `breaking = true`.\n\nSee the [versioning documentation](https://docs.restate.dev/services/versioning) for more information.","default":true,"uniqueKey":"oneOf.1.force.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"# Force\n\nIf `true`, it overrides, if existing, any deployment using the same `uri`.\nBeware that this can lead inflight invocations to an unrecoverable error state.\n\nThis implies `breaking = true`.\n\nSee the [versioning documentation](https://docs.restate.dev/services/versioning) for more information.","default":true,"uniqueKey":"oneOf.1.force.oneOf.1","typeLabel":"null"}],"uniqueKey":"oneOf.1.force","typeLabel":"boolean | null"},"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"}},"uniqueKey":"oneOf.1","typeLabel":"RegisterLambdaDeploymentRequest · object"}],"uniqueKey":"","typeLabel":"RegisterHttpDeploymentRequest · object | RegisterLambdaDeploymentRequest · object"},"examples":{"Example":{"title":"Example","value":{"uri":"\u003cstring>","additional_headers":{},"auth":{"GoogleIdToken":{"allow_insecure_transport":true,"audience":"\u003cstring>","impersonate_service_account":"\u003cstring>","workload_identity_provider":"\u003cstring>"}},"breaking":true,"dry_run":true,"force":true,"metadata":{},"use_http_11":true}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"8f5fb46a-f678-4a64-85c1-044f6c52a92d":{"description":"Deployment already exists. No change if force = false, services overwritten if force = true","headers":{"Location":{"schema":{"type":"string"},"description":"URI of the deployment"}},"content":{"application/json":{"schema":{"type":"object","required":["id","services"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"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":"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":"services.items.[INDEX].handlers.items.[INDEX].input_description","typeLabel":"string"},"name":{"type":"string","description":"# Name\n\nThe handler name.","isRequired":true,"uniqueKey":"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":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].abort_timeout.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].documentation.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].enable_lazy_state.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].idempotency_retention.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].inactivity_timeout.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"services.items.[INDEX].handlers.items.[INDEX].info.items.[INDEX].message","typeLabel":"string"},"code":{"oneOf":[{"type":"string","uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].info.items.[INDEX].code.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].info.items.[INDEX].code.oneOf.1","typeLabel":"null"}],"uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].info.items.[INDEX].code","typeLabel":"string | null"}},"uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].info.items.[INDEX]","typeLabel":"object"},"description":"# Info\n\nList of configuration/deprecation information related to this handler.","uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].info","typeLabel":"object[]"},"input_json_schema":{"description":"# Input JSON Schema\n\nJSON Schema of the handler input","uniqueKey":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].journal_retention.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"services.items.[INDEX].handlers.items.[INDEX].metadata.additionalProperties","typeLabel":"string"},"propertyNames":{"type":"string"},"uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].metadata","typeLabel":"object"},"output_json_schema":{"description":"# Output JSON Schema\n\nJSON Schema of the handler output","uniqueKey":"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":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].retry_policy.exponentiation_factor.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].retry_policy.initial_interval.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].retry_policy.max_attempts.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].retry_policy.max_interval.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"services.items.[INDEX].handlers.items.[INDEX].retry_policy.on_max_attempts.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].retry_policy.on_max_attempts.oneOf.1","typeLabel":"null"}],"uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].retry_policy.on_max_attempts","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"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":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].state_preload_policy.oneOf.1.Partial","typeLabel":"string[]"}},"uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].state_preload_policy.oneOf.1","typeLabel":"object"},{"type":"null","uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].state_preload_policy.oneOf.2","typeLabel":"null"}],"uniqueKey":"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":"services.items.[INDEX].handlers.items.[INDEX].ty.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].ty.oneOf.1","typeLabel":"null"}],"uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].ty","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"services.items.[INDEX].handlers.items.[INDEX]","typeLabel":"object"},"description":"# Handlers\n\nHandlers for this service.","isRequired":true,"uniqueKey":"services.items.[INDEX].handlers","typeLabel":"object[]"},"name":{"type":"string","description":"# Name\n\nFully qualified name of the service","isRequired":true,"uniqueKey":"services.items.[INDEX].name","typeLabel":"string"},"revision":{"type":"integer","format":"int32","description":"# Revision\n\nLatest revision of the service.","minimum":0,"isRequired":true,"uniqueKey":"services.items.[INDEX].revision","typeLabel":"integer\u003cint32>"},"ty":{"type":"string","enum":["Service","VirtualObject","Workflow"],"description":"# Type\n\nService type","isRequired":true,"uniqueKey":"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":"services.items.[INDEX].abort_timeout","typeLabel":"string"},"documentation":{"oneOf":[{"type":"string","description":"# Documentation\n\nDocumentation of the service, as propagated by the SDKs.","uniqueKey":"services.items.[INDEX].documentation.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Documentation\n\nDocumentation of the service, as propagated by the SDKs.","uniqueKey":"services.items.[INDEX].documentation.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"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":"services.items.[INDEX].inactivity_timeout","typeLabel":"string"},"info":{"type":"array","items":{"type":"object","required":["message"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"services.items.[INDEX].info.items.[INDEX].message","typeLabel":"string"},"code":{"oneOf":[{"type":"string","uniqueKey":"services.items.[INDEX].info.items.[INDEX].code.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"services.items.[INDEX].info.items.[INDEX].code.oneOf.1","typeLabel":"null"}],"uniqueKey":"services.items.[INDEX].info.items.[INDEX].code","typeLabel":"string | null"}},"uniqueKey":"services.items.[INDEX].info.items.[INDEX]","typeLabel":"object"},"description":"# Info\n\nList of configuration/deprecation information related to this service.","uniqueKey":"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":"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":"services.items.[INDEX].journal_retention.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"services.items.[INDEX].metadata.additionalProperties","typeLabel":"string"},"propertyNames":{"type":"string"},"uniqueKey":"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":"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":"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":"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":"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":"services.items.[INDEX].retry_policy.max_attempts.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"services.items.[INDEX].retry_policy.max_interval.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"services.items.[INDEX].retry_policy.on_max_attempts","typeLabel":"enum\u003cstring>"}},"uniqueKey":"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":"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":"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":"services.items.[INDEX].state_preload_policy.oneOf.1.Partial","typeLabel":"string[]"}},"uniqueKey":"services.items.[INDEX].state_preload_policy.oneOf.1","typeLabel":"object"}],"uniqueKey":"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":"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":"services.items.[INDEX].workflow_completion_retention.oneOf.1","typeLabel":"null"}],"uniqueKey":"services.items.[INDEX].workflow_completion_retention","typeLabel":"string | null"}},"uniqueKey":"services.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"services","typeLabel":"object[]"},"info":{"type":"array","items":{"type":"object","required":["message"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"info.items.[INDEX].message","typeLabel":"string"},"code":{"oneOf":[{"type":"string","uniqueKey":"info.items.[INDEX].code.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"info.items.[INDEX].code.oneOf.1","typeLabel":"null"}],"uniqueKey":"info.items.[INDEX].code","typeLabel":"string | null"}},"uniqueKey":"info.items.[INDEX]","typeLabel":"object"},"description":"# Info\n\nList of configuration/deprecation information related to this deployment.","uniqueKey":"info","typeLabel":"object[]"},"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.","uniqueKey":"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.","uniqueKey":"min_protocol_version","typeLabel":"integer\u003cint32>"},"sdk_version":{"oneOf":[{"type":"string","description":"# SDK version\n\nSDK library and version declared during registration.","uniqueKey":"sdk_version.oneOf.0","typeLabel":"string"},{"type":"null","description":"# SDK version\n\nSDK library and version declared during registration.","uniqueKey":"sdk_version.oneOf.1","typeLabel":"null"}],"uniqueKey":"sdk_version","typeLabel":"string | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"\u003cstring>","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>"}],"info":[{"message":"\u003cstring>","code":"\u003cstring>"}],"max_protocol_version":123,"min_protocol_version":123,"sdk_version":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"9484a0d4-9b7b-4910-8921-ced41317ad25":{"description":"Deployment created successfully and services discovered","headers":{"Location":{"schema":{"type":"string"},"description":"URI of the created deployment"}},"content":{"application/json":{"schema":{"type":"object","required":["id","services"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"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":"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":"services.items.[INDEX].handlers.items.[INDEX].input_description","typeLabel":"string"},"name":{"type":"string","description":"# Name\n\nThe handler name.","isRequired":true,"uniqueKey":"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":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].abort_timeout.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].documentation.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].enable_lazy_state.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].idempotency_retention.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].inactivity_timeout.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"services.items.[INDEX].handlers.items.[INDEX].info.items.[INDEX].message","typeLabel":"string"},"code":{"oneOf":[{"type":"string","uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].info.items.[INDEX].code.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].info.items.[INDEX].code.oneOf.1","typeLabel":"null"}],"uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].info.items.[INDEX].code","typeLabel":"string | null"}},"uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].info.items.[INDEX]","typeLabel":"object"},"description":"# Info\n\nList of configuration/deprecation information related to this handler.","uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].info","typeLabel":"object[]"},"input_json_schema":{"description":"# Input JSON Schema\n\nJSON Schema of the handler input","uniqueKey":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].journal_retention.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"services.items.[INDEX].handlers.items.[INDEX].metadata.additionalProperties","typeLabel":"string"},"propertyNames":{"type":"string"},"uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].metadata","typeLabel":"object"},"output_json_schema":{"description":"# Output JSON Schema\n\nJSON Schema of the handler output","uniqueKey":"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":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].retry_policy.exponentiation_factor.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].retry_policy.initial_interval.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].retry_policy.max_attempts.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].retry_policy.max_interval.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"services.items.[INDEX].handlers.items.[INDEX].retry_policy.on_max_attempts.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].retry_policy.on_max_attempts.oneOf.1","typeLabel":"null"}],"uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].retry_policy.on_max_attempts","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"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":"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":"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":"services.items.[INDEX].handlers.items.[INDEX].state_preload_policy.oneOf.1.Partial","typeLabel":"string[]"}},"uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].state_preload_policy.oneOf.1","typeLabel":"object"},{"type":"null","uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].state_preload_policy.oneOf.2","typeLabel":"null"}],"uniqueKey":"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":"services.items.[INDEX].handlers.items.[INDEX].ty.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].ty.oneOf.1","typeLabel":"null"}],"uniqueKey":"services.items.[INDEX].handlers.items.[INDEX].ty","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"services.items.[INDEX].handlers.items.[INDEX]","typeLabel":"object"},"description":"# Handlers\n\nHandlers for this service.","isRequired":true,"uniqueKey":"services.items.[INDEX].handlers","typeLabel":"object[]"},"name":{"type":"string","description":"# Name\n\nFully qualified name of the service","isRequired":true,"uniqueKey":"services.items.[INDEX].name","typeLabel":"string"},"revision":{"type":"integer","format":"int32","description":"# Revision\n\nLatest revision of the service.","minimum":0,"isRequired":true,"uniqueKey":"services.items.[INDEX].revision","typeLabel":"integer\u003cint32>"},"ty":{"type":"string","enum":["Service","VirtualObject","Workflow"],"description":"# Type\n\nService type","isRequired":true,"uniqueKey":"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":"services.items.[INDEX].abort_timeout","typeLabel":"string"},"documentation":{"oneOf":[{"type":"string","description":"# Documentation\n\nDocumentation of the service, as propagated by the SDKs.","uniqueKey":"services.items.[INDEX].documentation.oneOf.0","typeLabel":"string"},{"type":"null","description":"# Documentation\n\nDocumentation of the service, as propagated by the SDKs.","uniqueKey":"services.items.[INDEX].documentation.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"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":"services.items.[INDEX].inactivity_timeout","typeLabel":"string"},"info":{"type":"array","items":{"type":"object","required":["message"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"services.items.[INDEX].info.items.[INDEX].message","typeLabel":"string"},"code":{"oneOf":[{"type":"string","uniqueKey":"services.items.[INDEX].info.items.[INDEX].code.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"services.items.[INDEX].info.items.[INDEX].code.oneOf.1","typeLabel":"null"}],"uniqueKey":"services.items.[INDEX].info.items.[INDEX].code","typeLabel":"string | null"}},"uniqueKey":"services.items.[INDEX].info.items.[INDEX]","typeLabel":"object"},"description":"# Info\n\nList of configuration/deprecation information related to this service.","uniqueKey":"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":"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":"services.items.[INDEX].journal_retention.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"services.items.[INDEX].metadata.additionalProperties","typeLabel":"string"},"propertyNames":{"type":"string"},"uniqueKey":"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":"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":"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":"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":"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":"services.items.[INDEX].retry_policy.max_attempts.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"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":"services.items.[INDEX].retry_policy.max_interval.oneOf.1","typeLabel":"null"}],"uniqueKey":"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":"services.items.[INDEX].retry_policy.on_max_attempts","typeLabel":"enum\u003cstring>"}},"uniqueKey":"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":"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":"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":"services.items.[INDEX].state_preload_policy.oneOf.1.Partial","typeLabel":"string[]"}},"uniqueKey":"services.items.[INDEX].state_preload_policy.oneOf.1","typeLabel":"object"}],"uniqueKey":"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":"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":"services.items.[INDEX].workflow_completion_retention.oneOf.1","typeLabel":"null"}],"uniqueKey":"services.items.[INDEX].workflow_completion_retention","typeLabel":"string | null"}},"uniqueKey":"services.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"services","typeLabel":"object[]"},"info":{"type":"array","items":{"type":"object","required":["message"],"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"info.items.[INDEX].message","typeLabel":"string"},"code":{"oneOf":[{"type":"string","uniqueKey":"info.items.[INDEX].code.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"info.items.[INDEX].code.oneOf.1","typeLabel":"null"}],"uniqueKey":"info.items.[INDEX].code","typeLabel":"string | null"}},"uniqueKey":"info.items.[INDEX]","typeLabel":"object"},"description":"# Info\n\nList of configuration/deprecation information related to this deployment.","uniqueKey":"info","typeLabel":"object[]"},"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.","uniqueKey":"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.","uniqueKey":"min_protocol_version","typeLabel":"integer\u003cint32>"},"sdk_version":{"oneOf":[{"type":"string","description":"# SDK version\n\nSDK library and version declared during registration.","uniqueKey":"sdk_version.oneOf.0","typeLabel":"string"},{"type":"null","description":"# SDK version\n\nSDK library and version declared during registration.","uniqueKey":"sdk_version.oneOf.1","typeLabel":"null"}],"uniqueKey":"sdk_version","typeLabel":"string | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"\u003cstring>","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>"}],"info":[{"message":"\u003cstring>","code":"\u003cstring>"}],"max_protocol_version":123,"min_protocol_version":123,"sdk_version":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"a78546d5-e7e2-4033-8aa4-1f0eaf6a2a73":{"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"},"e67de79c-e118-4de8-b1f0-a56d50264ed2":{"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"},"8d73200a-6a9f-40b3-8462-10312d34070d":{"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"},"37861fec-9c49-4f51-9b25-a4a8cb4f44e0":{"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"},"af14b27a-b92a-4af3-8234-8846c247f5a9":{"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":"Register deployment - Restate","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-14T14:32:59.457Z","originalFileLocation":"admin-api/deployment/register-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=\"Registers a new deployment (HTTP or Lambda). Restate will invoke the endpoint to discover available services and handlers, and make them available for invocation. For more information, see the deployment documentation.\">\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=\"Register deployment - Restate\">\u003cmeta data-mint-head property=\"og:description\" content=\"Registers a new deployment (HTTP or Lambda). Restate will invoke the endpoint to discover available services and handlers, and make them available for invocation. For more information, see the deployment documentation.\">\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/register-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=Register+deployment\u0026amp;description=Registers+a+new+deployment+%28HTTP+or+Lambda%29.+Restate+will+invoke+the+endpoint+to+discover+available+services+and+handlers%2C%0Aand+make+them+available+for+invocatio\u0026amp;theme=35f97c6a72f75e34ad939f4f\u0026amp;signature=41c1f1544c595a66f28d9567f39f48436234fe41b133b80e0e838722f6019019\">\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=\"Register deployment - Restate\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Registers a new deployment (HTTP or Lambda). Restate will invoke the endpoint to discover available services and handlers, and make them available for invocation. For more information, see the deployment documentation.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://restate-6d46e1dc.mintlify.app/_mintlify/api/og/v2?division=deployment\u0026amp;title=Register+deployment\u0026amp;description=Registers+a+new+deployment+%28HTTP+or+Lambda%29.+Restate+will+invoke+the+endpoint+to+discover+available+services+and+handlers%2C%0Aand+make+them+available+for+invocatio\u0026amp;theme=35f97c6a72f75e34ad939f4f\u0026amp;signature=41c1f1544c595a66f28d9567f39f48436234fe41b133b80e0e838722f6019019\">\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/register-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/register-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/register-deployment#webpage\",\"url\":\"https://docs.restate.dev/admin-api/deployment/register-deployment\",\"name\":\"Register deployment\",\"description\":\"Registers a new deployment (HTTP or Lambda). Restate will invoke the endpoint to discover available services and handlers, and make them available for invocation. For more information, see the deployment documentation.\",\"dateModified\":\"2026-10-14T14:32:59.457Z\",\"isPartOf\":{\"@id\":\"https://docs.restate.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.restate.dev/admin-api/deployment/register-deployment#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.restate.dev/admin-api/deployment/register-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\":\"Register deployment\",\"item\":\"https://docs.restate.dev/admin-api/deployment/register-deployment\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.restate.dev/admin-api/deployment/register-deployment#apireference\",\"headline\":\"Register deployment\",\"name\":\"Register deployment\",\"description\":\"Registers a new deployment (HTTP or Lambda). Restate will invoke the endpoint to discover available services and handlers, and make them available for invocation. For more information, see the deployment documentation.\",\"url\":\"https://docs.restate.dev/admin-api/deployment/register-deployment\",\"mainEntityOfPage\":{\"@id\":\"https://docs.restate.dev/admin-api/deployment/register-deployment#webpage\"},\"dateModified\":\"2026-10-14T14:32:59.457Z\",\"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","description":"Returns a list of all registered deployments, including their endpoints and associated services.","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","description":"Returns detailed information about a registered deployment, including deployment metadata and the services it exposes.","deprecated":null,"version":null,"openapi":"/schemas/openapi-admin.json get /deployments/{deployment}","href":"/admin-api/deployment/get-deployment"},{"title":"Delete deployment","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","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":"Register deployment - Restate","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","clsx-xpJZXxdP.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BTZUMDnx.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DqdKa2R4.js"]}