Butkhuzi API And Persistence Surface
Route and API surface
Current public gateway surface:
Resolving locale, route permissions, and workspace projection.
Current scope: Guest
Category: 10_normative | Version: v1.0.0
Owner: DOCUMENT_CUSTODIAN | Review cycle: 90 days
Approval authority: GOVERNANCE_ADMIN
Documentation portal is read-only. Editing and mutation endpoints are disabled.
Kvary platform is originally created in Georgian. Where a Georgian version exists, Georgian is authoritative for platform UI, documentation, and legal interpretation.
Translations into other languages are provided for convenience. Some records may originate in other languages and carry their own source or legal locale for a specific flow, but where a Georgian version is available, the Georgian version prevails for platform-level wording and interpretation.
Metadata incomplete: Document ID, Version, Status, Owner Role, Last Review Date, Next Review Date, Change Log
Current public gateway surface:
Current route set:
GET /butkhuzi/normsGET /butkhuzi/suggestGET /butkhuzi/searchPOST /butkhuzi/upsertPOST /butkhuzi/chunks/rebuildCurrent runtime host:
| Route surface | Classification | Notes |
| --- | --- | --- |
| GET /butkhuzi/norms | stable route surface | Real DB-backed list with filters and pagination |
| GET /butkhuzi/suggest | stable route surface | Real suggest flow against Butkhuzi norms |
| GET /butkhuzi/search | stable route surface | Real chunk-backed full-text search |
| POST /butkhuzi/upsert | stable route surface | Auth-protected admin ingest/update path |
| POST /butkhuzi/chunks/rebuild | transitional route surface | Real behavior, but still a synchronous admin action and future runtime concern |
VERIFIED: API gateway already supports extraction through BUTKHUZI_SERVICE_URL ?? TENDERS_SERVICE_URL.VERIFIED: route shape already looks service-friendly; there is no local fallback engine in services/api.VERIFIED: auth remains shared at both gateway and service-shell levels.Current canonical Butkhuzi tables:
Current repository owner:
| Data surface | Classification | Notes |
| --- | --- | --- |
| butkhuzi_norms | stable persistence surface | Canonical norms store |
| butkhuzi_chunks | stable persistence surface | Canonical search substrate, tied to norms |
| root delegation in services/svc-tenders/src/repository.ts | mixed / temporary | Transitional compatibility delegation only |
VERIFIED: Butkhuzi data is already isolated enough for a later copy-first service runtime.VERIFIED: migration ownership is still inside svc-tenders.VERIFIED: there is no evidence of cross-domain Butkhuzi tables outside the Butkhuzi table family.Current Butkhuzi-owned contracts:
Current validation location:
| Surface | Classification | Notes | | --- | --- | --- | | Butkhuzi route/persistence contracts | stable but transitional location | Domain-owned file now exists | | Butkhuzi validation schemas | mixed | Still live in shared validation file | | portal client types in apps/web/src/portal/api.ts | transitional / duplicated | Client copies of backend shapes still exist |
| Runtime assumption | Classification | Notes |
| --- | --- | --- |
| Hosted in svc-tenders | temporary | Current truth, not target ownership |
| Shared auth ingress | shared on purpose | Suitable to keep shared during first extraction |
| Gateway env seam | stable | Good extraction seam already exists |
| Kafka/event dependency | absent | No real Kafka dependency found for Butkhuzi |
The code truth supports a Butkhuzi extraction path that is:
The main cleanup before actual extraction is not domain ambiguity. It is remaining shared-shell residue:
svc-tenders