API Endpoints
REST surface of the Variables module, exposed by the Bauhaus Back-Office. All paths are relative to the servlet context path, /api.
Unless stated otherwise, an endpoint requires authentication and the privilege given in the Access column on the module DDI_PHYSICALINSTANCE. Endpoints marked public require no authentication.
Physical instances
Section titled “Physical instances”| Method | Path | Access | Description |
|---|---|---|---|
GET |
/ddi/physical-instance |
READ |
All physical instances, alphabetically by label. HAL, with a self link per entry. Filtered by stamp under the STAMP strategy. |
GET |
/ddi/physical-instance/search |
READ |
Advanced-search rows: each physical instance joined to its study unit and group, labels resolved. Parent fields are null for an orphan instance. Filtered by stamp under STAMP. Send Cache-Control: no-cache to force a refresh. |
GET |
/ddi/physical-instance/{agency}/{id} |
READ |
The physical instance as a DDI 4 document. Code lists and categories are omitted — fetch them separately. |
GET |
/ddi/physical-instance/{agency}/{id}/parents |
READ |
Parent study unit and group (agency, id, label) plus the resolved owner stamps. |
GET |
/ddi/physical-instance/{agency}/{id}/codeslists |
READ |
Summaries of the code lists referenced by this instance’s variables. |
POST |
/ddi/physical-instance |
CREATE on the target group |
Creates a physical instance with its data relationship and logical record. Body: physicalInstanceLabel, dataRelationshipLabel, logicalRecordLabel, groupAgency, groupId, studyUnitAgency, studyUnitId. |
PATCH |
/ddi/physical-instance/{agency}/{id} |
UPDATE |
Updates the labels and the parents of an existing instance. Same body as the creation. |
PUT |
/ddi/physical-instance/{agency}/{id} |
UPDATE |
Replaces the whole instance with the DDI 4 document in the body: variables, code lists, categories, sentinel values. |
POST checks the privilege against the group identified as groupAgency|groupId, since the instance does not exist yet.
Groups
Section titled “Groups”| Method | Path | Access | Description |
|---|---|---|---|
GET |
/ddi/group |
READ |
Groups as HAL, with a self link per entry. Filtered by stamp under STAMP. |
GET |
/ddi/group/{agency}/{id} |
READ |
One group as a DDI 4 document. |
GET |
/ddi/groups |
authenticated | Plain list of all groups. No RBAC check. |
POST |
/ddi/groups |
authenticated | Creates or updates a group from a DDI 4 Group. Returns 201. No RBAC check. |
GET |
/ddi/groups/{agency}/{id}/logical-products |
READ |
Logical products of the group. |
GET |
/ddi/groups/{agency}/{id}/codes-list |
READ |
Every code list of the group, across all its logical products and code list schemes. |
GET |
/ddi/groups/{agency}/{id}/missing-codes-list |
READ |
The group’s sentinel-value code lists. |
GET |
/ddi/groups/{agency}/{id}/missing-values-representations |
READ |
The group’s reusable ManagedMissingValuesRepresentations, with a preview of their codes. |
GET |
/ddi/groups/{ga}/{gid}/logical-products/{la}/{lid}/code-list-scheme |
READ |
Code list schemes of one logical product. |
GET |
/ddi/groups/{ga}/{gid}/logical-products/{la}/{lid}/code-list-scheme/{ca}/{cid}/codes-list |
READ |
Code lists of one code list scheme. |
Study units, logical products, schemes
Section titled “Study units, logical products, schemes”| Method | Path | Access | Description |
|---|---|---|---|
GET |
/ddi/study-units |
READ |
All study units. |
POST |
/ddi/study-units |
CREATE |
Creates or updates a study unit from a DDI 4 StudyUnit. Returns 201. |
GET |
/ddi/logical-product |
READ |
All logical products, as HAL. |
GET |
/ddi/code-list-scheme |
READ |
All code list schemes, as HAL. |
Code lists and usages
Section titled “Code lists and usages”| Method | Path | Access | Description |
|---|---|---|---|
GET |
/ddi/mutualized-codes-list |
READ |
Summaries of the mutualized code lists. Send Cache-Control: no-cache to force a refresh. |
GET |
/ddi/mutualized-codes-list/{agency}/{id} |
READ |
One code list and its categories, as a DDI 4 document. Despite its name the endpoint is generic — it resolves any code list. Returns 200 with an empty body when the list does not exist. |
GET |
/ddi/codes-list/{agency}/{id}/users |
READ |
Variables using this code list, with their physical instance and study unit. |
GET |
/ddi/category/{agency}/{id}/users |
READ |
Code lists whose codes reference this category. |
GET |
/ddi/missing-values-representations/{agency}/{id}/users |
READ |
Variables referencing this sentinel-values representation. |
Conversion and validation
Section titled “Conversion and validation”| Method | Path | Access | Description |
|---|---|---|---|
POST |
/ddi/convert/ddi4-to-ddi3 |
READ |
DDI 4 JSON in, DDI 3.3 XML out (application/xml). |
POST |
/ddi/convert/ddi3-to-ddi4 |
READ |
DDI 3.3 fragments in, DDI 4 JSON out. |
GET |
/ddi/schema |
READ |
The DDI 4 JSON schema used for validation. |
POST |
/ddi/validate |
PUBLISH |
Validates a DDI 4 document. 200 {valid:true}, or 400 {valid:false, errors:[…]}. |
Public endpoints
Section titled “Public endpoints”No authentication. Every one of them negotiates its format through the Accept header: application/xml yields DDI 3.3 (a multi-fragment <FragmentInstance>), application/json yields DDI 4.
The /ddi/ prefix is required by the API gateway, which routes to Bauhaus only the paths beginning with it.
| Method | Path | Description |
|---|---|---|
GET |
/ddi/public/item/{agency}/{id} |
One DDI item, latest version. |
GET |
/ddi/public/item/{agency}/{id}/{version} |
One DDI item, at that version. |
GET |
/ddi/public/codelist/{agency}/{id} |
A code list with the categories its codes reference. |
GET |
/ddi/public/codelist/{agency}/{id}/{version} |
Same, at that version. |
GET |
/ddi/public/fichier/{agency}/{id} |
A physical instance and everything that composes it — its data relationships, and therefore its variables. |
GET |
/ddi/public/fichier/{agency}/{id}/{version} |
Same, at that version. |
GET |
/ddi/public/operation/{id}/fichiers |
The study unit documenting the Bauhaus operation {id}, together with the physical instances it references. |
/ddi/public/operation/{id}/fichiers resolves the operation IRI in the publication repository, so only published operations can be matched.
Error responses
Section titled “Error responses”| Status | When |
|---|---|
400 |
Sentinel values saved without their mandatory labels; malformed or schema-invalid DDI 4 on /ddi/validate |
403 |
RBAC refusal |
404 |
Study unit not found; unknown item, code list or physical instance on a public endpoint |
500 |
Colectica unreachable or returning an unexpected response |
400 and 404 bodies carry { "message": "…" }.