WebAuthnv1.0.0/webauthnOpenAPI
1Kosmos · FIDO2 / WebAuthn

WebAuthn API

FIDO2 / WebAuthn passkey registration and authentication.

The WebAuthn service implements FIDO2 passkey registration and authentication. Register authenticators, run assertion ceremonies, link and de-register passkeys, and read authenticator vendor metadata — standards-based, phishing-resistant login.

21 endpoints

across 11 resource groups.

ECDSA-signed

every request is signed with your key pair.

JSON over HTTPS

predictable REST, conventional status codes.

Reference

Base URL

All WebAuthn endpoints are relative to your environment host. Examples on this page use the 1Kosmos pilot environment — swap in your production root when you go live.

Pilot /webauthn

Content type

Requests and responses use application/json.

GET/webauthn/healthz
curl -X GET '/webauthn/healthz' \
  -H 'privateKey: YOUR_PRIVATE_KEY' \
  -H 'publicKey: YOUR_PUBLIC_KEY' \
  -H 'licensekey: YOUR_LICENSE_KEY'
Security

Authentication

WebAuthn uses ECDSA key-pair authentication. Each request carries your credentials as HTTP headers; verification-grade calls additionally sign the request body. Retrieve the system signing key from /publickeys.

Credentials
privateKeyAuthentication headerheader
publicKeyAuthentication headerheader
licensekeyAuthentication headerheader
GET/webauthn/healthz
cURL
Node.js
Python
curl -X GET '/webauthn/healthz' \
  -H 'privateKey: YOUR_PRIVATE_KEY' \
  -H 'publicKey: YOUR_PUBLIC_KEY' \
  -H 'licensekey: YOUR_LICENSE_KEY'
Reference

Errors

WebAuthn uses conventional HTTP status codes: 2xx success, 4xx a problem with the request, 5xx a service-side error.

StatusMeaningDescription
200 / 204OKThe request succeeded.
400Bad RequestValidation failed.
401UnauthorizedMissing or invalid credentials.
403ForbiddenAuthenticated, but not permitted.
404Not FoundThe resource does not exist.
500Server ErrorSomething went wrong on our side.
4XXerror response
{
  "statusCode": 400,
  "error": "Bad Request",
  "message": "Validation error"
}
WebAuthn

Web Auth N Linking and De-Registration

Web Auth N Linking and De-Registration endpoints.

DELETE/unregister/community/{communityId}/did_or_fidokey/{identifier}

/unregister/community/{communityId}/did_or_fidokey/{identifier}

Path parameters
NameTypeDescription
communityIdrequiredstring
identifierrequiredstring
DELETE/webauthn/unregister/community/{communityId}/did_or_fidokey/{identifier}
cURL
Node.js
Python
curl -X DELETE '/webauthn/unregister/community/<communityId>/did_or_fidokey/<identifier>' \
  -H 'licensekey: YOUR_LICENSE_KEY' \
  -H 'publicKey: YOUR_PUBLIC_KEY' \
  -H 'privateKey: YOUR_PRIVATE_KEY'
RESPONSE
400
200
Bad Request
// no response body
DELETE/unregister/community/{communityId}/user/{userId}/did_or_fidokey/{identifier}

/unregister/community/{communityId}/user/{userId}/did_or_fidokey/{identifier}

Path parameters
NameTypeDescription
communityIdrequiredstring
userIdrequiredstring
identifierrequiredstring
DELETE/webauthn/unregister/community/{communityId}/user/{userId}/did_or_fidokey/{identifier}
cURL
Node.js
Python
curl -X DELETE '/webauthn/unregister/community/<communityId>/user/<userId>/did_or_fidokey/<identifier>' \
  -H 'licensekey: YOUR_LICENSE_KEY' \
  -H 'publicKey: YOUR_PUBLIC_KEY' \
  -H 'privateKey: YOUR_PRIVATE_KEY'
RESPONSE
400
200
Bad Request
// no response body
WebAuthn

Vendor Meta Data

Vendor Meta Data endpoints.

POST/vendormetadata/{communityId}/fetch

Fetch vendor metadata records that match communityId (Note: load all records matching special communityId 'any' need system or service license)

Path parameters
NameTypeDescription
communityIdrequiredstring
Headers
NameTypeDescription
licensekeyrequiredstring
Request body

If aaguids is not given or empty, the fetch all records.

FieldTypeDescription
aaguidsarray<string>
POST/webauthn/vendormetadata/{communityId}/fetch
cURL
Node.js
Python
curl -X POST '/webauthn/vendormetadata/<communityId>/fetch' \
  -H 'licensekey: YOUR_LICENSE_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"aaguids": ["string"]}'
RESPONSE
400
200
Bad Request
// no response body
PUT/vendormetadata/{communityId}

Create vendor metadata record)

Path parameters
NameTypeDescription
communityIdrequiredstring
Headers
NameTypeDescription
licensekeyrequiredstring
Request body

Create vendor metadata record

