JJijibora Docs
docs.jijibora.online
On this page (27 sections)

Sovereign Git Forge + Scenario Soft API (EGOV-99) — OpenAPI 1.0.0-soft

<!-- GENERATED by scripts/render-platform-map-api-docs.mjs — do not hand-edit; edit apps/agent-bff/openapi/<spec>.json and re-run. --> Scope: The published reference for Sovereign Git Forge + Scenario Soft API (EGOV-99). 20 paths — the measured spec-vs-implementation coverage lives in the complete API inventory. Status: rendered 2026-11-09 from the OpenAPI source for Sovereign Git Forge + Scenario Soft API (EGOV-99) — regenerate with node scripts/render-platform-map-api-docs.mjs. See also: the OpenAPI spec index.

Servers

URLNotes
http://127.0.0.1:3030Agent BFF Soft

Tags

TagSummary
gitopsEGOV Soft pack plan/apply/health
gitSoft forge repos/PRs/compile
scenarioSoft scenarios/compositions
voyageSoft voyage start (invent-refuse LIVE)
docsSoft document history fabric (EGOV-123/124)
opsSoft readiness

Paths — 20 paths / 21 operations

MethodPathOperation IDSummary
POST/v1/realms/{realmId}/git/edit-prproposeEditPrSoftSoft Edit→PR Soft (EGOV-42; invent-refuse LIVE)
POST/v1/realms/{realmId}/gitops/overlay-previewpreviewOverlaySoftSoft branch/overlay preview Soft (EGOV-75; invent-refuse LIVE/widen)
GET/v1/realms/{realmId}/git/prslistGitPrsSoftSoft PR list
GET/v1/docs/familieslistDocFamiliesSoftSoft document families (EGOV-123)
GET/v1/docs/families/{familyId}getDocFamilySoftSoft document family + Soft history stub
POST/v1/docs/publishpublishDocSoftSoft publish (invent-refuse LIVE)
GET/v1/realms/{realmId}/gitops/pack-healthgetGitopsPackHealthSoftSoft pack health (EGOV-96)
GET/v1/realms/{realmId}/gitops/governance/statusgetGovernanceGitopsStatusSoftSoft governance GitOps status
POST/v1/realms/{realmId}/gitops/governance/applyapplyGovernanceGitopsSoftSoft apply proposed pin (DSS-43 + GIT_PIN_MISMATCH)
GET/v1/realms/{realmId}/git/reposlistGitReposSoftSoft forge repo bindings
POST/v1/realms/{realmId}/git/compilecompileGitSoftSoft compile stub (invent-refuse LIVE)
GET/v1/realms/{realmId}/scenarioslistScenariosSoftSoft scenario index (Git SoT)
GET/v1/realms/{realmId}/compositionslistCompositionsSoftSoft composition list
GET/v1/voyageslistVoyagesSoftSoft voyage receipts
POST/v1/voyagesstartVoyageSoftSoft voyage start (invent-refuse LIVE)
GET/v1/voyages/{voyageId}getVoyageSoftSoft voyage detail
POST/v1/voyages/{voyageId}/resumeresumeVoyageSoftSoft voyage HITL resume (invent-refuse LIVE)
POST/v1/voyages/{voyageId}/cancelcancelVoyageSoftSoft voyage cancel (invent-refuse LIVE)
GET/v1/git-forge/ops/readinessgitForgeReadinessSoftSoft forge readiness (never claims LIVE)
GET/v1/git-forge/openapigitForgeOpenApiSoftSoft host OpenAPI fragment Soft (EGOV-99)
GET/v1/git-forge/openapi/metagitForgeOpenApiMetaSoftSoft OpenAPI meta Soft (path_count; invent-refuse LIVE publish)

Operations

POST /v1/realms/{realmId}/git/edit-pr

Summary: Soft Edit→PR Soft (EGOV-42; invent-refuse LIVE)

Tags: git Operation ID: proposeEditPrSoft

Parameters:

NameInRequiredTypeNotes
realmIdpathyesstring

Responses:

StatusMeaning
200Soft PR proposed
403LIVE invent-refuse Soft

