Buildpipelines
GET/repositories/{repo_id}/pipelines
List a repository's pipeline definitions.
list_pipelines
pipeline:read
A token needs thepipeline:readscope: View pipeline runs and definitionsGranted byread_api,read_repository,write_api,write_repository.Every operation this scope unlocksSingle-resource
x-gitmoap-isolation: {"kind":"single_or_self_scoped"}
Paginated
Pass thenext_tokena page returns to get the next one.
Published pipelines by default; ?status=draft|published|all chooses. Drafts are listed only to
those who can write pipelines (Maintainer and above).
Parameters
Path
- repo_idRepositoryId (string · uuid)Repository id
Query
- statusstringoptionalLifecycle filter: draft | published | all (default published; drafts writers-only)
- limitinteger · int32optionalPage size (1-100, default 20)
- next_tokenstringoptionalOpaque pagination cursor
Responses
200Pipeline definitionsapplication/json
itemsarray of PipelineResponse
- The PipelineResponse schema
- created_atstringRFC 3339.
created_byActorSummary
- The ActorSummary schema
- emailstring
- idstring
- usernamestring
- avatar_urlstring or nulloptional
edgesarray of Edge
- The Edge schema
- idEdgeId (string)
- source_node_idNodeId (string)
- target_node_idNodeId (string)
- source_portPortName (string) or nulloptionalAbsent on a dependency-only edge.
- target_portPortName (string) or nulloptionalAbsent on a dependency-only edge.
- idPipelineId (string · uuid)
- namePipelineName (string)
- repo_idRepositoryId (string · uuid)
stagesarray of Stage
- The Stage schema
- idStageId (string)
- namestring
- stage_typeStageTypesourcebuildtestpublishdeploynotifycustomThe pipeline stage a capability belongs to. Maps verbatim to the
stage_typefield of a capability ingitmoap-provider.yaml. - barrier_modeBarrierModestrictlenientoptionalWhen a stage is allowed to start.
strictwaits for every step in every earlier stage to finish, so a failure anywhere stops what follows.lenientwaits only for the steps a given step actually depends on, so an unrelated branch failing does not block it.strictis the default.
- statusPipelineDefinitionStatusdraftpublishedWhether a pipeline definition can run. A
draftis saved even when it is invalid — problems are reported, not refused — and cannot be run; apublisheddefinition must be valid to be saved, and can be run. trigger_configTriggerConfig
- updated_atstringRFC 3339.
component_instancesarray of ComponentInstanceoptional
- The ComponentInstance schema
- component_idComponentId (string · uuid)The component used, by id. Creating another component with the same name later never changes what this instance runs.
- idNodeId (string)The instance's id, unique among the pipeline's step ids. Connections use it as they use a step id.
- namestringDisplay name, also put in front of the display names of the steps it expands into.
- versionComponentVersionRef (string)
- component_refstring or nulloptionalThe reference as the author wrote it, kept for display. It is not used to find the component.
- paramsobjectoptionalValues for the component's parameters, by parameter name.
- stage_mapobjectoptionalMaps every stage slot the component declares to a stage of this pipeline, keeping the slots' order.
- descriptionstring or nulloptional
diagnosticsValidationSummary or nulloptionalThe problems found in a draft. Present only for drafts.
- The ValidationSummary schema
- validboolean
- violationsarray of ValidationViolation
- warningsarray of ValidationWarningoptionalThings worth knowing that do not make the definition invalid, such as a deprecated component version. A violation stops a published definition from being saved; a warning never does. Left out when there are none.
- next_tokenstring or nulloptional
200 exampleSynthesized example
{
"items": [
{
"created_at": "2026-10-16T22:01:57Z",
"created_by": {
"email": "tomas@acme.example",
"id": "id-6002",
"username": "tomas"
},
"edges": [],
"id": "43b71159-0929-4409-b1e7-f284bae36e2f",
"name": "payments-api",
"repo_id": "5b0e7c2a-9d14-4e8b-a6f1-2c3d4e5f6a70",
"stages": [],
"status": "draft",
"trigger_config": {},
"updated_at": "2026-10-14T07:30:21Z"
}
],
"next_token": "next-token-28cc"
}
400application/json
Error codes
- BAD_REQUESTThe request is malformed: a parameter or a body field is not a well-formed value of its type
errorErrorBody
- The ErrorBody schema
- codestringThe coarse category, tied to the status:
NOT_FOUND,CONFLICT,INSUFFICIENT_SCOPE. Every error has one; the API reference's error catalogue lists them all. - messagestringWhat went wrong, for a person. Written to be read, not parsed: match on
reasonorcode. - fieldstring or nulloptionalOn a
400that refused one field's value, the field, as its JSON path:email,items[0].name. Put the message under that input. Absent on every other error. - reasonstring or nulloptionalThe specific code, when the error has one:
LAST_ORGANIZATION_OWNER,BRANCH_PROTECTED. The message starts with it too. Match on this when it is present, and oncodeotherwise. - required_scopestring or nulloptionalThe scope the access token was missing, on
INSUFFICIENT_SCOPE. - violationsanyoptionalPresent on the structured-validation errors (
PROVIDER_VALIDATION_FAILEDper-node,PIPELINE_VALIDATION_FAILEDDAG): a JSON array of the offending elements, so a caller can fix every one in a single round-trip. Absent (omitted) on every other error.
400 exampleSynthesized example
{
"error": {
"code": "code-53c6",
"message": "Pin a page's payload to the build that rendered it"
}
}
401Unauthenticated — no credential, or an invalid oneapplication/json
Error codes
- UNAUTHORIZEDNo credential was sent, or the one sent is invalid, expired or revoked
errorErrorBody
- The ErrorBody schema
- codestringThe coarse category, tied to the status:
NOT_FOUND,CONFLICT,INSUFFICIENT_SCOPE. Every error has one; the API reference's error catalogue lists them all. - messagestringWhat went wrong, for a person. Written to be read, not parsed: match on
reasonorcode. - fieldstring or nulloptionalOn a
400that refused one field's value, the field, as its JSON path:email,items[0].name. Put the message under that input. Absent on every other error. - reasonstring or nulloptionalThe specific code, when the error has one:
LAST_ORGANIZATION_OWNER,BRANCH_PROTECTED. The message starts with it too. Match on this when it is present, and oncodeotherwise. - required_scopestring or nulloptionalThe scope the access token was missing, on
INSUFFICIENT_SCOPE. - violationsanyoptionalPresent on the structured-validation errors (
PROVIDER_VALIDATION_FAILEDper-node,PIPELINE_VALIDATION_FAILEDDAG): a JSON array of the offending elements, so a caller can fix every one in a single round-trip. Absent (omitted) on every other error.
401 exampleSynthesized example
{
"error": {
"code": "code-5591",
"message": "Pin a page's payload to the build that rendered it"
}
}
403Forbidden — the caller's access level or token scope is insufficientapplication/json
Error codes
- FORBIDDENYou are signed in but may not do this here;
reasonnames the permission or the rule that refused it - INSUFFICIENT_SCOPEThe access token lacks the scope this operation needs;
required_scopenames it - PERMISSION_REQUIREDYou need a permission you do not hold here; the message names it
errorErrorBody
- The ErrorBody schema
- codestringThe coarse category, tied to the status:
NOT_FOUND,CONFLICT,INSUFFICIENT_SCOPE. Every error has one; the API reference's error catalogue lists them all. - messagestringWhat went wrong, for a person. Written to be read, not parsed: match on
reasonorcode. - fieldstring or nulloptionalOn a
400that refused one field's value, the field, as its JSON path:email,items[0].name. Put the message under that input. Absent on every other error. - reasonstring or nulloptionalThe specific code, when the error has one:
LAST_ORGANIZATION_OWNER,BRANCH_PROTECTED. The message starts with it too. Match on this when it is present, and oncodeotherwise. - required_scopestring or nulloptionalThe scope the access token was missing, on
INSUFFICIENT_SCOPE. - violationsanyoptionalPresent on the structured-validation errors (
PROVIDER_VALIDATION_FAILEDper-node,PIPELINE_VALIDATION_FAILEDDAG): a JSON array of the offending elements, so a caller can fix every one in a single round-trip. Absent (omitted) on every other error.
403 exampleSynthesized example
{
"error": {
"code": "code-274e",
"message": "Label every synthesized example"
}
}
404application/json
Error codes
- NOT_FOUNDThe resource does not exist — or exists and you cannot see it: a private resource you have no access to answers exactly as an absent one does
errorErrorBody
- The ErrorBody schema
- codestringThe coarse category, tied to the status:
NOT_FOUND,CONFLICT,INSUFFICIENT_SCOPE. Every error has one; the API reference's error catalogue lists them all. - messagestringWhat went wrong, for a person. Written to be read, not parsed: match on
reasonorcode. - fieldstring or nulloptionalOn a
400that refused one field's value, the field, as its JSON path:email,items[0].name. Put the message under that input. Absent on every other error. - reasonstring or nulloptionalThe specific code, when the error has one:
LAST_ORGANIZATION_OWNER,BRANCH_PROTECTED. The message starts with it too. Match on this when it is present, and oncodeotherwise. - required_scopestring or nulloptionalThe scope the access token was missing, on
INSUFFICIENT_SCOPE. - violationsanyoptionalPresent on the structured-validation errors (
PROVIDER_VALIDATION_FAILEDper-node,PIPELINE_VALIDATION_FAILEDDAG): a JSON array of the offending elements, so a caller can fix every one in a single round-trip. Absent (omitted) on every other error.
404 exampleSynthesized example
{
"error": {
"code": "code-b523",
"message": "Pin a page's payload to the build that rendered it"
}
}
CLI
gitmoap pipelines list
- --repo-ididRepository id (id or owner/repo path)
- --limitnumberoptionalPage size (1-100, default 20)
- --next-tokenstringoptionalOpaque pagination cursor
- --statusstringoptionalLifecycle filter: draft | published | all (default published; drafts writers-only)