Cloudflare Artifacts repo-scoped token.
This struct represents both shapes the API can return:
POST /tokens(CreateTokenResult) — populatesid,plaintext,scope,expires_at. Listing fields (state,created_at) staynil.GET /repos/:name/tokens(TokenInfo) — populatesid,scope,state,created_at,expires_at. The actual token bytes are not returned —plaintextstaysnil.
Field names match upstream verbatim (plaintext, not secret or
value).
The plaintext value is opaque — pass it through to git wire auth
via Exgit.Credentials.Artifacts.auth/1 (bearer header) without
modification. The expiration is already exposed as the expires_at
ISO timestamp on the struct, so callers don't need to parse the
embedded ?expires=<unix> suffix.
Summary
Types
@type scope() :: :read | :write
@type state() :: :active | :expired | :revoked