Skip to main content

API Quick Reference

All endpoints use /api virtual paths for hosted web apps. For external clients, replace /api with https://<region>.restapi.com/<api-name>.

Data Operations

MethodPathDescription
GET/api/{collection}List items
GET/api/{collection}/{id}Get single item
POST/api/{collection}Create item(s) — send object or array
PUT/api/{collection}/{id}Replace item (full replace)
PATCH/api/{collection}/{id}Update item (partial update)
DELETE/api/{collection}/{id}Delete single item
DELETE/api/{collection}Bulk delete (send array of IDs)

Views (Filtered Collections)

MethodPathDescription
GET/POST/PUT/PATCH/DELETE/api/{view-name}Same operations as collections, with built-in filter

Queries (Read-Only Joins)

MethodPathDescription
GET/api/{query-name}List joined/aggregated results
GET/api/{query-name}/{id}Get single item from query

GET Query Parameters

ParameterDescriptionExample
filterFilter results?filter=price gt 100
sortBySort results?sortBy=name or ?sortBy=name- (descending)
selectChoose fields?select=name,price
pageNoPage number?pageNo=2
pageSizeItems per page (default: 10, max: 1000)?pageSize=100
countInclude total count in response?count=true

Filter Operators

OperatorDescriptionExample
eqEqual toname eq "Widget"
neNot equal tostatus ne "deleted"
gtGreater thanprice gt 100
geGreater than or equalprice ge 100
ltLess thanstock lt 10
leLess than or equalstock le 10
conContains (strings)name con "pro"
nconNot contains (strings)name ncon "test"
swStarts withname sw "Pro"
ewEnds withname ew "Plus"

Append ~ for case-insensitive matching: name eq~ "widget". Combine with and/or: ?filter=price gt 100 and category eq "Electronics".

Nested Children

Use dot notation to manage parent-child data atomically in POST, PUT, and PATCH requests:

{collection}.{fieldPointingToParent}

Items with id are updated, items without id are created, existing items omitted from the array are deleted.

BLOBs (File Upload)

MethodPathDescription
POST/api/{collection}/{id}/{blob-field}Upload file (multipart/form-data, field name: file)
GET/api/{collection}/{id}/{blob-field}Retrieve file

Authentication

MethodPathDescription
POST/api/_authGet JWT token (service account or identity provider)
POST/api/_tokenOAuth 2.0 token endpoint (client_credentials, refresh_token grants)
POST/api/_refreshRefresh access cookie
POST/api/_logoutLogout (clear session cookies)
GET/api/_webAppConfigGet webapp auth configuration
/loginHosted authentication page (not under /api)

Service Account Authentication

POST /api/_auth
Content-Type: application/json

{
"authority": "serviceaccount",
"clientId": "your-client-id",
"clientSecret": "your-client-secret"
}

OAuth 2.0 Client Credentials

POST /api/_token
Content-Type: application/json

{
"grant_type": "client_credentials",
"client_id": "your-client-id",
"client_secret": "your-client-secret"
}

OAuth 2.0 Refresh Token

POST /api/_token
Content-Type: application/json

{
"grant_type": "refresh_token",
"client_id": "your-client-id",
"refresh_token": "your-refresh-token"
}

Configuration

MethodPathDescription
GET/api/_settingsGet custom settings (key-value pairs)

Real-Time

MethodPathDescription
GET/api/_rt/wsGet Web PubSub WebSocket URL
GET/api/_rt/signalrGet SignalR connection info
POST/api/_rt/joinJoin a channel ({ connectionId, channel })
POST/api/_rt/sendSend message to channel ({ channel, body })
POST/api/{collection}/_listenSubscribe to entity changes ({ connectionId })

HTTP Functions

MethodPathDescription
GET/POST/api/{function-name}Call custom HTTP function

Token Lifetimes

TokenLifetime
Access token~1 hour
Refresh token70 days from creation

See Also