CatQuest Data API Reference
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-keyheader (orAuthorization: Bearer <key>). For the full definitions, where each is issued, and their scope, see Issue & Task API → Authentication (this API uses the samegiipIssuesendpoint, so the auth spec is shared). The query scope is limited to the key'scsn(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
| Name | In | Required | Description |
|---|---|---|---|
csn | query | ✅ | Project 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)
| Field | Type | Use on screen |
|---|---|---|
isn | number | Issue number (#isn badge). Also determines which cat is assigned. |
title | string | Speech-bubble title at the top of the card |
status | string | Determines the cat's behavior (animation) — see mapping below |
regdate | string | Registered date (🐣) |
summary | string | Summary at the bottom of the card (when present) |
last_comment_date | string | null | Last comment date (💬); "no comment" when null |
blocked_by_isn | number | null | Blocked-by badge — the number of the issue blocking this one |
blocked_by_title | string | null | Tooltip 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).
| status | Cat state | Image file pattern |
|---|---|---|
| PENDING | playing | /images/catquest/<cat>_playing.png |
| READY | ready | /images/catquest/<cat>_ready.png |
| IN_PROGRESS | hunting | /images/catquest/<cat>_hunting.png |
| REVIEW | delivering | /images/catquest/<cat>_delivering.png |
| DONE | playing | /images/catquest/<cat>_playing.png |
<cat>is one of 8 types (mochi, sherlock, nimbus, pixel, cocoa, midnight, luna, leo), assigned deterministically byisn % 8.
Related APIs
- Create / update / change issue status: to create or transition issues programmatically, see Issue & Task APIs.
- Query / add comments: the issue detail screen uses the
giipIssueCommentsAPI.
Troubleshooting
| Symptom | Cause | Resolution |
|---|---|---|
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 csn | Check 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 csn | Required parameter missing | Always 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.