Skip to content
GitmoapAPIBeta
Schema

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.
  • 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 library has 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 inferred means 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 409 if 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
    • 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. other covers 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.
    • ownerOwnerRef or nulloptionalWho owns the service. Absent when nobody does.
    • 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 as awaiting_approval when the environment needs approval, ending rejected if refused; then running, ending succeeded, failed or cancelled. skipped means another deploy held the environment and its policy is to skip. A successful deployment becomes superseded when 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-PipelineRun status.
    • triggerTriggerContext
      • The TriggerContext schema
      • repo_idRepositoryId (string · uuid)
      • repo_pathstring
      • before_shastring or nulloptionalThe commit the ref pointed at before the push — what a paths filter 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; 0 when 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, which branch cannot 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 kind is schedule.
      • 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.
      • 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_name still 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.
    • 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) or available.
      • tag_nameTagName (string)
      • updated_atstring
      • uploaderActorSummaryWho uploaded the file.
      • 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.gz archive.
    • 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 .zip archive.
  • ownerOwnerRef or nulloptional
  • 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 null when 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 by

Sent by 0 operations

No operation takes it as a request body.