DOC-05 — Data dictionary
| Field | Value |
|---|---|
| Status | Approved |
| Version | 0.1.0 |
| Product target | MVP 0.1.0 |
| Last updated | 2026-10-16 |
1. Conventions
- Unknown fields are rejected.
- Documents declare
version: 1. - Variable maps contain strings.
- An omitted field uses a documented default;
nullis not automatically equivalent to omission. - The internal model may change without migration while preserving public format and behavior.
2. DAT-001 — RequestDocument
| Field | Type | Required | Rule |
|---|---|---|---|
version |
integer | Yes | Exactly 1 |
name |
string | No | Non-empty when present |
request |
Request | Yes | Valid Request |
expect |
Expectation | Yes | MVP requires status |
3. DAT-002 — Request
| Field | Type | Required | Rule |
|---|---|---|---|
method |
enum/string | Yes | GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS |
url |
string | Yes | HTTP(S) URL after resolution |
headers |
map |
No | No invalid names |
body.json |
YAML/JSON value | No | Serialized as JSON |
timeout_ms |
positive integer | No | Default 30000; range 1–300000 |
body.json accepts JSON-compatible values only. Sonvik applies Content-Type: application/json unless the user supplied it. Authentication is not inferred.
4. DAT-003 — Expectation
| Field | Type | Required | Rule |
|---|---|---|---|
status |
integer | Yes | 100–599 |
5. DAT-004 — EnvironmentDocument
| Field | Type | Required | Rule |
|---|---|---|---|
version |
integer | Yes | Exactly 1 |
variables |
map |
Yes | Valid, unique names |
An environment is not a secret store. The repository SHOULD ignore any local files users choose to create, but the MVP format will not mark individual values as secret.
6. DAT-005 — RunResult
Runtime data, not persisted automatically:
| Field | Type | Description |
|---|---|---|
outcome |
enum | passed, assertion_failed, error |
status |
integer? | Status when a response exists |
duration |
duration? | Measured transport time |
error_kind |
enum? | Config, variables, transport, or timeout |
message |
string | Redacted summary |
7. Valid example
version: 1
name: Health check
request:
method: GET
url: "{{baseUrl}}/health"
headers:
Accept: application/json
timeout_ms: 5000
expect:
status: 200
8. Invalid example
# Missing version
request: { method: GET, url: https://example.test }
expect: { status: 200 }
9. Decisions pending before freezing v1
- Multiple values for the same header.
10. Document history
| Version | Date | Change |
|---|---|---|
| 0.1.0 | 2026-10-16 | Initial minimal model |