Confluent SSO - Device Authorization API
Endpoints for the OAuth 2.0 Device Authorization Grant flow. This flow is used by CLI to enable SSO login.
Endpoints for the OAuth 2.0 Device Authorization Grant flow. This flow is used by CLI to enable SSO login.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/confluent:confluent-sso-device-authorization-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
description: '## Confluent Metadata API - Swagger UI
---
This tool (SwaggerUI) and the Open API spec file are provided _for development / test
purposes only_:
- **Do _not_ enable in Production.**
- **This tool only works with HTTP.**
### Authenticating
Authentication is performed by HTTP Basic Auth or by presenting a bearer token.'
title: MDS SSO - Device Authorization API
version: '1.0'
x-api-id: 9a0c4222-9190-4816-b872-1a9cf002afab
x-audience: external-public
servers:
- url: /
security:
- basicAuth: []
- bearerAuth: []
tags:
- description: 'Endpoints for the OAuth 2.0 Device Authorization Grant flow. This flow is used by CLI
to enable SSO login.'
name: SSO - Device Authorization
paths:
/security/1.0/oidc/device/authenticate:
post:
description: 'This initiates user authentication in CLI.
Response contains
1. `user_code` and `verification_uri` which are used by user to authenticate from the identity provider (IdP).
2. `key` is used to poll the IdP to check if the user has authorized and logged in.
3. `interval` to hint client about polling frequency.'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/InitDeviceAuthResponse'
description: Successful authentication initiation
default:
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Error Response
summary: Provides user authentication details and device polling for authentication…
tags:
- SSO - Device Authorization
operationId: postSecurity10OidcDeviceAuthenticate
x-operation-id-source: derived
/security/1.0/oidc/device/check-auth:
post:
description: 'Checks if the user has authorized and logged in. If the user has authorized, then the response contains the auth token, and the complete flag is set to true.
If the user has not authorized in right time or some other error occurred, then the response contains the error details, and again complete flag is set to true.
Otherwise, in case of pending auth, the response contains the status, description and the complete flag is set to false.'
operationId: checkDeviceAuth
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CheckDeviceAuthRequest'
required: true
responses:
'200':
content:
application/json:
examples:
authorization_pending:
value:
user_code: CRMCWZLK
complete: false
status: authorization_pending
description: The device authorization is pending. Please try again later.
slow_down:
value:
user_code: CRMCWZLK
complete: false
status: slow_down
description: Slow down the polling frequency. Please try again later.
expired_token:
value:
user_code: CRMCWZLK
complete: false
status: expired_token
description: The device code has expired. You have already requested token.
authentication_success:
value:
user_code: CRMCWZLK
complete: true
status: success
description: Authentication successful.
auth_token: json web token
expires_in: 900
schema:
$ref: '#/components/schemas/CheckDeviceAuthResponse'
description: Successful response
'403':
content:
application/json:
examples:
invalid_key:
value:
status_code: 403
message: Invalid key!
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Forbidden
'500':
content:
application/json:
examples:
wrong_token_endpoint:
value:
status_code: 500
message: Server Error
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Some error happened when autheticating
default:
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Error Response
summary: Provides information about current status of user authentication
tags:
- SSO - Device Authorization
/security/1.0/oidc/device/extend-auth:
post:
description: 'Attempts to refresh the Confluent token if applicable, based on the provided JwtPrincipal.
If refresh token is configured to be used, the session is extended until expiry time of new ID token requested using the refresh token.
Else session is extended until min(`mex`, `currentTime`+ `sessionTokenExpiryConfig`) where `mex` is the claim already present in auth token.'
operationId: extendDeviceAuth
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ExtendAuthRequest'
required: true
responses:
'200':
content:
application/json:
examples:
success:
value:
auth_token: json web token
expires_in: 900
schema:
$ref: '#/components/schemas/ExtendAuthResponse'
description: 'Get a token with extended expiry.
'
default:
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Error Response
summary: Extend auth by generating a new token
tags:
- SSO - Device Authorization
components:
schemas:
ExtendAuthResponse:
example:
auth_token: auth_token
expires_in: 0
properties:
auth_token:
description: The authentication token
type: string
expires_in:
description: The duration (in seconds) for which the token is valid
format: int64
type: integer
type: object
ExtendAuthRequest:
example:
access_token: access_token
refresh_token: refresh_token
properties:
access_token:
description: The auth token received from the device authentication
type: string
refresh_token:
description: The encrypted refresh token
type: string
type: object
CheckDeviceAuthRequest:
example:
user_code: user_code
key: key
properties:
user_code:
description: The user code associated with the authentication request
type: string
key:
description: An encrypted key to check the status of authentication
type: string
required:
- key
- user_code
type: object
InitDeviceAuthResponse:
example:
user_code: CRMCWZLK
interval: 5
verification_uri: https://my-good-ipd.com/activate?user_code=CRMCWZLK
expires_in: 600
key: Ue+LZNFU6fNXBjR90Kr7hqdmbVZ1gmZnCwCJNrqHA=
properties:
user_code:
description: The user code for device authentication
example: CRMCWZLK
type: string
verification_uri:
description: The verification URI for the user to visit
example: https://my-good-ipd.com/activate?user_code=CRMCWZLK
type: string
key:
description: The key to be used for checking authentication
example: Ue+LZNFU6fNXBjR90Kr7hqdmbVZ1gmZnCwCJNrqHA=
type: string
interval:
description: The interval for polling to check authentication
example: 5
type: integer
expires_in:
description: The validity of verification URI in seconds. User must authorize within this time
example: 600
type: number
type: object
ErrorResponse:
properties:
status_code:
description: Optional - http status code
example: 400
type: integer
error_code:
description: Optional - Kafka error code (typically 5 digits)
type: integer
type:
description: Optional - Type of error
example: INVALID REQUEST DATA
type: string
message:
description: Required - Top level error message
example: Bad request
type: string
errors:
description: Optional - List of errors
items:
$ref: '#/components/schemas/ErrorDetail'
type: array
required:
- message
type: object
ErrorDetail:
properties:
error_type:
type: string
message:
type: string
required:
- error_type
- type
type: object
CheckDeviceAuthResponse:
example:
refresh_token: refresh_token
user_code: user_code
description: description
complete: true
error: error
auth_token: auth_token
expires_in: 0
status: status
properties:
user_code:
description: The user code associated with the authentication request
type: string
complete:
description: Indicates whether the authentication is complete or error happened
type: boolean
error:
description: The error message, if some error happened
type: string
status:
description: The status of the authentication process
type: string
description:
description: A description of the error or status
type: string
auth_token:
description: The authentication token, if available
type: string
refresh_token:
description: The encrypted refresh token, if available
type: string
expires_in:
description: The duration (in seconds) for which the token is valid
type: integer
type: object
securitySchemes:
basicAuth:
scheme: basic
type: http
bearerAuth:
bearerFormat: JWT
scheme: bearer
type: http