giip
SES Proposal
3 min read

CatQuest Data API Reference

🐾 Go to CatQuest page →

The CatQuest screen reads the giip issue-list API (giipIssues) and draws each issue as a cat card. This document explains how to query that data source directly via API, and how the screen maps status to cat behavior.

  • Host: https://giipfaw.azurewebsites.net
  • Auth: pass an AK, a project SK, or a user-level static key via the x-api-key header (or Authorization: Bearer <key>). For the full definitions, where each is issued, and their scope, see Issue & Task API → Authentication (this API uses the same giipIssues endpoint, so the auth spec is shared). The query scope is limited to the key's csn (project). JSON body or query-string delivery of the key is not supported (verified live, 2026-08-20) — always pass it via a header.
  • For the result code (RstVal) convention, see API Result Codes.

Query issue list — giipIssues GET

This is the read API CatQuest calls on page load.

curl "https://giipfaw.azurewebsites.net/api/giipIssues?csn=47" \
  -H "x-api-key: ${GIIP_API_KEY}"

Request parameters

NameInRequiredDescription
csnqueryProject number to query. CatQuest fills in the currently selected project's csn automatically.

Sample response

{
  "issues": [
    {
      "isn": 735,
      "title": "Create admin/catquest user guide",
      "status": "READY",
      "regdate": "2026-07-24T08:54:00Z",
      "summary": "Enable the guide button",
      "last_comment_date": "2026-07-24T09:00:00Z",
      "blocked_by_isn": null,
      "blocked_by_title": null
    }
  ]
}

Response fields (those CatQuest uses)

FieldTypeUse on screen
isnnumberIssue number (#isn badge). Also determines which cat is assigned.
titlestringSpeech-bubble title at the top of the card
statusstringDetermines the cat's behavior (animation) — see mapping below
regdatestringRegistered date (🐣)
summarystringSummary at the bottom of the card (when present)
last_comment_datestring | nullLast comment date (💬); "no comment" when null
blocked_by_isnnumber | nullBlocked-by badge — the number of the issue blocking this one
blocked_by_titlestring | nullTooltip of the blocked-by badge (blocking issue title)

Status → cat behavior mapping

The CatQuest frontend maps the status value to an animation with these rules (a display rule, not a server value).

statusCat stateImage file pattern
PENDINGplaying/images/catquest/<cat>_playing.png
READYready/images/catquest/<cat>_ready.png
IN_PROGRESShunting/images/catquest/<cat>_hunting.png
REVIEWdelivering/images/catquest/<cat>_delivering.png
DONEplaying/images/catquest/<cat>_playing.png
  • <cat> is one of 8 types (mochi, sherlock, nimbus, pixel, cocoa, midnight, luna, leo), assigned deterministically by isn % 8.
  • Create / update / change issue status: to create or transition issues programmatically, see Issue & Task APIs.
  • Query / add comments: the issue detail screen uses the giipIssueComments API.

Troubleshooting

SymptomCauseResolution
401 {"error":"Auth required"}No x-api-key header at all, or the key was sent via an unsupported method (JSON body, query string)Pass it as x-api-key: <key> (or Authorization: Bearer <key>). Verified live: body token / query ?token= are never read
401 {"error":"Invalid session"}Typo, expired, or deactivated key (SK re-issued/rotated, AK session expired, etc.)Retry with a valid key or log in again. See Issue & Task API for full key requirements
Empty issues: [] (no issues exist for that csn)No issues for that csnCheck the csn value or register an issue
Empty issues: [] (key lacks access)The key has no access to that csn (this is not a 401 — it's an empty array; verified live, 2026-08-20)Use a key scoped to that csn, or ask an admin to grant access
Called without csnRequired parameter missingAlways include ?csn=<number>

Version: 1.1 Last updated: 2026-08-20 (Tested against: giipfaw production) Source file: giipv3/public/help/api-catquest.en.md

v1.1 changelog (2026-08-20, giip #1280): Linked the Authentication section to the expanded auth spec in Issue & Task API to remove duplication. Switched the curl example to an environment variable. Added the 401 root causes (key never arrived / key invalid) and the CSN-mismatch behavior (not a 401, an empty array) to the Troubleshooting table, reflecting the live results captured for giip-issue-api.