Create Project
POST/projects
Create a new project with an optional set of stratification dimensions.
The schema_name must be a registered GDI schema name (e.g. gdi_text_v1) or
agent_trace_v1, the schema a trace dataset must land in. The dimensions list declares
which dataset columns to use for coverage analysis and run-level score stratification.
test_plan_id instead creates the project from a published plan version: its schema, task
type, dimensions and both locks are copied onto the project, and the version is pinned. The
copy is a snapshot — republishing the plan later does not change the project. The plan's
references must still resolve in this workspace, or the create is a 422 carrying the same
failures list the publish routes return.
dimensions may accompany test_plan_id to override the copied set, since an unlocked
dimension tier is editable through PATCH /projects from the moment the project exists.
A locked tier refuses them here, as that PATCH does.
When the plan names a recommended_dataset, one of its versions is copied into the project
as its first dataset, unpromoted, and recommended_dataset_copy names the copy and the
version taken. The golden version is preferred, then a curated one, then the newest — an
unmapped raw version only wins when the dataset has nothing else. The source is never
re-parented, and the tester may supply their own data instead.
A recommended dataset that is not yet active, holds no version, or whose stored object is
gone is a 422 in the same failures shape, and no project is created.
Creating from a plan records a created row in the binding audit trail
(_record_binding_change), so the enforced methodology is attributable from the start.
Request
Responses
- 201
- 403
- 404
- 422
Successful Response
Forbidden
Not Found
Unprocessable Entity