API Reference

You can download your own API reference by going to your instance's host and accessing it via /docs/openapi/json . example: https://canary.novel.dev/docs/openapi/json

This document is up to date for Release 2025.1.0

Auth

Auth Callback

get

Callback called by an authentication strategy available to the application.

Path parameters
strategystringRequired
Responses
301

Authentication successful. Redirecting to next step...

application/json
Responseany

Authentication successful. Redirecting to next step...

get
/auth/{strategy}/callback
GET /auth/{strategy}/callback HTTP/1.1
Host: 
Accept: */*
301

Authentication successful. Redirecting to next step...

No content

Start Reset Password

post

Start a reset password attempt.

Body
emailstring · emailOptional
Responses
204

Forget password attempt created.

application/json
Responseany

Forget password attempt created.

post
/auth/forgot
POST /auth/forgot HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 26

{
  "email": "[email protected]"
}
204

Forget password attempt created.

No content

Final MFA Step

post

Proceed to the application after a successful MFA attempt.

Path parameters
strategystringRequired
Body
otpstringOptional
Responses
301

Authentication successful. Redirecting to next step...

application/json
Responseany

Authentication successful. Redirecting to next step...

post
/auth/{strategy}/mfa
POST /auth/{strategy}/mfa HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 14

{
  "otp": "text"
}
301

Authentication successful. Redirecting to next step...

No content

Auth Passwordless

get

Authenticate by passwordless strategy available to the application.

Responses
301

Authentication successful. Redirecting to next step...

application/json
Responseany

Authentication successful. Redirecting to next step...

get
/auth/passwordless/verify
GET /auth/passwordless/verify HTTP/1.1
Host: 
Accept: */*
301

Authentication successful. Redirecting to next step...

No content

Generate Payment Intent

post

Create a payment intent to be used for upfront payment collection.

Body
planstringOptional
org_idstringOptional
Responses
200

Payment intent creation successful.

application/json
post
/signup/intent
POST /signup/intent HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 31

{
  "plan": "text",
  "org_id": "text"
}
200

Payment intent creation successful.

{
  "intent": {
    "client_secret": "text"
  }
}

Reset Password

post

Final step in resetting a user's password.

Body
emailstring · emailRequired
passwordstringRequired
tokenstringRequired
Responses
201

Reset successful. Redirecting to next step...

application/json
post
/auth/reset
POST /auth/reset HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 59

{
  "email": "[email protected]",
  "password": "text",
  "token": "text"
}
201

Reset successful. Redirecting to next step...

{
  "redirect_to": "text"
}

Sign Up

post

Start the sign up process.

Body
emailstring · emailRequired
passwordstringRequired
intentstringOptional
intervalundefined · enumOptionalPossible values:
planstringOptional
methodstringOptional
invitation_codestringOptional
Responses
200

Sign up successful. Redirecting to next step...

application/json
post
/signup
POST /signup HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 134

{
  "email": "[email protected]",
  "password": "text",
  "intent": "text",
  "interval": "month",
  "plan": "text",
  "method": "text",
  "invitation_code": "text"
}
200

Sign up successful. Redirecting to next step...

{
  "redirect_to": "text"
}

Auth by Strategy

post

Authenticate by strategy available to the application.

Path parameters
strategystringRequired
Body
emailstring · emailOptional
passwordstringOptional
Responses
200

Authentication successful. Redirecting to next step...

application/json
post
/auth/{strategy}
POST /auth/{strategy} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 44

{
  "email": "[email protected]",
  "password": "text"
}
{
  "redirect_to": "text"
}

Auth by Strategy

get

Authenticate by strategy available to the application.

Path parameters
strategystringRequired
Responses
200

Authentication successful. Redirecting to next step...