FieldTypeDescription
aaguidrequiredstring
metadatarequiredstring
namerequiredstring
disabledboolean
updatedByrequiredstring
PUT/webauthn/vendormetadata/{communityId}
cURL
Node.js
Python
curl -X PUT '/webauthn/vendormetadata/<communityId>' \
  -H 'licensekey: YOUR_LICENSE_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"aaguid": "string", "metadata": "string", "name": "string", "disabled": true, "updatedBy": "string"}'
RESPONSE
400
200
Bad Request
// no response body
PATCH/vendormetadata/{communityId}/aaguid/{aaguid}

Update vendor metadata record)

Path parameters
NameTypeDescription
communityIdrequiredstring
aaguidrequiredstring
Headers
NameTypeDescription
licensekeyrequiredstring
Request body

Update vendor metadata record

FieldTypeDescription
metadatastring
namestring
disabledboolean
updatedByrequiredstring
PATCH/webauthn/vendormetadata/{communityId}/aaguid/{aaguid}
cURL
Node.js
Python
curl -X PATCH '/webauthn/vendormetadata/<communityId>/aaguid/<aaguid>' \
  -H 'licensekey: YOUR_LICENSE_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"metadata": "string", "name": "string", "disabled": true, "updatedBy": "string"}'
RESPONSE
400
200
Bad Request
// no response body
WebAuthn

Fido Auth N Authenticator

Fido Auth N Authenticator endpoints.

POST/assertion/options

/assertion/options

Request Body

Please add ECDSA encrypted string of below json in request

{

"dns": string

"username": string

"displayName": string

"communityId": string

"tenantId": string

}

Request body
FieldTypeDescription
datastring
POST/webauthn/assertion/options
cURL
Node.js
Python
curl -X POST '/webauthn/assertion/options' \
  -H 'licensekey: YOUR_LICENSE_KEY' \
  -H 'publicKey: YOUR_PUBLIC_KEY' \
  -H 'privateKey: YOUR_PRIVATE_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"data": "string"}'
RESPONSE
400
200
Bad Request
// no response body
POST/assertion/result

/assertion/result

Request Body

Please add ECDSA encrypted string of below json in request

{

"rawId": string

"getClientExtensionResults": {}

"id": string

"type": string

"dns": string

"communityId": string

"tenantId": string

"response": {

"authenticatorData": {}

"signature": {}

"userHandle": {}

"clientDataJSON": {}

}

}

Request body
FieldTypeDescription
datastring
POST/webauthn/assertion/result
cURL
Node.js
Python
curl -X POST '/webauthn/assertion/result' \
  -H 'licensekey: YOUR_LICENSE_KEY' \
  -H 'publicKey: YOUR_PUBLIC_KEY' \
  -H 'privateKey: YOUR_PRIVATE_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"data": "string"}'
RESPONSE
400
200
Bad Request
// no response body
WebAuthn

Fido Registration

Fido Registration endpoints.

POST/attestation/options

/attestation/options

Request Body

Please add ECDSA encrypted string of below json in request

{

"dns": string

"username": string

"displayName": string

"communityId": string

"tenantId": string

"attestation": string

}

Request body
FieldTypeDescription
datastring
POST/webauthn/attestation/options
cURL
Node.js
Python
curl -X POST '/webauthn/attestation/options' \
  -H 'licensekey: YOUR_LICENSE_KEY' \
  -H 'publicKey: YOUR_PUBLIC_KEY' \
  -H 'privateKey: YOUR_PRIVATE_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"data": "string"}'
RESPONSE
400
200
Bad Request
// no response body
POST/attestation/result

/attestation/result

Request Body

Please add ECDSA encrypted string of below json in request

{

"rawId": string

"authenticatorAttachment": string

"getClientExtensionResults": {}

"id": string

"type": string

"dns": string

"communityId": string

"tenantId": string

"response": {

"getAuthenticatorData": {}

"getPublicKey": {}

"getPublicKeyAlgorithm": {}

"getTransports": {}

"clientDataJSON": string

}

}

Request body
FieldTypeDescription
datastring
POST/webauthn/attestation/result
cURL
Node.js
Python
curl -X POST '/webauthn/attestation/result' \
  -H 'licensekey: YOUR_LICENSE_KEY' \
  -H 'publicKey: YOUR_PUBLIC_KEY' \
  -H 'privateKey: YOUR_PRIVATE_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"data": "string"}'
RESPONSE
400
200
201
Bad Request
// no response body
WebAuthn

U 1 Fido Auth N Authenticator

U 1 Fido Auth N Authenticator endpoints.

POST/u1/assertion/options

/u1/assertion/options

Header parameter can be passed without ecdsa encryption

Headers
NameTypeDescription
licensekeyrequiredstring
Request body
FieldTypeDescription
usernamestring
displayNamestring
dnsstring
communityIdstring
tenantIdstring
dguidstring
POST/webauthn/u1/assertion/options
cURL
Node.js
Python
curl -X POST '/webauthn/u1/assertion/options' \
  -H 'licensekey: YOUR_LICENSE_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"username": "string", "displayName": "string", "dns": "string", "communityId": "string", "tenantId": "string", "dguid": "string"}'