POST /v1/realms/{realmId}/gitops/overlay-preview

Summary: Soft branch/overlay preview Soft (EGOV-75; invent-refuse LIVE/widen)

Tags: gitops Operation ID: previewOverlaySoft

Parameters:

NameInRequiredTypeNotes
realmIdpathyesstring

Responses:

StatusMeaning
200Soft overlay preview
403LIVE or ceiling-widen invent-refuse Soft

GET /v1/realms/{realmId}/git/prs

Summary: Soft PR list

Tags: git Operation ID: listGitPrsSoft

Parameters:

NameInRequiredTypeNotes
realmIdpathyesstring
statequerynostring

Responses:

StatusMeaning
200Soft PR list

GET /v1/docs/families

Summary: Soft document families (EGOV-123)

Tags: docs Operation ID: listDocFamiliesSoft Responses:

StatusMeaning
200Soft family list

GET /v1/docs/families/{familyId}

Summary: Soft document family + Soft history stub

Tags: docs Operation ID: getDocFamilySoft

Parameters:

NameInRequiredTypeNotes
familyIdpathyesstring

Responses:

StatusMeaning
200Soft family
404Not found Soft

POST /v1/docs/publish

Summary: Soft publish (invent-refuse LIVE)

Tags: docs Operation ID: publishDocSoft Responses:

StatusMeaning
200Soft publish receipt
403LIVE invent-refuse Soft

GET /v1/realms/{realmId}/gitops/pack-health

Summary: Soft pack health (EGOV-96)

Tags: gitops Operation ID: getGitopsPackHealthSoft

Parameters:

NameInRequiredTypeNotes
realmIdpathyesstring

Responses:

StatusMeaning
200Soft pack health

GET /v1/realms/{realmId}/gitops/governance/status

Summary: Soft governance GitOps status

Tags: gitops Operation ID: getGovernanceGitopsStatusSoft

Parameters:

NameInRequiredTypeNotes
realmIdpathyesstring

Responses:

StatusMeaning
200Soft status

POST /v1/realms/{realmId}/gitops/governance/apply

Summary: Soft apply proposed pin (DSS-43 + GIT_PIN_MISMATCH)

Tags: gitops Operation ID: applyGovernanceGitopsSoft

Parameters:

NameInRequiredTypeNotes
realmIdpathyesstring

Request body:

Content type: application/json

FieldTypeNotes

Responses:

StatusMeaning
200Soft apply receipt
403invent_refuse LIVE or GIT_SIGNER_IS_PR_AUTHOR / GIT_PIN_MISMATCH

GET /v1/realms/{realmId}/git/repos

Summary: Soft forge repo bindings

Tags: git Operation ID: listGitReposSoft

Parameters:

NameInRequiredTypeNotes
realmIdpathyesstring

Responses:

StatusMeaning
200Soft repo list

POST /v1/realms/{realmId}/git/compile

Summary: Soft compile stub (invent-refuse LIVE)

Tags: git Operation ID: compileGitSoft

Parameters:

NameInRequiredTypeNotes
realmIdpathyesstring

Responses:

StatusMeaning
200Soft compile
403GIT_LIVE_INVENT_REFUSED

GET /v1/realms/{realmId}/scenarios

Summary: Soft scenario index (Git SoT)

Tags: scenario Operation ID: listScenariosSoft

Parameters:

NameInRequiredTypeNotes
realmIdpathyesstring

Responses:

StatusMeaning
200Soft scenarios

GET /v1/realms/{realmId}/compositions

Summary: Soft composition list

Tags: scenario Operation ID: listCompositionsSoft

Parameters:

NameInRequiredTypeNotes
realmIdpathyesstring

Responses:

StatusMeaning
200Soft compositions

GET /v1/voyages

Summary: Soft voyage receipts

Tags: voyage Operation ID: listVoyagesSoft Responses:

StatusMeaning
200Soft voyages

POST /v1/voyages

Summary: Soft voyage start (invent-refuse LIVE)

Tags: voyage Operation ID: startVoyageSoft Request body:

Content type: application/json

FieldTypeNotes

Responses:

