Returns one page of the profile groups of the caller's client, ordered by name. name and nameContains filter by group name. An entry carries id, name and parentId (absent on the top level) but not its groups and profiles; GET /groups/{id} returns them. meta.total counts the matching groups; a page past the last one returns an empty data array.
OAuth2 client-credentials flow for machine-to-machine access.
Exchange a client id/secret at /dw/register/oauth/token for a bearer token, then send it
as Authorization: Bearer <access_token>. Client credentials are provisioned in the
Lobster administration UI.
This is the client-credentials token endpoint of the Platform API. /oauth/token, the
token_endpoint advertised at /.well-known/oauth-authorization-server, serves the authorization
code flow of the OAuth2AuthorizationCode scheme.
OAuth 2.1 authorization code flow with PKCE, for acting as a signed-in user. It works with Microsoft and other single sign-on providers: the provider only confirms the user's identity to the platform, which then issues its own token.
POST /oauth/register(no authentication) with the JSON body{"redirect_uris": ["<redirect URI>"]}returns aclient_id. The user's browser has to reach the redirect URI.- Open
/oauth/authorizein the user's browser withresponse_type=code,client_id,redirect_uri,stateand acode_challengewithcode_challenge_method=S256.stateis a fresh unguessable value per request, andcode_challengeis the S256 hash of acode_verifierfreshly generated per request from a cryptographically secure random source (43 to 128 characters, RFC 7636). The user signs in on the platform's login page, and the browser is redirected to the redirect URI withcodeandstate; a callback whosestatediffers from the one sent is to be rejected. - The code is valid for 30 seconds. Exchange it at
POST /oauth/token, form-encoded, withgrant_type=authorization_code,code,redirect_uri,code_verifierandclient_id. - The answer carries
access_token(valid 30 minutes),refresh_token(valid 48 hours) andexpires_inin milliseconds. Refresh withgrant_type=refresh_token,refresh_tokenandclient_id.
Bearer token obtained from an authenticated browser or guest-user session.
Flow 1 — UI login: Log in via the Lobster web UI at /, then call
GET /auth/sessionBearerToken to exchange the session cookie for a bearer token.
Flow 2 — Guest user login token: Append a GuestUser loginToken as a URL
query parameter to the base URL to establish a password-free session:
GET <host>?loginToken=<GuestUser token>
Then call GET /auth/sessionBearerToken to obtain the bearer token.
Zero-based index of the page to return.
Number of entries per page; a value out of range is rejected, not clamped.
Exact, case-sensitive match on the group name. Repeatable — repeated values OR.
Case-insensitive substring match on the group name.
Groups returned.
The envelope as returned: the page in data, the paging state in meta.
{
"data": [
{
"class": "core.ProfileGroup",
"id": "6bb76781_199702d94be_2714_9a14992bf4897187_6bb76781_1996f5f952f_-8000",
"name": "Archive",
"parentId": "6bb76781_199702d94be_2714_9a14992bf4897187_6bb76781_1996f5f9530_-8000"
},
{
"class": "core.ProfileGroup",
"id": "6bb76781_199702d94be_2714_9a14992bf4897187_6bb76781_1996f5f9530_-8000",
"name": "Orders"
}
],
"meta": {
"page": 0,
"size": 20,
"total": 2
}
}Standard Platform API success envelope. Every response carries exactly one of data (success) or error (failure) at top level.
A profile group, a node of the profile tree. A profile's group holds its id.
The type of this object, always core.ProfileGroup. Required where the member it is sent in accepts several types.
The groups directly in this group, by name. Present on a single-group response only; a sent value is ignored.
A reference to a subgroup or a profile of a group: its id, name and the path to fetch it.
The type of this object, always core.ProfileTreeRef. Required where the member it is sent in accepts several types.
The server-relative path that returns the referenced group or profile.
The identifier of the referenced group or profile.
The name of the referenced group or profile.
The group's identifier: the value a profile's group holds and the path parameter of GET /groups/{id}; root for the top level. Assigned by the server; a sent value is ignored.
The name the Lobster UI shows for the group; unique among the groups of one parent.
The id of the group this group sits in; absent for a group on the top level. On create, the group to create it in. Send null in a patch to move the group to the top level.
The profiles directly in this group the caller may view, by name. Present on a single-group response only; a sent value is ignored.
A reference to a subgroup or a profile of a group: its id, name and the path to fetch it.
The type of this object, always core.ProfileTreeRef. Required where the member it is sent in accepts several types.
The server-relative path that returns the referenced group or profile.
The identifier of the referenced group or profile.
The name of the referenced group or profile.
Everything about the response that is not the resource itself. Members may be added over time; ignore the ones you do not recognize.
Zero-based index of the returned page.
Number of entries per page.
Number of entries across all pages.
The request could not be understood. BAD_REQUEST for a body that does not decode — its message names the property at fault — and VALIDATION_FAILED with one details entry per offending parameter for a malformed request target (an unknown query parameter or sort key). Also BAD_REQUEST for a response unit naming a channel this client cannot reference.
{
"error": {
"code": "BAD_REQUEST",
"message": "The request is invalid."
}
}Standard Platform API error envelope: every failed request carries a single error object. Every response carries exactly one of data (success) or error (failure) at top level.
What went wrong: branch on its code, show its message, and read details for one entry per failed member.
Stable machine-readable UPPER_SNAKE error code for programmatic handling, e.g. PARTNER_NOT_FOUND, VALIDATION_FAILED or FORBIDDEN. New codes may be added over time; treat an unknown code according to the HTTP status class. The HTTP status itself is carried by the status line only, never duplicated here.
Human-readable, non-localized explanation. Branch on code, never on this text.
Individual failures within the request, e.g. one entry per violated field.
A single failure within the request.
Stable machine-readable UPPER_SNAKE code of this individual failure, e.g. FIELD_REQUIRED, FIELD_INVALID or VALUE_OUT_OF_RANGE.
Human-readable, non-localized explanation of this individual failure.
What this failure refers to, e.g. the violated field.
Authentication is required or the supplied credentials are invalid.
{
"error": {
"code": "UNAUTHORIZED",
"message": "Authentication is required to access this resource."
}
}Standard Platform API error envelope: every failed request carries a single error object. Every response carries exactly one of data (success) or error (failure) at top level.
What went wrong: branch on its code, show its message, and read details for one entry per failed member.
Stable machine-readable UPPER_SNAKE error code for programmatic handling, e.g. PARTNER_NOT_FOUND, VALIDATION_FAILED or FORBIDDEN. New codes may be added over time; treat an unknown code according to the HTTP status class. The HTTP status itself is carried by the status line only, never duplicated here.
Human-readable, non-localized explanation. Branch on code, never on this text.
Individual failures within the request, e.g. one entry per violated field.
A single failure within the request.
Stable machine-readable UPPER_SNAKE code of this individual failure, e.g. FIELD_REQUIRED, FIELD_INVALID or VALUE_OUT_OF_RANGE.
Human-readable, non-localized explanation of this individual failure.
What this failure refers to, e.g. the violated field.
The caller lacks the permission for this operation on this resource (FORBIDDEN).
{
"error": {
"code": "FORBIDDEN",
"message": "Access to this resource is denied."
}
}Standard Platform API error envelope: every failed request carries a single error object. Every response carries exactly one of data (success) or error (failure) at top level.
What went wrong: branch on its code, show its message, and read details for one entry per failed member.
Stable machine-readable UPPER_SNAKE error code for programmatic handling, e.g. PARTNER_NOT_FOUND, VALIDATION_FAILED or FORBIDDEN. New codes may be added over time; treat an unknown code according to the HTTP status class. The HTTP status itself is carried by the status line only, never duplicated here.
Human-readable, non-localized explanation. Branch on code, never on this text.
Individual failures within the request, e.g. one entry per violated field.
A single failure within the request.
Stable machine-readable UPPER_SNAKE code of this individual failure, e.g. FIELD_REQUIRED, FIELD_INVALID or VALUE_OUT_OF_RANGE.
Human-readable, non-localized explanation of this individual failure.
What this failure refers to, e.g. the violated field.
The requested resource does not exist. The code is resource-specific, e.g. PARTNER_NOT_FOUND, PROFILE_NOT_FOUND or CHANNEL_NOT_FOUND.
{
"error": {
"code": "PARTNER_NOT_FOUND",
"message": "Partner not found: 42"
}
}Standard Platform API error envelope: every failed request carries a single error object. Every response carries exactly one of data (success) or error (failure) at top level.
What went wrong: branch on its code, show its message, and read details for one entry per failed member.
Stable machine-readable UPPER_SNAKE error code for programmatic handling, e.g. PARTNER_NOT_FOUND, VALIDATION_FAILED or FORBIDDEN. New codes may be added over time; treat an unknown code according to the HTTP status class. The HTTP status itself is carried by the status line only, never duplicated here.
Human-readable, non-localized explanation. Branch on code, never on this text.
Individual failures within the request, e.g. one entry per violated field.
A single failure within the request.
Stable machine-readable UPPER_SNAKE code of this individual failure, e.g. FIELD_REQUIRED, FIELD_INVALID or VALUE_OUT_OF_RANGE.
Human-readable, non-localized explanation of this individual failure.
What this failure refers to, e.g. the violated field.
An unexpected server error occurred.
{
"error": {
"code": "INTERNAL_ERROR",
"message": "An unexpected error occurred."
}
}Standard Platform API error envelope: every failed request carries a single error object. Every response carries exactly one of data (success) or error (failure) at top level.
What went wrong: branch on its code, show its message, and read details for one entry per failed member.
Stable machine-readable UPPER_SNAKE error code for programmatic handling, e.g. PARTNER_NOT_FOUND, VALIDATION_FAILED or FORBIDDEN. New codes may be added over time; treat an unknown code according to the HTTP status class. The HTTP status itself is carried by the status line only, never duplicated here.
Human-readable, non-localized explanation. Branch on code, never on this text.
Individual failures within the request, e.g. one entry per violated field.
A single failure within the request.
Stable machine-readable UPPER_SNAKE code of this individual failure, e.g. FIELD_REQUIRED, FIELD_INVALID or VALUE_OUT_OF_RANGE.
Human-readable, non-localized explanation of this individual failure.
What this failure refers to, e.g. the violated field.