RESPONSE
400
200
Bad Request
// no response body
POST/u1/assertion/result

/u1/assertion/result

Header parameter can be passed without ecdsa encryption

Headers
NameTypeDescription
sessionInforequiredstring
licensekeyrequiredstring
Request body
FieldTypeDescription
rawIdstring
responseobject
getClientExtensionResultsobject
idstring
typestring
tenantIdstring
communityIdstring
dnsstring
POST/webauthn/u1/assertion/result
cURL
Node.js
Python
curl -X POST '/webauthn/u1/assertion/result' \
  -H 'sessionInfo: <value>' \
  -H 'licensekey: YOUR_LICENSE_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"rawId": "string", "response": {"authenticatorData": "string", "signature": "string", "userHandle": "string", "clientDataJSON": "string"}, "getClientExtensionResults": {}, "id": "string", "type": "string", "tenantId": "string", "communityId": "string", "dns": "string"}'
RESPONSE
400
200
Bad Request
// no response body
WebAuthn

U 1 Fido Registration

U 1 Fido Registration endpoints.

POST/u1/attestation/options

/u1/attestation/options

Header parameter can be passed without ecdsa encryption

Headers
NameTypeDescription
licensekeyrequiredstring
Request body
FieldTypeDescription
dnsstring
usernamestring
displayNamestring
communityIdstring
tenantIdstring
attestationstring
POST/webauthn/u1/attestation/options
cURL
Node.js
Python
curl -X POST '/webauthn/u1/attestation/options' \
  -H 'licensekey: YOUR_LICENSE_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"dns": "string", "username": "string", "displayName": "string", "communityId": "string", "tenantId": "string", "attestation": "string"}'
RESPONSE
400
200
Bad Request
// no response body
POST/u1/attestation/result

/u1/attestation/result

Header parameter can be passed without ecdsa encryption

Headers
NameTypeDescription
sessionInforequiredstring
licensekeyrequiredstring
Request body
FieldTypeDescription
rawIdstring
responseobject
authenticatorAttachmentstring
getClientExtensionResultsobject
idstring
typestring
dnsstring
communityIdstring
tenantIdstring
POST/webauthn/u1/attestation/result
cURL
Node.js
Python
curl -X POST '/webauthn/u1/attestation/result' \
  -H 'sessionInfo: <value>' \
  -H 'licensekey: YOUR_LICENSE_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"rawId": "string", "response": {"attestationObject": "string", "getAuthenticatorData": {}, "getPublicKey": {}, "getPublicKeyAlgorithm": {}, "getTransports": {}, "clientDataJSON": "string"}, "authenticatorAttachment": "string", "getClientExtensionResults": {}, "id": "string", "type": "string", "dns": "string", "communityId": "string", "tenantId": "string"}'
RESPONSE
400
200
201
Bad Request
// no response body
WebAuthn

U 1 Web Auth N Linking

U 1 Web Auth N Linking endpoints.

WebAuthn

Environment

Environment endpoints.

GET/environment

Fetch Environment

Headers
NameTypeDescription
licensekeystring
GET/webauthn/environment
cURL
Node.js
Python
curl -X GET '/webauthn/environment' \
  -H 'licensekey: YOUR_LICENSE_KEY'
RESPONSE
400
200
Bad Request
// no response body
WebAuthn

Healthz

Healthz endpoints.

GET/healthz

This is Health endpoint

GET/webauthn/healthz
cURL
Node.js
Python
curl -X GET '/webauthn/healthz' \
  -H 'privateKey: YOUR_PRIVATE_KEY' \
  -H 'publicKey: YOUR_PUBLIC_KEY' \
  -H 'licensekey: YOUR_LICENSE_KEY'
RESPONSE
400
200
Bad Request
// no response body
WebAuthn

Public Key

Public Key endpoints.

GET/publickeys

/publickeys

GET/webauthn/publickeys
cURL
Node.js
Python
curl -X GET '/webauthn/publickeys' \
  -H 'privateKey: YOUR_PRIVATE_KEY' \
  -H 'publicKey: YOUR_PUBLIC_KEY' \
  -H 'licensekey: YOUR_LICENSE_KEY'
RESPONSE
400
200
Bad Request
// no response body
WebAuthn

Service Directory

Service Directory endpoints.

GET/sd

Get all service directories.

Returns all service directories.

GET/webauthn/sd
cURL
Node.js
Python
curl -X GET '/webauthn/sd' \
  -H 'privateKey: YOUR_PRIVATE_KEY' \
  -H 'publicKey: YOUR_PUBLIC_KEY' \
  -H 'licensekey: YOUR_LICENSE_KEY'
RESPONSE
400
200
Bad Request
// no response body
© 2026 1Kosmos · Web AuthN v1.0.0Generated from the OpenAPI spec · webauthn.json