application/json
get
/auth/{strategy}
GET /auth/{strategy} HTTP/1.1
Host: 
Accept: */*
{
  "redirect_to": "text"
}

Application

List Subscription Plans

get

List the plans available to a user.

Responses
200

Default Response

application/json
get
/api/v1/plans
GET /api/v1/plans HTTP/1.1
Host: 
Accept: */*
200

Default Response

{
  "plans": [
    {
      "id": "text",
      "name": "text",
      "monthly": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      },
      "yearly": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      },
      "trial": 1
    }
  ]
}

Current CSRF

get

Get the CSRF of the current session.

Responses
200

Default Response

application/json
get
/api/v1/csrf
GET /api/v1/csrf HTTP/1.1
Host: 
Accept: */*
200

Default Response

{
  "csrf": "text"
}

Session Context

get

Get the important details required when accessing an authenticated screen.

Authorizations
Responses
200

Default Response

application/json
get
/api/v1/session
GET /api/v1/session HTTP/1.1
Host: 
Accept: */*
200

Default Response

{
  "session": {
    "live": true,
    "flags": {
      "ANY_ADDITIONAL_PROPERTY": "anything"
    },
    "organizations": [
      {
        "id": "text",
        "name": "text",
        "type": "text"
      }
    ],
    "organization": {
      "id": "text",
      "name": "text",
      "type": "text"
    },
    "subscribed": true,
    "subscription": {
      "name": "text",
      "status": "text",
      "subscription_id": "text"
    },
    "user": {
      "id": "text",
      "email": "[email protected]",
      "display_name": "text",
      "picture": "text"
    },
    "settings": {
      "ANY_ADDITIONAL_PROPERTY": "anything"
    },
    "role": "text",
    "permissions": [
      {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      }
    ],
    "version": "text",
    "fetched": "2025-11-01T11:39:13.118Z"
  }
}

End Session

get

End the current session.

Authorizations
Responses
301

Redirecting to the logout screen...

application/json
Responseany

Redirecting to the logout screen...

get
/session/end
GET /session/end HTTP/1.1
Host: 
Accept: */*
301

Redirecting to the logout screen...

No content

Switch Organization

post

Switch organization of the current session.

Authorizations
Body
org_idstringOptional
Responses
204

Switched organization successfully.

application/json
Responseany

Switched organization successfully.

post
/api/v1/session/switch
POST /api/v1/session/switch HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 17

{
  "org_id": "text"
}
204

Switched organization successfully.

No content

Accounts

Account Events

get

Search list of events relate to user actions triggered by logger.account or a record in the AccountEvents model.

Authorizations
Responses
200

Default Response

application/json
get
/api/v1/account/events
GET /api/v1/account/events HTTP/1.1
Host: 
Accept: */*
200

Default Response

{
  "events": [
    {
      "required": null,
      "subscription_id": "text",
      "metric": "text",
      "value": 1,
      "timestamp": "2025-11-01T11:39:13.118Z",
      "reported_at": "2025-11-01T11:39:13.118Z"
    }
  ]
}

Account Profile

get

Returns the available profile data for the currently logged in user.

Authorizations
Responses
200

Default Response

application/json
get
/api/v1/account
GET /api/v1/account HTTP/1.1
Host: 
Accept: */*
200

Default Response

{
  "profile": {
    "id": "text",
    "email": "[email protected]",
    "display_name": "text",
    "picture": "https://example.com",
    "url": "https://example.com",
    "verified": true,
    "metadata": {
      "ANY_ADDITIONAL_PROPERTY": "anything"
    }
  },
  "settings": {
    "ANY_ADDITIONAL_PROPERTY": "anything"
  }
}

Update Account Profile

patch

Update the currently logged in account's profile.

Authorizations
Body
display_namestring · min: 6Optional
picturestring · uriOptional
urlstring · uriOptional
Responses
204

User profile updated successfully.

application/json
Responseany

User profile updated successfully.

patch
/api/v1/account
PATCH /api/v1/account HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 83

{
  "display_name": "text",
  "picture": "https://example.com",
  "url": "https://example.com"
}
204

User profile updated successfully.

No content

Account Security

get

Returns the available security data for the currently logged in user.

Authorizations
Responses
200

Default Response

application/json
get
/api/v1/account/security
GET /api/v1/account/security HTTP/1.1
Host: 
Accept: */*
200

