Replace the environment’s entire secret set. This is a full write and not a merge - any key you omit is removed. Read the current set, modify it, then write the whole set back.
Keys must be non empty after trimming and unique within the array. Validation runs before anything is written.
{"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-environment-secrets","slug":"/api-reference/secrets/replace-environment-secrets","pageMetadata":{"title":"Replace Environment Secrets","description":"Replace the environment's entire secret set. This is a full write and not a merge - any key you omit is removed. Read the current set, modify it, then write the whole set back.\n\nKeys must be non empty after trimming and unique within the array. Validation runs before anything is written.","deprecated":null,"version":null,"openapi":"/openapi.json put /v1/environments/{envId}/secrets","href":"/api-reference/secrets/replace-environment-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 environment’s entire secret set. This is a full write and not a merge - any key you omit is removed. Read the current set, modify it, then write the whole set back.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Keys must be non empty after trimming and unique within the array. Validation runs before anything is written.\"\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 Environment Secrets","description":"Replace the environment's entire secret set. This is a full write and not a merge - any key you omit is removed. Read the current set, modify it, then write the whole set back.\n\nKeys must be non empty after trimming and unique within the array. Validation runs before anything is written.","deprecated":null,"version":null,"openapi":"/openapi.json put /v1/environments/{envId}/secrets","href":"/api-reference/secrets/replace-environment-secrets","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/localops/406290af916b5fc4/crisp-widget.js"],"openApiReferenceData":{"operation":{"tags":["Secrets"],"summary":"Replace Environment Secrets","operationId":"replaceEnvironmentSecrets","description":"Replace the environment's entire secret set. This is a full write and not a merge - any key you omit is removed. Read the current set, modify it, then write the whole set back.\n\nKeys must be non empty after trimming and unique within the array. Validation runs before anything is written.","parameters":["de065244-26e4-4d16-880b-2966f295bc65"],"requestBody":"2541b281-7852-4ec2-b1a9-840583fd6351","responses":{"200":"3f7d57d6-476d-470b-a2e7-49bc6b2cea3c","401":"8251a4ec-f86e-4c69-bd7e-9050852fd730","404":"fd3d1852-8dca-481c-b14d-da690a186ed3","422":"be78323a-4fd3-4d02-85bc-9fa98911bcbe","500":"50fb6bee-b15d-4de1-bbfb-f326d451d711"},"method":"put","type":"path","servers":["92365f02-5544-410d-89dc-c47d8041cca8"],"security":["5e037ee9-821d-45d6-9720-78f9a60e0dfa"],"path":"/v1/environments/{envId}/secrets","baseUrlOptions":["https://sdk.localops.co"],"title":"Replace Environment Secrets","codeSamples":[],"requestExampleLanguages":["bash","python","javascript","go"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[{"body.secrets.items.0.key":"DB_URL","body.secrets.items.0.value":"postgres://user:pass@host:5432/db","body.secrets.items.0.description":"primary db","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":{"de065244-26e4-4d16-880b-2966f295bc65":{"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>"}}},"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"},"is_sensitive":{"type":"boolean","description":"Marks the value as sensitive","uniqueKey":"secrets.items.[INDEX].is_sensitive","typeLabel":"boolean"},"expose_to_chart":{"oneOf":[{"type":"boolean","description":"Expose this secret to Helm chart values","uniqueKey":"secrets.items.[INDEX].expose_to_chart.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Expose this secret to Helm chart values","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","description":"Default value used in chart values","uniqueKey":"secrets.items.[INDEX].chart_default_val.oneOf.0","typeLabel":"string"},{"type":"null","description":"Default value used in chart values","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","description":"Export this secret to dependent services","uniqueKey":"secrets.items.[INDEX].dep_export.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Export this secret to dependent services","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":"DB_URL","value":"postgres://user:pass@host:5432/db","description":"primary db","is_sensitive":true,"expose_to_chart":false,"chart_default_val":null,"dep_export":false}]},"examples":{"Example":{"title":"Example","value":{"secrets":[{"key":"DB_URL","value":"postgres://user:pass@host:5432/db","description":"primary db","is_sensitive":true,"expose_to_chart":false,"chart_default_val":null,"dep_export":false}]}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"3f7d57d6-476d-470b-a2e7-49bc6b2cea3c":{"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"},"is_sensitive":{"type":"boolean","description":"Marks the value as sensitive","uniqueKey":"data.secrets.items.[INDEX].is_sensitive","typeLabel":"boolean"},"expose_to_chart":{"oneOf":[{"type":"boolean","description":"Expose this secret to Helm chart values","uniqueKey":"data.secrets.items.[INDEX].expose_to_chart.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Expose this secret to Helm chart values","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","description":"Default value used in chart values","uniqueKey":"data.secrets.items.[INDEX].chart_default_val.oneOf.0","typeLabel":"string"},{"type":"null","description":"Default value used in chart values","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","description":"Export this secret to dependent services","uniqueKey":"data.secrets.items.[INDEX].dep_export.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Export this secret to dependent services","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>","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"},"8251a4ec-f86e-4c69-bd7e-9050852fd730":{"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"},"fd3d1852-8dca-481c-b14d-da690a186ed3":{"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"},"be78323a-4fd3-4d02-85bc-9fa98911bcbe":{"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"},"50fb6bee-b15d-4de1-bbfb-f326d451d711":{"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 Environment Secrets - LocalOps Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-28T06:03:31.741Z","originalFileLocation":"api-reference/secrets/replace-environment-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 environment\u0026#x27;s entire secret set. This is a full write and not a merge - any key you omit is removed. Read the current set, modify it, then write the whole set back. Keys must be non empty after trimming and unique within the array. Validation runs before anything is written.\">\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 Environment Secrets - LocalOps Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Replace the environment\u0026#x27;s entire secret set. This is a full write and not a merge - any key you omit is removed. Read the current set, modify it, then write the whole set back. Keys must be non empty after trimming and unique within the array. Validation runs before anything is written.\">\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-environment-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+Environment+Secrets\u0026amp;description=Replace+the+environment%27s+entire+secret+set.+This+is+a+full+write+and+not+a+merge+-+any+key+you+omit+is+removed.+Read+the+current+set%2C+modify+it%2C+then+write+the\u0026amp;theme=19ffd466702f0c7f1a9fe584\u0026amp;signature=c65757e1f11b3e2472ab764a877bf6beb354472b2f900b07d15edc545584a784\">\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 Environment Secrets - LocalOps Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Replace the environment\u0026#x27;s entire secret set. This is a full write and not a merge - any key you omit is removed. Read the current set, modify it, then write the whole set back. Keys must be non empty after trimming and unique within the array. Validation runs before anything is written.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://localops.mintlify.site/_mintlify/api/og/v2?division=Secrets\u0026amp;title=Replace+Environment+Secrets\u0026amp;description=Replace+the+environment%27s+entire+secret+set.+This+is+a+full+write+and+not+a+merge+-+any+key+you+omit+is+removed.+Read+the+current+set%2C+modify+it%2C+then+write+the\u0026amp;theme=19ffd466702f0c7f1a9fe584\u0026amp;signature=c65757e1f11b3e2472ab764a877bf6beb354472b2f900b07d15edc545584a784\">\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-environment-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-environment-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-environment-secrets#webpage\",\"url\":\"https://docs.localops.co/api-reference/secrets/replace-environment-secrets\",\"name\":\"Replace Environment Secrets\",\"description\":\"Replace the environment's entire secret set. This is a full write and not a merge - any key you omit is removed. Read the current set, modify it, then write the whole set back. Keys must be non empty after trimming and unique within the array. Validation runs before anything is written.\",\"dateModified\":\"2026-09-28T06:03:31.741Z\",\"isPartOf\":{\"@id\":\"https://docs.localops.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.localops.co/api-reference/secrets/replace-environment-secrets#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.localops.co/api-reference/secrets/replace-environment-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 Environment Secrets\",\"item\":\"https://docs.localops.co/api-reference/secrets/replace-environment-secrets\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.localops.co/api-reference/secrets/replace-environment-secrets#apireference\",\"headline\":\"Replace Environment Secrets\",\"name\":\"Replace Environment Secrets\",\"description\":\"Replace the environment's entire secret set. This is a full write and not a merge - any key you omit is removed. Read the current set, modify it, then write the whole set back. Keys must be non empty after trimming and unique within the array. Validation runs before anything is written.\",\"url\":\"https://docs.localops.co/api-reference/secrets/replace-environment-secrets\",\"mainEntityOfPage\":{\"@id\":\"https://docs.localops.co/api-reference/secrets/replace-environment-secrets#webpage\"},\"dateModified\":\"2026-09-28T06:03:31.741Z\",\"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","description":"Read the environment's secret set. Environment level secrets are shared by all services in the environment.","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,"href":"/api/no-access-delivery/license-tokens"}]}]}]},"basePath":"","title":"Replace Environment 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"]}