HTTP API of the Zaria Battle.net for the part 1 client. All routes are relative to /api/v1; bodies are JSON. Authorization: Bearer <token> from register or login. Errors are {"error":{"code","field?"}}; 5xx also carry requestId. CORS: participant routes accept bearer requests without cookies from any origin and answer Access-Control-Allow-Origin: *. A request that carries a cookie from a foreign origin is refused (403 origin-not-allowed). The organizer desk is not part of this contract and accepts only configured origins. Retry-After and X-Request-Id are exposed to browsers. Ether: until the registration window the hub answers every route here except /auth/login with noise or a sealed Envelope (HTTP 200 on /ether and /ether/roll, 503 elsewhere). Only an Envelope whose Ed25519 seal verifies with the published public key is a signal. GET /ether/key returns that key without noise; check its fingerprint against the task text. 429 is never noise: wait Retry-After seconds and retry the same request. Codes are jammed (the address is jammed for exceeding 20 requests per minute), rate-limited (account or login/registration limit exceeded) and authentication-busy (password check queue is full on /auth/register and /auth/login, Retry-After: 5, not a rate-limit strike). Unknown response fields may appear; ignore them.
Маршрути
GET/public/configSeason settings and the GitHub account to inviteбез токена
POST/auth/registerRegister during the window with a repository from the admission list; optional lang (uk or en, default uk) sets the language of server texts; returns a sessionбез токена
Sealed ether frame. seal is an Ed25519 signature of the UTF-8 bytes of the frame string, base64url without padding; key is the first 16 hex digits of SHA-256 of the raw public key. Verify before parsing frame.
Поле
Тип
Що означає
frameобов'язково
string
sealобов'язково
string
keyобов'язково
string
Error
Поле
Тип
Що означає
errorобов'язково
object
EtherKey
Seal public key. publicKey is the raw 32-byte Ed25519 key in base64url without padding; fingerprint is SHA-256 of those 32 bytes in hex, key its first 16 digits. Compare fingerprint with the task text before trusting the key.
Typed notification generated by the hub. In part 1 the type is repository: every change of your repository status. Show an unknown type as a plain message by its title and body.
RepositoryNotice | object
Repository
Поле
Тип
Що означає
urlобов'язково
string
accessStatusобов'язково
"pending" | "verified" | "needs-attention"
pendingverifiedneeds-attention
checkedAtобов'язково
string | null
reasonобов'язково
string | null
In the account language; a decision made by the organizer keeps the organizer text
Machine reason: inviter-mismatch (the invitation came from another GitHub account), marker-found (.zoria names this account), marker-other (.zoria names another account), marker-absent (no .zoria yet), organizer (decided by the organizer by hand, reason is the organizer text); null - none inviter-mismatchmarker-foundmarker-othermarker-absentorganizernull
Machine reason: inviter-mismatch (the invitation came from another GitHub account), marker-found (.zoria names this account), marker-other (.zoria names another account), marker-absent (no .zoria yet), organizer (decided by the organizer by hand, reason is the organizer text); null - none inviter-mismatchmarker-foundmarker-othermarker-absentorganizernull
Cheap poll. repositoryAt moves on every change of your repository or its review: reread /me/repository only then. The server may add fields of later parts; ignore unknown fields.
Поле
Тип
Що означає
unreadобов'язково
integer
releasedStagesобов'язково
integer
acknowledgedStagesобов'язково
integer
latestNewsобов'язково
string | null
repositoryAtобов'язково
string | null
serverTimeобов'язково
string (date-time)
User
Поле
Тип
Що означає
idобов'язково
string (uuid)
usernameобов'язково
string
displayNameобов'язково
string
roleобов'язково
"admin" | "participant"
adminparticipant
disabledобов'язково
boolean
createdAtобов'язково
string (date-time)
langобов'язково
"uk" | "en"
Language of server texts for this account: letters and admission reasons uken