nimeet Docs
中文

Console BFF

Console session, projects, keys, services, members and audit.

Generated from the public REST API definitions

Version v1.1.0 · Updated 2026-10-26 · revision 1

Group overview

Generated at build time from the public REST API definition: tag console, 80 operations (out of 189). For authentication, envelope and pagination conventions see REST API overview.

MethodPathSummary
POST/console/auth/loginConsole login
POST/console/auth/logoutConsole logout
POST/console/auth/mfaComplete the MFA challenge
GET/console/auth/sso/authorizeStart an OIDC authorization-code flow
POST/console/auth/sso/exchangeExchange an OIDC authorization code for a session
GET/console/auth/sso/statusReport SSO availability
GET/console/billingBilling settlement overview
GET/console/billing/invoices/{invoiceId}/csvDownload an invoice as CSV
POST/console/billing/invoices/{invoiceId}/paySettle an invoice with the sandbox provider
GET/console/billing/plansList subscription plans
POST/console/billing/subscriptionsChange the subscription plan
DELETE/console/billing/subscriptionsCancel the subscription
PUT/console/billing/tax-profileSave the tax profile
POST/console/billing/topupsRecord a sandbox top-up
GET/console/extensionsList the built-in extension registry
GET/console/meCurrent account with projects
GET/console/notificationsNotification preferences, inbox summary and channels
GET/console/notifications/channelsDelivery channel availability
GET/console/notifications/inboxList the in-app inbox
POST/console/notifications/inbox/read-allMark every inbox message read
POST/console/notifications/inbox/{messageId}/readMark one inbox message read or unread
PUT/console/notifications/preferencesUpdate notification preferences
POST/console/notifications/testSend a test notification
GET/console/organisationOrganisation overview
PATCH/console/organisationRename the organisation
POST/console/organisation/membersInvite an organisation member
DELETE/console/organisation/members/{accountId}Remove an organisation member
POST/console/organisation/projects/{projectId}/transferTransfer project ownership
GET/console/projectsList my projects
POST/console/projectsCreate a project (returns secrets once)
GET/console/projects/capProject cap for the account
GET/console/projects/{projectId}Project detail
PATCH/console/projects/{projectId}Update project
GET/console/projects/{projectId}/alertsList usage alert rules and deliveries
POST/console/projects/{projectId}/alertsCreate a usage alert rule
POST/console/projects/{projectId}/alerts/evaluateEvaluate every alert rule of the project
PATCH/console/projects/{projectId}/alerts/{ruleId}Update a usage alert rule
DELETE/console/projects/{projectId}/alerts/{ruleId}Delete a usage alert rule
POST/console/projects/{projectId}/alerts/{ruleId}/evaluateEvaluate one alert rule
GET/console/projects/{projectId}/auditAudit trail
GET/console/projects/{projectId}/certificatesList the App Certificate table
POST/console/projects/{projectId}/certificatesAdd a secondary App Certificate
DELETE/console/projects/{projectId}/certificates/{certificateId}Delete a certificate row
POST/console/projects/{projectId}/certificates/{certificateId}/disableDisable a certificate
POST/console/projects/{projectId}/certificates/{certificateId}/promotePromote a certificate to primary
GET/console/projects/{projectId}/collaboratorsList collaborators
POST/console/projects/{projectId}/collaboratorsAdd a collaborator
PATCH/console/projects/{projectId}/collaborators/{accountId}Assign a built-in or custom role to a member
DELETE/console/projects/{projectId}/collaborators/{accountId}Remove a collaborator
GET/console/projects/{projectId}/extensionsList project extensions
DELETE/console/projects/{projectId}/extensions/{extensionId}Uninstall an extension
POST/console/projects/{projectId}/extensions/{extensionId}/enableEnable or disable an installed extension
POST/console/projects/{projectId}/extensions/{extensionId}/installInstall a built-in extension
POST/console/projects/{projectId}/extensions/{extensionId}/runRun a built-in extension
POST/console/projects/{projectId}/keys/rotateRotate customer secret / app certificate
GET/console/projects/{projectId}/overviewDashboard overview
GET/console/projects/{projectId}/rolesList built-in and custom roles
POST/console/projects/{projectId}/rolesCreate a custom role
PATCH/console/projects/{projectId}/roles/{roleId}Update a custom role
DELETE/console/projects/{projectId}/roles/{roleId}Delete a custom role
POST/console/projects/{projectId}/servicesActivate/deactivate services
GET/console/projects/{projectId}/statements/{period}Billing statement for one month (JSON envelope or CSV)
POST/console/projects/{projectId}/tokenToken generator
GET/console/projects/{projectId}/tokens/verifyVerify a token from the console
GET/console/projects/{projectId}/webhookGet webhook config
PUT/console/projects/{projectId}/webhookConfigure webhook
DELETE/console/projects/{projectId}/webhookDelete webhook config
GET/console/projects/{projectId}/webhook/deliveriesDelivery log
POST/console/projects/{projectId}/webhook/deliveries/{deliveryId}/replayReplay a delivery
GET/console/projects/{projectId}/xla/monthlyXLA monthly report (one project)
GET/console/securityAccount security overview
POST/console/security/mfa/disableDisable MFA
POST/console/security/mfa/enrollStart TOTP enrollment
POST/console/security/mfa/recovery-codesRegenerate recovery codes
POST/console/security/mfa/verifyVerify the TOTP code and enable MFA
POST/console/security/passwordChange the console password
PUT/console/security/ssoConfigure the OIDC connection
POST/console/security/sso/testRun OIDC discovery against the configured issuer
GET/console/statusRegional service status (XLA)
GET/console/xla/monthlyXLA monthly report (account-wide)