StatusMeaning
200Soft voyage started
403GIT_LIVE_INVENT_REFUSED
422SCENARIO_ENTITY_UNBOUND

GET /v1/voyages/{voyageId}

Summary: Soft voyage detail

Tags: voyage Operation ID: getVoyageSoft

Parameters:

NameInRequiredTypeNotes
voyageIdpathyesstring

Responses:

StatusMeaning
200Soft voyage
404not found

POST /v1/voyages/{voyageId}/resume

Summary: Soft voyage HITL resume (invent-refuse LIVE)

Tags: voyage Operation ID: resumeVoyageSoft

Parameters:

NameInRequiredTypeNotes
voyageIdpathyesstring

Responses:

StatusMeaning
200Soft resumed
403GIT_LIVE_INVENT_REFUSED
404VOYAGE_NOT_FOUND

POST /v1/voyages/{voyageId}/cancel

Summary: Soft voyage cancel (invent-refuse LIVE)

Tags: voyage Operation ID: cancelVoyageSoft

Parameters:

NameInRequiredTypeNotes
voyageIdpathyesstring

Responses:

StatusMeaning
200Soft cancelled
403GIT_LIVE_INVENT_REFUSED
404VOYAGE_NOT_FOUND

GET /v1/git-forge/ops/readiness

Summary: Soft forge readiness (never claims LIVE)

Tags: ops Operation ID: gitForgeReadinessSoft Responses:

StatusMeaning
200Soft readiness

GET /v1/git-forge/openapi

Summary: Soft host OpenAPI fragment Soft (EGOV-99)

Tags: ops Operation ID: gitForgeOpenApiSoft Responses:

StatusMeaning
200Soft OpenAPI document Soft

GET /v1/git-forge/openapi/meta

Summary: Soft OpenAPI meta Soft (path_count; invent-refuse LIVE publish)

Tags: ops Operation ID: gitForgeOpenApiMetaSoft Responses:

StatusMeaning
200Soft OpenAPI meta Soft

Full specification — verbatim source of truth

