Get all external web links
GET /api/configuration/externalweblinks
Success: 200 OK
- Products: Operator (
FOH), Consumer (CONSUMER) (any one of these products, not all) - Features: Online Bookings (
ONLINEBOOK), Online Joining (ONLINEJOIN), Front of House Generic Access (FOHGENERIC) (any one of these features, not all)
Overview
Lists every external web link the operator has configured. An external web link is a URL surfaced in the operator's consumer-facing app — typically a tile or menu item pointing at their own website, a partner site or a booking page — together with the image, target behaviour and category that control how it is presented.
Inactive links are returned. Every link is returned: there is no filter parameter, no guaranteed order, no paging, and the status field is not used to exclude anything. If you render this list straight into a UI you will show links the operator has switched off. Filter on status yourself, and remember it is nullable, so decide deliberately what a null status should mean for you.
Each link carries a linkTypeId rather than a type name. Fetch the link types list as well and join on it locally; both ids are tenant-specific and neither is safe to hard-code.
When no links are configured you get 200 with an empty array [].
Endpoint
GET {base_url}/api/configuration/externalweblinks
{base_url} is the environment URL issued to your integration. See Authenticating with Gladstone APIs.
Sample request
curl -X GET '{base_url}/api/configuration/externalweblinks' \
-H 'Authorization: Bearer {accessToken}' \
-H 'X-Use-SSO: true'Response fields
| Field | Type | Description |
|---|---|---|
[].id | integer (int32) | The link's identifier, and the value the update and delete endpoints take. Allocated per tenant, so it is specific to one tenant and carries no meaning elsewhere — never hard-code it, and do not assume ids are contiguous, since deleted links leave gaps. |
[].linkTypeId | integer (int32) | The category this link is filed under, matching an id from the external web link types list. Required on every link and always a real type — but the type's name is not included here, so join locally to label it. Tenant-specific, like the type ids themselves. On create and update, a value that does not exist is rejected with External Web Link Type Id ... not found. |
[].description | string | The link's display label — the caption on the tile or menu item. Maximum 255 characters, never null, and required when creating or updating a link ("Invalid request: No description provided."). Free text the operator controls, so do not match on it. |
[].url | string | The destination the link opens. Maximum 255 characters and never null. Validated on create and update as an absolute http or https URI — relative paths, mailto: and other schemes are rejected as not a valid URL — so what you receive is always absolute and web-schemed. Nothing checks that the destination is reachable, so expect dead links. |
[].image | string | URL of the icon or thumbnail shown with the link. No length limit. Optional and frequently null — plan a placeholder rather than assuming an image exists. When present it has passed a pattern check requiring the value to end in .svg, .jpeg, .jpg, .gif or .png, case-insensitively; that check accepts both absolute http/https URLs and bare filenames, so unlike url this is not guaranteed to be absolute. Resolve it against your own base when it is not. |
[].targetType | string | How the link should be opened — a new tab, the same window, an embedded view, and so on. Maximum 40 characters and never null; required when creating or updating a link ("Invalid request: No target type provided."). The permitted values are not constrained: any non-empty string within the length limit is accepted and kept verbatim, so handle unrecognised values defensively and fall back to a safe default rather than failing. |
[].domainBrowsing | boolean | Whether the link may browse within its own domain rather than being pinned to the exact URL — relevant when the link opens inside an embedded browser. Never null in practice, even though the type shown permits null. Not validated on create or update beyond being a boolean. |
[].status | string | Whether the operator has the link switched on. Maximum 40 characters. Create and update accept only Active or InActive, compared case-insensitively, and rejects anything else with a message saying status must be either 'Active' or 'InActive' — but the field is optional on create and update, so you will see null on links saved without one, and the casing you receive is whatever was sent. Compare case-insensitively. This endpoint does not filter on it, so excluding inactive links is your responsibility. |
Sample response
[
{
"id": 12345,
"linkTypeId": 12345,
"description": "string",
"url": "string",
"image": "string",
"targetType": "string",
"domainBrowsing": true,
"status": "string"
}
]Errors
| Status | Meaning | When |
|---|---|---|
400 | Bad request | Not returned in practice: the endpoint takes no parameters and applies no validation. The validation messages quoted above are returned by the create and update endpoints, not this one. Do not expect a meaningful message here. |
500 | Internal server error | Any unexpected server-side failure while reading the links. The response is a bare status code with no body. Retry with backoff. |