Operation details

POST /console/auth/login

Console login

Authentication: no credentials required

Request body

FieldTypeRequiredDescription
emailstringisformat email
passwordstringis
json
{
  "email": "owner@ni-meet.local",
  "password": "ni-meet-demo"
}

Response

Status codesDescription / schema
200oneOf: a session (direct sign-in) or an MFA challenge — narrow on the presence of token — any
401Missing/invalid credentials — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/auth/login" \
  -H "Content-Type: application/json" \
  -d '{"email":"owner@ni-meet.local","password":"ni-meet-demo"}'

POST /console/auth/logout

Console logout

Authentication: no credentials required

Response

Status codesDescription / schema
204logged out

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/auth/logout"

POST /console/auth/mfa

Complete the MFA challenge

Exchanges the short-lived challenge token plus a TOTP/recovery code for a session (#29).

Authentication: no credentials required

Response

Status codesDescription / schema
200the session minted after the second factor verified — object{ token, expiresAt, account }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/auth/mfa"

GET /console/auth/sso/authorize

Start an OIDC authorization-code flow

Returns the authorization URL and the single-use state (#29).

Authentication: no credentials required

Response

Status codesDescription / schema
200the authorize URL, the CSRF state and the discovery endpoints — object{ authorizeUrl, state, issuer, discovery }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/auth/sso/authorize"

POST /console/auth/sso/exchange

Exchange an OIDC authorization code for a session

Discovery + token + userinfo against the configured issuer (#29).

Authentication: no credentials required

Response

Status codesDescription / schema
200the session minted after the SSO code exchanged — object{ token, expiresAt, account }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/auth/sso/exchange"

GET /console/auth/sso/status

Report SSO availability

Issuers with an enabled OIDC connection (#29).

Authentication: no credentials required

Response

Status codesDescription / schema
200whether any organisation exposes SSO, the redirect URI and the local stub state — object{ available, issuers, redirectUri, stub }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/auth/sso/status"

GET /console/billing

Billing settlement overview

Invoices, top-ups, plans, tax profile and the sandbox provider state (#15).

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200provider capability, plans, subscription, invoices, top-ups, charges, tax profile and totals — BillingOverview
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/billing" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/billing/invoices/{invoiceId}/csv

Download an invoice as CSV

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
invoiceIdpathisstring

Response

Status codesDescription / schema
200the invoice as CSV (RFC 4180): a header row followed by one row per line item; delivered as a file download
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/billing/invoices/invoiceId/csv" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/billing/invoices/{invoiceId}/pay

Settle an invoice with the sandbox provider

Records a simulated charge; no money moves (#15).

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
invoiceIdpathisstring

Response

Status codesDescription / schema
200the settled invoice, the (simulated) charge and the provider disclaimer — object{ invoice, charge, provider, disclaimer }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/billing/invoices/invoiceId/pay" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/billing/plans

List subscription plans

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200the price list the deployment prices against — object{ plans }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/billing/plans" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/billing/subscriptions

Change the subscription plan

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200the active subscription — object{ subscription }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/billing/subscriptions" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

DELETE /console/billing/subscriptions

Cancel the subscription

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200the cancelled subscription — object{ subscription }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X DELETE "$NIMEET_API_BASE/console/billing/subscriptions" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

PUT /console/billing/tax-profile

Save the tax profile

Stored unverified: no tax authority is called (#15).

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200the stored tax profile (never validated against an authority) — object{ taxProfile }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X PUT "$NIMEET_API_BASE/console/billing/tax-profile" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/billing/topups

Record a sandbox top-up

Records a sandbox top-up: no real money moves. The amount is validated in integer cents, so a third decimal place is rejected rather than rounded.

Authentication: console session (Bearer)

Request body

FieldTypeRequiredDescription
amountanyistop-up amount in major units (e.g. 12.34 or "12.34"). Money wire migration stage 1 (ADR-0016 §6): a JSON number is accepted during the compatibility window, a decimal string is the forward-compatible form, and stage 3 will accept only the string. At most 2 decimal places — a third decimal place is rejected with invalid_parameter, never rounded.
notestringlength 0..200
json
{
  "amount": "string",
  "note": "string"
}

Response

Status codesDescription / schema
201the sandbox top-up, its charge and the updated totals — object{ topUp, charge, totals }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/billing/topups" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION" \
  -H "Content-Type: application/json" \
  -d '{"amount":"string","note":"string"}'

GET /console/extensions

List the built-in extension registry

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200built-in extension registry — this deployment distributes no third-party packages — object{ extensions, note }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/extensions" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/me

Current account with projects

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200current account, projects, usage, roles, organisation, quota, notifications, security — object

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/me" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/notifications

Notification preferences, inbox summary and channels

Includes the honest email availability state (#30).

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200notification preferences, event catalogue, channel availability, unread count and the latest 20 inbox messages — object{ preferences, catalogue, channels, unread, latest }

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/notifications" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/notifications/channels

Delivery channel availability

smtp_not_configured is reported explicitly (#30).

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200inbox/email channel availability and the reason each one is on or off — object{ inbox, email }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/notifications/channels" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/notifications/inbox

List the in-app inbox

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200inbox messages plus the total unread count — object{ messages, unread }

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/notifications/inbox" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/notifications/inbox/read-all

Mark every inbox message read

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200how many messages were marked read — object{ updated }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/notifications/inbox/read-all" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/notifications/inbox/{messageId}/read

Mark one inbox message read or unread

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
messageIdpathisstring

Response

Status codesDescription / schema
200the message with its new read state — object{ message }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/notifications/inbox/messageId/read" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

PUT /console/notifications/preferences

Update notification preferences

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200the stored preferences plus the current channel availability — object{ preferences, channels }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X PUT "$NIMEET_API_BASE/console/notifications/preferences" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/notifications/test

Send a test notification

Delivery records state delivered/suppressed/failed per channel (#30).

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200one delivery row per channel plus the channel availability — object{ deliveries, channels }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/notifications/test" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/organisation

Organisation overview

Members, projects, SSO summary and the account project cap (#28).

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200organisation, caller role, members, projects, SSO view and the project cap — object{ organisation, callerRole, members, projects, sso, projectCap }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/organisation" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

PATCH /console/organisation

Rename the organisation

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200the organisation after the rename — object{ organisation, callerRole, members, projects, sso, projectCap }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X PATCH "$NIMEET_API_BASE/console/organisation" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/organisation/members

Invite an organisation member

No outbound email; the initial password is handed over out-of-band (#28).

Authentication: console session (Bearer)

Response

Status codesDescription / schema
201the invited member, whether a password was set and whether a new account was created — object{ member, invitePasswordSet, accountCreated }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/organisation/members" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

DELETE /console/organisation/members/{accountId}

Remove an organisation member

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
accountIdpathisstringlength 0..128

Response

Status codesDescription / schema
204member removed
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X DELETE "$NIMEET_API_BASE/console/organisation/members/$ACCOUNT_ID" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/organisation/projects/{projectId}/transfer

Transfer project ownership

Target becomes owner, caller is demoted to admin (#28).

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Response

Status codesDescription / schema
200the project after the ownership transfer — object{ project }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error
404Resource not found — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/organisation/projects/$PROJECT_ID/transfer" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/projects

List my projects

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200projects visible to the caller — object{ projects }

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/projects" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/projects

Create a project (returns secrets once)

Authentication: console session (Bearer)

Request body

FieldTypeRequiredDescription
namestringis
authModeenum(token | appid)
tokenTtlSecondsinteger
privilegeTtlSecondsinteger
servicesobject{ recording, streaming, analytics }
quotasobject{ recordingConcurrent, streamingConcurrent, maxChannels }
json
{
  "name": "demo-project",
  "services": {
    "recording": true,
    "streaming": true
  }
}

Response

Status codesDescription / schema
201created project; appCertificate and customerSecret are returned once — object{ project, appCertificate, customerSecret }

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/projects" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION" \
  -H "Content-Type: application/json" \
  -d '{"name":"demo-project","services":{"recording":true,"streaming":true}}'

GET /console/projects/cap

Project cap for the account

{ limit, used, remaining, enforced } (#34).

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200project count cap and current usage — object{ limit, used, remaining, enforced }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/projects/cap" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/projects/{projectId}

Project detail

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Response

Status codesDescription / schema
200project detail with webhook, role, credentials metadata, rest keys, rotation and quota — object

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/projects/$PROJECT_ID" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

PATCH /console/projects/{projectId}

Update project

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Response

Status codesDescription / schema
200the updated project — object{ project }

Example call

bash
curl -s -X PATCH "$NIMEET_API_BASE/console/projects/$PROJECT_ID" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/projects/{projectId}/alerts

List usage alert rules and deliveries

Rules, delivery log and the metric/channel catalogue (#33).

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Response

Status codesDescription / schema
200alert rules, delivery log, the metric/channel catalogue and the project region — object{ rules, deliveries, catalogue, projectRegion }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/projects/$PROJECT_ID/alerts" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/projects/{projectId}/alerts

Create a usage alert rule

Threshold, comparison, evaluation window and delivery channels (#33).

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Response

Status codesDescription / schema
201the created rule — object{ rule }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/projects/$PROJECT_ID/alerts" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/projects/{projectId}/alerts/evaluate

Evaluate every alert rule of the project

Deterministic evaluation used by the console and the acceptance tests (#33).

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Response

Status codesDescription / schema
200the evaluation report and the rule snapshot after evaluation — object{ report, rules }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/projects/$PROJECT_ID/alerts/evaluate" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

PATCH /console/projects/{projectId}/alerts/{ruleId}

Update a usage alert rule

Partial update (#33).

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128
ruleIdpathisstring

Response

Status codesDescription / schema
200the updated rule — object{ rule }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X PATCH "$NIMEET_API_BASE/console/projects/$PROJECT_ID/alerts/ruleId" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

DELETE /console/projects/{projectId}/alerts/{ruleId}

Delete a usage alert rule

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128
ruleIdpathisstring

Response

Status codesDescription / schema
200the id of the deleted rule — object{ deleted }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X DELETE "$NIMEET_API_BASE/console/projects/$PROJECT_ID/alerts/ruleId" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/projects/{projectId}/alerts/{ruleId}/evaluate

Evaluate one alert rule

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128
ruleIdpathisstring

Response

Status codesDescription / schema
200the evaluation report and the rule snapshot after evaluation — object{ report, rules }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/projects/$PROJECT_ID/alerts/ruleId/evaluate" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/projects/{projectId}/audit

Audit trail

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Response

Status codesDescription / schema
200audit entries; verification and chain appear when ?verify=1 — object{ total, entries, verification, chain }

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/projects/$PROJECT_ID/audit" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/projects/{projectId}/certificates

List the App Certificate table

Primary/secondary/disabled rows with fingerprints; secrets are never listed (#7).

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Response

Status codesDescription / schema
200certificate rows (fingerprint only — never the secret), rotation state, legend and token-validation note — object{ certificates, rotation, legend, tokenValidation }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/projects/$PROJECT_ID/certificates" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/projects/{projectId}/certificates

Add a secondary App Certificate

Returns the certificate material exactly once (#7).

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Response

Status codesDescription / schema
201the new secondary certificate; secret is returned exactly once — object{ certificate, notice }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/projects/$PROJECT_ID/certificates" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

DELETE /console/projects/{projectId}/certificates/{certificateId}

Delete a certificate row

Primary cannot be deleted; a disabled or secondary row can (#7).

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128
certificateIdpathisstring

Response

Status codesDescription / schema
200whether the certificate was removed, plus a notice — object{ removed, notice }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X DELETE "$NIMEET_API_BASE/console/projects/$PROJECT_ID/certificates/certificateId" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/projects/{projectId}/certificates/{certificateId}/disable

Disable a certificate

Tokens signed by it stop validating immediately (#7).

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128
certificateIdpathisstring

Response

Status codesDescription / schema
200the disabled certificate and a notice — object{ certificate, notice }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/projects/$PROJECT_ID/certificates/certificateId/disable" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/projects/{projectId}/certificates/{certificateId}/promote

Promote a certificate to primary

The previous primary keeps verifying during the overlap window (#7).

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128
certificateIdpathisstring

Response

Status codesDescription / schema
200the promoted certificate, the previous primary and a notice — object{ certificate, previous, notice }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/projects/$PROJECT_ID/certificates/certificateId/promote" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/projects/{projectId}/collaborators

List collaborators

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Response

Status codesDescription / schema
200collaborators, caller role, role matrix and custom roles — object{ collaborators, caller, roles, customRoles, permissions, inviteableRoles }

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/projects/$PROJECT_ID/collaborators" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/projects/{projectId}/collaborators

Add a collaborator

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Request body

FieldTypeRequiredDescription
emailstringis
namestring
roleenum(admin | developer | viewer)is
json
{
  "email": "dev@example.com",
  "name": "Dev",
  "role": "developer"
}

Response

Status codesDescription / schema
201the new collaborator plus whether an initial password was set — object

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/projects/$PROJECT_ID/collaborators" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION" \
  -H "Content-Type: application/json" \
  -d '{"email":"dev@example.com","name":"Dev","role":"developer"}'

PATCH /console/projects/{projectId}/collaborators/{accountId}

Assign a built-in or custom role to a member

Custom role assignment overrides the built-in role permissions (#26).

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128
accountIdpathisstringlength 0..128

Response

Status codesDescription / schema
200the collaborator after the role change — object{ collaborator }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X PATCH "$NIMEET_API_BASE/console/projects/$PROJECT_ID/collaborators/$ACCOUNT_ID" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

DELETE /console/projects/{projectId}/collaborators/{accountId}

Remove a collaborator

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128
accountIdpathisstringlength 0..128

Response

Status codesDescription / schema
204removed

Example call

bash
curl -s -X DELETE "$NIMEET_API_BASE/console/projects/$PROJECT_ID/collaborators/$ACCOUNT_ID" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/projects/{projectId}/extensions

List project extensions

Installed built-in extensions with enablement and run counters (#31).

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Response

Status codesDescription / schema
200extension catalogue with this project install state — object{ extensions, note }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/projects/$PROJECT_ID/extensions" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

DELETE /console/projects/{projectId}/extensions/{extensionId}

Uninstall an extension

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128
extensionIdpathisstring

Response

Status codesDescription / schema
204the install record was removed
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X DELETE "$NIMEET_API_BASE/console/projects/$PROJECT_ID/extensions/extensionId" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/projects/{projectId}/extensions/{extensionId}/enable

Enable or disable an installed extension

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128
extensionIdpathisstring

Response

Status codesDescription / schema
200the project and the updated install record — object{ project, install }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/projects/$PROJECT_ID/extensions/extensionId/enable" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/projects/{projectId}/extensions/{extensionId}/install

Install a built-in extension

Config is validated against the manifest schema (#31).

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128
extensionIdpathisstring

Response

Status codesDescription / schema
201the install record and the extension manifest — object{ install, extension }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/projects/$PROJECT_ID/extensions/extensionId/install" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/projects/{projectId}/extensions/{extensionId}/run

Run a built-in extension

Produces a downloadable artefact with a sha256 (#31).

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128
extensionIdpathisstring

Response

Status codesDescription / schema
200the run artifact (text output, checksum, truncation flag) — object{ artifact }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/projects/$PROJECT_ID/extensions/extensionId/run" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/projects/{projectId}/keys/rotate

Rotate customer secret / app certificate

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Request body

FieldTypeRequiredDescription
scopeenum(customer | certificate | all)default "all"
json
{
  "scope": "all"
}

Response

Status codesDescription / schema
200new key material (secrets returned once) and the resulting rotation state — object{ customerId, customerSecret, appCertificate, previousCertificateAcceptedUntil, rotation, notice }

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/projects/$PROJECT_ID/keys/rotate" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION" \
  -H "Content-Type: application/json" \
  -d '{"scope":"all"}'

GET /console/projects/{projectId}/overview

Dashboard overview

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Response

Status codesDescription / schema
200dashboard overview: project, role, permissions, live counts, 24h usage, quality snapshot, service counters, webhook health, billing block and scheduler stats — object

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/projects/$PROJECT_ID/overview" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/projects/{projectId}/roles

List built-in and custom roles

Includes the permission catalogue and member assignments (#26).

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Response

Status codesDescription / schema
200built-in and custom role views, permission catalogue, role matrix, caller, members and inviteable roles — object
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/projects/$PROJECT_ID/roles" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/projects/{projectId}/roles

Create a custom role

Named permission set scoped to the project (#26).

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Response

Status codesDescription / schema
201the created custom role — object{ role }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/projects/$PROJECT_ID/roles" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

PATCH /console/projects/{projectId}/roles/{roleId}

Update a custom role

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128
roleIdpathisstring

Response

Status codesDescription / schema
200the updated custom role — object{ role }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X PATCH "$NIMEET_API_BASE/console/projects/$PROJECT_ID/roles/roleId" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

DELETE /console/projects/{projectId}/roles/{roleId}

Delete a custom role

Refused while the role is assigned (#26).

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128
roleIdpathisstring

Response

Status codesDescription / schema
200the id and name of the deleted role — object{ deleted }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X DELETE "$NIMEET_API_BASE/console/projects/$PROJECT_ID/roles/roleId" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/projects/{projectId}/services

Activate/deactivate services

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Response

Status codesDescription / schema
200the project with its services switched — object{ project }

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/projects/$PROJECT_ID/services" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/projects/{projectId}/statements/{period}

Billing statement for one month (JSON envelope or CSV)

Split out of /overview (ADR-0005 §5.3.3). :period is YYYY-MM or current; ?format=csv returns text/csv. Requires billing:read.

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128
periodpathisstringpattern ^(\d{4}-\d{2}|current)$
formatqueryenum(json | csv)

Response

Status codesDescription / schema
200the statement envelope (json) or the statement as CSV (text/csv) — object{ exportedAt, checksumAlgorithm, statement }

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/projects/$PROJECT_ID/statements/period?format=json" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/projects/{projectId}/token

Token generator

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Response

Status codesDescription / schema
200issued token — TokenIssueResponse

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/projects/$PROJECT_ID/token" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/projects/{projectId}/tokens/verify

Verify a token from the console

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128
tokenqueryisstring

Response

Status codesDescription / schema
200oneOf: { valid: true, payload } or { valid: false, error } — any

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/projects/$PROJECT_ID/tokens/verify?token=%24RTC_TOKEN" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/projects/{projectId}/webhook

Get webhook config

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Response

Status codesDescription / schema
200webhook endpoint (secret masked) and the subscribable event names — object{ configured, endpoint, availableEvents }

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/projects/$PROJECT_ID/webhook" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

PUT /console/projects/{projectId}/webhook

Configure webhook

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Response

Status codesDescription / schema
200the endpoint after configuration; a null endpoint leaves only configured: false — object{ configured, url, events, enabled }

Example call

bash
curl -s -X PUT "$NIMEET_API_BASE/console/projects/$PROJECT_ID/webhook" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

DELETE /console/projects/{projectId}/webhook

Delete webhook config

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Response

Status codesDescription / schema
200the endpoint is gone — object{ configured }

Example call

bash
curl -s -X DELETE "$NIMEET_API_BASE/console/projects/$PROJECT_ID/webhook" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/projects/{projectId}/webhook/deliveries

Delivery log

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128
statequerystring
limitqueryinteger

Response

Status codesDescription / schema
200webhook delivery log — object{ total, deliveries }

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/projects/$PROJECT_ID/webhook/deliveries?state=running&limit=50" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/projects/{projectId}/webhook/deliveries/{deliveryId}/replay

Replay a delivery

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128
deliveryIdpathisstringlength 0..128

Response

Status codesDescription / schema
200the delivery after the replay attempt — WebhookDelivery

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/projects/$PROJECT_ID/webhook/deliveries/$DELIVERY_ID/replay" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/projects/{projectId}/xla/monthly

XLA monthly report (one project)

Same monthly aggregates scoped to one project (#32 companion).

Authentication: console session (Bearer)

Parameters

NameLocationRequiredTypeDescription
projectIdpathisstringlength 0..128

Response

Status codesDescription / schema
200the monthly XLA report scoped to one project — XlaMonthReport
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/projects/$PROJECT_ID/xla/monthly" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/security

Account security overview

MFA state, password policy, SSO config and recent security events (#29).

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200MFA/password/SSO state, the security event feed and the account identity — object{ mfa, password, sso, events, account }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/security" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/security/mfa/disable

Disable MFA

Requires a valid TOTP or recovery code (#29).

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200MFA is now disabled for the account — object{ enabled }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/security/mfa/disable" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/security/mfa/enroll

Start TOTP enrollment

Returns the base32 secret, otpauth URL and recovery codes (#29).

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200enrollment material: the TOTP secret, its otpauth URL and the recovery codes (each returned once) — object{ secret, otpauthUrl, recoveryCodes }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/security/mfa/enroll" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/security/mfa/recovery-codes

Regenerate recovery codes

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200the new recovery code set, returned once — object{ recoveryCodes }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/security/mfa/recovery-codes" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/security/mfa/verify

Verify the TOTP code and enable MFA

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200MFA is now enabled for the account — object{ enabled, recoveryCodesRemaining }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/security/mfa/verify" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/security/password

Change the console password

Enforces the deployment password policy (#29).

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200the password changed at the given instant — object{ changed, at, revokedSessions }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/security/password" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

PUT /console/security/sso

Configure the OIDC connection

Per organisation (#29).

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200the organisation SSO view after the update (clientSecret is never echoed) — object{ sso }
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X PUT "$NIMEET_API_BASE/console/security/sso" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

POST /console/security/sso/test

Run OIDC discovery against the configured issuer

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200oneOf: discovery succeeded (ok: true) or the probe failed (ok: false + error) — any
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X POST "$NIMEET_API_BASE/console/security/sso/test" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/status

Regional service status (XLA)

Health derived from observed telemetry only (#32).

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200regional service status report plus the projects the caller can see — object
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/status" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

GET /console/xla/monthly

XLA monthly report (account-wide)

Monthly quality and telemetry-availability aggregates across the account (#32 companion).

Authentication: console session (Bearer)

Response

Status codesDescription / schema
200the account-wide monthly XLA report — XlaMonthReport
400Invalid parameter — Error
401Missing/invalid credentials — Error
403Banned or service not enabled — Error

Example call

bash
curl -s -X GET "$NIMEET_API_BASE/console/xla/monthly" \
  -H "Authorization: Bearer $NIMEET_CONSOLE_SESSION"

Schemas used by this group

BillingOverview — object
FieldTypeRequiredDescription
providerobjectis
plansarray<object>is
subscriptionanyis
invoicesarray<object>is
topUpsarray<object>is
chargesarray<object>is
taxProfileanyis
totalsobject{ outstanding, paid, credit, currency }is
generatedAtstringisformat date-time
BillingPlan — object
FieldTypeRequiredDescription
idstringis
namestringis
pricePerMonthnumberismonthly list price in major units (see x-money-scale)
currencystringISO-4217 currency code;pattern ^[A-Z]{3}$
includedMinutesnumberismetered minutes included before overage
descriptionstringis
featuresarray<string>is
BillingProvider — object
FieldTypeRequiredDescription
kindenum(sandbox | live)is
livebooleanis
configuredbooleanis
currencystringisISO-4217 currency code;pattern ^[A-Z]{3}$
taxRatePercentnumberis
disclaimerstringis
capabilitiesobject{ payInvoice, topUp, subscribe }is
BillingTotals — object{ outstanding, paid, credit, currency }
FieldTypeRequiredDescription
outstandingnumberisinvoiced but unpaid amount
paidnumberissettled amount
creditnumberisunconsumed top-up credit
currencystringisISO-4217 currency code;pattern ^[A-Z]{3}$
Error — object{ code, message, reason, sdkCode, details }
FieldTypeRequiredDescription
codestringisstable machine code, see errors.json
messagestringis
reasonstring
sdkCodeintegerAgora-aligned client error number
detailsobject
Invoice — object
FieldTypeRequiredDescription
idstringis
projectIdstring | nullis
projectNamestringis
periodstringisbilling period label, e.g. 2026-10
currencystringisISO-4217 currency code;pattern ^[A-Z]{3}$
subtotalnumberisamount before tax
taxnumberistax amount
totalnumberisamount due
statusenum(open | paid | void)is
issuedAtstringisformat date-time
paidAtstring | nullisformat date-time
chargeIdstring | nullis
linesarray<object{ type, minutes, amount }>is
InvoiceLine — object{ type, minutes, amount }
FieldTypeRequiredDescription
typestringis
minutesnumberis
amountnumberisline amount
PaymentCharge — object
FieldTypeRequiredDescription
idstringis
kindenum(invoice | topup)is
referenceIdstringis
amountnumberischarged amount
currencystringisISO-4217 currency code;pattern ^[A-Z]{3}$
providerenum(sandbox)is
statusenum(succeeded)is
simulatedbooleanis
createdAtstringisformat date-time
Project — object
FieldTypeRequiredDescription
idstringis
appIdstringis
customerIdstringis
namestringis
authModeenum(token | appid)is
statusenum(active | suspended)is
tokenTtlSecondsintegeris
privilegeTtlSecondsintegeris
servicesobject{ recording, streaming, analytics }is
quotasobject{ recordingConcurrent, streamingConcurrent, maxChannels }is
createdAtstringisformat date-time
updatedAtstringisformat date-time
Quotas — object{ recordingConcurrent, streamingConcurrent, maxChannels }
FieldTypeRequiredDescription
recordingConcurrentintegeris
streamingConcurrentintegeris
maxChannelsintegeris0 = unlimited
Services — object{ recording, streaming, analytics }
FieldTypeRequiredDescription
recordingbooleanis
streamingbooleanis
analyticsbooleanis
Subscription — object{ planId, status, startedAt, currentPeriodEnd, pricePerMonth, includedMinutes }
FieldTypeRequiredDescription
planIdstringis
statusenum(active | cancelled)is
startedAtstringisformat date-time
currentPeriodEndstringisformat date-time
pricePerMonthnumberissubscription price in major units
includedMinutesnumberis
TaxProfile — object{ legalName, country, taxId, address, updatedAt, status }
FieldTypeRequiredDescription
legalNamestringis
countrystringisISO-3166 alpha-2
taxIdstringis
addressstringis
updatedAtstringisformat date-time
statusenum(unverified)isthis deployment never validates the tax id against an authority
TokenIssueResponse — object
FieldTypeRequiredDescription
appIdstringis
channelNamestringis
rtcTokenstringis
rtcUidintegeris1..2147483647
roleenum(host | audience)is
privilegesarray<string>is
controlTokenstringOpaque control-plane token for REST diagnostics/renewal. TokenIssueResult.controlToken is optional; toResult() always sets it.
mediaRoomstringSFU room name when the media adapter namespaces by App ID (TokenIssueResult.mediaRoom).
expireAtstringisformat date-time
privilegeExpireAtstringisformat date-time
TopUp — object
FieldTypeRequiredDescription
idstringis
amountnumberiscredited amount
currencystringisISO-4217 currency code;pattern ^[A-Z]{3}$
statusenum(succeeded)is
providerenum(sandbox)is
chargeIdstringis
notestringis
createdAtstringisformat date-time
WebhookDelivery — object
FieldTypeRequiredDescription
idstringis
projectIdstringis
envelopeobject{ noticeId, productId, eventType, notifyMs, sid, payload }is
urlstringis
stateenum(pending | delivering | delivered | failed | dropped)is
attemptsintegeris
maxAttemptsintegeris
nextAttemptAtstring | nullisformat date-time
lastStatusCodeinteger | nullis
lastErrorstring | nullis
createdAtstringisformat date-time
updatedAtstringisformat date-time
XlaMetricSet — object
FieldTypeRequiredDescription
samplesintegeris
joinAttemptsintegeris
joinSuccessRatenumber | nullisjoinSuccess / joinAttempt samples; null when there is no sample
joinWithin5sRatenumber | nullis
videoFreezeRatenumber | nullis
audioFreezeRatenumber | nullis
networkDelayMsnumber | nullis
availabilitynumber | nullistelemetry availability: observed 5-minute buckets / buckets in the month
observedBucketsintegeris
expectedBucketsintegeris
XlaMonthReport — object
FieldTypeRequiredDescription
monthstringisYYYY-MM
fromstringisformat date-time
tostringisformat date-time
scopeobject{ kind, projectId, projectName }is
metricsobjectis
projectsarray<any>is
insufficientbooleanis
reasonstring | nullis
notestringishow each metric is computed (no modelled percentages)
generatedAtstringisformat date-time
XlaProjectRow — any

No field declarations.

Generated by the documentation build pipeline · 2026-10-31 01:24:02 UTC · Documentation center v1.1.0.

Content follows the public API definitions.

ni-meet is a self-hosted RTC PaaS with a LiveKit-based media plane (Apache-2.0) and an Agora-compatible API.