Default Response

{
  "profile": {
    "id": "text",
    "email": "[email protected]",
    "password": true,
    "verified": true,
    "metadata": {
      "ANY_ADDITIONAL_PROPERTY": "anything"
    }
  },
  "mfa": null,
  "sessions": [
    {
      "ANY_ADDITIONAL_PROPERTY": "anything"
    }
  ]
}

Account Sessions

get

Returns the available sessions related to the currently logged in user.

Authorizations
Responses
200

Default Response

application/json
get
/api/v1/account/sessions
GET /api/v1/account/sessions HTTP/1.1
Host: 
Accept: */*
200

Default Response

{
  "sessions": [
    {
      "ANY_ADDITIONAL_PROPERTY": "anything"
    }
  ]
}

Revoke Account Session

delete

Revoke a session related to the currently logged in user.

Authorizations
Body
session_idstringOptional
Responses
204

Session revoked successfully.

application/json
Responseany

Session revoked successfully.

delete
/api/v1/account/sessions
DELETE /api/v1/account/sessions HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 21

{
  "session_id": "text"
}
204

Session revoked successfully.

No content

Account Settings

get

Settings related to the currently logged in user.

Authorizations
Responses
200

Default Response

application/json
get
/api/v1/account/settings
GET /api/v1/account/settings HTTP/1.1
Host: 
Accept: */*
200

Default Response

{
  "settings": {
    "ANY_ADDITIONAL_PROPERTY": "anything"
  }
}

Update Account Settings

patch

Update the currently logged in account's settings.

Authorizations
Body
themestringOptional
timezonestringOptional
languagestringOptional
marketingbooleanOptional
newsletterbooleanOptional
Responses
204

User configuration updated successfully.

application/json
Responseany

User configuration updated successfully.

patch
/api/v1/account/settings
PATCH /api/v1/account/settings HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 87

{
  "theme": "text",
  "timezone": "text",
  "language": "text",
  "marketing": true,
  "newsletter": true
}
204

User configuration updated successfully.

No content

Update Account Password

post

Update the currently logged in account's password.

Authorizations
Body
passwordstring · min: 6 · max: 64Required
new_passwordstring · min: 6 · max: 64Required
Responses
204

User password updated successfully.

application/json
Responseany

User password updated successfully.

post
/api/v1/account/password
POST /api/v1/account/password HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 41

{
  "password": "text",
  "new_password": "text"
}
204

User password updated successfully.

No content

Deactivate Account

post

Deactivate an active account.

Authorizations
Body
sudo_passwordstringRequired
Responses
204

Account has been deactivated.

application/json
Responseany

Account has been deactivated.

post
/api/v1/account/deactivate
POST /api/v1/account/deactivate HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 24

{
  "sudo_password": "text"
}
204

Account has been deactivated.

No content

Generate MFA Secret

get

Generates a QR and a secret that can be used by the user to register an authenticator.

Authorizations
Responses
200

Default Response

