Full REST API endpoint reference
All endpoints require authentication (@Authenticated). Base path: /api/portal.
Metadata
| Method | Path | Description |
|---|---|---|
GET | /api/portal/metadata | Full portal metadata. Supports ETag/304 |
Entity CRUD (/api/portal/data/{entityName})
| Method | Path | Description |
|---|---|---|
GET | /{entityName} | List records — pagination, sorting, filtering |
GET | /{entityName}/{id} | Get record by ID |
POST | /{entityName} | Create record. Returns 201 Created |
PUT | /{entityName}/{id} | Update record. Supports optimistic locking (409 Conflict) |
DELETE | /{entityName}/{id} | Delete record. Returns 204 No Content |
DELETE | /{entityName}/bulk | Delete multiple. Body: {"ids": [1, 2, 3]} |
PUT | /{entityName}/bulk-update | Update one field across multiple records |
Lookup and search
| Method | Path | Description |
|---|---|---|
GET | /{entityName}/lookup | Relation picker options. Params: q, labelField, valueField, max, filterQuery, dependsOnField, dependsOnValue, orderBy |
GET | /{entityName}/search | Full-text search. Params: q (min 2 chars), page, size |
GET | /{entityName}/count | Record count. Returns {"count": 42} |
GET | /{entityName}/stats | Numeric field statistics (min/max/avg/sum) |
Soft-delete
| Method | Path | Description |
|---|---|---|
GET | /{entityName}/deleted | List soft-deleted records |
POST | /{entityName}/{id}/restore | Restore a soft-deleted record |
Actions and history
| Method | Path | Description |
|---|---|---|
POST | /{entityName}/{id}/action/{actionName} | Execute action. Body: EntityData (optional) |
GET | /{entityName}/{id}/history | Change history (requires auditLog = true). Params: page, size |
Export and import
| Method | Path | Description |
|---|---|---|
GET | /{entityName}/export/csv | Export to CSV |
GET | /{entityName}/export/xlsx | Export to XLSX |
GET | /{entityName}/export/json | Export to JSON |
GET | /{entityName}/export/pdf | Export to PDF |
POST | /{entityName}/import | Import from CSV |
POST | /{entityName}/batch | Batch-create from JSON array |
Filtering in list requests
Query parameters for GET /{entityName}:
?filter[fieldName][operator]=value
&sort=fieldName&order=asc
&page=0&size=25Examples
?filter[status][eq]=ACTIVE
?filter[name][contains]=smith
?filter[price][gte]=100&filter[price][lte]=1000
?filter[customerType][in]=VIP,PREMIUM
?sort=name&order=asc&page=0&size=50Available filter operators
| Operator | Description |
|---|---|
eq | Equality |
neq | Inequality |
contains | Contains substring |
startsWith | Starts with |
gte / lte | Greater/less than or equal |
in | In value set (comma-separated) |
isNull / isNotNull | Null / not null check |
Last updated on