Skip to content

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:

/projects/{project_path}/ref/{project_ref}
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:

{
  "operands": [3, 2],
  "antflow_config:launcher": "<eligible-launcher-name>"
}

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.