application/json
get
/api/v1/account/mfa
GET /api/v1/account/mfa HTTP/1.1
Host: 
Accept: */*
200

Default Response

{
  "mfa": {
    "qr": "text",
    "secret": "text",
    "remaining": 1,
    "expires_at": "2025-11-01T11:39:13.118Z"
  }
}

Register MFA Secret

put

Attach a TOTP secret to a user for use with MFA during login.

Authorizations
Body
tokenstringRequired
secretstringRequired
Responses
204

MFA secret registered successfully.

application/json
Responseany

MFA secret registered successfully.

put
/api/v1/account/mfa
PUT /api/v1/account/mfa HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 32

{
  "token": "text",
  "secret": "text"
}
204

MFA secret registered successfully.

No content

Revoke MFA secret

delete

Revoke registered secret so a user can register a new one. It is possible to register and overwrite an existing mfa secret.

Authorizations
Body
sudo_passwordstringRequired
Responses
204

MFA secret revoked successfully.

application/json
Responseany

MFA secret revoked successfully.

delete
/api/v1/account/mfa
DELETE /api/v1/account/mfa HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 24

{
  "sudo_password": "text"
}
204

MFA secret revoked successfully.

No content

Organizations

Organization Detail

get

Details of the organization.

Authorizations
Responses
200

Default Response

application/json
get
/api/v1/organization
GET /api/v1/organization HTTP/1.1
Host: 
Accept: */*
200

Default Response

{
  "organization": {
    "id": "text",
    "name": "text",
    "type": "text",
    "email": "[email protected]",
    "quotas": {
      "ANY_ADDITIONAL_PROPERTY": "anything"
    },
    "settings": {
      "ANY_ADDITIONAL_PROPERTY": "anything"
    }
  }
}

Deactivate Organization

delete

Deactivate an organization tied to the currently logged in session.

Authorizations
Body
sudo_passwordstringRequired
org_idstring · min: 6Required
Responses
204

Organization has been deactivated.

application/json
Responseany

Organization has been deactivated.

delete
/api/v1/organization
DELETE /api/v1/organization HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 40

{
  "sudo_password": "text",
  "org_id": "text"
}
204

Organization has been deactivated.

No content

Create Organization

post

Create a new organization tied to the user making the request.

Authorizations
Body
namestring · min: 6Required
emailstring · emailRequired
personalbooleanOptional
Responses
200

Organization has been created.

application/json
post
/api/v1/organization
POST /api/v1/organization HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 56

{
  "name": "text",
  "email": "[email protected]",
  "personal": true
}
200

Organization has been created.

{
  "id": "text"
}

Update Organization

patch

Update the detail of the current organization.

Authorizations
Body
namestring · min: 3Optional
emailstring · emailOptional
Responses
204

Updated organization successfully.

application/json
Responseany

Updated organization successfully.

patch
/api/v1/organization
PATCH /api/v1/organization HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 40

{
  "name": "text",
  "email": "[email protected]"
}
204

Updated organization successfully.

No content

Organization Events

get

Events that have happened within the organization.

Authorizations
Responses
200

Default Response

application/json
get
/api/v1/organization/events
GET /api/v1/organization/events HTTP/1.1
Host: 
Accept: */*
200

Default Response

{
  "events": [
    {
      "request_id": "text",
      "event_id": "text",
      "timestamp": "text",
      "action": "text",
      "message": "text",
      "context": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      }
    }
  ]
}

Invite to Organization

post

Invite a particular user/email to the organization.

Authorizations
Body
Responses
204

Invite sent successfully.

application/json
Responseany

Invite sent successfully.

post
/api/v1/organization/invite
POST /api/v1/organization/invite HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 57

{
  "invites": [
    {
      "email": "[email protected]",
      "roles": [
        "text"
      ]
    }
  ]
}
204

Invite sent successfully.

No content

Revoke Organization Invitation

delete

Revoke the invitation sent by the currently logged in user from an organization.

Authorizations
Body
Responses
204

Invitations revoked successfully.

application/json
Responseany

Invitations revoked successfully.

delete
/api/v1/organization/invite
DELETE /api/v1/organization/invite HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 40

{
  "invites": [
    {
      "email": "[email protected]"
    }
  ]
}
204

Invitations revoked successfully.

No content

Accept Organization Invitation

post

Accept an invitation coming from an organization.

Authorizations
Body
invitation_codestringOptional
Responses
204

Invite accepted successfully.

application/json
Responseany

Invite accepted successfully.

post
/api/v1/organization/invite/accept
POST /api/v1/organization/invite/accept HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 26

{
  "invitation_code": "text"
}
204

Invite accepted successfully.

No content

Reject Organization Invitation

delete

Reject an invitation coming from an organization.

Authorizations
Body
invitation_codestringOptional
Responses
204

Invite rejected successfully.

application/json
Responseany

Invite rejected successfully.

delete
/api/v1/organization/invite/reject
DELETE /api/v1/organization/invite/reject HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 26

{
  "invitation_code": "text"
}
204

Invite rejected successfully.

No content

List of Organizations

get

List of organizations belonging to the currently logged in user.

Authorizations
Responses
200

Default Response

application/json
get
/api/v1/organizations
GET /api/v1/organizations HTTP/1.1
Host: 
Accept: */*
200