{
  "openapi": "3.0.3",
  "info": {
    "title": "Sovereign Git Forge + Scenario Soft API (EGOV-99)",
    "description": "Soft≠LIVE fragment for forge GitOps, scenarios, and voyages. Soft desks never invent LIVE. Normative contracts: docs/governance/event-orchestrated/10_FORGE_API_NATS_WEBHOOK_CONTRACTS.md",
    "version": "1.0.0-soft"
  },
  "servers": [
    {
      "url": "http://127.0.0.1:3030",
      "description": "Agent BFF Soft"
    }
  ],
  "tags": [
    {
      "name": "gitops",
      "description": "EGOV Soft pack plan/apply/health"
    },
    {
      "name": "git",
      "description": "Soft forge repos/PRs/compile"
    },
    {
      "name": "scenario",
      "description": "Soft scenarios/compositions"
    },
    {
      "name": "voyage",
      "description": "Soft voyage start (invent-refuse LIVE)"
    },
    {
      "name": "docs",
      "description": "Soft document history fabric (EGOV-123/124)"
    },
    {
      "name": "ops",
      "description": "Soft readiness"
    }
  ],
  "paths": {
    "/v1/realms/{realmId}/git/edit-pr": {
      "post": {
        "tags": [
          "git"
        ],
        "operationId": "proposeEditPrSoft",
        "summary": "Soft Edit→PR Soft (EGOV-42; invent-refuse LIVE)",
        "parameters": [
          {
            "name": "realmId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Soft PR proposed"
          },
          "403": {
            "description": "LIVE invent-refuse Soft"
          }
        }
      }
    },
    "/v1/realms/{realmId}/gitops/overlay-preview": {
      "post": {
        "tags": [
          "gitops"
        ],
        "operationId": "previewOverlaySoft",
        "summary": "Soft branch/overlay preview Soft (EGOV-75; invent-refuse LIVE/widen)",
        "parameters": [
          {
            "name": "realmId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Soft overlay preview"
          },
          "403": {
            "description": "LIVE or ceiling-widen invent-refuse Soft"
          }
        }
      }
    },
    "/v1/realms/{realmId}/git/prs": {
      "get": {
        "tags": [
          "git"
        ],
        "operationId": "listGitPrsSoft",
        "summary": "Soft PR list",
        "parameters": [
          {
            "name": "realmId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Soft PR list"
          }
        }
      }
    },
    "/v1/docs/families": {
      "get": {
        "tags": [
          "docs"
        ],
        "operationId": "listDocFamiliesSoft",
        "summary": "Soft document families (EGOV-123)",
        "responses": {
          "200": {
            "description": "Soft family list"
          }
        }
      }
    },
    "/v1/docs/families/{familyId}": {
      "get": {
        "tags": [
          "docs"
        ],
        "operationId": "getDocFamilySoft",
        "summary": "Soft document family + Soft history stub",
        "parameters": [
          {
            "name": "familyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Soft family"
          },
          "404": {
            "description": "Not found Soft"
          }
        }
      }
    },
    "/v1/docs/publish": {
      "post": {
        "tags": [
          "docs"
        ],
        "operationId": "publishDocSoft",
        "summary": "Soft publish (invent-refuse LIVE)",
        "responses": {
          "200": {
            "description": "Soft publish receipt"
          },
          "403": {
            "description": "LIVE invent-refuse Soft"
          }
        }
      }
    },
    "/v1/realms/{realmId}/gitops/pack-health": {
      "get": {
        "tags": [
          "gitops"
        ],
        "operationId": "getGitopsPackHealthSoft",
        "summary": "Soft pack health (EGOV-96)",
        "parameters": [
          {
            "name": "realmId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Soft pack health",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PackHealthSoft"
                }
              }
            }
          }
        }
      }
    },
    "/v1/realms/{realmId}/gitops/governance/status": {
      "get": {
        "tags": [
          "gitops"
        ],
        "operationId": "getGovernanceGitopsStatusSoft",
        "summary": "Soft governance GitOps status",
        "parameters": [
          {
            "name": "realmId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Soft status"
          }
        }
      }
    },
    "/v1/realms/{realmId}/gitops/governance/apply": {
      "post": {
        "tags": [
          "gitops"
        ],
        "operationId": "applyGovernanceGitopsSoft",
        "summary": "Soft apply proposed pin (DSS-43 + GIT_PIN_MISMATCH)",
        "parameters": [
          {
            "name": "realmId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApplyPinBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Soft apply receipt"
          },
          "403": {
            "description": "invent_refuse LIVE or GIT_SIGNER_IS_PR_AUTHOR / GIT_PIN_MISMATCH"
          }
        }
      }
    },
    "/v1/realms/{realmId}/git/repos": {
      "get": {
        "tags": [
          "git"
        ],
        "operationId": "listGitReposSoft",
        "summary": "Soft forge repo bindings",
        "parameters": [
          {
            "name": "realmId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Soft repo list"
          }
        }
      }
    },
    "/v1/realms/{realmId}/git/compile": {
      "post": {
        "tags": [
          "git"
        ],
        "operationId": "compileGitSoft",
        "summary": "Soft compile stub (invent-refuse LIVE)",
        "parameters": [
          {
            "name": "realmId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Soft compile"
          },
          "403": {
            "description": "GIT_LIVE_INVENT_REFUSED"
          }
        }
      }
    },
    "/v1/realms/{realmId}/scenarios": {
      "get": {
        "tags": [
          "scenario"
        ],
        "operationId": "listScenariosSoft",
        "summary": "Soft scenario index (Git SoT)",
        "parameters": [
          {
            "name": "realmId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Soft scenarios"
          }
        }
      }
    },
    "/v1/realms/{realmId}/compositions": {
      "get": {
        "tags": [
          "scenario"
        ],
        "operationId": "listCompositionsSoft",
        "summary": "Soft composition list",
        "parameters": [
          {
            "name": "realmId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Soft compositions"
          }
        }
      }
    },
    "/v1/voyages": {
      "get": {
        "tags": [
          "voyage"
        ],
        "operationId": "listVoyagesSoft",
        "summary": "Soft voyage receipts",
        "responses": {
          "200": {
            "description": "Soft voyages"
          }
        }
      },
      "post": {
        "tags": [
          "voyage"
        ],
        "operationId": "startVoyageSoft",
        "summary": "Soft voyage start (invent-refuse LIVE)",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VoyageStartBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Soft voyage started"
          },
          "403": {
            "description": "GIT_LIVE_INVENT_REFUSED"
          },
          "422": {
            "description": "SCENARIO_ENTITY_UNBOUND"
          }
        }
      }
    },
    "/v1/voyages/{voyageId}": {
      "get": {
        "tags": [
          "voyage"
        ],
        "operationId": "getVoyageSoft",
        "summary": "Soft voyage detail",
        "parameters": [
          {
            "name": "voyageId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Soft voyage"
          },
          "404": {
            "description": "not found"
          }
        }
      }
    },
    "/v1/voyages/{voyageId}/resume": {
      "post": {
        "tags": [
          "voyage"
        ],
        "operationId": "resumeVoyageSoft",
        "summary": "Soft voyage HITL resume (invent-refuse LIVE)",
        "parameters": [
          {
            "name": "voyageId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Soft resumed"
          },
          "403": {
            "description": "GIT_LIVE_INVENT_REFUSED"
          },
          "404": {
            "description": "VOYAGE_NOT_FOUND"
          }
        }
      }
    },
    "/v1/voyages/{voyageId}/cancel": {
      "post": {
        "tags": [
          "voyage"
        ],
        "operationId": "cancelVoyageSoft",
        "summary": "Soft voyage cancel (invent-refuse LIVE)",
        "parameters": [
          {
            "name": "voyageId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Soft cancelled"
          },
          "403": {
            "description": "GIT_LIVE_INVENT_REFUSED"
          },
          "404": {
            "description": "VOYAGE_NOT_FOUND"
          }
        }
      }
    },
    "/v1/git-forge/ops/readiness": {
      "get": {
        "tags": [
          "ops"
        ],
        "operationId": "gitForgeReadinessSoft",
        "summary": "Soft forge readiness (never claims LIVE)",
        "responses": {
          "200": {
            "description": "Soft readiness"
          }
        }
      }
    },
    "/v1/git-forge/openapi": {
      "get": {
        "tags": [
          "ops"
        ],
        "operationId": "gitForgeOpenApiSoft",
        "summary": "Soft host OpenAPI fragment Soft (EGOV-99)",
        "responses": {
          "200": {
            "description": "Soft OpenAPI document Soft"
          }
        }
      }
    },
    "/v1/git-forge/openapi/meta": {
      "get": {
        "tags": [
          "ops"
        ],
        "operationId": "gitForgeOpenApiMetaSoft",
        "summary": "Soft OpenAPI meta Soft (path_count; invent-refuse LIVE publish)",
        "responses": {
          "200": {
            "description": "Soft OpenAPI meta Soft"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "PackHealthSoft": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "soft": {
            "type": "boolean"
          },
          "live": {
            "type": "boolean"
          },
          "health": {
            "type": "string",
            "enum": [
              "green",
              "amber",
              "red"
            ]
          },
          "invent_refuse_live": {
            "type": "boolean"
          },
          "governance_live": {
            "type": "boolean"
          }
        }
      },
      "ApplyPinBody": {
        "type": "object",
        "properties": {
          "digest": {
            "type": "string"
          },
          "profile": {
            "type": "string",
            "enum": [
              "soft",
              "live"
            ]
          },
          "hard_desk": {
            "type": "boolean"
          },
          "signer": {
            "type": "string"
          },
          "pr_author": {
            "type": "string"
          },
          "dry_run": {
            "type": "boolean"
          }
        }
      },
      "VoyageStartBody": {
        "type": "object",
        "properties": {
          "journey_id": {
            "type": "string"
          },
          "composition_id": {
            "type": "string"
          },
          "entity_id": {
            "type": "string"
          },
          "org_id": {
            "type": "string"
          },
          "realm_id": {
            "type": "string"
          },
          "live": {
            "type": "boolean"
          },
          "hard_desk": {
            "type": "boolean"
          },
          "profile": {
            "type": "string"
          }
        }
      }
    }
  }
}