Skip to content

Configurations API

Configuration groups represent test-matrix axes (for example “Browser”, “Operating System”) and their nested configuration values are the individual cells on that axis (for example “Chrome”, “Firefox”). Groups and values are project-scoped, soft-deletable, and carry server-assigned ULIDs.

POST/api/v1/projects/{projectId}/configuration-groups

{projectId} is the project code (for example ACME).

FieldRequiredNotes
nameyesNon-empty string, max 120 characters

Client-supplied ulid fields are rejected.

201 with the created configuration group object. See Group response fields.

Duplicate live name within the project returns 409 conflict. Empty name returns 422 validation_failed.

Terminal window
curl -sS -X POST \
-H "Authorization: Bearer $PROBARA_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Browser"}' \
"https://probara.net/api/v1/projects/ACME/configuration-groups"
GET/api/v1/projects/{projectId}/configuration-groups

Returns the live (non-deleted) configuration groups for the project.

ParameterNotes
pagePage number (1-based, default 1)
pageSizeItems per page (default 20)
includePass values to embed nested configuration values in each group

200 with { items, page, pageSize, total }. When include=values, each item embeds a values array.

Terminal window
curl -sS \
-H "Authorization: Bearer $PROBARA_API_TOKEN" \
"https://probara.net/api/v1/projects/ACME/configuration-groups?include=values"
GET/api/v1/configuration-groups/{groupUlid}

Returns a single live configuration group scoped to the active organization. Add ?include=values to embed the nested values.

Returns 404 not_found when the group is outside the active organization or has been deleted.

Terminal window
curl -sS \
-H "Authorization: Bearer $PROBARA_API_TOKEN" \
"https://probara.net/api/v1/configuration-groups/01JXXXXXXXXXXXXXXXXXXXXXXXXX"
PATCH/api/v1/configuration-groups/{groupUlid}

Partial update. At least one field must be provided; an empty body returns 422 validation_failed.

FieldRequiredNotes
namenoNon-empty string, max 120 characters

Duplicate live name within the project returns 409 conflict. Returns 404 not_found when the group is outside the active organization.

Terminal window
curl -sS -X PATCH \
-H "Authorization: Bearer $PROBARA_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Web Browser"}' \
"https://probara.net/api/v1/configuration-groups/01JXXXXXXXXXXXXXXXXXXXXXXXXX"
DELETE/api/v1/configuration-groups/{groupUlid}

Soft-deletes the configuration group and all its nested configuration values. Returns 204 on success. Subsequent GET returns 404 not_found and the group is excluded from list results.

Returns 404 not_found when the group is outside the active organization.

Terminal window
curl -sS -X DELETE \
-H "Authorization: Bearer $PROBARA_API_TOKEN" \
"https://probara.net/api/v1/configuration-groups/01JXXXXXXXXXXXXXXXXXXXXXXXXX"

All mutating endpoints (POST, PATCH) and GET /api/v1/configuration-groups/{groupUlid} return a single configuration group object with the following fields.

FieldTypeNotes
ulidstring (ULID)Server-assigned unique identifier
projectUlidstring (ULID)The project this group belongs to
namestringDisplay name
positionnumberRelative sort order
createdAtnumberUnix epoch milliseconds
updatedAtnumberUnix epoch milliseconds

When include=values is used, each group also carries a values array of configuration value objects.


Configuration values are nested under a configuration group.

POST/api/v1/configuration-groups/{groupUlid}/configurations
FieldRequiredNotes
nameyesNon-empty string, max 120 characters

Client-supplied ulid fields are rejected.

201 with the created configuration value object. See Value response fields.

Duplicate live name within the group returns 409 conflict. Empty name returns 422 validation_failed.

Terminal window
curl -sS -X POST \
-H "Authorization: Bearer $PROBARA_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Chrome"}' \
"https://probara.net/api/v1/configuration-groups/01JXXXXXXXXXXXXXXXXXXXXXXXXX/configurations"
GET/api/v1/configuration-groups/{groupUlid}/configurations

Returns all live configuration values for the group, in position order.

200 with { items, page, pageSize, total }.

Terminal window
curl -sS \
-H "Authorization: Bearer $PROBARA_API_TOKEN" \
"https://probara.net/api/v1/configuration-groups/01JXXXXXXXXXXXXXXXXXXXXXXXXX/configurations"
PATCH/api/v1/configurations/{configurationUlid}

Partial update. At least one field must be provided; an empty body returns 422 validation_failed.

FieldRequiredNotes
namenoNon-empty string, max 120 characters

Duplicate live name within the group returns 409 conflict. Returns 404 not_found when the value is outside the active organization.

Terminal window
curl -sS -X PATCH \
-H "Authorization: Bearer $PROBARA_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Google Chrome"}' \
"https://probara.net/api/v1/configurations/01JXXXXXXXXXXXXXXXXXXXXXXXXX"
DELETE/api/v1/configurations/{configurationUlid}

Soft-deletes the configuration value. Returns 204 on success. Subsequent GET returns 404 not_found.

Returns 404 not_found when the value is outside the active organization.

Terminal window
curl -sS -X DELETE \
-H "Authorization: Bearer $PROBARA_API_TOKEN" \
"https://probara.net/api/v1/configurations/01JXXXXXXXXXXXXXXXXXXXXXXXXX"
FieldTypeNotes
ulidstring (ULID)Server-assigned unique identifier
groupUlidstring (ULID)The configuration group this value belongs to
projectUlidstring (ULID)The project this value belongs to
namestringDisplay name
positionnumberRelative sort order within the group
createdAtnumberUnix epoch milliseconds
updatedAtnumberUnix epoch milliseconds

A run may carry a combination of configuration values — for example Chrome + Windows — set at create time or replaced later, on any run (with or without a linked test plan).

POST /api/v1/projects/{projectId}/runs accepts an optional configurationUlids array (at most 20 entries, no duplicates):

Terminal window
curl -sS -X POST \
-H "Authorization: Bearer $PROBARA_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Smoke — Chrome / Windows",
"caseUlids": ["01J...CASE"],
"configurationUlids": ["01J...CHROME", "01J...WINDOWS"]
}' \
"https://probara.net/api/v1/projects/ACME/runs"

Each supplied ULID must resolve to a live configuration value in the run’s own project; an unknown, soft-deleted, cross-project, or cross-organization ULID returns 404 not_found and no run is created. At most one value per configuration group is allowed — two values from the same group return 422 validation_failed with details.code = "duplicate_group".

PATCH /api/v1/runs/{runUlid} accepts the same configurationUlids field, applied as a replace-set:

  • A non-empty array replaces the run’s entire combination with exactly those values.
  • [] clears every configuration from the run.
  • Omitting the property leaves the run’s configurations untouched.

The same resolution and one-per-group rules apply. A configuration-only PATCH is accepted on an open or a closed non-aborted run; an aborted run rejects it with 409 conflict, exactly like every other metadata mutation.

Every RunResponse carries a configurations array — see Run response shape.

Configuration mutations emit the following events on the organization activity feed:

  • configuration_group.created, configuration_group.updated, configuration_group.deleted
  • configuration.created, configuration.updated, configuration.deleted

See Audit events.