API Documentation

Authentication

Customers using Webhooks may wish to add authentication to their webhook endpoints, in order to prevent unauthorized users from calling these endpoints.

Coviu supports several different authentication schemes:

  • Bearer Token

  • HTTP Basic Authentication

  • OAuth Client Credentials:

    • Basic
    • Post
    • JWT

Bearer Token

Coviu sends the token as a Bearer token in the Authorization header.

If you configure a token of 990192803, Coviu dispatches the webhook like this:

Bearer Token Example (curl)
curl -X POST "$WEBHOOK_URL" \
  --header 'Authorization: Bearer 990192803' \
  --data '{ "type": "event:type", "payload": {} }'

HTTP Basic Authentication

You specify a username and password, which Coviu sends via standard Basic Auth.

HTTP Basic Auth Example (curl)
curl -X POST "$WEBHOOK_URL" \
  -u "$USERNAME:$PASSWORD" \
  --header "Content-Type: application/x-www-form-urlencoded" \
  --data '{ "type": "event:type", "payload": {} }'

OAuth Client Credentials

Coviu can authenticate via OAuth 2.0 Client Credentials.

For a good overview of the different ways client credentials can be supplied, see: SecureAuth: OAuth Client Secret Authentication . Coviu supports the following schemes:

  • Basic
  • Post
  • JWT (with shared secret)

Configuration Required

  • Authorization Server URL
  • Client ID
  • Client Secret

Flow

  1. Coviu sends a Client Credentials request to your token server.
  2. Expects a response like:
Token Server Response
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
{
  "access_token": "243o5ein23o45ien234o5ein23o4523",
  "token_type": "Bearer",
  "expires_in": 3600
}
  1. Coviu caches the access token and uses it in subsequent webhook requests:
Webhook Request With OAuth Token (curl)
curl -X POST "$WEBHOOK_SERVER_URL" \
  --header "Authorization: Bearer 243o5ein23o45ien234o5ein23o4523"

OAuth Client Credentials: Basic

Credentials are passed in the Authorization header.

OAuth Basic Example (curl)
curl -X POST "$AUTHORIZATION_SERVER_URL" \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  --header "Content-Type: application/x-www-form-urlencoded" \
  --data-raw "grant_type=client_credentials"

OAuth Client Credentials: Post

Credentials are sent in the request body.

OAuth Post Example (curl)
curl -X POST "$AUTHORIZATION_SERVER_URL" \
  --header "Content-Type: application/x-www-form-urlencoded" \
  -F "grant_type=client_credentials" \
  -F "client_id=$CLIENT_ID" \
  -F "client_secret=$CLIENT_SECRET"

OAuth Client Credentials: JWT

The client secret is used to sign a JWT using the HS256 algorithm. No secret is sent directly.

OAuth JWT Example (curl)
curl -X POST "$AUTHORIZATION_SERVER_URL" \
  -F "grant_type=client_credentials" \
  -F "client_id=$CLIENT_ID" \
  -F "client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer" \
  -F "client_assertion=$JWT"

JWT Claims:

ClaimDescription
issClient ID
subClient ID
audWebhook URL
iatIssued at (epoch seconds)
expExpires (5 mins after iat, epoch seconds)

Limitations

If any of these limitations impact compatibility, contact Coviu Support.

  • Extra form fields or JWT claims are not supported.

  • Auth0:

    • Auth0 requires sending through an "audience" field. As we don’t support this, Auth0 users are advised to set the “Default Audience” in Tenant Settings.
    • "organization" field (for Auth0 Organizations) is not supported.
  • JWT-based Client Credentials:

    • Only supported via shared secret
    • Only HS256 algorithm
    • Public/private keypairs are not supported.