Default Response

{
  "organizations": [
    {
      "id": "text",
      "name": "text",
      "type": "text",
      "email": "[email protected]"
    }
  ]
}

List Members of Organization

get

List the members of the current organization in the session.

Authorizations
Responses
200

Default Response

application/json
get
/api/v1/organization/members
GET /api/v1/organization/members HTTP/1.1
Host: 
Accept: */*
200

Default Response

{
  "members": [
    {
      "id": "text",
      "role": "text",
      "email": "[email protected]",
      "display_name": "text",
      "picture": "text",
      "metadata": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      },
      "status": "text",
      "mfa": true
    }
  ]
}

Remove Organization Member

delete

Remove a member of an organization.

Authorizations
Body
account_idstringOptional
Responses
204

Member removed successfully.

application/json
Responseany

Member removed successfully.

delete
/api/v1/organization/members
DELETE /api/v1/organization/members HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 21

{
  "account_id": "text"
}
204

Member removed successfully.

No content

Promote Organization Member

post

Promote a member of an organization.

Authorizations
Body
account_idstringOptional
rolesstring[]Optional
Responses
204

Member promoted successfully.

application/json
Responseany

Member promoted successfully.

post
/api/v1/organization/promote
POST /api/v1/organization/promote HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 38

{
  "account_id": "text",
  "roles": [
    "text"
  ]
}
204

Member promoted successfully.

No content

Organization Settings

get

Settings of the organization.

Authorizations
Responses
200

Default Response

application/json
get
/api/v1/organization/settings
GET /api/v1/organization/settings HTTP/1.1
Host: 
Accept: */*
200

Default Response

{
  "ANY_ADDITIONAL_PROPERTY": "anything"
}

Subscription

Current Subscription

get

Return the current subscription the organization has active at the time of request.

Authorizations
Responses
200

Default Response

application/json
get
/api/v1/subscription
GET /api/v1/subscription HTTP/1.1
Host: 
Accept: */*
200

Default Response

{
  "subscribed": true,
  "organization": {
    "id": "text",
    "name": "text",
    "type": "text",
    "email": "[email protected]"
  },
  "subscription": null,
  "quotas": {
    "ANY_ADDITIONAL_PROPERTY": "anything"
  },
  "payment_methods": [
    {
      "id": "text",
      "type": "text",
      "card": {
        "brand": "text",
        "last4": "text",
        "expiry_month": "text",
        "expiry_year": "text"
      }
    }
  ],
  "charges": [
    {
      "number": "text",
      "invoice": "text",
      "invoice_pdf": "text",
      "status": "text",
      "amount": "text",
      "currency": "text",
      "payment_method": "text",
      "email": "[email protected]",
      "paid_at": "2025-11-01T11:39:13.118Z"
    }
  ]
}

Cancel Subscription

post

Cancel the subscription currently applied to the organization.

Authorizations
Responses
204

Subscription cancelled successfully.

application/json
Responseany

Subscription cancelled successfully.

post
/api/v1/subscription/cancel
POST /api/v1/subscription/cancel HTTP/1.1
Host: 
Accept: */*
204

