{"docsConfig":{"theme":"almond","$schema":"https://mintlify.com/docs.json","name":"LocalOps Documentation","colors":{"primary":"#16A34A","light":"#07C983","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/localops/JRMe5AvRiyD5FHvi/logo/light.svg?fit=max\u0026auto=format\u0026n=JRMe5AvRiyD5FHvi\u0026q=85\u0026s=19102ad522bdd446edbbce90d070c548","dark":"https://mintcdn.com/localops/JRMe5AvRiyD5FHvi/logo/dark.svg?fit=max\u0026auto=format\u0026n=JRMe5AvRiyD5FHvi\u0026q=85\u0026s=25626943a6ff4d7975611041f009cc05"},"favicon":"https://mintcdn.com/localops/JRMe5AvRiyD5FHvi/favicon.svg?fit=max\u0026auto=format\u0026n=JRMe5AvRiyD5FHvi\u0026q=85\u0026s=7a62c6f75b53d403484ee016109a09d2","api":{"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["curl","python","javascript","go"],"prefill":true}},"navbar":{"links":[{"href":"https://console.localops.co","label":"Console"},{"href":"https://go.localops.co/tour","label":"Schedule demo"}],"primary":{"type":"button","label":"Get started for free","href":"https://console.localops.co/signup"}},"footer":{"socials":{"x":"https://x.com/localopsco","github":"https://github.com/localopsco","linkedin":"https://linkedin.com/company/localops-inc"}},"integrations":{"gtm":{"tagId":"GTM-PWH8VTN6"},"posthog":{"apiKey":"phc_T54pQDyo3sFjCz7a3fm2XCCoDAt7iA0l2KM9qBKauF3","apiHost":"https://watermelon.localops.co"}},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Changelog","icon":"newspaper","href":"/changelogs/2026"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"localops","hasAudioNarration":false,"actualSubdomain":"localops","customDomains":["docs.localops.co"],"gitSource":{"type":"github","owner":"localopsco","repo":"developer-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae1942dfd943a9c7c512cb8","collectionId":"ba2a182d-5b98-4a4c-97d1-e4a104afc0b8","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae1942dfd943a9c7c512cb8"},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6ae1942dfd943a9c7c512cb8","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"Documentation","count":107},{"language":"default","tag":"Services","count":30},{"language":"default","tag":"API Reference","count":25},{"language":"default","tag":"Endpoints","count":22},{"language":"default","tag":"Bring your helm charts (soon)","count":15},{"language":"default","tag":"Environments","count":15},{"language":"default","tag":"Guides","count":10},{"language":"default","tag":"AWS services","count":8},{"language":"default","tag":"Team","count":7},{"language":"default","tag":"Instrument services","count":7}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"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":"rbac-expansion","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":"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":"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},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"api-reference/secrets/replace-service-secrets","slug":"/api-reference/secrets/replace-service-secrets","pageMetadata":{"title":"Replace Service Secrets","description":"Replace the service's entire secret set. This is a full write and not a merge - any key you omit is removed.\n\nKeys must be non empty after trimming and unique within the array.","deprecated":null,"version":null,"openapi":"/openapi.json put /v1/environments/{envId}/services/{serviceId}/secrets","href":"/api-reference/secrets/replace-service-secrets","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Replace the service’s entire secret set. This is a full write and not a merge - any key you omit is removed.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Keys must be non empty after trimming and unique within the array.\"\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":"Replace Service Secrets","description":"Replace the service's entire secret set. This is a full write and not a merge - any key you omit is removed.\n\nKeys must be non empty after trimming and unique within the array.","deprecated":null,"version":null,"openapi":"/openapi.json put /v1/environments/{envId}/services/{serviceId}/secrets","href":"/api-reference/secrets/replace-service-secrets","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/localops/406290af916b5fc4/crisp-widget.js"],"openApiReferenceData":{"operation":{"tags":["Secrets"],"summary":"Replace Service Secrets","operationId":"replaceServiceSecrets","description":"Replace the service's entire secret set. This is a full write and not a merge - any key you omit is removed.\n\nKeys must be non empty after trimming and unique within the array.","parameters":["e82a5e42-e305-4923-8325-01285e21b610","ce7c710d-8606-45ef-bd42-179bdb839513"],"requestBody":"0dcfdedc-59a7-43de-a40d-84fe765f2795","responses":{"200":"e0c33430-4547-49b9-b539-0446fd5136f7","401":"80686a3d-a080-4ba0-951d-d79971c1a7de","404":"348a97f9-f853-4a03-94dd-e38c688d2332","422":"ee79e48e-987d-4752-b05f-86f51f6c9472","500":"63a1b943-4c44-48bb-b407-24f679e0f182"},"method":"put","type":"path","servers":["92365f02-5544-410d-89dc-c47d8041cca8"],"security":["5e037ee9-821d-45d6-9720-78f9a60e0dfa"],"path":"/v1/environments/{envId}/services/{serviceId}/secrets","baseUrlOptions":["https://sdk.localops.co"],"title":"Replace Service Secrets","codeSamples":[],"requestExampleLanguages":["bash","python","javascript","go"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[{"body.secrets.items.0.key":"API_KEY","body.secrets.items.0.value":"s3cr3t","body.secrets.items.0.description":"payment gateway key","body.secrets.items.0.use_preview":false,"body.secrets.items.0.is_sensitive":true,"body.secrets.items.0.expose_to_chart.oneOf.0":false,"body.secrets.items.0.dep_export.oneOf.0":false}]},"dependencies":{"parameters":{"e82a5e42-e305-4923-8325-01285e21b610":{"name":"envId","in":"path","required":true,"description":"The unique identifier of the environment","schema":{"type":"string","format":"uuid","isRequired":true,"description":"The unique identifier of the environment","uniqueKey":"","typeLabel":"string\u003cuuid>"}},"ce7c710d-8606-45ef-bd42-179bdb839513":{"name":"serviceId","in":"path","required":true,"description":"The unique identifier of the service","schema":{"type":"string","format":"uuid","isRequired":true,"description":"The unique identifier of the service","uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["secrets"],"properties":{"secrets":{"type":"array","items":{"type":"object","required":["key"],"properties":{"key":{"type":"string","description":"Required, non empty after trimming, and unique within the array","isRequired":true,"uniqueKey":"secrets.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","uniqueKey":"secrets.items.[INDEX].value","typeLabel":"string"},"description":{"type":"string","uniqueKey":"secrets.items.[INDEX].description","typeLabel":"string"},"use_preview":{"type":"boolean","description":"Also inject this secret into PR preview services of this service","uniqueKey":"secrets.items.[INDEX].use_preview","typeLabel":"boolean"},"is_sensitive":{"type":"boolean","uniqueKey":"secrets.items.[INDEX].is_sensitive","typeLabel":"boolean"},"expose_to_chart":{"oneOf":[{"type":"boolean","uniqueKey":"secrets.items.[INDEX].expose_to_chart.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"secrets.items.[INDEX].expose_to_chart.oneOf.1","typeLabel":"null"}],"uniqueKey":"secrets.items.[INDEX].expose_to_chart","typeLabel":"boolean | null"},"chart_default_val":{"oneOf":[{"type":"string","uniqueKey":"secrets.items.[INDEX].chart_default_val.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"secrets.items.[INDEX].chart_default_val.oneOf.1","typeLabel":"null"}],"uniqueKey":"secrets.items.[INDEX].chart_default_val","typeLabel":"string | null"},"dep_export":{"oneOf":[{"type":"boolean","uniqueKey":"secrets.items.[INDEX].dep_export.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"secrets.items.[INDEX].dep_export.oneOf.1","typeLabel":"null"}],"uniqueKey":"secrets.items.[INDEX].dep_export","typeLabel":"boolean | null"}},"uniqueKey":"secrets.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"secrets","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"example":{"secrets":[{"key":"API_KEY","value":"s3cr3t","description":"payment gateway key","use_preview":false,"is_sensitive":true,"expose_to_chart":false,"chart_default_val":null,"dep_export":false}]},"examples":{"Example":{"title":"Example","value":{"secrets":[{"key":"API_KEY","value":"s3cr3t","description":"payment gateway key","use_preview":false,"is_sensitive":true,"expose_to_chart":false,"chart_default_val":null,"dep_export":false}]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"e0c33430-4547-49b9-b539-0446fd5136f7":{"description":"Secrets replaced, returned as stored","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","uniqueKey":"message","typeLabel":"string"},"data":{"type":"object","properties":{"secrets":{"type":"array","items":{"type":"object","required":["key"],"properties":{"key":{"type":"string","description":"Required, non empty after trimming, and unique within the array","isRequired":true,"uniqueKey":"data.secrets.items.[INDEX].key","typeLabel":"string"},"value":{"type":"string","uniqueKey":"data.secrets.items.[INDEX].value","typeLabel":"string"},"description":{"type":"string","uniqueKey":"data.secrets.items.[INDEX].description","typeLabel":"string"},"use_preview":{"type":"boolean","description":"Also inject this secret into PR preview services of this service","uniqueKey":"data.secrets.items.[INDEX].use_preview","typeLabel":"boolean"},"is_sensitive":{"type":"boolean","uniqueKey":"data.secrets.items.[INDEX].is_sensitive","typeLabel":"boolean"},"expose_to_chart":{"oneOf":[{"type":"boolean","uniqueKey":"data.secrets.items.[INDEX].expose_to_chart.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"data.secrets.items.[INDEX].expose_to_chart.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.secrets.items.[INDEX].expose_to_chart","typeLabel":"boolean | null"},"chart_default_val":{"oneOf":[{"type":"string","uniqueKey":"data.secrets.items.[INDEX].chart_default_val.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.secrets.items.[INDEX].chart_default_val.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.secrets.items.[INDEX].chart_default_val","typeLabel":"string | null"},"dep_export":{"oneOf":[{"type":"boolean","uniqueKey":"data.secrets.items.[INDEX].dep_export.oneOf.0","typeLabel":"boolean"},{"type":"null","uniqueKey":"data.secrets.items.[INDEX].dep_export.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.secrets.items.[INDEX].dep_export","typeLabel":"boolean | null"},"updated_at":{"type":"string","format":"date-time","readOnly":true,"uniqueKey":"data.secrets.items.[INDEX].updated_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data.secrets.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.secrets","typeLabel":"object[]"}},"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","data":{"secrets":[{"key":"\u003cstring>","value":"\u003cstring>","description":"\u003cstring>","use_preview":true,"is_sensitive":true,"expose_to_chart":true,"chart_default_val":"\u003cstring>","dep_export":true,"updated_at":"2023-11-07T05:31:56Z"}]}}}},"exampleType":"generated"}},"exampleType":"generated"},"80686a3d-a080-4ba0-951d-d79971c1a7de":{"description":"Missing, malformed or unknown API token","content":{"application/json":{"schema":{"type":"object","properties":{"error_code":{"type":"string","enum":["unauthorized","forbidden","notfound","conflict","validation","unknown"],"description":"Machine readable error code. Treat this, and not the HTTP status, as the signal for whether the request was at fault - some business rule violations are returned as `500` with `error_code: validation`.","uniqueKey":"error_code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human readable error message","uniqueKey":"message","typeLabel":"string"},"errors":{"oneOf":[{"type":"array","description":"Per field details. Present only on validation errors, and can be null when the failure has no field level detail.","items":{"type":"object","properties":{"field":{"type":"string","description":"Name of the request field that failed validation","uniqueKey":"errors.oneOf.0.items.[INDEX].field","typeLabel":"string"},"error":{"type":"string","description":"Reason the field was rejected","uniqueKey":"errors.oneOf.0.items.[INDEX].error","typeLabel":"string"}},"uniqueKey":"errors.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"Per field details. Present only on validation errors, and can be null when the failure has no field level detail.","items":{"type":"object","properties":{"field":{"type":"string","description":"Name of the request field that failed validation"},"error":{"type":"string","description":"Reason the field was rejected"}}},"uniqueKey":"errors.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors","typeLabel":"object[] | null"}},"uniqueKey":"","typeLabel":"object"},"example":{"error_code":"unauthorized","message":"You are not authorized to do this action"},"examples":{"Example":{"title":"Example","value":{"error_code":"unauthorized","message":"You are not authorized to do this action"}}},"exampleType":"examples"}},"exampleType":"examples"},"348a97f9-f853-4a03-94dd-e38c688d2332":{"description":"The environment, service, deployment, custom domain or connection does not exist, or belongs to another account","content":{"application/json":{"schema":{"type":"object","properties":{"error_code":{"type":"string","enum":["unauthorized","forbidden","notfound","conflict","validation","unknown"],"description":"Machine readable error code. Treat this, and not the HTTP status, as the signal for whether the request was at fault - some business rule violations are returned as `500` with `error_code: validation`.","uniqueKey":"error_code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human readable error message","uniqueKey":"message","typeLabel":"string"},"errors":{"oneOf":[{"type":"array","description":"Per field details. Present only on validation errors, and can be null when the failure has no field level detail.","items":{"type":"object","properties":{"field":{"type":"string","description":"Name of the request field that failed validation","uniqueKey":"errors.oneOf.0.items.[INDEX].field","typeLabel":"string"},"error":{"type":"string","description":"Reason the field was rejected","uniqueKey":"errors.oneOf.0.items.[INDEX].error","typeLabel":"string"}},"uniqueKey":"errors.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"Per field details. Present only on validation errors, and can be null when the failure has no field level detail.","items":{"type":"object","properties":{"field":{"type":"string","description":"Name of the request field that failed validation"},"error":{"type":"string","description":"Reason the field was rejected"}}},"uniqueKey":"errors.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors","typeLabel":"object[] | null"}},"uniqueKey":"","typeLabel":"object"},"example":{"error_code":"notfound","message":"Service not found"},"examples":{"Example":{"title":"Example","value":{"error_code":"notfound","message":"Service not found"}}},"exampleType":"examples"}},"exampleType":"examples"},"ee79e48e-987d-4752-b05f-86f51f6c9472":{"description":"Field validation failed, or the request body was missing or malformed. Endpoints that take a body always need at least `{}` - a zero byte body fails to bind.","content":{"application/json":{"schema":{"type":"object","properties":{"error_code":{"type":"string","enum":["unauthorized","forbidden","notfound","conflict","validation","unknown"],"description":"Machine readable error code. Treat this, and not the HTTP status, as the signal for whether the request was at fault - some business rule violations are returned as `500` with `error_code: validation`.","uniqueKey":"error_code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human readable error message","uniqueKey":"message","typeLabel":"string"},"errors":{"oneOf":[{"type":"array","description":"Per field details. Present only on validation errors, and can be null when the failure has no field level detail.","items":{"type":"object","properties":{"field":{"type":"string","description":"Name of the request field that failed validation","uniqueKey":"errors.oneOf.0.items.[INDEX].field","typeLabel":"string"},"error":{"type":"string","description":"Reason the field was rejected","uniqueKey":"errors.oneOf.0.items.[INDEX].error","typeLabel":"string"}},"uniqueKey":"errors.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"Per field details. Present only on validation errors, and can be null when the failure has no field level detail.","items":{"type":"object","properties":{"field":{"type":"string","description":"Name of the request field that failed validation"},"error":{"type":"string","description":"Reason the field was rejected"}}},"uniqueKey":"errors.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors","typeLabel":"object[] | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"field":{"title":"field","value":{"error_code":"validation","message":"Invalid data","errors":[{"field":"replica_count","error":"replica_count is a required field"}]}},"body":{"title":"body","value":{"error_code":"validation","message":"Please check your request body"}}},"exampleType":"examples"}},"exampleType":"examples"},"63a1b943-4c44-48bb-b407-24f679e0f182":{"description":"Unexpected failure. Some business rule violations are also returned here with `error_code: validation` - check `error_code` rather than the status to decide whether the request was at fault.","content":{"application/json":{"schema":{"type":"object","properties":{"error_code":{"type":"string","enum":["unauthorized","forbidden","notfound","conflict","validation","unknown"],"description":"Machine readable error code. Treat this, and not the HTTP status, as the signal for whether the request was at fault - some business rule violations are returned as `500` with `error_code: validation`.","uniqueKey":"error_code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Human readable error message","uniqueKey":"message","typeLabel":"string"},"errors":{"oneOf":[{"type":"array","description":"Per field details. Present only on validation errors, and can be null when the failure has no field level detail.","items":{"type":"object","properties":{"field":{"type":"string","description":"Name of the request field that failed validation","uniqueKey":"errors.oneOf.0.items.[INDEX].field","typeLabel":"string"},"error":{"type":"string","description":"Reason the field was rejected","uniqueKey":"errors.oneOf.0.items.[INDEX].error","typeLabel":"string"}},"uniqueKey":"errors.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"errors.oneOf.0","typeLabel":"object[]"},{"type":"null","description":"Per field details. Present only on validation errors, and can be null when the failure has no field level detail.","items":{"type":"object","properties":{"field":{"type":"string","description":"Name of the request field that failed validation"},"error":{"type":"string","description":"Reason the field was rejected"}}},"uniqueKey":"errors.oneOf.1","typeLabel":"null"}],"uniqueKey":"errors","typeLabel":"object[] | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"unknown":{"title":"unknown","value":{"error_code":"unknown","message":"Something went wrong. Please try again later"}},"rule":{"title":"rule","value":{"error_code":"validation","message":"Ops Json is only supported for docker image source"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"5e037ee9-821d-45d6-9720-78f9a60e0dfa":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"UUID","description":"Your account API token, sent as `Authorization: Bearer \u003capi_token>`. Owners and admins can read the token from the LocalOps console.","scopes":[]}}},"servers":{"92365f02-5544-410d-89dc-c47d8041cca8":{"url":"https://sdk.localops.co"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"UUID","description":"Your account API token, sent as `Authorization: Bearer \u003capi_token>`. Owners and admins can read the token from the LocalOps console.","scopes":[]},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Your account API token, sent as `Authorization: Bearer \u003capi_token>`. Owners and admins can read the token from the LocalOps console.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"localops","siteName":"LocalOps Documentation","title":"Replace Service Secrets - LocalOps Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-28T06:03:31.778Z","originalFileLocation":"api-reference/secrets/replace-service-secrets.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;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=\"system\"}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=\"Replace the service\u0026#x27;s entire secret set. This is a full write and not a merge - any key you omit is removed. Keys must be non empty after trimming and unique within the array.\">\u003cmeta data-mint-head name=\"application-name\" content=\"LocalOps Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/localops/pHwHvLNeB34v2aZJ/_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/localops/pHwHvLNeB34v2aZJ/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/localops/pHwHvLNeB34v2aZJ/_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/localops/pHwHvLNeB34v2aZJ/_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/localops/pHwHvLNeB34v2aZJ/_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/localops/pHwHvLNeB34v2aZJ/_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/localops/pHwHvLNeB34v2aZJ/_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/localops/pHwHvLNeB34v2aZJ/_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/localops/pHwHvLNeB34v2aZJ/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Replace Service Secrets - LocalOps Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Replace the service\u0026#x27;s entire secret set. This is a full write and not a merge - any key you omit is removed. Keys must be non empty after trimming and unique within the array.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"LocalOps Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.localops.co/api-reference/secrets/replace-service-secrets\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://localops.mintlify.site/_mintlify/api/og/v2?division=Secrets\u0026amp;title=Replace+Service+Secrets\u0026amp;description=Replace+the+service%27s+entire+secret+set.+This+is+a+full+write+and+not+a+merge+-+any+key+you+omit+is+removed.%0A%0AKeys+must+be+non+empty+after+trimming+and+unique+w\u0026amp;theme=19ffd466702f0c7f1a9fe584\u0026amp;signature=1741fe447bc46ef7acb6369fe528fdc50415a4497d2a043ed5c979f1781ecc6a\">\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=\"Replace Service Secrets - LocalOps Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Replace the service\u0026#x27;s entire secret set. This is a full write and not a merge - any key you omit is removed. Keys must be non empty after trimming and unique within the array.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://localops.mintlify.site/_mintlify/api/og/v2?division=Secrets\u0026amp;title=Replace+Service+Secrets\u0026amp;description=Replace+the+service%27s+entire+secret+set.+This+is+a+full+write+and+not+a+merge+-+any+key+you+omit+is+removed.%0A%0AKeys+must+be+non+empty+after+trimming+and+unique+w\u0026amp;theme=19ffd466702f0c7f1a9fe584\u0026amp;signature=1741fe447bc46ef7acb6369fe528fdc50415a4497d2a043ed5c979f1781ecc6a\">\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/localops/pHwHvLNeB34v2aZJ/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"LocalOps Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#16A34A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.localops.co/api-reference/secrets/replace-service-secrets\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/secrets/replace-service-secrets.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.localops.co/#organization\",\"name\":\"LocalOps Documentation\",\"url\":\"https://docs.localops.co\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/localops/JRMe5AvRiyD5FHvi/logo/light.svg?fit=max\u0026auto=format\u0026n=JRMe5AvRiyD5FHvi\u0026q=85\u0026s=19102ad522bdd446edbbce90d070c548\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.localops.co#website\",\"name\":\"LocalOps Documentation\",\"url\":\"https://docs.localops.co\",\"publisher\":{\"@id\":\"https://docs.localops.co/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.localops.co/api-reference/secrets/replace-service-secrets#webpage\",\"url\":\"https://docs.localops.co/api-reference/secrets/replace-service-secrets\",\"name\":\"Replace Service Secrets\",\"description\":\"Replace the service's entire secret set. This is a full write and not a merge - any key you omit is removed. Keys must be non empty after trimming and unique within the array.\",\"dateModified\":\"2026-09-28T06:03:31.778Z\",\"isPartOf\":{\"@id\":\"https://docs.localops.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.localops.co/api-reference/secrets/replace-service-secrets#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.localops.co/api-reference/secrets/replace-service-secrets#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.localops.co/api-reference/health/health-check\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Secrets\",\"item\":\"https://docs.localops.co/api-reference/secrets/get-environment-secrets\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Replace Service Secrets\",\"item\":\"https://docs.localops.co/api-reference/secrets/replace-service-secrets\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.localops.co/api-reference/secrets/replace-service-secrets#apireference\",\"headline\":\"Replace Service Secrets\",\"name\":\"Replace Service Secrets\",\"description\":\"Replace the service's entire secret set. This is a full write and not a merge - any key you omit is removed. Keys must be non empty after trimming and unique within the array.\",\"url\":\"https://docs.localops.co/api-reference/secrets/replace-service-secrets\",\"mainEntityOfPage\":{\"@id\":\"https://docs.localops.co/api-reference/secrets/replace-service-secrets#webpage\"},\"dateModified\":\"2026-09-28T06:03:31.778Z\",\"publisher\":{\"@id\":\"https://docs.localops.co/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.localops.co#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"LocalOps Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"LocalOps Documentation","nav":{"global":{"anchors":[{"anchor":"Changelog","icon":"newspaper","href":"/changelogs/2026"}]},"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"API Reference","groups":[{"group":"Getting Started","icon":"rocket","pages":[{"title":"Getting Started","href":"/api/getting-started"},{"title":"Common workflows","href":"/api/workflows"}]},{"group":"Endpoints","pages":[{"group":"Health","pages":[{"title":"Health Check","deprecated":null,"version":null,"openapi":"/openapi.json get /health","href":"/api-reference/health/health-check"}]},{"group":"Environments","pages":[{"title":"Create Environment","deprecated":null,"version":null,"tag":"COMING SOON","playground":"none","openapi":"/openapi.json post /v1/environments","href":"/api-reference/environments/create-environment"},{"title":"Get Environment","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/environments/{envId}","href":"/api-reference/environments/get-environment"},{"title":"Delete Environment","deprecated":null,"version":null,"tag":"COMING SOON","playground":"none","openapi":"/openapi.json delete /v1/environments/{envId}","href":"/api-reference/environments/delete-environment"}]},{"group":"Services","pages":[{"title":"Create Service","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/environments/{envId}/services","href":"/api-reference/services/create-service"},{"title":"Get Service Status","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/environments/{envId}/services/{serviceId}","href":"/api-reference/services/get-service-status"},{"title":"Delete Service","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/environments/{envId}/services/{serviceId}","href":"/api-reference/services/delete-service"},{"title":"Update Service","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/environments/{envId}/services/{serviceId}","href":"/api-reference/services/update-service"}]},{"group":"Deployments","pages":[{"title":"Deploy Service","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/environments/{envId}/services/{serviceId}/deploy","href":"/api-reference/deployments/deploy-service"},{"title":"Get Deployment","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/deployments/{deploymentId}","href":"/api-reference/deployments/get-deployment"},{"title":"Cancel Deployment","deprecated":null,"version":null,"tag":"COMING SOON","playground":"none","openapi":"/openapi.json post /v1/deployments/{deploymentId}/cancel","href":"/api-reference/deployments/cancel-deployment"}]},{"group":"Operations","pages":[{"title":"Get Operation","deprecated":null,"version":null,"tag":"COMING SOON","playground":"none","openapi":"/openapi.json get /v1/operations/{opId}","href":"/api-reference/operations/get-operation"},{"title":"Get Operation Logs","deprecated":null,"version":null,"tag":"COMING SOON","playground":"none","openapi":"/openapi.json get /v1/operations/{opId}/logs","href":"/api-reference/operations/get-operation-logs"}]},{"group":"Custom Domains","pages":[{"title":"Get Custom Domains","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/environments/{envId}/services/{serviceId}/custom-domains","href":"/api-reference/custom-domains/get-custom-domains"},{"title":"Add Custom Domain","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/environments/{envId}/services/{serviceId}/custom-domains","href":"/api-reference/custom-domains/add-custom-domain"},{"title":"Delete Custom Domain","deprecated":null,"version":null,"tag":"COMING SOON","playground":"none","openapi":"/openapi.json delete /v1/environments/{envId}/services/{serviceId}/custom-domains/{customDomainId}","href":"/api-reference/custom-domains/delete-custom-domain"},{"title":"Verify Custom Domain","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/environments/{envId}/services/{serviceId}/custom-domains/{customDomainId}/verify","href":"/api-reference/custom-domains/verify-custom-domain"},{"title":"Force Deploy Custom Domain","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/environments/{envId}/services/{serviceId}/custom-domains/{customDomainId}/force-deploy","href":"/api-reference/custom-domains/force-deploy-custom-domain"}]},{"group":"Secrets","pages":[{"title":"Get Environment Secrets","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/environments/{envId}/secrets","href":"/api-reference/secrets/get-environment-secrets"},{"title":"Replace Environment Secrets","deprecated":null,"version":null,"openapi":"/openapi.json put /v1/environments/{envId}/secrets","href":"/api-reference/secrets/replace-environment-secrets"},{"title":"Get Service Secrets","description":"Read a service's secret set. Service level secrets are scoped to a single service and are separate from the environment level set.","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/environments/{envId}/services/{serviceId}/secrets","href":"/api-reference/secrets/get-service-secrets"},{"title":"Replace Service Secrets","deprecated":null,"version":null,"openapi":"/openapi.json put /v1/environments/{envId}/services/{serviceId}/secrets","href":"/api-reference/secrets/replace-service-secrets"}]}]},{"group":"No Access Delivery","icon":"key","pages":[{"title":null,"description":null,"href":"/api/no-access-delivery/license-tokens"}]}]}]},"basePath":"","title":"Replace Service Secrets - LocalOps Documentation","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-BUDYNlhG.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","clsx-eKJ4rcii.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CwjSCXIK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-9EK5IAXV.js"]}