Directories
¶
| Path | Synopsis |
|---|---|
|
adapters
|
|
|
auth/pgprincipal
Package pgprincipal implements auth.PrincipalStore over Postgres: it resolves the framework user id from an IdP subject on the global identity spine and validates an acting capacity within the token's tenant.
|
Package pgprincipal implements auth.PrincipalStore over Postgres: it resolves the framework user id from an IdP subject on the global identity spine and validates an acting capacity within the token's tenant. |
|
metrics/prometheus
Package prometheus implements the observability.Metrics port using the Prometheus Go client.
|
Package prometheus implements the observability.Metrics port using the Prometheus Go client. |
|
secrets/envprovider
Package envprovider implements secrets.Provider for the "env" scheme: references of the form "secretref://env/<VAR>" are resolved from the process environment.
|
Package envprovider implements secrets.Provider for the "env" scheme: references of the form "secretref://env/<VAR>" are resolved from the process environment. |
|
storage/s3
Package s3 is the framework's production object-storage adapter: the storage.Adapter port (kernel/storage) implemented against S3-compatible endpoints (AWS S3, MinIO) with the minio-go SDK.
|
Package s3 is the framework's production object-storage adapter: the storage.Adapter port (kernel/storage) implemented against S3-compatible endpoints (AWS S3, MinIO) with the minio-go SDK. |
|
tracing/otel
Package otel adapts OpenTelemetry to the wowapi observability.Tracer port (roadmap O1).
|
Package otel adapts OpenTelemetry to the wowapi observability.Tracer port (roadmap O1). |
|
Package app is wowapi's composition root helpers.
|
Package app is wowapi's composition root helpers. |
|
cmd
|
|
|
wowapi
command
Command wowapi is the installable framework CLI:
|
Command wowapi is the installable framework CLI: |
|
internal
|
|
|
buildinfo
Package buildinfo reports the CLI/framework version and inspects a consuming repo's go.mod for the wowapi requirement (version-mismatch warning, D-0008).
|
Package buildinfo reports the CLI/framework version and inspects a consuming repo's go.mod for the wowapi requirement (version-mismatch warning, D-0008). |
|
cli
apikey_cmd.go — wowapi apikey: issue, list, rotate, and revoke machine API keys / service principals (roadmap S1/CA-3).
|
apikey_cmd.go — wowapi apikey: issue, list, rotate, and revoke machine API keys / service principals (roadmap S1/CA-3). |
|
testmodules/requests
Package requests is a domain-neutral private fixture module used by the wowapi module-contract test suite (blueprint 08 §2, 11 §4).
|
Package requests is a domain-neutral private fixture module used by the wowapi module-contract test suite (blueprint 08 §2, 11 §4). |
|
tools/benchbudget
command
benchbudget enforces performance budgets against go test -bench output.
|
benchbudget enforces performance budgets against go test -bench output. |
|
tools/migrate
command
Command migrate applies the kernel migrations to the database named by DATABASE_URL — the framework repo's local/CI migration runner behind `make migrate`.
|
Command migrate applies the kernel migrations to the database named by DATABASE_URL — the framework repo's local/CI migration runner behind `make migrate`. |
|
Package kernel is wowapi's infrastructure composition root: it owns the database pool, the transaction manager, and the kernel services (the authz evaluator, and later outbox/jobs/documents/…).
|
Package kernel is wowapi's infrastructure composition root: it owns the database pool, the transaction manager, and the kernel services (the authz evaluator, and later outbox/jobs/documents/…). |
|
apikey
Package apikey provides machine authentication (roadmap S1): issuable, scoped, rotatable, revocable, expirable API keys / service principals so non-human callers authenticate without a user token.
|
Package apikey provides machine authentication (roadmap S1): issuable, scoped, rotatable, revocable, expirable API keys / service principals so non-human callers authenticate without a user token. |
|
artifact
Package artifact is the snapshot/artifact pipeline (roadmap E4): it turns a product-rendered dataset into an IMMUTABLE, versioned artifact — content plus its sha256, a structured sidecar, and the template version/effective date it was produced under.
|
Package artifact is the snapshot/artifact pipeline (roadmap E4): it turns a product-rendered dataset into an IMMUTABLE, versioned artifact — content plus its sha256, a structured sidecar, and the template version/effective date it was produced under. |
|
audit
Package audit is the durable, append-only, field-level audit trail (roadmap E1): a standardized record of who changed what — entity, field, before/after, actor, capacity, impersonator, request id — written INSIDE the business transaction so an audit row commits iff the change does.
|
Package audit is the durable, append-only, field-level audit trail (roadmap E1): a standardized record of who changed what — entity, field, before/after, actor, capacity, impersonator, request id — written INSIDE the business transaction so an audit row commits iff the change does. |
|
auth
Package auth is wowapi's authentication kernel: it verifies OIDC/JWT bearer tokens against an injectable KeySource (JWKS-over-HTTPS in production, a local signer in tests) and maps validated claims onto an authz.Actor after the app resolves the framework user id and active capacity (D-0037, 01 §3).
|
Package auth is wowapi's authentication kernel: it verifies OIDC/JWT bearer tokens against an injectable KeySource (JWKS-over-HTTPS in production, a local signer in tests) and maps validated claims onto an authz.Actor after the app resolves the framework user id and active capacity (D-0037, 01 §3). |
|
authz
Package authz is wowapi's authorization kernel: a deny-by-default evaluator that layers RBAC (role→permission assignments), ReBAC (relationship-derived grants), and ABAC (attribute policies, deny-first) exactly as specified in blueprint 01 §3.
|
Package authz is wowapi's authorization kernel: a deny-by-default evaluator that layers RBAC (role→permission assignments), ReBAC (relationship-derived grants), and ABAC (attribute policies, deny-first) exactly as specified in blueprint 01 §3. |
|
bulk
Package bulk is the chunked bulk-operation framework (roadmap E6): start a set of items, process them in caller-sized chunks with per-item isolation, record a partial-failure ledger, and resume after an interruption.
|
Package bulk is the chunked bulk-operation framework (roadmap E6): start a set of items, process them in caller-sized chunks with per-item isolation, record a partial-failure ledger, and resume after an interruption. |
|
config
Package config defines wowapi's typed configuration contracts: the framework-owned Framework struct, the Secret type with structural redaction, and the ModuleView through which modules receive their namespaced configuration.
|
Package config defines wowapi's typed configuration contracts: the framework-owned Framework struct, the Secret type with structural redaction, and the ModuleView through which modules receive their namespaced configuration. |
|
database
Package database is wowapi's persistence kernel: the pgx pool, the TxManager that is the ONLY door to tenant data, and the RLS session plumbing (SET LOCAL app.tenant_id inside a transaction, never on a pooled connection).
|
Package database is wowapi's persistence kernel: the pgx pool, the TxManager that is the ONLY door to tenant data, and the RLS session plumbing (SET LOCAL app.tenant_id inside a transaction, never on a pooled connection). |
|
document
Package document is wowapi's document / file framework: modules register document CLASSES (the policy envelope for a kind of file — allowed MIME types, a size ceiling, a default sensitivity, and an optional retention window); the service manages metadata rows, presigned upload sessions, immutable versioned file pointers, authorized presigned downloads, explicit access grants, and a retention sweep.
|
Package document is wowapi's document / file framework: modules register document CLASSES (the policy envelope for a kind of file — allowed MIME types, a size ceiling, a default sensitivity, and an optional retention window); the service manages metadata rows, presigned upload sessions, immutable versioned file pointers, authorized presigned downloads, explicit access grants, and a retention sweep. |
|
errors
Package errors is wowapi's error taxonomy: a closed set of Kinds that map deterministically to HTTP status codes and stable machine codes, plus the structured Error type carried across every layer.
|
Package errors is wowapi's error taxonomy: a closed set of Kinds that map deterministically to HTTP status codes and stable machine codes, plus the structured Error type carried across every layer. |
|
filtering
Package filtering is wowapi's allowlist-driven filter/sort builder — the mechanism behind docs/blueprint/05 §2, "Pagination / filtering / sorting (allowlist-driven; SQL injection impossible by construction)".
|
Package filtering is wowapi's allowlist-driven filter/sort builder — the mechanism behind docs/blueprint/05 §2, "Pagination / filtering / sorting (allowlist-driven; SQL injection impossible by construction)". |
|
httpclient
Package httpclient builds SSRF-safe *http.Client instances for outbound calls to user-configurable destinations (webhook targets, integration callbacks, …).
|
Package httpclient builds SSRF-safe *http.Client instances for outbound calls to user-configurable destinations (webhook targets, integration callbacks, …). |
|
httpx
Package httpx is wowapi's HTTP toolbox: response envelopes, the RFC 9457 problem-details error writer, strict JSON decoding, metadata-enforced route registration, and the request helpers module handlers compose.
|
Package httpx is wowapi's HTTP toolbox: response envelopes, the RFC 9457 problem-details error writer, strict JSON decoding, metadata-enforced route registration, and the request helpers module handlers compose. |
|
i18n
Package i18n is wowapi's cross-cutting message-catalog and locale-negotiation kernel.
|
Package i18n is wowapi's cross-cutting message-catalog and locale-negotiation kernel. |
|
integration
Package integration is wowapi's external-provider framework: modules register a Provider ADAPTER per provider key (a payment gateway, an SMS gateway, an identity source, …); per-tenant/platform rows in integration_providers hold the non-secret config plus a credential REFERENCE (never plaintext); and the kernel resolves an adapter + its config + its resolved credential on demand and aggregates provider health for readiness.
|
Package integration is wowapi's external-provider framework: modules register a Provider ADAPTER per provider key (a payment gateway, an SMS gateway, an identity source, …); per-tenant/platform rows in integration_providers hold the non-secret config plus a credential REFERENCE (never plaintext); and the kernel resolves an adapter + its config + its resolved credential on demand and aggregates provider health for readiness. |
|
jobs
Package jobs is wowapi's Postgres-backed job runner (D-0047 — a focused queue behind the framework interfaces, NOT River).
|
Package jobs is wowapi's Postgres-backed job runner (D-0047 — a focused queue behind the framework interfaces, NOT River). |
|
lifecycle
Package lifecycle is wowapi's STATIC provider/lifecycle manifest (backlog B9).
|
Package lifecycle is wowapi's STATIC provider/lifecycle manifest (backlog B9). |
|
logging
Package logging provides process-wide structured logging for wowapi processes.
|
Package logging provides process-wide structured logging for wowapi processes. |
|
mfa
Package mfa provides reusable, standards-compliant multi-factor-authentication factor primitives: TOTP (RFC 6238) and HOTP (RFC 4226) code generation and verification, numeric one-time-passcode (OTP) generation with salted constant-time hashing, pure challenge-policy helpers (TTL + attempt-limit enforcement), and delivery-port interfaces for out-of-band code senders (SMS/email) with test/log adapters.
|
Package mfa provides reusable, standards-compliant multi-factor-authentication factor primitives: TOTP (RFC 6238) and HOTP (RFC 4226) code generation and verification, numeric one-time-passcode (OTP) generation with salted constant-time hashing, pure challenge-policy helpers (TTL + attempt-limit enforcement), and delivery-port interfaces for out-of-band code senders (SMS/email) with test/log adapters. |
|
model
Package model defines wowapi's base model primitives: embeddable structs for identity, tenancy, audit, versioning, temporal validity, and status; plus kernel-wide value objects for money, references, and time ranges.
|
Package model defines wowapi's base model primitives: embeddable structs for identity, tenancy, audit, versioning, temporal validity, and status; plus kernel-wide value objects for money, references, and time ranges. |
|
notify
Package notify is wowapi's notification framework: modules register template keys with an allowlisted variable set and required channels (Registry); Send writes a notifications row + one notification_deliveries row per resolved channel inside the caller's tenant business transaction (atomicity with the business write); and SendPending is the async worker step that claims queued deliveries, calls channel-specific senders, and advances delivery status — dead-lettering after maxAttempts.
|
Package notify is wowapi's notification framework: modules register template keys with an allowlisted variable set and required channels (Registry); Send writes a notifications row + one notification_deliveries row per resolved channel inside the caller's tenant business transaction (atomicity with the business write); and SendPending is the async worker step that claims queued deliveries, calls channel-specific senders, and advances delivery status — dead-lettering after maxAttempts. |
|
observability
Package observability is wowapi's observability port: the Metrics interface (RED signals + generic counters and gauges) and a no-op safe default.
|
Package observability is wowapi's observability port: the Metrics interface (RED signals + generic counters and gauges) and a no-op safe default. |
|
outbox
Package outbox is wowapi's transactional outbox: modules write domain events into events_outbox in the SAME transaction as their business writes, so an event is emitted if and only if the write commits (no lost or phantom events).
|
Package outbox is wowapi's transactional outbox: modules write domain events into events_outbox in the SAME transaction as their business writes, so an event is emitted if and only if the write commits (no lost or phantom events). |
|
pagination
Package pagination provides wowapi's page/cursor response envelopes and the opaque keyset cursor used for feed-style listing.
|
Package pagination provides wowapi's page/cursor response envelopes and the opaque keyset cursor used for feed-style listing. |
|
policy
Package policy is wowapi's ABAC condition engine: it evaluates a policy's conditions against an attribute bag using a closed operator set.
|
Package policy is wowapi's ABAC condition engine: it evaluates a policy's conditions against an attribute bag using a closed operator set. |
|
privileged
Package privileged is wowapi's scoped privileged-service surface: the sanctioned, audited way a module performs a valid tenant-scoped operation that requires PLATFORM privilege at the database, WITHOUT the module writing its own SECURITY DEFINER SQL and WITHOUT ever seeing a platform pool or raw SQL door (SEC-24 / SEC-13; GAP-006).
|
Package privileged is wowapi's scoped privileged-service surface: the sanctioned, audited way a module performs a valid tenant-scoped operation that requires PLATFORM privilege at the database, WITHOUT the module writing its own SECURITY DEFINER SQL and WITHOUT ever seeing a platform pool or raw SQL door (SEC-24 / SEC-13; GAP-006). |
|
relationship
Package relationship is wowapi's ReBAC edge store: the tenant relationships graph (subject —rel_type→ object) plus the adapter that answers the authz kernel's relationship questions.
|
Package relationship is wowapi's ReBAC edge store: the tenant relationships graph (subject —rel_type→ object) plus the adapter that answers the authz kernel's relationship questions. |
|
resource
Package resource is the kernel resource registry and the thin tenant mirror that lets kernel services (authz record-scope, comments, documents, workflow, relationships) address any module row uniformly.
|
Package resource is the kernel resource registry and the thin tenant mirror that lets kernel services (authz record-scope, comments, documents, workflow, relationships) address any module row uniformly. |
|
retention
Package retention is the data-lifecycle layer (roadmap E2): a generalized legal hold over any entity (not just documents) and a Data Subject Request ledger (export/erasure) with a statutory-override reason.
|
Package retention is the data-lifecycle layer (roadmap E2): a generalized legal hold over any entity (not just documents) and a Data Subject Request ledger (export/erasure) with a statutory-override reason. |
|
rules
Package rules is wowapi's rule/configuration engine: modules register rule points (a key, a RuleValueSchema'd value, a default, allowed scopes, and whether changes require approval); values are stored as versioned rows with temporal validity; and resolution picks the most specific active value for a (tenant, org, at) — org-ancestry → tenant → platform → code default.
|
Package rules is wowapi's rule/configuration engine: modules register rule points (a key, a RuleValueSchema'd value, a default, allowed scopes, and whether changes require approval); values are stored as versioned rows with temporal validity; and resolution picks the most specific active value for a (tenant, org, at) — org-ancestry → tenant → platform → code default. |
|
secrets
Package secrets defines the secret-reference model and the provider port.
|
Package secrets defines the secret-reference model and the provider port. |
|
seeds
Package seeds loads a module's declarative catalog seeds (permissions, roles, resource types, relationship types) from embedded YAML and syncs them idempotently into the global catalogs at boot.
|
Package seeds loads a module's declarative catalog seeds (permissions, roles, resource types, relationship types) from embedded YAML and syncs them idempotently into the global catalogs at boot. |
|
sequence
Package sequence provides a gap-free, race-free per-tenant numbered-series allocator for statutory documents (receipts, vouchers, certificates) — the primitive that keeps products off MAX()+1 (roadmap E3).
|
Package sequence provides a gap-free, race-free per-tenant numbered-series allocator for statutory documents (receipts, vouchers, certificates) — the primitive that keeps products off MAX()+1 (roadmap E3). |
|
storage
Package storage is the object-storage port for the document framework: the kernel never talks to S3/minio/GCS directly, it talks to an Adapter.
|
Package storage is the object-storage port for the document framework: the kernel never talks to S3/minio/GCS directly, it talks to an Adapter. |
|
validation
Package validation wraps go-playground/validator/v10 and translates its FieldError slice into kernel/errors.FieldError values, producing a *errors.Error with Kind=KindValidation.
|
Package validation wraps go-playground/validator/v10 and translates its FieldError slice into kernel/errors.FieldError values, producing a *errors.Error with Kind=KindValidation. |
|
webhook
Package webhook implements wowapi's webhook subsystem: inbound signature verification + replay protection + async processing, and outbound signed HTTP delivery with per-endpoint circuit breakers.
|
Package webhook implements wowapi's webhook subsystem: inbound signature verification + replay protection + async processing, and outbound signed HTTP delivery with per-endpoint circuit breakers. |
|
workflow
Package workflow is wowapi's small custom Postgres-backed workflow engine: a closed-step-type approval/state-machine runtime that shares the caller's tenant transaction (RLS + outbox + audit) exactly as blueprint 02 §1 and decisions D-0051/D-0053 specify.
|
Package workflow is wowapi's small custom Postgres-backed workflow engine: a closed-step-type approval/state-machine runtime that shares the caller's tenant transaction (RLS + outbox + audit) exactly as blueprint 02 §1 and decisions D-0051/D-0053 specify. |
|
Package migrations embeds the wowapi kernel SQL migrations and exposes them as an fs.FS for the migration runner (kernel/database.Migrate) and the wowapi CLI.
|
Package migrations embeds the wowapi kernel SQL migrations and exposes them as an fs.FS for the migration runner (kernel/database.Migrate) and the wowapi CLI. |
|
Package module is wowapi's public module SDK: the contract a product module implements and the capability-scoped Context it registers against.
|
Package module is wowapi's public module SDK: the contract a product module implements and the capability-scoped Context it registers against. |
|
Package testkit is wowapi's public integration-test harness: the one package permitted to compose everything (kernel, app, adapters, modules) so that both the framework and external product repositories can exercise their code against a real Postgres with the same fixtures, fakes, and assertions.
|
Package testkit is wowapi's public integration-test harness: the one package permitted to compose everything (kernel, app, adapters, modules) so that both the framework and external product repositories can exercise their code against a real Postgres with the same fixtures, fakes, and assertions. |
|
fakes
Package fakes holds the deterministic test doubles wowapi injects through the same constructors production uses (08 §2): a manual-advance clock and a deterministic IDGen.
|
Package fakes holds the deterministic test doubles wowapi injects through the same constructors production uses (08 §2): a manual-advance clock and a deterministic IDGen. |
Click to show internal directories.
Click to hide internal directories.