Subscription cancelled successfully.

No content

Current Payment Methods

get

Return the payment methods available to the organization has active at the time of request.

Authorizations
Responses
200

Default Response

application/json
get
/api/v1/subscription/cards
GET /api/v1/subscription/cards HTTP/1.1
Host: 
Accept: */*
200

Default Response

{
  "payment_methods": [
    {
      "id": "text",
      "type": "text",
      "card": {
        "brand": "text",
        "last4": "text",
        "expiry_month": "text",
        "expiry_year": "text"
      }
    }
  ]
}

Add Payment Method

post

Add the payment method related to a user.

Authorizations
Body
payment_methodstringRequired
setup_intentstringRequired
Responses
204

Payment method added successfully.

application/json
Responseany

Payment method added successfully.

post
/api/v1/subscription/methods
POST /api/v1/subscription/methods HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 47

{
  "payment_method": "text",
  "setup_intent": "text"
}
204

Payment method added successfully.

No content

Remove Payment Method

delete

Remove the payment method related to a user.

Authorizations
Body
payment_method_idstringRequired
Responses
204

Payment method removed successfully.

application/json
Responseany

Payment method removed successfully.

delete
/api/v1/subscription/methods
DELETE /api/v1/subscription/methods HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 28

{
  "payment_method_id": "text"
}
204

Payment method removed successfully.

No content

Subscribe to Subscription

post

Subscribe to an available plan.

Authorizations
Body
planstringOptional
intentstringOptional
methodstringOptional
intervalstringOptional
Responses
204

Subscription created successfully.

application/json
Responseany

Subscription created successfully.

post
/api/v1/subscription/upgrade
POST /api/v1/subscription/upgrade HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 65

{
  "plan": "text",
  "intent": "text",
  "method": "text",
  "interval": "text"
}
204

Subscription created successfully.

No content

API Keys

Revoke API Key

delete

Revoke the api key related to the currently logged in user.

Authorizations
Body
access_idstringOptional
Responses
204

API key revoked successfully.

application/json
Responseany

API key revoked successfully.

delete
/api/v1/api-keys
DELETE /api/v1/api-keys HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 20

{
  "access_id": "text"
}
204

API key revoked successfully.

No content

Key List

get

List the keys available to the currently logged in session.

Authorizations
Responses
200

Default Response

application/json
get
/api/v1/api-keys
GET /api/v1/api-keys HTTP/1.1
Host: 
Accept: */*
200

Default Response

{
  "keys": [
    {
      "access_id": "text",
      "secret_key": "text",
      "label": "text",
      "scope": "text",
      "expiry": "text",
      "expired": true,
      "created_at": "text",
      "expires_at": "text",
      "last_used": "text"
    }
  ]
}

Generate Key

post

Generate an API key attached to the currently logged in user.

Authorizations
Body
labelstringOptional
expirystringOptional
Responses
200

Key generated successfully.

application/json
post
/api/v1/api-keys
POST /api/v1/api-keys HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 79

{
  "label": "text",
  "scope": {
    "ANY_ADDITIONAL_PROPERTY": "anything"
  },
  "expiry": "text"
}
200

Key generated successfully.

{
  "key": {
    "access_id": "text",
    "secret_key": "text",
    "label": "text",
    "scope": "text",
    "expiry": "text",
    "expired": true,
    "created_at": "text",
    "expires_at": "text",
    "last_used": "text"
  }
}

Key Events

get

List the events related to a key.

Authorizations
Responses
200

Default Response

