{"items":[{"type":"link","label":"OMNO Authentication Documentation","link":"/apis/authentication/openapi","routeSlug":"/apis/authentication/openapi","content":{"contentType":"overview","meta":{"name":"OMNO Authentication Documentation"},"children":[{"nodeType":"container","panels":[{"title":"Download OpenAPI description","titleTranslationKey":"download.description.title","children":[{"kind":"download","label":"openapi.json","url":"/_bundle/apis/authentication/openapi.json?download"},{"kind":"download","label":"openapi.yaml","url":"/_bundle/apis/authentication/openapi.yaml?download"}]},{"title":"Overview","titleTranslationKey":"info.title","children":[{"kind":"email","title":"E-mail","titleTranslationKey":"info.contact.name","email":"support@omno.com","label":"support@omno.com","withCopyButton":true,"copyContent":"support@omno.com"}]},{"title":"Languages","titleTranslationKey":"languages.title","children":[{"kind":"languages","options":[{"key":"curl","title":"curl","lang":"curl"},{"key":"javascript","title":"JavaScript","lang":"JavaScript"},{"key":"node","title":"Node.js","lang":"Node.js"},{"key":"python","title":"Python","lang":"Python"},{"key":"java","title":"Java","lang":"Java"},{"key":"csharp","title":"C#","lang":"C#"},{"key":"php","title":"PHP","lang":"PHP"},{"key":"go","title":"Go","lang":"Go"},{"key":"ruby","title":"Ruby","lang":"Ruby"},{"key":"r","title":"R","lang":"R"},{"key":"payload","title":"Payload","lang":"Payload"}]}]},{"title":"Servers","titleTranslationKey":"servers.title","children":[{"kind":"servers","servers":[{"url":"https://sso.omno.com","description":"Production Environment\n\nThis is the main production environment for OMNO authentication services.\nAll production applications should connect to this server.\n"}],"mode":"default"}]}],"children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"header","level":1,"label":"OMNO Authentication Documentation (1.0.0)","showPageActions":true},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[]}],"sectionId":"/apis/authentication/openapi"}],"sectionId":"/apis/authentication/openapi"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/overview"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Overview"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This API provides authentication services for OMNO."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The service supports OAuth2 token issuance using the client credentials flow for secure"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"server-to-server communication."},"children":[]}]}]}]}],"sectionId":"/apis/authentication/openapi/section/overview"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/authentication-flow"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authentication Flow"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Register your application to obtain client credentials (client_id and client_secret)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Request an access token using the client credentials grant type"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Use the returned access token in the Authorization header for subsequent API calls"},"children":[]}]}]}]}]}],"sectionId":"/apis/authentication/openapi/section/authentication-flow"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/obtaining-client-credentials"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Obtaining Client Credentials"},"children":[]}]}]}]}],"sectionId":"/apis/authentication/openapi/section/obtaining-client-credentials"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/production-environment"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Production Environment"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Navigate to "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"https://cockpit.omno.com/developers/api-credentials"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"https://cockpit.omno.com/developers/api-credentials"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Log in with your OMNO account credentials if prompted"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Click on \"Create Token\""},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Fill in the required information:"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Token name: Provide a descriptive name for your api token"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Whitelisted IPs: add you IPs or use '*' to allow all IPs"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Submit the form to create your credentials"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The system will generate and display your client_id and client_secret"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Store these credentials securely as the client_secret may not be displayed again"},"children":[]}]}]}]}]}],"sectionId":"/apis/authentication/openapi/section/production-environment"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/security-best-practices"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Security Best Practices"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Store client secrets securely and never expose them in client-side code"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Implement proper token validation on your services"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Be aware of token expiration and implement renewal strategies"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Use HTTPS for all communications"},"children":[]}]}]}]}]}],"sectionId":"/apis/authentication/openapi/section/security-best-practices"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/support"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Support"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For assistance with authentication issues, contact our support team at "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"mailto:support@omno.com"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"support@omno.com"},"children":[]}]}]}]}]}],"sectionId":"/apis/authentication/openapi/section/support"}]}]}},{"type":"link","label":"Overview","link":"/apis/authentication/openapi/section/overview","routeSlug":"/apis/authentication/openapi/section/overview","content":null},{"type":"link","label":"Authentication Flow","link":"/apis/authentication/openapi/section/authentication-flow","routeSlug":"/apis/authentication/openapi/section/authentication-flow","content":null},{"type":"link","label":"Obtaining Client Credentials","link":"/apis/authentication/openapi/section/obtaining-client-credentials","routeSlug":"/apis/authentication/openapi/section/obtaining-client-credentials","content":null},{"type":"link","label":"Production Environment","link":"/apis/authentication/openapi/section/production-environment","routeSlug":"/apis/authentication/openapi/section/production-environment","content":null},{"type":"link","label":"Security Best Practices","link":"/apis/authentication/openapi/section/security-best-practices","routeSlug":"/apis/authentication/openapi/section/security-best-practices","content":null},{"type":"link","label":"Support","link":"/apis/authentication/openapi/section/support","routeSlug":"/apis/authentication/openapi/section/support","content":null},{"type":"group","label":"Authentication","link":"/apis/authentication/openapi/authentication","routeSlug":"/apis/authentication/openapi/authentication","items":[{"label":"Obtain access token using client credentials","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/apis/authentication/openapi/authentication/fetchaccesstoken","routeSlug":"/apis/authentication/openapi/authentication/fetchaccesstoken","metadata":{"seo":{"title":"Obtain access token using client credentials","description":"Client Credentials Flow"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"fetchAccessToken","name":"Obtain access token using client credentials","isWebhook":false,"pointer":"/paths/~1realms~1{realm}~1protocol~1openid-connect~1token/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Obtain access token using client credentials","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"authentication/fetchaccesstoken/request/client-credentials-flow","deepLinkHash":"/authentication/fetchaccesstoken#authentication/fetchaccesstoken/request/client-credentials-flow"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Client Credentials Flow"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This endpoint implements the OAuth2 Client Credentials flow, which is designed for server-to-server"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"authentication where a client application authenticates directly to obtain an access token."},"children":[]}]}]},{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"authentication/fetchaccesstoken/request/usage-instructions","deepLinkHash":"/authentication/fetchaccesstoken#authentication/fetchaccesstoken/request/usage-instructions"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Usage Instructions"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Send a POST request with your client credentials in the request body"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Store the returned access token securely"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Include the access token in subsequent API requests using the Authorization header:"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Authorization: Bearer {access_token}"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"authentication/fetchaccesstoken/request/token-lifecycle","deepLinkHash":"/authentication/fetchaccesstoken#authentication/fetchaccesstoken/request/token-lifecycle"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Token Lifecycle"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The access token is valid for the period specified in "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"expires_in"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (typically 300 seconds)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"After expiration, a new token must be requested"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Implement proper error handling for token expiration scenarios"},"children":[]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"realm","in":"path","schemaId":"schema_3","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The Keycloak realm to authenticate against."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This path parameter should match the realm associated with your client credentials."},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"omno"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for production environment"},"children":[]}]}]}]}],"required":true}],"pointer":"/paths/~1realms~1{realm}~1protocol~1openid-connect~1token/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/x-www-form-urlencoded"],"mediaTypeSchemas":{"application/x-www-form-urlencoded":{"schemaId":"schema_4"}},"schemaId":"schema_4","pointer":"/paths/~1realms~1{realm}~1protocol~1openid-connect~1token/post/requestBody","description":"Authentication parameters required for the client credentials flow.\n"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/realms/{realm}/protocol/openid-connect/token","servers":[{"url":"https://sso.omno.com","description":"Production Environment\n\nThis is the main production environment for OMNO authentication services.\nAll production applications should connect to this server.\n"}],"parameters":{"path":[{"name":"realm","in":"path","required":true,"schemaId":"schema_3"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[],"requestBody":{"application/x-www-form-urlencoded":{"schemaId":"schema_4"}},"responseCodes":["200","400","401"],"pointer":"/realms/{realm}/protocol/openid-connect/token","href":"authentication/fetchaccesstoken","openApiOperationId":"fetchAccessToken","summary":"Obtain access token using client credentials"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://sso.omno.com","description":"Production Environment\n\nThis is the main production environment for OMNO authentication services.\nAll production applications should connect to this server.\n"}],"schemaId":"schema_4","mediaTypes":["application/x-www-form-urlencoded"],"mediaTypeSchemas":{"application/x-www-form-urlencoded":{"schemaId":"schema_4"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful authentication response.\n\nThe response contains a JWT access token and metadata about the token,\nincluding expiration time and scope information.\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenResponse","exampleIds":["paths/~1realms~1{realm}~1protocol~1openid-connect~1token/post/responses/200/content/application~1json/examples/successResponse"]}},"schemaId":"components/schemas/TokenResponse","exampleIds":["paths/~1realms~1{realm}~1protocol~1openid-connect~1token/post/responses/200/content/application~1json/examples/successResponse"]},{"code":"400","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bad request - invalid client credentials or parameters"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This error occurs when:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The grant_type is missing or not set to \"client_credentials\""},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Required parameters are missing"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Parameter format is incorrect"},"children":[]}]}]}]}]},{"code":"401","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unauthorized - client authentication failed"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This error occurs when:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The client_id doesn't exist"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The client_secret doesn't match the registered client_id"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The client doesn't have permission to use the client_credentials flow"},"children":[]}]}]}]}]}],"pointer":"/paths/~1realms~1{realm}~1protocol~1openid-connect~1token/post/responses"}],"panels":[{"children":[{"kind":"response","responseCodes":[{"code":"200","schemaId":"components/schemas/TokenResponse","exampleIds":["paths/~1realms~1{realm}~1protocol~1openid-connect~1token/post/responses/200/content/application~1json/examples/successResponse"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TokenResponse","exampleIds":["paths/~1realms~1{realm}~1protocol~1openid-connect~1token/post/responses/200/content/application~1json/examples/successResponse"]}}},{"code":"400"},{"code":"401"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/authentication/fetchaccesstoken"}],"panels":[]}]},"httpPath":"/realms/{realm}/protocol/openid-connect/token"}],"content":{"contentType":"group","meta":{"name":"Authentication"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Authentication","showPageActions":true},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Obtain an OAuth 2.0 access token using the client credentials flow, then send it as a bearer token on every OMNO API request. Generate credentials in the dashboard under Developers → API Credentials."},"children":[]}]}]}]}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/realms/{realm}/protocol/openid-connect/token","summary":"Obtain access token using client credentials","prefix":{"name":"post","color":"post"},"badges":[],"link":"/authentication/fetchaccesstoken","deprecated":false}]}]}]}]}}],"store":{"schemaStore":{"components/schemas/TokenResponse":{"id":"components/schemas/TokenResponse","kind":"json-schema","title":"TokenResponse","data":{"type":"object","description":"Response object returned after successful authentication.\nContains the access token and related metadata.\n","properties":{"access_token":{"type":"string","example":"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIi...","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"JWT access token used for authentication."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This token should be included in the Authorization header of subsequent API requests:"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Authorization: Bearer {access_token}"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The token contains encoded claims about the authenticated client and its permissions."},"children":[]}]}]}]},"expires_in":{"type":"integer","example":300,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Token expiration time in seconds."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This value indicates how long the access_token will remain valid."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Typically set to 300 seconds (5 minutes) in OMNO environments."},"children":[]}]}]}]},"refresh_expires_in":{"example":1800,"type":"integer","description":"Refresh token expiration time in seconds.\n\nNote: While this field is included in the response, refresh tokens are not\ntypically used with the client credentials flow as new access tokens\ncan be obtained directly using the client credentials.\n"},"token_type":{"example":"Bearer","type":"string","description":"Type of token issued.\n\nAlways set to \"Bearer\" for OMNO authentication, indicating the token\nshould be used in the Authorization header as a bearer token.\n"},"scope":{"example":"profile email","type":"string","description":"Space-delimited list of scopes granted to the token.\n\nThese scopes define the permissions associated with the token.\nCommon scopes include \"profile\" and \"email\".\n"}}}},"schema_3":{"kind":"json-schema","data":{"type":"string","enum":["omno"]},"id":"schema_3"},"schema_4":{"kind":"json-schema","data":{"type":"object","properties":{"grant_type":{"example":"client_credentials","type":"string","enum":["client_credentials"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OAuth2 grant type identifier."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Must be set to 'client_credentials' for this authentication flow."},"children":[]}]}]}]},"client_id":{"example":"CLIENT_ID","type":"string","description":"Your application's client identifier.\nThis ID is provided when you register your application with OMNO.\n"},"client_secret":{"example":"CLIENT_SECRET","type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The secret key associated with your client_id."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This should be kept confidential and secure at all times."},"children":[]}]}]}]}},"required":["grant_type","client_id","client_secret"]},"id":"schema_4"}},"exampleStore":{"paths/~1realms~1{realm}~1protocol~1openid-connect~1token/post/responses/200/content/application~1json/examples/successResponse":{"value":{"access_token":"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIi...","expires_in":300,"refresh_expires_in":1800,"token_type":"Bearer","scope":"profile email"},"key":"successResponse","summary":"successResponse","id":"paths/~1realms~1{realm}~1protocol~1openid-connect~1token/post/responses/200/content/application~1json/examples/successResponse"}},"securitySchemeStore":{},"servers":[{"url":"https://sso.omno.com","description":"Production Environment\n\nThis is the main production environment for OMNO authentication services.\nAll production applications should connect to this server.\n"}],"specType":"openapi"},"options":{"mockServer":{"off":true},"disableRouter":true,"downloadUrls":[{"url":"/_bundle/apis/authentication/openapi.json?download"},{"url":"/_bundle/apis/authentication/openapi.yaml?download"}],"excludeFromSearch":false,"replayFeatures":{"graphql":false},"specType":"openapi","markdocOptions":{"tags":{},"nodes":{},"components":{}},"metadata":{"title":"OMNO Authentication Documentation","description":"## Overview\nThis API provides authentication services for OMNO.\nThe service supports OAuth2 token issuance using the client credentials flow for secure\nserver-to-server communication.\n\n## Authentication Flow\n1. Register your application to obtain client credentials (client_id and client_secret)\n2. Request an access token using the client credentials grant type\n3. Use the returned access token in the Authorization header for subsequent API calls\n\n## Obtaining Client Credentials\n\n### Production Environment\n1. Navigate to [https://cockpit.omno.com/developers/api-credentials](https://cockpit.omno.com/developers/api-credentials)\n2. Log in with your OMNO account credentials if prompted\n3. Click on \"Create Token\"\n4. Fill in the required information:\n   - Token name: Provide a descriptive name for your api token\n   - Whitelisted IPs: add you IPs or use '*' to allow all IPs\n5. Submit the form to create your credentials\n6. The system will generate and display your client_id and client_secret\n7. Store these credentials securely as the client_secret may not be displayed again\n\n## Security Best Practices\n- Store client secrets securely and never expose them in client-side code\n- Implement proper token validation on your services\n- Be aware of token expiration and implement renewal strategies\n- Use HTTPS for all communications\n\n## Support\nFor assistance with authentication issues, contact our support team at [support@omno.com](mailto:support@omno.com)\n"}},"baseSlug":"/apis/authentication/openapi","routesMapping":{}}