Define shared permissions and version contracts
API checks / checks (push) Canceled after 0s
API dependency and security checks / audit (push) Canceled after 0s

This commit is contained in:
2026-10-25 05:39:57 +01:00
parent f1e5148480
commit b89edfafa9
5 changed files with 41 additions and 0 deletions
+6
View File
@@ -12,3 +12,9 @@ request and response envelopes; bearer values in fixtures are synthetic only.
Twitch OAuth link and completion response envelopes are also versioned here;
fixtures contain no real credentials or tokens.
The shared boundary vocabulary includes the ordered permission levels in
`contracts/v1/permissions.json` and the client/server compatibility result in
`contracts/v1/version-negotiation.json`. Server-owned state is delivered as
the authenticated `realtime-event.json` envelope; clients must ignore event
types they do not understand.
+8
View File
@@ -0,0 +1,8 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://trixie.invalid/contracts/v1/permissions.json",
"title": "Trixie Permission Level",
"description": "The ordered permission levels used by chat commands and moderation controls.",
"type": "string",
"enum": ["everyone", "subscriber", "moderator", "broadcaster"]
}
+15
View File
@@ -0,0 +1,15 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://trixie.invalid/contracts/v1/version-negotiation.json",
"title": "Trixie Version Negotiation",
"type": "object",
"additionalProperties": false,
"required": ["api_version", "client_version", "server_version", "compatible"],
"properties": {
"api_version": { "type": "string", "const": "v1" },
"client_version": { "type": "string", "minLength": 1 },
"server_version": { "type": "string", "minLength": 1 },
"compatible": { "type": "boolean" },
"reason": { "type": "string", "minLength": 1 }
}
}
+6
View File
@@ -8,4 +8,10 @@
- `GET /api/v1/server/info` publishes `minimum_client_version` and
`maximum_client_version`; clients must use these fields to detect an
incompatible pairing before enabling authenticated controls.
- Permission values are shared through `contracts/v1/permissions.json`.
They are ordered from least to most privileged: `everyone`, `subscriber`,
`moderator`, and `broadcaster`.
- The normalized result of a compatibility check is described by
`contracts/v1/version-negotiation.json`; an incompatible result includes a
human-readable `reason` while a compatible result may omit it.
@@ -0,0 +1,6 @@
{
"api_version": "v1",
"client_version": "0.1.0",
"server_version": "0.1.0",
"compatible": true
}