application/json
get
/api/v1/api-keys/events
GET /api/v1/api-keys/events HTTP/1.1
Host: 
Accept: */*
200

Default Response

{
  "events": [
    {
      "request_id": "text",
      "access_id": "text",
      "timestamp": "text",
      "method": "text",
      "url": "text",
      "status": "text",
      "ip": "text",
      "origin": "text"
    }
  ]
}

Files

Presign Files

put

Presign the file to be used and return a signed url.

Authorizations
Body
keystringRequired
typestringRequired
Responses
200

Pre signed URL

application/json
put
/api/v1/files/presign
PUT /api/v1/files/presign HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 28

{
  "key": "text",
  "type": "text"
}
200

Pre signed URL

{
  "file": {
    "presigned_url": "text",
    "public": true,
    "type": "text",
    "original": "text",
    "key": "text",
    "asset_url": "text"
  }
}

Fetch File

get

If using local driver for file system. Fetch the file.

Authorizations
Path parameters
keystringRequired

File path

Responses
200

File is present.

Responsestring · binary

File is present.

get
/files/{key}
GET /files/{key} HTTP/1.1
Host: 
Accept: */*
binary

Upload Files

put

If using local driver for file system. Accept file uploads.

Authorizations
Path parameters
*stringRequired
Body
string · binaryOptional
Responses
204

File has been uploaded successfully.

application/json
Responseany

File has been uploaded successfully.

put
/files{*}
PUT /files{*} HTTP/1.1
Host: 
Content-Type: multipart/form-data
Accept: */*
Content-Length: 8

"binary"
204

File has been uploaded successfully.

No content

Notifications

Mark as Archive

post

Mark notifications as archived.

Authorizations
Body
itemsstring[]Optional
Responses
204

Notification archived successfully.

application/json
Responseany

Notification archived successfully.

post
/api/v1/notifications/archive
POST /api/v1/notifications/archive HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 18

{
  "items": [
    "text"
  ]
}
204

Notification archived successfully.

No content

Deregister Token

delete

Deregister the push token related to the user.

Authorizations
Body
endpointstringOptional
Responses
204

Token deregistered successfully.

application/json
Responseany

Token deregistered successfully.

delete
/api/v1/notifications/register
DELETE /api/v1/notifications/register HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 19

{
  "endpoint": "text"
}
204

Token deregistered successfully.

No content

Register Token

post

Register the push token related to the user.

Authorizations
Body
endpointstringOptional
authstringOptional
keystringOptional
Responses
204

Push token registered successfully.

application/json
Responseany

Push token registered successfully.

post
/api/v1/notifications/register
POST /api/v1/notifications/register HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 46

{
  "endpoint": "text",
  "auth": "text",
  "key": "text"
}
204

Push token registered successfully.

No content

Get Vapid Key

get

Get the vapid key used for web push registration.

Authorizations
Responses
200

Default Response

application/json
get
/api/v1/notifications/register
GET /api/v1/notifications/register HTTP/1.1
Host: 
Accept: */*
200

Default Response

{
  "vapid_key": "text"
}

List Notifications

get

List all notifications available to the currently logged in user.

Authorizations
Responses
200

Default Response

application/json
get
/api/v1/notifications
GET /api/v1/notifications HTTP/1.1
Host: 
Accept: */*
200

Default Response

{
  "notifications": [
    {
      "id": "text",
      "author_id": "text",
      "received_at": "text",
      "read": true,
      "title": "text",
      "body": "text",
      "icon": "text",
      "level": "text",
      "metadata": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      }
    }
  ],
  "invites": [
    {
      "invitation_code": "text",
      "organization": {
        "id": "text",
        "name": "text"
      },
      "created_at": "text",
      "expires_at": "text",
      "expired": true
    }
  ]
}

Mark as Read

post

Mark notifications as read.

Authorizations
Body
itemsstring[]Optional
Responses
204

Notification marked as read successfully.

application/json
Responseany

Notification marked as read successfully.

post
/api/v1/notifications/read
POST /api/v1/notifications/read HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 18

{
  "items": [
    "text"
  ]
}
204

Notification marked as read successfully.

No content

Changelog

  • 2024-12-20 - Initial Documentation

Last updated

Was this helpful?