Create or update an organization's OIDC connection
Creates the connection (201, in draft) or updates it (200). Every
save fetches <issuer>/.well-known/openid-configuration and refuses
it (422) unless its issuer is exactly the one given, its endpoints
are https, it supports the code response type and RS256 or ES256
ID tokens, and it does not rule out S256 PKCE. The issuer must be a
public https URL: internal addresses and redirects are refused.
Changing the issuer, client id, client secret, scopes or claims
clears the last test result and puts an active connection back to
draft. Setting status to active needs the current
configuration to have passed a test login (409). Needs the
organization’s own plan to include SSO (Pay as you go or Enterprise;
402 on Free), and the organization not to be suspended (403); a
save that sets status to disabled is never refused on the plan
or a suspension.
PUT
/
v1
/
organizations
/
{id}
/
sso
/
oidc
Create or update an organization's OIDC connection
A personal access token (POST /v1/auth/tokens) or a machine
identity token (POST /v1/projects/{project_id}/identities/{identity_id}/tokens),
both prefixed qumo_pat_. A token's scopes cap what it can do; see
Scopes and permissions. A personal
token names no organization: on a route whose path names no project or
organization, pass ?organization_id=.
draft until activated: a draft connection can be tested but is
not used to sign in. active once a test login of the current
configuration passed and it was activated. disabled when turned
off.
The last test login's result; absent before the first.
Available options:
passed,
exchange_failed,
invalid_token,
email_missing,
email_unverified,
discovery_failed,
configuration_changed,
idp_denied
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Qumo Deploy","colors":{"primary":"#2563EB","light":"#60A5FA","dark":"#1E40AF"},"favicon":"https://mintcdn.com/qumo-deploy-docs/DwablpEIA07J0vcR/favicon.png?fit=max\u0026auto=format\u0026n=DwablpEIA07J0vcR\u0026q=85\u0026s=22ec50309a24b95a278e57a7bc205224","navbar":{"links":[{"href":"https://console.qumo-deploy.com","label":"Console"}],"primary":{"type":"button","label":"Get started","href":"https://console.qumo-deploy.com/login"}},"footer":{"socials":{"discord":"https://discord.gg/u25j99S9cZ"}},"styling":{"latex":true},"navigation":{"languages":[{"language":"en","href":"guides/overview"},{"language":"ja","href":"ja/guides/overview"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"qumo-deploy-docs","hasAudioNarration":false,"actualSubdomain":"qumo-deploy-docs","customDomains":["docs.qumo-deploy.com"],"gitSource":{"type":"github","owner":"foalk-inc","repo":"qumo-deploy","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6af3f4d669fdd1d82166d6cc","clientVersion":"0.0.4102","searchFilterCounts":[{"language":"en","tag":"API Reference","count":188},{"language":"en","tag":"SDK","count":22},{"language":"en","tag":"Organizations","count":19},{"language":"en","tag":"SDK Reference","count":17},{"language":"en","tag":"Account","count":15},{"language":"en","tag":"Billing","count":14},{"language":"en","tag":"Guides","count":10},{"language":"en","tag":"Access control","count":10},{"language":"en","tag":"Identities","count":9},{"language":"en","tag":"Help \u0026 Policies","count":6},{"language":"ja","tag":"CLI","count":2},{"language":"ja","tag":"CLI リファレンス","count":2},{"language":"ja","tag":"コンソール","count":2},{"language":"ja","tag":"Web コンソール","count":2},{"language":"ja","tag":"ガイド","count":2},{"language":"ja","tag":"はじめに","count":2},{"language":"ja","tag":"ヘルプ","count":1},{"language":"ja","tag":"サポート","count":1},{"language":"ja","tag":"SDK","count":1},{"language":"ja","tag":"TypeScript SDK","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","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":"editor-metadata","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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/organizations/create-or-update-an-organizations-oidc-connection","slug":"/api-reference/organizations/create-or-update-an-organizations-oidc-connection","pageMetadata":{"title":"Create or update an organization's OIDC connection","description":"Creates the connection (201, in `draft`) or updates it (200). Every\nsave fetches `\u003cissuer>/.well-known/openid-configuration` and refuses\nit (422) unless its `issuer` is exactly the one given, its endpoints\nare https, it supports the `code` response type and RS256 or ES256\nID tokens, and it does not rule out S256 PKCE. The issuer must be a\npublic https URL: internal addresses and redirects are refused.\nChanging the issuer, client id, client secret, scopes or claims\nclears the last test result and puts an active connection back to\n`draft`. Setting `status` to `active` needs the current\nconfiguration to have passed a test login (409). Needs the\norganization's own plan to include SSO (Pay as you go or Enterprise;\n402 on Free), and the organization not to be suspended (403); a\nsave that sets `status` to `disabled` is never refused on the plan\nor a suspension.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/organizations/{id}/sso/oidc","href":"/api-reference/organizations/create-or-update-an-organizations-oidc-connection","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Creates the connection (201, in \", _jsx(_components.code, {\n children: \"draft\"\n }), \") or updates it (200). Every\\nsave fetches \", _jsx(_components.code, {\n children: \"\u003cissuer>/.well-known/openid-configuration\"\n }), \" and refuses\\nit (422) unless its \", _jsx(_components.code, {\n children: \"issuer\"\n }), \" is exactly the one given, its endpoints\\nare https, it supports the \", _jsx(_components.code, {\n children: \"code\"\n }), \" response type and RS256 or ES256\\nID tokens, and it does not rule out S256 PKCE. The issuer must be a\\npublic https URL: internal addresses and redirects are refused.\\nChanging the issuer, client id, client secret, scopes or claims\\nclears the last test result and puts an active connection back to\\n\", _jsx(_components.code, {\n children: \"draft\"\n }), \". Setting \", _jsx(_components.code, {\n children: \"status\"\n }), \" to \", _jsx(_components.code, {\n children: \"active\"\n }), \" needs the current\\nconfiguration to have passed a test login (409). Needs the\\norganization’s own plan to include SSO (Pay as you go or Enterprise;\\n402 on Free), and the organization not to be suspended (403); a\\nsave that sets \", _jsx(_components.code, {\n children: \"status\"\n }), \" to \", _jsx(_components.code, {\n children: \"disabled\"\n }), \" is never refused on the plan\\nor a suspension.\"]\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":"Create or update an organization's OIDC connection","description":"Creates the connection (201, in `draft`) or updates it (200). Every\nsave fetches `\u003cissuer>/.well-known/openid-configuration` and refuses\nit (422) unless its `issuer` is exactly the one given, its endpoints\nare https, it supports the `code` response type and RS256 or ES256\nID tokens, and it does not rule out S256 PKCE. The issuer must be a\npublic https URL: internal addresses and redirects are refused.\nChanging the issuer, client id, client secret, scopes or claims\nclears the last test result and puts an active connection back to\n`draft`. Setting `status` to `active` needs the current\nconfiguration to have passed a test login (409). Needs the\norganization's own plan to include SSO (Pay as you go or Enterprise;\n402 on Free), and the organization not to be suspended (403); a\nsave that sets `status` to `disabled` is never refused on the plan\nor a suspension.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/organizations/{id}/sso/oidc","href":"/api-reference/organizations/create-or-update-an-organizations-oidc-connection","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"putOrganizationOIDCConnection","summary":"Create or update an organization's OIDC connection","description":"Creates the connection (201, in `draft`) or updates it (200). Every\nsave fetches `\u003cissuer>/.well-known/openid-configuration` and refuses\nit (422) unless its `issuer` is exactly the one given, its endpoints\nare https, it supports the `code` response type and RS256 or ES256\nID tokens, and it does not rule out S256 PKCE. The issuer must be a\npublic https URL: internal addresses and redirects are refused.\nChanging the issuer, client id, client secret, scopes or claims\nclears the last test result and puts an active connection back to\n`draft`. Setting `status` to `active` needs the current\nconfiguration to have passed a test login (409). Needs the\norganization's own plan to include SSO (Pay as you go or Enterprise;\n402 on Free), and the organization not to be suspended (403); a\nsave that sets `status` to `disabled` is never refused on the plan\nor a suspension.\n","tags":["Organizations"],"x-qumo-permission":"organization.sso_connection_update","security":["6942d145-b7ef-4d28-a015-63bb3942e4f1","d9fe7516-1eef-408a-8858-b404cc15fbdd","ecdf7dc3-d7e5-4f8f-bff0-7573777ae7f9"],"requestBody":"a3580a4f-9467-4617-b9c7-4f8e2fb9f301","responses":{"200":"6c181214-a79f-428f-ac4b-0e72adf51b2c","201":"4b001a11-40da-44a5-b7c7-c6168e8255fc","400":"6050b02e-b814-4034-a363-27d6d709e1c3","401":"b7d8daab-35af-4b3e-826d-2fefb4c56cc9","402":"de4690aa-7e17-4105-a2f0-be244f097360","403":"4ea945fc-b1f9-4618-bfa4-82bb32cfa402","404":"11fef233-d957-4643-a94d-a52b96f97c03","409":"4eceacb9-7c7f-42dd-bb36-de28733e7c87","422":"87a60e89-a84a-442a-8486-d1fe10d9863b"},"method":"put","type":"path","servers":["7927c12c-1596-4e69-b686-bfb67d743a25"],"path":"/v1/organizations/{id}/sso/oidc","baseUrlOptions":["https://api.qumo-deploy.com"],"title":"Create or update an organization's OIDC connection","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"55ffdfa2-bb9a-4c91-9d3a-d3110a4afb56":{"name":"id","in":"path","required":true,"description":"The organization's id.","schema":{"type":"string","format":"uuid","isRequired":true,"description":"The organization's id.","uniqueKey":"","typeLabel":"string\u003cuuid>"},"example":"3f8c2a1e-7b4d-4e9a-9c61-2d5e8f0a1b7c"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["issuer","client_id"],"properties":{"issuer":{"type":"string","format":"uri","description":"The IdP's issuer, an https URL exactly as its discovery document states it.","example":"https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0","isRequired":true,"uniqueKey":"issuer","typeLabel":"string\u003curi>"},"client_id":{"type":"string","minLength":1,"maxLength":255,"example":"0oa8f2k3l9XyZ1abc357","isRequired":true,"uniqueKey":"client_id","typeLabel":"string"},"client_secret":{"type":"string","minLength":8,"maxLength":1024,"writeOnly":true,"description":"Required on create. Omit on update to keep the stored secret. Encrypted at rest and never returned.","uniqueKey":"client_secret","typeLabel":"string"},"scopes":{"type":"array","maxItems":20,"items":{"type":"string","uniqueKey":"scopes.items.[INDEX]","typeLabel":"string"},"description":"Must include `openid`. Omitted, keeps the current scopes (on create, `openid email profile`).","example":["openid","email","profile"],"uniqueKey":"scopes","typeLabel":"string[]"},"claims":{"type":"object","description":"Claim names to change; an omitted one keeps its current value (on create, the default). Each is 1 to 256 printable characters without spaces.","properties":{"email":{"type":"string","example":"email","uniqueKey":"claims.email","typeLabel":"string"},"email_verified":{"type":"string","example":"xms_edov","uniqueKey":"claims.email_verified","typeLabel":"string"},"name":{"type":"string","example":"name","uniqueKey":"claims.name","typeLabel":"string"},"groups":{"type":"string","example":"groups","uniqueKey":"claims.groups","typeLabel":"string"}},"uniqueKey":"claims","typeLabel":"object"},"status":{"type":"string","enum":["draft","active","disabled"],"description":"Omitted, keeps the current status (on create, `draft`). `active` needs a passed test login of the current configuration.","uniqueKey":"status","typeLabel":"enum\u003cstring>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"issuer":"https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0","client_id":"0oa8f2k3l9XyZ1abc357","client_secret":"\u003cstring>","scopes":["openid","email","profile"],"claims":{"email":"email","email_verified":"xms_edov","name":"name","groups":"groups"}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"6c181214-a79f-428f-ac4b-0e72adf51b2c":{"description":"The connection was updated.","content":{"application/json":{"schema":{"type":"object","required":["id","organization_id","protocol","issuer","client_id","client_secret","scopes","claims","status","redirect_uri","created_at","updated_at","last_tested_at","last_test_succeeded_at"],"properties":{"id":{"type":"string","format":"uuid","example":"8b1d3f5a-2c4e-4f6a-8b0d-1e3f5a7c9b2d","isRequired":true,"uniqueKey":"id","typeLabel":"string\u003cuuid>"},"organization_id":{"type":"string","format":"uuid","example":"3f8c2a1e-7b4d-4e9a-9c61-2d5e8f0a1b7c","isRequired":true,"uniqueKey":"organization_id","typeLabel":"string\u003cuuid>"},"protocol":{"type":"string","enum":["oidc"],"isRequired":true,"uniqueKey":"protocol","typeLabel":"enum\u003cstring>"},"issuer":{"type":"string","format":"uri","example":"https://acme.okta.com","isRequired":true,"uniqueKey":"issuer","typeLabel":"string\u003curi>"},"client_id":{"type":"string","example":"0oa8f2k3l9XyZ1abc357","isRequired":true,"uniqueKey":"client_id","typeLabel":"string"},"client_secret":{"type":"object","description":"What the API says about the client secret; never the secret itself.","required":["set","last4"],"properties":{"set":{"type":"boolean","isRequired":true,"uniqueKey":"client_secret.set","typeLabel":"boolean"},"last4":{"type":"string","example":"x9Qk","isRequired":true,"uniqueKey":"client_secret.last4","typeLabel":"string"}},"isRequired":true,"uniqueKey":"client_secret","typeLabel":"object"},"scopes":{"type":"array","items":{"type":"string","uniqueKey":"scopes.items.[INDEX]","typeLabel":"string"},"example":["openid","email","profile"],"isRequired":true,"uniqueKey":"scopes","typeLabel":"string[]"},"claims":{"type":"object","description":"The ID token claims read for each attribute, by name.","required":["email","email_verified","name","groups"],"properties":{"email":{"type":"string","default":"email","example":"email","isRequired":true,"uniqueKey":"claims.email","typeLabel":"string"},"email_verified":{"type":"string","default":"email_verified","description":"A boolean claim. Microsoft Entra ID does not send `email_verified`; map it to `xms_edov`.","example":"email_verified","isRequired":true,"uniqueKey":"claims.email_verified","typeLabel":"string"},"name":{"type":"string","default":"name","example":"name","isRequired":true,"uniqueKey":"claims.name","typeLabel":"string"},"groups":{"type":"string","default":"groups","example":"groups","isRequired":true,"uniqueKey":"claims.groups","typeLabel":"string"}},"isRequired":true,"uniqueKey":"claims","typeLabel":"object"},"status":{"type":"string","enum":["draft","active","disabled"],"description":"`draft` until activated: a draft connection can be tested but is\nnot used to sign in. `active` once a test login of the current\nconfiguration passed and it was activated. `disabled` when turned\noff.\n","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"redirect_uri":{"type":"string","format":"uri","description":"The redirect URI to register at the IdP.","example":"https://console.qumo-deploy.com/oauth/sso/callback","isRequired":true,"uniqueKey":"redirect_uri","typeLabel":"string\u003curi>"},"created_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"updated_at","typeLabel":"string\u003cdate-time>"},"last_tested_at":{"oneOf":[{"type":"string","format":"date-time","description":"When the current configuration last finished a test login; cleared when the configuration changes.","isRequired":true,"uniqueKey":"last_tested_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When the current configuration last finished a test login; cleared when the configuration changes.","isRequired":true,"uniqueKey":"last_tested_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"last_tested_at","typeLabel":"string\u003cdate-time> | null"},"last_test_succeeded_at":{"oneOf":[{"type":"string","format":"date-time","description":"When the current configuration last passed a test login.","isRequired":true,"uniqueKey":"last_test_succeeded_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When the current configuration last passed a test login.","isRequired":true,"uniqueKey":"last_test_succeeded_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"last_test_succeeded_at","typeLabel":"string\u003cdate-time> | null"},"last_test_result":{"type":"string","enum":["passed","exchange_failed","invalid_token","email_missing","email_unverified","discovery_failed","configuration_changed","idp_denied"],"description":"The last test login's result; absent before the first.","uniqueKey":"last_test_result","typeLabel":"enum\u003cstring>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"8b1d3f5a-2c4e-4f6a-8b0d-1e3f5a7c9b2d","organization_id":"3f8c2a1e-7b4d-4e9a-9c61-2d5e8f0a1b7c","protocol":"oidc","issuer":"https://acme.okta.com","client_id":"0oa8f2k3l9XyZ1abc357","client_secret":{"set":true,"last4":"x9Qk"},"scopes":["openid","email","profile"],"claims":{"email":"email","email_verified":"email_verified","name":"name","groups":"groups"},"status":"draft","redirect_uri":"https://console.qumo-deploy.com/oauth/sso/callback","created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z","last_tested_at":"2023-11-07T05:31:56Z","last_test_succeeded_at":"2023-11-07T05:31:56Z","last_test_result":"passed"}}},"exampleType":"generated"}},"exampleType":"generated"},"4b001a11-40da-44a5-b7c7-c6168e8255fc":{"description":"The connection was created, in draft.","content":{"application/json":{"schema":{"type":"object","required":["id","organization_id","protocol","issuer","client_id","client_secret","scopes","claims","status","redirect_uri","created_at","updated_at","last_tested_at","last_test_succeeded_at"],"properties":{"id":{"type":"string","format":"uuid","example":"8b1d3f5a-2c4e-4f6a-8b0d-1e3f5a7c9b2d","isRequired":true,"uniqueKey":"id","typeLabel":"string\u003cuuid>"},"organization_id":{"type":"string","format":"uuid","example":"3f8c2a1e-7b4d-4e9a-9c61-2d5e8f0a1b7c","isRequired":true,"uniqueKey":"organization_id","typeLabel":"string\u003cuuid>"},"protocol":{"type":"string","enum":["oidc"],"isRequired":true,"uniqueKey":"protocol","typeLabel":"enum\u003cstring>"},"issuer":{"type":"string","format":"uri","example":"https://acme.okta.com","isRequired":true,"uniqueKey":"issuer","typeLabel":"string\u003curi>"},"client_id":{"type":"string","example":"0oa8f2k3l9XyZ1abc357","isRequired":true,"uniqueKey":"client_id","typeLabel":"string"},"client_secret":{"type":"object","description":"What the API says about the client secret; never the secret itself.","required":["set","last4"],"properties":{"set":{"type":"boolean","isRequired":true,"uniqueKey":"client_secret.set","typeLabel":"boolean"},"last4":{"type":"string","example":"x9Qk","isRequired":true,"uniqueKey":"client_secret.last4","typeLabel":"string"}},"isRequired":true,"uniqueKey":"client_secret","typeLabel":"object"},"scopes":{"type":"array","items":{"type":"string","uniqueKey":"scopes.items.[INDEX]","typeLabel":"string"},"example":["openid","email","profile"],"isRequired":true,"uniqueKey":"scopes","typeLabel":"string[]"},"claims":{"type":"object","description":"The ID token claims read for each attribute, by name.","required":["email","email_verified","name","groups"],"properties":{"email":{"type":"string","default":"email","example":"email","isRequired":true,"uniqueKey":"claims.email","typeLabel":"string"},"email_verified":{"type":"string","default":"email_verified","description":"A boolean claim. Microsoft Entra ID does not send `email_verified`; map it to `xms_edov`.","example":"email_verified","isRequired":true,"uniqueKey":"claims.email_verified","typeLabel":"string"},"name":{"type":"string","default":"name","example":"name","isRequired":true,"uniqueKey":"claims.name","typeLabel":"string"},"groups":{"type":"string","default":"groups","example":"groups","isRequired":true,"uniqueKey":"claims.groups","typeLabel":"string"}},"isRequired":true,"uniqueKey":"claims","typeLabel":"object"},"status":{"type":"string","enum":["draft","active","disabled"],"description":"`draft` until activated: a draft connection can be tested but is\nnot used to sign in. `active` once a test login of the current\nconfiguration passed and it was activated. `disabled` when turned\noff.\n","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"redirect_uri":{"type":"string","format":"uri","description":"The redirect URI to register at the IdP.","example":"https://console.qumo-deploy.com/oauth/sso/callback","isRequired":true,"uniqueKey":"redirect_uri","typeLabel":"string\u003curi>"},"created_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"updated_at","typeLabel":"string\u003cdate-time>"},"last_tested_at":{"oneOf":[{"type":"string","format":"date-time","description":"When the current configuration last finished a test login; cleared when the configuration changes.","isRequired":true,"uniqueKey":"last_tested_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When the current configuration last finished a test login; cleared when the configuration changes.","isRequired":true,"uniqueKey":"last_tested_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"last_tested_at","typeLabel":"string\u003cdate-time> | null"},"last_test_succeeded_at":{"oneOf":[{"type":"string","format":"date-time","description":"When the current configuration last passed a test login.","isRequired":true,"uniqueKey":"last_test_succeeded_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When the current configuration last passed a test login.","isRequired":true,"uniqueKey":"last_test_succeeded_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"last_test_succeeded_at","typeLabel":"string\u003cdate-time> | null"},"last_test_result":{"type":"string","enum":["passed","exchange_failed","invalid_token","email_missing","email_unverified","discovery_failed","configuration_changed","idp_denied"],"description":"The last test login's result; absent before the first.","uniqueKey":"last_test_result","typeLabel":"enum\u003cstring>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"8b1d3f5a-2c4e-4f6a-8b0d-1e3f5a7c9b2d","organization_id":"3f8c2a1e-7b4d-4e9a-9c61-2d5e8f0a1b7c","protocol":"oidc","issuer":"https://acme.okta.com","client_id":"0oa8f2k3l9XyZ1abc357","client_secret":{"set":true,"last4":"x9Qk"},"scopes":["openid","email","profile"],"claims":{"email":"email","email_verified":"email_verified","name":"name","groups":"groups"},"status":"draft","redirect_uri":"https://console.qumo-deploy.com/oauth/sso/callback","created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z","last_tested_at":"2023-11-07T05:31:56Z","last_test_succeeded_at":"2023-11-07T05:31:56Z","last_test_result":"passed"}}},"exampleType":"generated"}},"exampleType":"generated"},"6050b02e-b814-4034-a363-27d6d709e1c3":{"description":"Malformed request or failed validation. See [Error codes](/guides/error-codes).","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"A human-readable message.","example":"organization_id is required","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"organization_id is required"}}},"exampleType":"generated"}},"exampleType":"generated"},"b7d8daab-35af-4b3e-826d-2fefb4c56cc9":{"description":"Missing or invalid credentials. See [Error codes](/guides/error-codes).","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"A human-readable message.","example":"organization_id is required","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"organization_id is required"}}},"exampleType":"generated"}},"exampleType":"generated"},"de4690aa-7e17-4105-a2f0-be244f097360":{"description":"The organization's plan does not include this. See [Error codes](/guides/error-codes).","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"A human-readable message.","example":"organization_id is required","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"organization_id is required"}}},"exampleType":"generated"}},"exampleType":"generated"},"4ea945fc-b1f9-4618-bfa4-82bb32cfa402":{"description":"Authenticated but not allowed (permission, token scope, IP allowlist or CSRF). See [Error codes](/guides/error-codes).","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"A human-readable message.","example":"organization_id is required","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"organization_id is required"}}},"exampleType":"generated"}},"exampleType":"generated"},"11fef233-d957-4643-a94d-a52b96f97c03":{"description":"Not found, or not visible to the caller. See [Error codes](/guides/error-codes).","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"A human-readable message.","example":"organization_id is required","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"organization_id is required"}}},"exampleType":"generated"}},"exampleType":"generated"},"4eceacb9-7c7f-42dd-bb36-de28733e7c87":{"description":"Conflicts with the current state. See [Error codes](/guides/error-codes).","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"A human-readable message.","example":"organization_id is required","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"organization_id is required"}}},"exampleType":"generated"}},"exampleType":"generated"},"87a60e89-a84a-442a-8486-d1fe10d9863b":{"description":"Well-formed but semantically invalid. See [Error codes](/guides/error-codes).","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"A human-readable message.","example":"organization_id is required","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"organization_id is required"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"6942d145-b7ef-4d28-a015-63bb3942e4f1":{"token":{"type":"http","scheme":"bearer","bearerFormat":"qumo_pat_","description":"A personal access token (`POST /v1/auth/tokens`) or a machine\nidentity token (`POST /v1/projects/{project_id}/identities/{identity_id}/tokens`),\nboth prefixed `qumo_pat_`. A token's scopes cap what it can do; see\n[Scopes and permissions](/guides/scopes-permissions). A personal\ntoken names no organization: on a route whose path names no project or\norganization, pass `?organization_id=`.\n","scopes":[],"schemeName":"token"}},"d9fe7516-1eef-408a-8858-b404cc15fbdd":{"cliSession":{"type":"http","scheme":"bearer","description":"The session token `qumod login` obtains through the device flow\n(`POST /v1/auth/device/token`). It acts as the signed-in user, like a\nconsole session, and needs no CSRF token.\n","scopes":[],"schemeName":"cliSession"}},"ecdf7dc3-d7e5-4f8f-bff0-7573777ae7f9":{"sessionCookie":{"type":"apiKey","in":"cookie","name":"__Host-qumo_session","description":"The console's browser session. Accepted only on the console origin\n(`https://console.qumo-deploy.com`), never on `api.qumo-deploy.com`.\nA request that changes state must also send `X-CSRF-Token`.\n","scopes":[],"schemeName":"sessionCookie"},"csrfToken":{"type":"apiKey","in":"header","name":"X-CSRF-Token","description":"CSRF token paired with `sessionCookie` on POST, PUT, PATCH and DELETE.\nBearer requests do not send it.\n","scopes":[],"schemeName":"csrfToken"}}},"servers":{"7927c12c-1596-4e69-b686-bfb67d743a25":{"url":"https://api.qumo-deploy.com","description":"Public API (Bearer tokens only; cookies are ignored)"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"qumo_pat_","description":"A personal access token (`POST /v1/auth/tokens`) or a machine\nidentity token (`POST /v1/projects/{project_id}/identities/{identity_id}/tokens`),\nboth prefixed `qumo_pat_`. A token's scopes cap what it can do; see\n[Scopes and permissions](/guides/scopes-permissions). A personal\ntoken names no organization: on a route whose path names no project or\norganization, pass `?organization_id=`.\n","scopes":[],"schemeName":"token"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"A personal access token (`POST /v1/auth/tokens`) or a machine\nidentity token (`POST /v1/projects/{project_id}/identities/{identity_id}/tokens`),\nboth prefixed `qumo_pat_`. A token's scopes cap what it can do; see\n[Scopes and permissions](/guides/scopes-permissions). A personal\ntoken names no organization: on a route whose path names no project or\norganization, pass `?organization_id=`.\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"token","name":"Authorization"}],"title":"token"},{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"The session token `qumod login` obtains through the device flow\n(`POST /v1/auth/device/token`). It acts as the signed-in user, like a\nconsole session, and needs no CSRF token.\n","scopes":[],"schemeName":"cliSession"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"The session token `qumod login` obtains through the device flow\n(`POST /v1/auth/device/token`). It acts as the signed-in user, like a\nconsole session, and needs no CSRF token.\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"cliSession","name":"Authorization"}],"title":"cliSession"},{"schemes":[{"scheme":{"type":"apiKey","in":"cookie","name":"__Host-qumo_session","description":"The console's browser session. Accepted only on the console origin\n(`https://console.qumo-deploy.com`), never on `api.qumo-deploy.com`.\nA request that changes state must also send `X-CSRF-Token`.\n","scopes":[],"schemeName":"sessionCookie"},"schema":{"title":"__Host-qumo_session","type":"string","description":"The console's browser session. Accepted only on the console origin\n(`https://console.qumo-deploy.com`), never on `api.qumo-deploy.com`.\nA request that changes state must also send `X-CSRF-Token`.\n","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"sessionCookie","name":"__Host-qumo_session"},{"scheme":{"type":"apiKey","in":"header","name":"X-CSRF-Token","description":"CSRF token paired with `sessionCookie` on POST, PUT, PATCH and DELETE.\nBearer requests do not send it.\n","scopes":[],"schemeName":"csrfToken"},"schema":{"title":"X-CSRF-Token","type":"string","description":"CSRF token paired with `sessionCookie` on POST, PUT, PATCH and DELETE.\nBearer requests do not send it.\n","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"csrfToken","name":"X-CSRF-Token"}],"title":"sessionCookie \u0026 csrfToken"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"qumo-deploy-docs","siteName":"Qumo Deploy","title":"Create or update an organization's OIDC connection - Qumo Deploy","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/api-reference/organizations/create-or-update-an-organizations-oidc-connection","matchLevel":0},"ja":{"href":"/ja/guides/overview","matchLevel":4}}},"lastModified":"2026-11-11T04:53:49.674Z","originalFileLocation":"api-reference/organizations/create-or-update-an-organizations-oidc-connection.mdx","locale":"en"},"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=\"Creates the connection (201, in draft) or updates it (200). Every save fetches /.well-known/openid-configuration and refuses it (422) unless its issuer is exactly the one given, its endpoints are https, it supports the code response type and RS256 or ES256 ID tokens, and it does not rule out S256 PKCE. The issuer must be a public https URL: internal addresses and redirects are refused. Changing the issuer, client id, client secret, scopes or claims clears the last test result and puts an active connection back to draft. Setting status to active needs the current configuration to have passed a test login (409). Needs the organization\u0026#x27;s own plan to include SSO (Pay as you go or Enterprise; 402 on Free), and the organization not to be suspended (403); a save that sets status to disabled is never refused on the plan or a suspension.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Qumo Deploy\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/qumo-deploy-docs/8f91l5H7acTtpJ4W/_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/qumo-deploy-docs/8f91l5H7acTtpJ4W/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/qumo-deploy-docs/8f91l5H7acTtpJ4W/_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/qumo-deploy-docs/8f91l5H7acTtpJ4W/_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/qumo-deploy-docs/8f91l5H7acTtpJ4W/_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/qumo-deploy-docs/8f91l5H7acTtpJ4W/_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/qumo-deploy-docs/8f91l5H7acTtpJ4W/_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/qumo-deploy-docs/8f91l5H7acTtpJ4W/_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/qumo-deploy-docs/8f91l5H7acTtpJ4W/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create or update an organization\u0026#x27;s OIDC connection - Qumo Deploy\">\u003cmeta data-mint-head property=\"og:description\" content=\"Creates the connection (201, in draft) or updates it (200). Every save fetches /.well-known/openid-configuration and refuses it (422) unless its issuer is exactly the one given, its endpoints are https, it supports the code response type and RS256 or ES256 ID tokens, and it does not rule out S256 PKCE. The issuer must be a public https URL: internal addresses and redirects are refused. Changing the issuer, client id, client secret, scopes or claims clears the last test result and puts an active connection back to draft. Setting status to active needs the current configuration to have passed a test login (409). Needs the organization\u0026#x27;s own plan to include SSO (Pay as you go or Enterprise; 402 on Free), and the organization not to be suspended (403); a save that sets status to disabled is never refused on the plan or a suspension.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Qumo Deploy\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.qumo-deploy.com/api-reference/organizations/create-or-update-an-organizations-oidc-connection\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://qumo-deploy-docs.mintlify.site/_mintlify/api/og/v2?division=Organizations\u0026amp;title=Create+or+update+an+organization%27s+OIDC+connection\u0026amp;description=Creates+the+connection+%28201%2C+in+%60draft%60%29+or+updates+it+%28200%29.+Every%0Asave+fetches+%60%3Cissuer%3E%2F.well-known%2Fopenid-configuration%60+and+refuses%0Ait+%28422%29+unless+its+%60is\u0026amp;theme=c6b247f82d0b28602e760c10\u0026amp;signature=af509c01be387a074a81122062c16329efaef3b3872be3c91d85fa4f486ae99b\">\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=\"Create or update an organization\u0026#x27;s OIDC connection - Qumo Deploy\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Creates the connection (201, in draft) or updates it (200). Every save fetches /.well-known/openid-configuration and refuses it (422) unless its issuer is exactly the one given, its endpoints are https, it supports the code response type and RS256 or ES256 ID tokens, and it does not rule out S256 PKCE. The issuer must be a public https URL: internal addresses and redirects are refused. Changing the issuer, client id, client secret, scopes or claims clears the last test result and puts an active connection back to draft. Setting status to active needs the current configuration to have passed a test login (409). Needs the organization\u0026#x27;s own plan to include SSO (Pay as you go or Enterprise; 402 on Free), and the organization not to be suspended (403); a save that sets status to disabled is never refused on the plan or a suspension.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://qumo-deploy-docs.mintlify.site/_mintlify/api/og/v2?division=Organizations\u0026amp;title=Create+or+update+an+organization%27s+OIDC+connection\u0026amp;description=Creates+the+connection+%28201%2C+in+%60draft%60%29+or+updates+it+%28200%29.+Every%0Asave+fetches+%60%3Cissuer%3E%2F.well-known%2Fopenid-configuration%60+and+refuses%0Ait+%28422%29+unless+its+%60is\u0026amp;theme=c6b247f82d0b28602e760c10\u0026amp;signature=af509c01be387a074a81122062c16329efaef3b3872be3c91d85fa4f486ae99b\">\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/qumo-deploy-docs/8f91l5H7acTtpJ4W/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Qumo Deploy\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2563EB\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.qumo-deploy.com/api-reference/organizations/create-or-update-an-organizations-oidc-connection\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/organizations/create-or-update-an-organizations-oidc-connection.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.qumo-deploy.com/#organization\",\"name\":\"Qumo Deploy\",\"url\":\"https://docs.qumo-deploy.com\"},{\"@type\":\"WebSite\",\"@id\":\"https://docs.qumo-deploy.com#website\",\"name\":\"Qumo Deploy\",\"url\":\"https://docs.qumo-deploy.com\",\"publisher\":{\"@id\":\"https://docs.qumo-deploy.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.qumo-deploy.com/api-reference/organizations/create-or-update-an-organizations-oidc-connection#webpage\",\"url\":\"https://docs.qumo-deploy.com/api-reference/organizations/create-or-update-an-organizations-oidc-connection\",\"name\":\"Create or update an organization's OIDC connection\",\"description\":\"Creates the connection (201, in draft) or updates it (200). Every save fetches /.well-known/openid-configuration and refuses it (422) unless its issuer is exactly the one given, its endpoints are https, it supports the code response type and RS256 or ES256 ID tokens, and it does not rule out S256 PKCE. The issuer must be a public https URL: internal addresses and redirects are refused. Changing the issuer, client id, client secret, scopes or claims clears the last test result and puts an active connection back to draft. Setting status to active needs the current configuration to have passed a test login (409). Needs the organization's own plan to include SSO (Pay as you go or Enterprise; 402 on Free), and the organization not to be suspended (403); a save that sets status to disabled is never refused on the plan or a suspension.\",\"dateModified\":\"2026-11-11T04:53:49.674Z\",\"isPartOf\":{\"@id\":\"https://docs.qumo-deploy.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.qumo-deploy.com/api-reference/organizations/create-or-update-an-organizations-oidc-connection#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.qumo-deploy.com/api-reference/organizations/create-or-update-an-organizations-oidc-connection#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs.qumo-deploy.com/api-reference/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Organizations\",\"item\":\"https://docs.qumo-deploy.com/api-reference/organizations/create-an-organization\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create or update an organization's OIDC connection\",\"item\":\"https://docs.qumo-deploy.com/api-reference/organizations/create-or-update-an-organizations-oidc-connection\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.qumo-deploy.com/api-reference/organizations/create-or-update-an-organizations-oidc-connection#apireference\",\"headline\":\"Create or update an organization's OIDC connection\",\"name\":\"Create or update an organization's OIDC connection\",\"description\":\"Creates the connection (201, in draft) or updates it (200). Every save fetches /.well-known/openid-configuration and refuses it (422) unless its issuer is exactly the one given, its endpoints are https, it supports the code response type and RS256 or ES256 ID tokens, and it does not rule out S256 PKCE. The issuer must be a public https URL: internal addresses and redirects are refused. Changing the issuer, client id, client secret, scopes or claims clears the last test result and puts an active connection back to draft. Setting status to active needs the current configuration to have passed a test login (409). Needs the organization's own plan to include SSO (Pay as you go or Enterprise; 402 on Free), and the organization not to be suspended (403); a save that sets status to disabled is never refused on the plan or a suspension.\",\"url\":\"https://docs.qumo-deploy.com/api-reference/organizations/create-or-update-an-organizations-oidc-connection\",\"mainEntityOfPage\":{\"@id\":\"https://docs.qumo-deploy.com/api-reference/organizations/create-or-update-an-organizations-oidc-connection#webpage\"},\"dateModified\":\"2026-11-11T04:53:49.674Z\",\"publisher\":{\"@id\":\"https://docs.qumo-deploy.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.qumo-deploy.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Qumo Deploy\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Qumo Deploy\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/organizations/create-or-update-an-organizations-oidc-connection.md","siteName":"Qumo Deploy","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/guides/overview"}]},{"tab":"Console","pages":[{"title":"Console","href":"/console/overview"}]},{"tab":"CLI","pages":[{"title":"CLI","href":"/cli/overview"}]},{"tab":"SDK","pages":[{"title":"SDK","href":"/sdk/overview"}]},{"tab":"API Reference","groups":[{"group":"API Reference","pages":[{"title":"REST API Overview","href":"/api-reference/introduction"},{"group":"Account","pages":[{"title":"List personal access tokens","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/auth/tokens","href":"/api-reference/account/list-personal-access-tokens"},{"title":"Create a personal access token","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/auth/tokens","href":"/api-reference/account/create-a-personal-access-token"},{"title":"Revoke a personal access token","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/auth/tokens/{token_id}","href":"/api-reference/account/revoke-a-personal-access-token"},{"title":"Get the current session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/auth/session","href":"/api-reference/account/get-the-current-session"},{"title":"List organization memberships","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/auth/memberships","href":"/api-reference/account/list-organization-memberships"},{"title":"List sessions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/auth/sessions","href":"/api-reference/account/list-sessions"},{"title":"Revoke a session","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/auth/sessions/{id}","href":"/api-reference/account/revoke-a-session"},{"title":"Revoke all other sessions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/auth/sessions/revoke-others","href":"/api-reference/account/revoke-all-other-sessions"},{"title":"Export account data","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/users/me/export","href":"/api-reference/account/export-account-data"},{"title":"Delete account","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/users/me","href":"/api-reference/account/delete-account"},{"title":"Complete onboarding","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/users/me/onboarding","href":"/api-reference/account/complete-onboarding"},{"title":"List sign-in providers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/auth/providers","href":"/api-reference/account/list-sign-in-providers"},{"title":"Start two-factor setup","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/auth/totp/setup","href":"/api-reference/account/start-two-factor-setup"},{"title":"Enable two-factor authentication","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/auth/totp/enable","href":"/api-reference/account/enable-two-factor-authentication"},{"title":"Disable two-factor authentication","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/auth/totp/disable","href":"/api-reference/account/disable-two-factor-authentication"}]},{"group":"Organizations","pages":[{"title":"Create an organization","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/auth/organizations","href":"/api-reference/organizations/create-an-organization"},{"title":"Get organization usage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/organizations/{id}/usage","href":"/api-reference/organizations/get-organization-usage"},{"title":"Get an organization","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/organizations/{id}","href":"/api-reference/organizations/get-an-organization"},{"title":"Delete an organization","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/organizations/{id}","href":"/api-reference/organizations/delete-an-organization"},{"title":"Update an organization","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/organizations/{id}","href":"/api-reference/organizations/update-an-organization"},{"title":"List an organization's domains","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/organizations/{id}/domains","href":"/api-reference/organizations/list-an-organizations-domains"},{"title":"Add a domain to an organization","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/organizations/{id}/domains","href":"/api-reference/organizations/add-a-domain-to-an-organization"},{"title":"Verify a domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/organizations/{id}/domains/{domainID}/verify","href":"/api-reference/organizations/verify-a-domain"},{"title":"Release a domain","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/organizations/{id}/domains/{domainID}","href":"/api-reference/organizations/release-a-domain"},{"title":"Get an organization's OIDC connection","description":"Returns the organization's OIDC connection to its identity provider,\nwith the redirect URI to register at the IdP. The client secret is\nnever returned, only whether one is set and its last four\ncharacters. 404 when the organization has no connection.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/organizations/{id}/sso/oidc","href":"/api-reference/organizations/get-an-organizations-oidc-connection"},{"title":"Create or update an organization's OIDC connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/organizations/{id}/sso/oidc","href":"/api-reference/organizations/create-or-update-an-organizations-oidc-connection"},{"title":"Delete an organization's OIDC connection","description":"Deletes the connection and its stored client secret. Never gated on\nthe plan or a suspension. Recorded as a high-severity audit event.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/organizations/{id}/sso/oidc","href":"/api-reference/organizations/delete-an-organizations-oidc-connection"},{"title":"Start a test login of an organization's OIDC connection","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/organizations/{id}/sso/oidc/test","href":"/api-reference/organizations/start-a-test-login-of-an-organizations-oidc-connection"},{"title":"Get an organization's SSO policy","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/organizations/{id}/sso/policy","href":"/api-reference/organizations/get-an-organizations-sso-policy"},{"title":"Replace an organization's SSO policy","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/organizations/{id}/sso/policy","href":"/api-reference/organizations/replace-an-organizations-sso-policy"},{"title":"List an organization's managed accounts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/organizations/{id}/managed-accounts","href":"/api-reference/organizations/list-an-organizations-managed-accounts"},{"title":"List managed users' memberships in other organizations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/organizations/{id}/outside-memberships","href":"/api-reference/organizations/list-managed-users-memberships-in-other-organizations"},{"title":"Deactivate a managed account","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/organizations/{id}/managed-accounts/{userID}/deactivate","href":"/api-reference/organizations/deactivate-a-managed-account"},{"title":"Reactivate a managed account","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/organizations/{id}/managed-accounts/{userID}/reactivate","href":"/api-reference/organizations/reactivate-a-managed-account"}]},{"group":"Device flow","pages":[{"title":"Start a device sign-in","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/auth/device/code","href":"/api-reference/device-flow/start-a-device-sign-in"},{"title":"Poll for the device sign-in token","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/auth/device/token","href":"/api-reference/device-flow/poll-for-the-device-sign-in-token"},{"title":"Approve a device sign-in","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/auth/device/verify","href":"/api-reference/device-flow/approve-a-device-sign-in"}]},{"group":"Access control","pages":[{"title":"Look up an invitation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/auth/verify-invitation","href":"/api-reference/access-control/look-up-an-invitation"},{"title":"List roles","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/roles","href":"/api-reference/access-control/list-roles"},{"title":"List a project's IAM bindings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/projects/{id}/iam-bindings","href":"/api-reference/access-control/list-a-projects-iam-bindings"},{"title":"Grant a role on a project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/projects/{id}/iam-bindings","href":"/api-reference/access-control/grant-a-role-on-a-project"},{"title":"List an organization's IAM bindings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/organizations/{id}/iam-bindings","href":"/api-reference/access-control/list-an-organizations-iam-bindings"},{"title":"Grant a role on an organization","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/organizations/{id}/iam-bindings","href":"/api-reference/access-control/grant-a-role-on-an-organization"},{"title":"Remove an IAM binding","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/iam-bindings/{binding_id}","href":"/api-reference/access-control/remove-an-iam-binding"},{"title":"List pending invitations","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/invitations","href":"/api-reference/access-control/list-pending-invitations"},{"title":"Invite someone to the organization","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/invitations","href":"/api-reference/access-control/invite-someone-to-the-organization"},{"title":"Cancel an invitation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/invitations/{id}","href":"/api-reference/access-control/cancel-an-invitation"}]},{"group":"Projects","pages":[{"title":"List projects","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/projects","href":"/api-reference/projects/list-projects"},{"title":"Create a project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/projects","href":"/api-reference/projects/create-a-project"},{"title":"Delete a project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/projects/{id}","href":"/api-reference/projects/delete-a-project"},{"title":"Rename a project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/projects/{id}","href":"/api-reference/projects/rename-a-project"},{"title":"Get project usage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/projects/{id}/usage","href":"/api-reference/projects/get-project-usage"},{"title":"Get the live-broadcast quota","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/projects/{id}/broadcast-quota","href":"/api-reference/projects/get-the-live-broadcast-quota"}]},{"group":"Signing keys","pages":[{"title":"List signing keys","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/projects/{id}/signing-keys","href":"/api-reference/signing-keys/list-signing-keys"},{"title":"Register a signing key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/projects/{id}/signing-keys","href":"/api-reference/signing-keys/register-a-signing-key"},{"title":"Revoke a signing key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/projects/{id}/signing-keys/{kid}/revoke","href":"/api-reference/signing-keys/revoke-a-signing-key"}]},{"group":"Relays","pages":[{"title":"Find relays for a broadcast path","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/relays","href":"/api-reference/relays/find-relays-for-a-broadcast-path"}]},{"group":"Pricing","pages":[{"title":"Get the headline price","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/pricing","href":"/api-reference/pricing/get-the-headline-price"},{"title":"List plans","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/plans","href":"/api-reference/pricing/list-plans"},{"title":"List products","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/skus","href":"/api-reference/pricing/list-products"}]},{"group":"Identities","pages":[{"title":"List machine identities","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/projects/{project_id}/identities","href":"/api-reference/identities/list-machine-identities"},{"title":"Create a machine identity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/projects/{project_id}/identities","href":"/api-reference/identities/create-a-machine-identity"},{"title":"Delete a machine identity","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/projects/{project_id}/identities/{identity_id}","href":"/api-reference/identities/delete-a-machine-identity"},{"title":"List identity tokens","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/projects/{project_id}/identities/{identity_id}/tokens","href":"/api-reference/identities/list-identity-tokens"},{"title":"Create an identity token","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/projects/{project_id}/identities/{identity_id}/tokens","href":"/api-reference/identities/create-an-identity-token"},{"title":"Revoke an identity token","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/projects/{project_id}/identities/{identity_id}/tokens/{token_id}","href":"/api-reference/identities/revoke-an-identity-token"},{"title":"List an identity's IP allowlist","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/projects/{project_id}/identities/{identity_id}/ip-allowlists","href":"/api-reference/identities/list-an-identitys-ip-allowlist"},{"title":"Add an IP allowlist entry","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/projects/{project_id}/identities/{identity_id}/ip-allowlists","href":"/api-reference/identities/add-an-ip-allowlist-entry"},{"title":"Remove an IP allowlist entry","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/projects/{project_id}/identities/{identity_id}/ip-allowlists/{allowlist_id}","href":"/api-reference/identities/remove-an-ip-allowlist-entry"}]},{"group":"Audit","pages":[{"title":"List the organization audit log","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/audit-log","href":"/api-reference/audit/list-the-organization-audit-log"},{"title":"List a project's audit log","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/projects/{id}/audit-log","href":"/api-reference/audit/list-a-projects-audit-log"},{"title":"List the organization audit log's actors","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/audit-log/actors","href":"/api-reference/audit/list-the-organization-audit-logs-actors"},{"title":"List a project audit log's actors","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/projects/{id}/audit-log/actors","href":"/api-reference/audit/list-a-project-audit-logs-actors"},{"title":"Get the audit webhook","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/audit-webhooks","href":"/api-reference/audit/get-the-audit-webhook"},{"title":"Configure the audit webhook","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/audit-webhooks","href":"/api-reference/audit/configure-the-audit-webhook"}]},{"group":"Notifications","pages":[{"title":"List notification policies","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/notifications/policies","href":"/api-reference/notifications/list-notification-policies"},{"title":"Create a notification policy","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/notifications/policies","href":"/api-reference/notifications/create-a-notification-policy"},{"title":"Delete a notification policy","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/notifications/policies/{id}","href":"/api-reference/notifications/delete-a-notification-policy"},{"title":"Send a test notification","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/notifications/policies/{id}/test","href":"/api-reference/notifications/send-a-test-notification"}]},{"group":"Billing","pages":[{"title":"Start a plan checkout","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/billing/checkout-sessions","href":"/api-reference/billing/start-a-plan-checkout"},{"title":"Open the billing portal","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/billing/portal-sessions","href":"/api-reference/billing/open-the-billing-portal"},{"title":"Export usage as CSV","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/billing/export","href":"/api-reference/billing/export-usage-as-csv"},{"title":"Get a project's billing summary","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/projects/{id}/billing/summary","href":"/api-reference/billing/get-a-projects-billing-summary"},{"title":"Get an organization's billing summary","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/organizations/{id}/billing/summary","href":"/api-reference/billing/get-an-organizations-billing-summary"},{"title":"Get an organization's budget","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/organizations/{id}/budget","href":"/api-reference/billing/get-an-organizations-budget"},{"title":"Set an organization's budget","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/organizations/{id}/budget","href":"/api-reference/billing/set-an-organizations-budget"},{"title":"List an organization's invoices","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/organizations/{id}/invoices","href":"/api-reference/billing/list-an-organizations-invoices"},{"title":"List an organization's payment methods","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/organizations/{id}/payment-methods","href":"/api-reference/billing/list-an-organizations-payment-methods"},{"title":"Remove a payment method","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/organizations/{id}/payment-methods/{methodID}","href":"/api-reference/billing/remove-a-payment-method"},{"title":"Make a payment method the default","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/organizations/{id}/payment-methods/{methodID}/default","href":"/api-reference/billing/make-a-payment-method-the-default"},{"title":"Start adding a payment method","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/organizations/{id}/payment-methods/setup-intent","href":"/api-reference/billing/start-adding-a-payment-method"},{"title":"Cancel the subscription at the end of the period","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/organizations/{id}/subscription/cancel","href":"/api-reference/billing/cancel-the-subscription-at-the-end-of-the-period"},{"title":"Undo a scheduled cancellation","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/organizations/{id}/subscription/resume","href":"/api-reference/billing/undo-a-scheduled-cancellation"}]}]}]},{"tab":"Releases","pages":[{"title":"Releases","href":"/releases/overview"}]},{"tab":"Help \u0026 Policies","pages":[{"title":"Help \u0026 Policies","href":"/legal/terms"}]}]},{"language":"ja","pages":[{"title":"ja","href":"/ja/guides/overview"}]}]},"basePath":"","title":"Create or update an organization's OIDC connection - Qumo Deploy","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C9Wu0MeN.js","utils-jWgu-6Qf.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DBD8f9qn.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BGuX1ui5.js","snippetPresets-Evy63nQB.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BQHO1lnV.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-B6C8m-t_.js","shallow-BG4cT0fH.js","getApiPlaygroundDisplay-CgEPrE-D.js","CodeSnippet-CU8JyZ9N.js","CodeSnippets-BnxHU32T.js","Page-D6S0Yh6q.js","getPastedJson-CwiYOonh.js","icon-DYDpWmDf.js","MethodPill-C-J-l7_c.js","DuplicateIcon-B6ARwg9w.js","createIcon-Dsv4MtDq.js","DynamicMarkdown-CtasenyM.js","SectionHeading-YNcgYwjB.js","axios-vUo_bRtp.js","Markdown-CwLx6PAg.js","clsx-C3kuh_dz.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CmKHfscc.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-U3mI6Ljh.js"]}