Documentation Index
Fetch the complete documentation index at: https://docs.meshqu.com/llms.txt
Use this file to discover all available pages before exploring further.
MeshQu is in early access — no customer is running production traffic against MeshQu yet. This changelog documents API and SDK functionality shipped in our pre-GA deployments. Console UI changes are not tracked here.
Versioning policy
- Major (
v2.x): Breaking changes to request/response contracts or authentication. Announced with a migration guide and deprecation period. - Minor (
v1.2): New endpoints, fields, or features. Backwards-compatible. - Patch (
v1.1.1): Bug fixes and performance improvements. No contract changes.
Stability guarantees
- Existing response fields are never removed or renamed within a major version.
- New optional fields may be added to responses at any time — clients should ignore unknown fields.
- Webhook payload schemas follow the same policy.
API version header
All endpoints are prefixed with/v1. When a new major version is released, the previous version will remain available for a documented deprecation period.
v1.9.0
Tenant Governance Settings- New
GET /v1/settingsandPATCH /v1/settingsendpoints for tenant-level governance configuration. - Includes maker-checker toggle controlling whether policy versions require an independent ratifier before becoming active.
v1.8.0
Human Decision Capture (Forms)- New Forms surface for capturing structured human decisions that produce receipts identical in shape to programmatic decisions.
- Endpoints:
POST /v1/forms,GET /v1/forms,GET /v1/forms/:formId,PATCH /v1/forms/:formId,DELETE /v1/forms/:formId. - Form schemas and API contracts are introspectable:
GET /v1/forms/:formId/schema,GET /v1/forms/:formId/api-contract. - Submissions:
POST /v1/forms/:formId/submitreturns a decision receipt; retrieve later viaGET /v1/forms/:formId/receipts/:decisionId.
v1.7.0
Policy v2 Lifecycle (Submit / Reject / Recall)- Draft policy versions now move through an explicit lifecycle:
POST /v1/policies/:id/versions/:version/submit— submit a draft for ratification.POST /v1/policies/:id/versions/:version/reject— reject a submitted draft.POST /v1/policies/:id/versions/:version/recall— recall a submitted draft back to draft state.
- Additional draft-version endpoints:
GET /v1/policies/:id/versions/:version,PATCH /v1/policies/:id/versions/:version,DELETE /v1/policies/:id/versions/:version. - New
GET /v1/policies/:id/decisions— list all decisions evaluated against a given policy.
v1.6.0
Receipt Schema v2 + Approval Lineage- New top-level fields on decision receipts:
receipt_schema_version— explicit schema version marker.policy_snapshot_digest— canonical SHA-256 of the bound policy snapshot.evidence_manifest_digest— canonical SHA-256 of the evidence manifest, when present.
- Policy Approval Receipts — cryptographic ratifier signatures on the policy version that governed a decision. The offline verifier now accepts ratifier and custodian public-key sets as additional trust roots.
- All v1 receipts remain verifiable indefinitely — schema v2 fields are additive.
v1.5.0
Public Verification Surface- New JWKS endpoint:
GET /v1/.well-known/signing-keys— versioned public signing keys for offline receipt verification. - New public, unauthenticated endpoints (callers do not need an API key):
GET /v1/receipts/:decisionId— fetch a signed decision receipt.GET /v1/receipts/:decisionId/bundle— download the full Verification Bundle.GET /v1/chains/:chainId/verify— verify a chain proof.GET /v1/chains/:chainId/seal— read a chain seal.GET /v1/chains/:chainId/bundle— download a chain Verification Bundle.
- Verification Bundles — self-contained, offline-verifiable archives covering 8 sub-claims under a digest-of-digests manifest (receipt, policy snapshot, chain proofs, transparency proof, trust roots, canonicalisation).
v1.4.0
Actor AttributionPOST /v1/decisions/recordnow accepts an optional top-levelactorobject:id,type,role,authority,display_name.actor.idis included in the integrity hash and cryptographically bound to every receipt.- Other actor fields are stored for audit display.
- Backward compatible:
actoris optional. If omitted andcontext.metadata.actor_idis present, the API falls back to that value. Whenactor.idis supplied, it takes precedence. - New
actoroptional parameter onclient.record()in the TypeScript SDK. - Decision chain steps can now carry per-step actor attribution, enabling multi-actor chain audit trails.
v1.3.0
Structured Violation Reason Codes- Every violation now includes a
reason_codefield — a structured code for programmatic aggregation without text parsing. - 17 reason codes across all rule types: presence (
FIELD_MISSING,FIELD_FORBIDDEN,FIELD_TOO_SHORT), temporal (DATE_EXPIRED,DATE_INVALID, etc.), threshold (VALUE_ABOVE_MAX,VALUE_BELOW_MIN, etc.), and list (VALUE_NOT_ALLOWED,VALUE_FORBIDDEN). - New
ReasonCodetype exported from@meshqu/typesand re-exported from@meshqu/client. - Backwards compatible:
reason_codeis a new required field on violations. Existingreasonstrings are unchanged. - Replay note: New receipts have different integrity hashes than pre-
reason_codereceipts due to the additional field. Pre-migration receipts remain verifiable against their stored hash.
- New
POST /v1/decisions/:id/outcomeendpoint to capture what happened after a verdict. - Five outcome statuses:
accepted,overridden,escalated,expired,abandoned. - One outcome per decision (409 on duplicate). Immutable after insert.
- Outcomes included on
GET /v1/decisions/:idresponse. - New
recordOutcome()method in the TypeScript SDK.
- Violations denormalized into queryable table at write time (analytics projection, not source of truth).
GET /v1/decisionsnow acceptscorrelation_idquery parameter.- Policy rules accept optional
replaces_rule_codefor advisory lineage tracking.
v1.2.0
Conditional Rule Applicability (When Gating)- Added optional
whenclause on policy rules — rules are only evaluated when the clause matches the decision context. - Non-matching rules return NA (not applicable) with a human-readable reason on the decision receipt.
- New optional fields on
EvaluationResult:rules_na(count) andna_rules(details). - Supported
whenoperators:equals,in,exists, withall/anycombinators for nested logic. - Snapshot hash includes
whenclauses (backward compatible — existing hashes unchanged).
- Decision receipts are now signed with Ed25519 when a signing key is configured.
- Receipts include
signature,signature_kid, andsignature_algorithmfields. - Auditors can verify receipts using the public key alone — no shared secret needed.
- Encryption key versioning with rotation support and legacy fallback.
- Rate limiting upgraded to shared state across API replicas.
v1.1.0
- Added policy groups (CRUD + listing policies within a group).
- Added alert webhook subscriptions with HMAC-signed delivery.
- Added webhook delivery history and statistics endpoints.
- Added decision SSE stream (
GET /v1/decisions/stream). - Added audit log verification (
POST /v1/audit-log/verify). - Added API key naming (
key_name) for audit attribution. - Added advisory mode for policies.
- Added two-tier rate limiting (pre-auth + post-auth).
v1.0.1
Production hardening release. All fixes are backwards-compatible at the HTTP layer.- SDK
apiKeyconfiguration is now required (throws a clear error if missing). idempotency_keyis now required when recording decisions (no longer auto-generated).- Added
dryRun()as a semantic alias forevaluate(). - Recorded decisions now capture audit attribution (
api_key_id,api_key_name). - Backend infrastructure failures now return
503 Service Unavailablewithretry_afterinstead of500. - Production authentication hardening improvements.
v1.0.0
- Initial release.
- Policy CRUD with immutable versioning.
- Decision evaluation (dry-run) and recording (persisted).
- Decision replay for audit verification.
- Alert listing and acknowledgement.
- API key management with scoped access.
- Audit event listing.
- OpenAPI 3.0 spec and Swagger UI.