Project API¶
The Project API discovers workflows from GitLab and exposes their process definitions at a selected Git reference. Use a user API credential; repository access is resolved according to the instance's authentication and project-access policy.
Paths are relative to the API base URL. Project-scoped paths share this base:
| Path parameter | Type | Meaning |
|---|---|---|
project_path |
string | GitLab namespace and project path, including nested groups. |
project_ref |
string | Branch, tag, or commit reference. |
process_id |
string | ID returned by process discovery; not the display label. |
job_id |
string | Job ID returned by submission. |
file_path |
string | Repository-relative file path. |
These identifiers can contain slashes. Use returned resource links and correctly
encode path values; a # in a process ID must not become a URL fragment.
Submitting from a branch resolves and stores a commit reference for the job.
Project discovery and publication¶
| Method | Path | Success | Response |
|---|---|---|---|
GET |
/projects/search |
200 |
ProjectList with cursor-based pagination links. |
POST |
/projects/publish |
200 |
PublicProjectData; administrator-only publication. |
DELETE |
/projects/publish |
204 |
No response body; administrator-only unpublication. |
Search parameters¶
| Query parameter | Type | Default | Meaning |
|---|---|---|---|
topics |
repeated string | Required by handler | At least one GitLab topic; omission returns 422. |
query |
string | Omitted | Project search text. |
cursor |
string | Omitted | Opaque pagination cursor. |
cursor_direction |
before or after |
after |
Direction relative to the cursor. |
limit |
integer, 1–79 | 10 |
Maximum requested page size. |
Follow pagination.next_page or pagination.prev_page rather than constructing
cursors. The links preserve topics and search text. Search visibility follows
the token-selection policy.
Publication request¶
POST /projects/publish accepts ProjectPublishData:
| Field | Type | Required | Meaning |
|---|---|---|---|
path |
string | Yes | GitLab project path. |
groups |
array of strings | Yes | Authentication groups allowed to access the publication; [] has no group restriction. |
Publication verifies that the server's GitLab token can access the project.
It does not change GitLab visibility, push a package, or run a workflow.
The response contains the GitLab project id and the publication groups.
An inaccessible project returns 400, a non-administrator 403, and an
already published project 409.
DELETE /projects/publish takes the project path as a query parameter,
not a JSON body. It also requires administrator access and verifies server
repository access. See Published project access
for the access model and Token selection
for personal-token fallback limitations.
Project-scoped operations¶
The paths in this table are suffixes appended to the project base above.
| Method | Path suffix | Success | Response |
|---|---|---|---|
GET |
Base itself | 200 |
LandingPage with discovery links. |
GET |
/conformance |
200 |
ConfClass; the same declaration as the root resource. |
GET |
/project |
200 |
ProjectDetails. |
GET |
/file/{file_path} |
200 |
Streamed repository file. |
GET |
/processes |
200 |
ProcessList. |
GET |
/processes/{process_id} |
200 |
ProcessDescription. |
GET |
/processes/{process_id}/package |
200 |
ApplicationPackage. |
GET |
/processes/{process_id}/carbon |
200 |
CarbonScore. |
POST |
/processes/{process_id}/execution |
201 |
StatusInfo; creates a job. |
GET |
/jobs |
200 |
JobList, filtered by project and reference. |
GET |
/jobs/{job_id} |
200 |
StatusInfo. |
GET |
/jobs/{job_id}/results |
200 |
Results object. |
GET |
/jobs/{job_id}/logs |
200 |
Log byte stream. |
PUT, PATCH |
/jobs/{job_id} |
200 |
StatusInfo; update annotations, not worker execution state. |
POST |
/jobs/{job_id}/retry |
200 |
StatusInfo; retry the existing failed job. |
DELETE |
/jobs/{job_id} |
200 |
StatusInfo; request dismissal, not deletion of archived files. |
The process and job list routes also accept a trailing slash. For individual job operations, use the links returned for the job; authorization is checked against the job ID, not established merely by a project/ref path.
Job bodies, lifecycle restrictions, results, and errors are shared with the
Job API. The project job list uses repeated process_id, not the
root list's process_id_list, and supports list_status, before, after,
limit (1–10000), query, and repeated tags. It does not expose the root
list's order_by, message, or id_launcher filters.
Project resources¶
ProjectList¶
| Field | Type | Meaning |
|---|---|---|
projects |
array of Project |
Matching accessible GitLab projects. |
pagination |
object, optional | limit, optional total, and optional prev_page/next_page URLs. |
Project and ProjectDetails¶
| Fields | Type | Meaning |
|---|---|---|
id, name, path, url, default_branch |
strings | GitLab project identity and location. |
topics |
array of strings | Project topics. |
description |
string or null | Project description. |
created_at, updated_at |
date-time strings | Repository metadata timestamps. |
star_count, fork_count |
integers | GitLab project activity. |
links |
array of Link, optional |
Project and related-resource links. |
ref, readme |
strings | Selected reference and project documentation; details only. |
branches, tags |
objects mapping names to URLs | Links to project details at each reference; details only. |
contributors |
array of objects | Contributor name and email; details only. |
quality_score |
object | value, max, and category details: popularity, documentation, open source, and code quality. |
is_public, public |
boolean/object, optional | AntFlow publication state and group restrictions, not GitLab's anonymous-access policy. |
shared_permissions |
object, optional | can_read_repository and can_read_env flags. |
Preview assets, when available, are exposed through a preview link. Internal
discovery fields are not a public file-list contract. Optional fields can be
omitted; use the deployed OpenAPI schemas for exact serialization.
ProcessDescription¶
The process list supports include_errors (boolean, omitted by default) and
limit (optional integer). With error reporting enabled, invalid CWL files
can appear in errors as objects with id and optional detail. Discovery
returns workflow summaries, not every CommandLineTool as a runnable process.
| Field | Type | Meaning |
|---|---|---|
id, version |
strings | Process identifier and selected version/reference. |
title, description, keywords, metadata |
Optional descriptive fields | Derived from CWL and package metadata. |
jobControlOptions, outputTransmission |
Optional arrays | Advertised process capabilities. |
inputs |
object | Input-name to input-description map, including JSON Schema and occurrence constraints. |
outputs |
object | Output-name to output-description map. |
links |
array of Link |
Self, execution, package, carbon, project, and source links. |
The description is identity- and instance-dependent: eligible launcher names,
secret aliases, and publication-storage choices can differ between users.
The default AntFlow additional-input prefix is antflow_config:; do not assume
that a name or launcher choice from another deployment is valid here.
See CWL reference for types and form annotations.
ApplicationPackage and CarbonScore¶
GET .../package accepts cwl_format (default yaml, supported formats
yaml and json) and optional job_id. Supplying a job ID requires access
to that job and uses its stored commit and execution configuration.
| Package field | Type | Meaning |
|---|---|---|
main |
string | Main CWL workflow identifier. |
content |
string | Serialized CWL package in the selected format. |
source |
string | Source reference; defaults to an empty string when absent. |
The carbon response is {"score": "A"}, with possible scores A through
E or ? when no applicable resource information is available. It is a
resource-requirement-derived indicator, not a measured emissions report.
Execution request¶
The JSON body is a flat object whose keys are declared process input names. For the calculator workflow, the shape is:
This is a template: replace the launcher with a choice from your description.
For other workflows, use their own input names and types. Secret values are
vault aliases. Do not wrap this object in inputs or execution_content.
A successful submission returns 201, a StatusInfo JSON body, a Location
header pointing to job status, and a monitor link. accepted means queued,
not already running. Missing eligible launchers or invalid inputs can return
404 or 422. Submission stores a job and can consume compute and storage.
For a runnable procedure with your own project, follow Run a workflow through the API.