openapi: 3.2.0 info: title: Council of AI — GSPC measurement (public read surfaces)… version: 0.1.0 description: 'Independent AI-behaviour measurement by CSOAI Ltd. Measurement, not certification. Quote totals.lid and totals.public_count from GET /api/gspc verbatim; never compose a count. Three verification states exist: VALID, INVALID, UNCHECKABLE. Absence of a field means UNMEASURED. TIE is never a win. A withheld leader (public_leader_state) is a state, not a zero. Verify is free; a rank is never sold. Signature checks are not Actions: use /signed/HOW-TO-VERIFY.md.' contact: name: CSOAI Ltd url: https://councilof.ai email: nicholas@csoai.org license: name: Apache-2.0 url: https://www.apache.org/licenses/LICENSE-2.0 servers: - url: https://councilof.ai tags: - name: Signed paths: /signed/card_index.json: get: operationId: getCardIndex summary: Unsigned convenience index of the signed measurement cards description: cards[] with card (id), axis, card_url, signed. The index itself is not evidence; the card is. responses: '200': description: Card index. tags: - Signed /signed/cards/{id}.json: get: operationId: getCard summary: One signed measurement card description: '{alg, body, id, preimage_rule, pubkey, signature}. id = sha256 of the canonical body; verify per /signed/HOW-TO-VERIFY.md. Returns 404 for an unknown id.' parameters: - name: id in: path required: true schema: type: string pattern: ^[0-9a-f]{64}$ responses: '200': description: Signed card. '404': description: No such card. tags: - Signed /signed/HOW-TO-VERIFY.md: get: operationId: getVerifyRecipe summary: The published, offline card-verification recipe responses: '200': description: Markdown. tags: - Signed