Skip to main content

Common Patterns

This page describes conventions that apply across all API endpoints.

Request format

All requests that include a body must use JSON:

curl -X POST "https://<your-subdomain>.backend.<region>.controlplane.boomi.com/apis" \
-H "Authorization: Bearer <your-token>" \
-H "Content-Type: application/json" \
-d '{ "name": "my-api", "displayName": "My API", "status": "ACTIVE", "tags": [] }'

Pagination

List endpoints return paginated results wrapped in a SimplePage envelope:

{
"content": [ ... ],
"size": 10,
"number": 1,
"totalPages": 5,
"totalElements": 42,
"last": false
}
FieldTypeDescription
contentarrayThe items for the current page
sizeintegerNumber of items per page
numberintegerCurrent page number (1-based)
totalPagesintegerTotal number of pages
totalElementsintegerTotal number of items across all pages
lastbooleantrue if this is the last page

Query parameters

ParameterTypeDefaultDescription
pageinteger1Page number (1-based)
sizeinteger10Number of items per page
sortstringvariesSorting criteria: property,(asc|desc). Supports multiple sort criteria.

Example: Get the second page of 20 APIs, sorted by name:

curl -X GET "https://<your-subdomain>.backend.<region>.controlplane.boomi.com/apis?page=2&size=20&sort=name,asc" \
-H "Authorization: Bearer <your-token>"

Iterating through all pages

To retrieve all items, loop until last is true:

PAGE=1
while true; do
RESPONSE=$(curl -s -X GET \
"https://<your-subdomain>.backend.<region>.controlplane.boomi.com/apis?page=$PAGE&size=100" \
-H "Authorization: Bearer <your-token>")

echo "$RESPONSE" | jq '.content[]'

IS_LAST=$(echo "$RESPONSE" | jq '.last')
if [ "$IS_LAST" = "true" ]; then break; fi

PAGE=$((PAGE + 1))
done

Error responses

Errors return a standard JSON structure:

{
"timestamp": "2026-02-23T10:30:00.000+00:00",
"status": 404,
"error": "Not Found",
"message": "API with id a1b2c3d4 not found",
"path": "/apis/a1b2c3d4"
}
FieldTypeDescription
timestampstringWhen the error occurred
statusintegerHTTP status code
errorstringHTTP status text
messagestringHuman-readable error description
pathstringRequest path that caused the error

Common HTTP status codes

StatusMeaning
200Success
201Created (for POST requests)
204No Content (for DELETE requests)
400Bad Request — invalid input
401Unauthorized — missing or invalid token
403Forbidden — insufficient permissions
404Not Found — resource does not exist
409Conflict — duplicate resource
500Internal Server Error

Filtering

Most list endpoints support filtering via query parameters. Common filter parameters include:

ParameterDescriptionExample
textFree-text search across name and description?text=petstore
nameFilter by exact name?name=my-api
statusFilter by status?status=ACTIVE
tagsFilter by tags?tags=production&tags=v2
ownerFilter by owner (UUID)?owner=a1b2c3d4-...
platformTypeFilter by gateway platform?platformType=BOOMI

Resource identifiers

Resources are identified by UUIDs:

a1b2c3d4-e5f6-7890-abcd-ef1234567890

These are used in path parameters (e.g., /apis/{id}) and in request/response bodies when referencing related resources.

Image upload and download

Several resources (APIs, API Products, Users, Developer Portals) support image management:

OperationMethodPath
Upload imagePUT/{resource}/{id}/image
Download imageGET/{resource}/{id}/image
Delete imageDELETE/{resource}/{id}/image

Image upload uses multipart/form-data:

curl -X PUT "https://<your-subdomain>.backend.<region>.controlplane.boomi.com/apis/<api-id>/image" \
-H "Authorization: Bearer <your-token>" \
-F "file=@logo.png"

Asynchronous operations

Some operations (like deployments) run asynchronously. These return a job ID that you can poll:

# Start a deployment (returns job info)
curl -X PUT "https://<your-subdomain>.backend.<region>.controlplane.boomi.com/environments/<env-id>/apis/<api-id>" \
-H "Authorization: Bearer <your-token>"

# Check running jobs
curl -X GET "https://<your-subdomain>.backend.<region>.controlplane.boomi.com/runningJobs" \
-H "Authorization: Bearer <your-token>"

Job history is available at:

curl -X GET "https://<your-subdomain>.backend.<region>.controlplane.boomi.com/jobs?page=1&size=10" \
-H "Authorization: Bearer <your-token>"