ServiceOverview
Everything a service page shows, in one call: the service, its repositories and owner, its latest release and pipeline run, open merge requests, technical debt, where it is deployed, its scorecards and its dependency counts.
Shape
debtServiceDebt
- The ServiceDebt schema
- driftedinteger · int320–∞
- open_bugsinteger · int320–∞
rowsarray of AnchorDebtRow
- The AnchorDebtRow schema
- driftedinteger · int320–∞
- markersinteger · int320–∞
- open_bugsinteger · int320–∞
- open_storiesinteger · int320–∞
- pathRepoPath (string)
- totalinteger · int320–∞
ownersarray of ActorSummaryoptionalWho the repository's CODEOWNERS file says owns this file. Absent when there is no CODEOWNERS file, or it names nobody for this path.
- The ActorSummary schema
- emailstring
- idstring
- usernamestring
- avatar_urlstring or nulloptional
dependency_countsDependencyCountsHow many dependencies the service has and how many services depend on it, with how many of those you cannot see.
- The DependencyCounts schema
- hiddeninteger · int320–∞Dependencies left out, in either direction, because you cannot see the service at the far end.
- inboundinteger · int320–∞
- outboundinteger · int320–∞
- open_merge_requestsinteger · int320–∞
repositoriesarray of ServiceRepositoryRefThe repositories holding the service's code. Repositories you cannot see are left out.
- The ServiceRepositoryRef schema
- default_branchstring
- full_pathstring
- path_globsarray of string
- repository_idRepositoryId (string · uuid)
- visibilityVisibilitypublicinternalprivate
serviceService
- The Service schema
- created_atstring
- display_namestring
- group_idGroupId (string · uuid)The declaring group — where the entry lives for listing and quota purposes. Not necessarily the owner.
- kindServiceKindservicelibrarywebsitejobdatastoreapiml_modelotherWhat sort of thing a service is. The kind decides which scorecard checks apply: a
libraryhas no deployments, so a deployment check is not applicable to it rather than failing. For your own classifications, use annotations. - lifecycleServiceLifecycleexperimentalproductiondeprecatedretiredWhere a service is in its life.
- service_idServiceId (string · uuid)
- slugServiceSlug (string)
- sourceServiceSourceinferreddeclaredapiHow the catalog entry came to exist. Set by the platform, never accepted from a request. Any source other than
inferredmeans a person has vouched for the entry. - updated_atstring
- versioninteger · int64The service's revision, incremented on every change. Send it with an update to have the update refused with a
409if someone changed the service since you read it. - annotationsobjectoptional
api_specsarray of ApiSpecRefoptional
- The ApiSpecRef schema
- pathRepoPath (string)
- repository_idRepositoryId (string · uuid)
- spec_kindApiSpecKindopenapigrpcasyncapiWhich interface-description format a spec is written in.
created_byActorSummary or nulloptional
- The ActorSummary schema
- emailstring
- idstring
- usernamestring
- avatar_urlstring or nulloptional
- descriptionstring or nulloptional
- externalbooleanoptionalWhether the service is built outside gitmoap — a vendor SaaS, a service on another forge, a database provisioned elsewhere. The catalog records its name, owner and the dependencies on it, and nothing else. An external service has no repository paths.
linksarray of ServiceLinkoptional
- The ServiceLink schema
- link_typeServiceLinkTyperunbookdashboarddocschatotherWhat a service link points at.
othercovers anything the listed kinds do not. - urlHttpsUrl (string)
- orphaned_atstring or nulloptionalWhen the catalog file declaring this service stopped declaring it. The service is kept, with its history, rather than deleted.
providesarray of ProvidedArtifactoptional
- The ProvidedArtifact schema
- formatPackageRegistryFormatnpmcargopypiThe package ecosystem a registry speaks. A group has at most one registry per format.
- namePackageName (string)
repo_pathsarray of ServiceRepoPathoptional
- The ServiceRepoPath schema
- path_globstring
- path_prefixstringThe longest literal prefix of
path_glob, worked out by the platform. Read-only. - repository_idRepositoryId (string · uuid)
- is_excludebooleanoptionalWhether this glob removes its matches from the service's paths instead of adding them. It affects only its own service.
current_deploymentsarray of DeploymentSummaryoptionalWhat is currently deployed, one entry per environment the service is running in. Absent when it has never been deployed.
- The DeploymentSummary schema
- commit_shastring
- deployed_atstring
- deployment_idDeploymentId (string · uuid)
- environment_idEnvironmentId (string · uuid)
- repository_idRepositoryId (string · uuid)
- service_idServiceId (string · uuid)
- statusDeploymentStatusrequestedawaiting_approvalrejectedrunningsucceededfailedcancelledsupersededskippedWhere a deployment is in its life. It starts
requested; waits asawaiting_approvalwhen the environment needs approval, endingrejectedif refused; thenrunning, endingsucceeded,failedorcancelled.skippedmeans another deploy held the environment and its policy is to skip. A successful deployment becomessupersededwhen a later one replaces it. - pipeline_run_idPipelineRunId (string · uuid) or nulloptional
latest_pipeline_runPipelineRunSummary or nulloptional
- The PipelineRunSummary schema
- pipeline_namestring
- pipeline_run_idPipelineRunId (string · uuid)
- repo_idRepositoryId (string · uuid)
- started_atstring
- statusPipelineStatusrunningsucceededsucceeded_with_warningsfailedtimed_outcancelledPer-
PipelineRunstatus. triggerTriggerContext
- The TriggerContext schema
- repo_idRepositoryId (string · uuid)
- repo_pathstring
- before_shastring or nulloptionalThe commit the ref pointed at before the push — what a
pathsfilter compares against. On a run started by hand, the commit its starter named to compare from, if any. - branchstring or nulloptional
- buildMrBuildTargetmerge_resultsourceor nulloptionalWhich commit a merge-request-triggered run built.
- commit_shastring or nulloptional
- depthinteger · int32optional0–∞How many pushes made by pipeline runs led to this run, one after another;
0when no pipeline's push started it. - every_stepbooleanoptionalEvery step runs, whatever its path filter says — asked for by whoever started the run.
- extraobjectoptionalAdditional fields supplied by whatever started the run, passed along without being interpreted.
- kindTriggerKindpushmerge_requesttagschedulemanualoptionalWhat started this run.
- mr_idMergeRequestId (integer · int64) or nulloptional
- paramsobjectoptionalThe values a person supplied when starting the run, keyed by the parameter names the pipeline's manual trigger declares.
- ref_namestring or nulloptionalThe full ref (e.g.
refs/tags/v1.2.0). Set for runs a tag started, whichbranchcannot describe. - root_group_idGroupId (string · uuid) or nulloptionalThe organisation this run belongs to — the root group of the repository it was triggered for. Recorded when the run starts and never recalculated, so a repository moved to a different organisation part-way through a run keeps the artifacts, logs and cache it has already produced. Absent on runs that started before runs recorded this.
- schedule_stemstring or nulloptionalWhich scheduled trigger fired, when
kindisschedule. - source_shastring or nulloptionalThe source-branch commit this run tested: a merge request's source head for a merge-request run, whichever commit it built, and the commit itself for a push or manual run. Set by the platform; absent on a run whose graph the caller supplied, which never counts toward a merge request's pipelines.
- target_branchstring or nulloptionalThe merge request's target branch.
- target_shastring or nulloptionalThe target branch's tip this merge-request run was tested against. Once the target branch moves on, the merge check reports a merge-result run as out of date.
triggered_byActorSummaryoptionalWho started the run, set by the platform from the authenticated caller; a value supplied in a request is ignored.
- The ActorSummary schema
- emailstring
- idstring
- usernamestring
- avatar_urlstring or nulloptional
- trustTriggerTrusttrusteduntrustedoptionalWhether the code being built is trusted with the repository's connections and secrets. Set by the platform when the run starts, whatever a request says.
- trust_reasonTrustReason or nulloptionalWhy the run has the trust it has: who wrote the code, a person's merge or approval, or the organization's AI configuration. Absent on runs that started before this was recorded.
- finished_atstring or nulloptional
- pipeline_idPipelineId (string · uuid) or nulloptionalThe pipeline definition this run was started from. Absent when that definition has since been deleted;
pipeline_namestill names what ran. - re_run_ofPipelineRunId (string · uuid) or nulloptional
stagesarray of StageRollupoptionalPer-stage counts of how many steps are in each status, in execution order — enough to draw the run's shape in a list. Empty for older runs recorded before these counts existed.
- The StageRollup schema
- barrier_passedbooleanWhether every step in the stage has finished.
countsNodeStatusCounts
- The NodeStatusCounts schema
- awaiting_approvalinteger · int32optional0–∞
- cancelledinteger · int32optional0–∞
- dispatchedinteger · int32optional0–∞
- failedinteger · int32optional0–∞
- pendinginteger · int32optional0–∞
- runninginteger · int32optional0–∞
- skippedinteger · int32optional0–∞
- succeededinteger · int32optional0–∞
- timed_outinteger · int32optional0–∞
- stage_idStageId (string)
- stage_indexinteger · int320–∞
- tolerated_failuresinteger · int32optional0–∞How many of the stage's failed or timed-out steps were allowed to fail, so they degrade the run rather than fail it. Left out when zero.
latest_releaseRelease or nulloptional
- The Release schema
authorActorSummaryWho created the release.
- The ActorSummary schema
- emailstring
- idstring
- usernamestring
- avatar_urlstring or nulloptional
- commit_shaCommitHash (string)The commit the tag pointed to when the release was created.
- created_atstring
- nameReleaseName (string)
- repository_idRepositoryId (string · uuid)
- tag_nameTagName (string)
- updated_atstring
assetsarray of ReleaseAssetoptionalThe release's files. Included when a single release is fetched.
- The ReleaseAsset schema
- asset_idReleaseAssetId (string · uuid)
- content_typestring
- created_atstring
- nameAssetName (string)
- repository_idRepositoryId (string · uuid)
- sizeinteger · int640–∞
- stateAssetStateuploadingavailableWhether a release file has been uploaded:
uploading(an upload URL was issued, but the upload has not been confirmed yet) oravailable. - tag_nameTagName (string)
- updated_atstring
uploaderActorSummaryWho uploaded the file.
- The ActorSummary schema
- emailstring
- idstring
- usernamestring
- avatar_urlstring or nulloptional
- download_urlstring or nulloptionalWhere to download the file.
- bodyReleaseBody (string) or nulloptional
- draftbooleanoptionalWhether the release is an unpublished draft, visible only to people with Developer access or above.
- prereleasebooleanoptionalWhether the release is marked as a pre-release. A pre-release is never returned as the latest release.
- published_atstring or nulloptionalSet when the release leaves draft.
- tarball_urlstring or nulloptionalWhere to download the tagged source as a
.tar.gzarchive. - versioninteger · int64optional0–∞Increases with every change. Send it with an update so that a change made since you read the release is not overwritten.
- zipball_urlstring or nulloptionalWhere to download the tagged source as a
.ziparchive.
scorecardsarray of ServiceScorecardSummaryoptionalEvery scorecard that applies to this service, with the level it reaches and its check counts. Absent when no scorecard applies.
- The ServiceScorecardSummary schema
countsCheckStateCounts
- The CheckStateCounts schema
- expiredinteger · int320–∞
- failinginteger · int320–∞
- not_applicableinteger · int320–∞
- passinginteger · int320–∞
- staleinteger · int320–∞
- unknowninteger · int320–∞
- namestring
- scorecard_idScorecardId (string · uuid)
- slugScorecardSlug (string)
- levelstring or nulloptionalThe highest level every required check satisfies, or
nullwhen the scorecard has no levels or the service reaches none of them.
Example
Synthesized example{
"debt": {
"drifted": 26,
"open_bugs": 23,
"rows": [
{
"drifted": 64,
"markers": 49,
"open_bugs": 81,
"open_stories": 39,
"path": "path-dab1",
"total": 4
},
{
"drifted": 63,
"markers": 26,
"open_bugs": 81,
"open_stories": 18,
"path": "path-2151",
"total": 5
}
]
},
"dependency_counts": {
"hidden": 52,
"inbound": 3,
"outbound": 15
},
"open_merge_requests": 8,
"repositories": [
{
"default_branch": "main",
"full_path": "acme/payments-api",
"path_globs": [],
"repository_id": "5b0e7c2a-9d14-4e8b-a6f1-2c3d4e5f6a70",
"visibility": "public"
}
],
"service": {
"created_at": "2026-10-13T00:19:12Z",
"display_name": "Tomás Reyes",
"group_id": "4c1d8e2f-6a3b-4f90-b7c5-1e2d3c4b5a69",
"kind": "service",
"lifecycle": "experimental",
"service_id": "f97fe2ef-1d21-4e76-a35e-358792b772d8",
"slug": "slug-6f8b",
"source": "inferred",
"updated_at": "2026-10-11T03:27:00Z",
"version": 85,
"annotations": {},
"api_specs": [
{
"path": "path-1aeb",
"repository_id": "5b0e7c2a-9d14-4e8b-a6f1-2c3d4e5f6a70",
"spec_kind": "openapi"
},
{
"path": "path-b7f4",
"repository_id": "5b0e7c2a-9d14-4e8b-a6f1-2c3d4e5f6a70",
"spec_kind": "openapi"
}
],
"created_by": {
"email": "tomas@acme.example",
"id": "id-68b7",
"username": "tomas",
"avatar_url": "https://gitmoap.example/acme/c125984d"
},
"description": "Renders each region as density contours of its operations.",
"external": false,
"links": [
{
"link_type": "runbook",
"url": "https://gitmoap.example/acme/8ce2fe8b"
}
],
"orphaned_at": "2026-10-15T02:24:15Z",
"owner": {
"group_id": "4c1d8e2f-6a3b-4f90-b7c5-1e2d3c4b5a69",
"kind": "group",
"full_path": "acme/payments-api"
},
"provides": [
{
"format": "npm",
"name": "payments-api"
},
{
"format": "npm",
"name": "payments-api"
}
],
"repo_paths": [
{
"path_glob": "path-glob-e7e8",
"path_prefix": "path-prefix-7636",
"repository_id": "5b0e7c2a-9d14-4e8b-a6f1-2c3d4e5f6a70"
},
{
"path_glob": "path-glob-6c3f",
"path_prefix": "path-prefix-d90c",
"repository_id": "5b0e7c2a-9d14-4e8b-a6f1-2c3d4e5f6a70"
}
]
},
"current_deployments": [
{
"commit_sha": "54bb1c3952e47d061ab1a1feea22f0e33d3dbeb3",
"deployed_at": "2026-10-16T16:31:08Z",
"deployment_id": "ee02f582-c8eb-4134-bb16-02c81d74ba18",
"environment_id": "cd08354c-8b2c-4437-991b-643e5f782a8c",
"repository_id": "5b0e7c2a-9d14-4e8b-a6f1-2c3d4e5f6a70",
"service_id": "a9dc0279-46e9-431a-96ec-5b3adbaef438",
"status": "requested"
},
{
"commit_sha": "0b3d6b2cc25498c860204398b5f64abefa51d9cc",
"deployed_at": "2026-10-16T05:47:15Z",
"deployment_id": "74531262-f42f-444e-9ed7-92bff789fcef",
"environment_id": "9c2110a9-22b2-45bd-ae04-52b978fa0cd0",
"repository_id": "5b0e7c2a-9d14-4e8b-a6f1-2c3d4e5f6a70",
"service_id": "b1d7c640-16b6-4927-b498-1c66f991e5ea",
"status": "requested"
}
],
"latest_pipeline_run": {
"pipeline_name": "payments-api",
"pipeline_run_id": "9e2b7c41-3d5a-4f8e-b1c2-7a6d5e4f3c2b",
"repo_id": "5b0e7c2a-9d14-4e8b-a6f1-2c3d4e5f6a70",
"started_at": "2026-10-09T12:57:55Z",
"status": "running",
"trigger": {
"repo_id": "5b0e7c2a-9d14-4e8b-a6f1-2c3d4e5f6a70",
"repo_path": "repo-path-f29b",
"before_sha": "7daa327e9cbe379ba0c25b72e241cbb51fe441e1",
"branch": "feat/run-header-stream",
"build": "merge_result",
"commit_sha": "06f7296569affdb70dea2b21c025b725bea0a059",
"depth": 38,
"every_step": false,
"extra": {},
"kind": "push",
"mr_id": 42,
"params": {},
"ref_name": "payments-api",
"root_group_id": "4c1d8e2f-6a3b-4f90-b7c5-1e2d3c4b5a69",
"schedule_stem": "schedule-stem-242f",
"source_sha": "59c6ff4ee51462d5131f5de7709b2399686bf46c",
"target_branch": "main",
"target_sha": "10254053f9c53e4e0d45f36d57979732ac241785",
"triggered_by": {
"email": "tomas@acme.example",
"id": "id-9067",
"username": "mara",
"avatar_url": "https://gitmoap.example/acme/9b788ff6"
},
"trust": "trusted",
"trust_reason": {
"kind": "written_by_people"
}
},
"finished_at": "2026-10-12T17:17:46Z",
"pipeline_id": "67fb9963-21b7-491a-a54b-55f8cfa27cbf",
"re_run_of": "9e2b7c41-3d5a-4f8e-b1c2-7a6d5e4f3c2b",
"stages": [
{
"barrier_passed": false,
"counts": {},
"stage_id": "6b9959fa-63e5-4344-92bf-3a9250be8910",
"stage_index": 5
}
]
},
"latest_release": {
"author": {
"email": "tomas@acme.example",
"id": "id-7c4b",
"username": "lin",
"avatar_url": "https://gitmoap.example/acme/23dce723"
},
"commit_sha": "1fce7abefd1ef8c07493dfcd8b764d2845e15f6f",
"created_at": "2026-10-09T11:46:39Z",
"name": "payments-api",
"repository_id": "5b0e7c2a-9d14-4e8b-a6f1-2c3d4e5f6a70",
"tag_name": "payments-api",
"updated_at": "2026-10-14T19:28:31Z",
"assets": [
{
"asset_id": "c5504875-02a9-4990-96ad-ebd40ff85e95",
"content_type": "content-type-5703",
"created_at": "2026-10-16T21:45:58Z",
"name": "payments-api",
"repository_id": "5b0e7c2a-9d14-4e8b-a6f1-2c3d4e5f6a70",
"size": 7,
"state": "uploading",
"tag_name": "payments-api",
"updated_at": "2026-10-16T03:35:21Z",
"uploader": {
"email": "tomas@acme.example",
"id": "id-4ae8",
"username": "mara"
}
},
{
"asset_id": "6cad4294-3775-4bc4-937b-e3f0aa2acd24",
"content_type": "content-type-b929",
"created_at": "2026-10-08T21:50:27Z",
"name": "payments-api",
"repository_id": "5b0e7c2a-9d14-4e8b-a6f1-2c3d4e5f6a70",
"size": 1,
"state": "uploading",
"tag_name": "payments-api",
"updated_at": "2026-10-11T09:13:52Z",
"uploader": {
"email": "lin@acme.example",
"id": "id-09bf",
"username": "tomas"
}
}
],
"body": "Renders each region as density contours of its operations.",
"draft": false,
"prerelease": false,
"published_at": "2026-10-12T21:11:29Z",
"tarball_url": "https://gitmoap.example/acme/e2db056e",
"version": 82,
"zipball_url": "https://gitmoap.example/acme/deb12ecf"
},
"owner": {
"group_id": "4c1d8e2f-6a3b-4f90-b7c5-1e2d3c4b5a69",
"kind": "group",
"full_path": "acme/payments-api"
},
"scorecards": [
{
"counts": {
"expired": 4,
"failing": 49,
"not_applicable": 62,
"passing": 53,
"stale": 24,
"unknown": 17
},
"name": "payments-api",
"scorecard_id": "c2381d8e-fbbf-4d2a-8a41-d5fda6f04ef5",
"slug": "slug-04c5"
},
{
"counts": {
"expired": 25,
"failing": 7,
"not_applicable": 19,
"passing": 9,
"stale": 26,
"unknown": 44
},
"name": "payments-api",
"scorecard_id": "41fef587-52be-466d-8a15-6b3d36a4ba7b",
"slug": "slug-39d3"
}
]
}
Graph
Used inside
No schema contains this one.
Used by
Sent by 0 operations
No operation takes it as a request body.
Returned by 1 operation