giip
SES Proposal
3 min read

CatQuest ๋ฐ์ดํ„ฐ API ๋ ˆํผ๋Ÿฐ์Šค

๐Ÿพ CatQuest ํŽ˜์ด์ง€๋กœ ์ด๋™ โ†’

CatQuest ํ™”๋ฉด์€ **giip ์ด์Šˆ ๋ชฉ๋ก API(giipIssues)**๋ฅผ ์ฝ์–ด ๊ฐ ์ด์Šˆ๋ฅผ ๊ณ ์–‘์ด ์นด๋“œ๋กœ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ๋Š” ๊ทธ ๋ฐ์ดํ„ฐ ์›์ฒœ์„ API๋กœ ์ง์ ‘ ์กฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ, ํ™”๋ฉด์˜ ์ƒํƒœโ†’๊ณ ์–‘์ด ๋งคํ•‘์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • ํ˜ธ์ŠคํŠธ: https://giipfaw.azurewebsites.net
  • ์ธ์ฆ: x-api-key ํ—ค๋”(๋˜๋Š” Authorization: Bearer <key>)์— ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž์˜ AK, ํ”„๋กœ์ ํŠธ SK, ๋˜๋Š” ์‚ฌ์šฉ์ž ๊ณ ์ • ํ‚ค ์ค‘ ํ•˜๋‚˜๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์„ธ ์ข…๋ฅ˜์˜ ์ƒ์„ธ ์ •์˜ยท๋ฐœ๊ธ‰์ฒ˜ยท๊ถŒํ•œ ๋ฒ”์œ„๋Š” ์ด์Šˆยทํƒœ์Šคํฌ API โ†’ ์ธ์ฆ (์ด API์™€ ๋™์ผํ•œ giipIssues ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ธ์ฆ ์‚ฌ์–‘๋„ ๊ณตํ†ต)์„ ์ฐธ์กฐํ•˜์„ธ์š”. ์กฐํšŒ ๋ฒ”์œ„๋Š” ํ‚ค์˜ csn(ํ”„๋กœ์ ํŠธ) ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. JSON ๋ฐ”๋””๋‚˜ ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด๋กœ ํ‚ค๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์‹ค์ธก ํ™•์ธ, 2026-08-20) โ€” ๋ฐ˜๋“œ์‹œ ํ—ค๋”๋กœ ์ „๋‹ฌํ•˜์„ธ์š”.
  • ์‘๋‹ต ์ฝ”๋“œ(RstVal) ๊ทœ์•ฝ์€ API ๊ฒฐ๊ณผ ์ฝ”๋“œ ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด์Šˆ ๋ชฉ๋ก ์กฐํšŒ โ€” giipIssues GET

CatQuest๊ฐ€ ํŽ˜์ด์ง€ ๋กœ๋“œ ์‹œ ํ˜ธ์ถœํ•˜๋Š” ์ฝ๊ธฐ API์ž…๋‹ˆ๋‹ค.

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

์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ

์ด๋ฆ„์œ„์น˜ํ•„์ˆ˜์„ค๋ช…
csnqueryโœ…์กฐํšŒํ•  ํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ. CatQuest๋Š” ํ˜„์žฌ ์„ ํƒ๋œ ํ”„๋กœ์ ํŠธ์˜ csn์„ ์ž๋™์œผ๋กœ ๋„ฃ์Šต๋‹ˆ๋‹ค.

์‘๋‹ต ์˜ˆ์‹œ

{
  "issues": [
    {
      "isn": 735,
      "title": "admin/catquest ์œ ์ € ๊ฐ€์ด๋“œ ์ƒ์„ฑ",
      "status": "READY",
      "regdate": "2026-07-24T08:54:00Z",
      "summary": "๊ฐ€์ด๋“œ ๋ฒ„ํŠผ ํ™œ์„ฑํ™”",
      "last_comment_date": "2026-07-24T09:00:00Z",
      "blocked_by_isn": null,
      "blocked_by_title": null
    }
  ]
}

์‘๋‹ต ํ•„๋“œ (CatQuest๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ)

ํ•„๋“œํƒ€์ž…ํ™”๋ฉด์—์„œ์˜ ์“ฐ์ž„
isnnumber์ด์Šˆ ๋ฒˆํ˜ธ(#isn ๋ฐฐ์ง€). ์–ด๋–ค ๊ณ ์–‘์ด๋ฅผ ๋ฐฐ์ •ํ• ์ง€๋„ isn์œผ๋กœ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.
titlestring์นด๋“œ ์ƒ๋‹จ ๋งํ’์„  ์ œ๋ชฉ
statusstring๊ณ ์–‘์ด ํ–‰๋™(์• ๋‹ˆ๋ฉ”์ด์…˜)์„ ๊ฒฐ์ • โ€” ์•„๋ž˜ ๋งคํ•‘ํ‘œ ์ฐธ์กฐ
regdatestring๋“ฑ๋ก ์ผ์‹œ(๐Ÿฃ)
summarystring์นด๋“œ ํ•˜๋‹จ ์š”์•ฝ(์žˆ์„ ๋•Œ๋งŒ)
last_comment_datestring | null์ตœ์ข… ์ฝ”๋ฉ˜ํŠธ ์ผ์‹œ(๐Ÿ’ฌ), ์—†์œผ๋ฉด "์ฝ”๋ฉ˜ํŠธ ์—†์Œ"
blocked_by_isnnumber | null๋Œ€๊ธฐ(blocked-by) ๋ฐฐ์ง€ โ€” ์ด ์ด์Šˆ๋ฅผ ๋ง‰๊ณ  ์žˆ๋Š” ์ ์œ  ์ด์Šˆ ๋ฒˆํ˜ธ
blocked_by_titlestring | null๋Œ€๊ธฐ ๋ฐฐ์ง€์˜ ํˆดํŒ(์ ์œ  ์ด์Šˆ ์ œ๋ชฉ)

์ƒํƒœ โ†’ ๊ณ ์–‘์ด ํ–‰๋™ ๋งคํ•‘

CatQuest ํ”„๋ก ํŠธ๊ฐ€ status ๊ฐ’์„ ๋‹ค์Œ ๊ทœ์น™์œผ๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜์— ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค(์„œ๋ฒ„ ๊ฐ’์ด ์•„๋‹ˆ๋ผ ํ™”๋ฉด ํ‘œํ˜„ ๊ทœ์น™).

status๊ณ ์–‘์ด ์ƒํƒœ์ด๋ฏธ์ง€ ํŒŒ์ผ ํŒจํ„ด
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> ์€ isn % 8 ๋กœ 8์ข…(mochiยทsherlockยทnimbusยทpixelยทcocoaยทmidnightยทlunaยทleo) ์ค‘ ํ•˜๋‚˜๊ฐ€ ๊ณ ์ • ๋ฐฐ์ •๋ฉ๋‹ˆ๋‹ค.

๊ด€๋ จ API

  • ์ด์Šˆ ๋“ฑ๋กยท์ˆ˜์ •ยท์ƒํƒœ๋ณ€๊ฒฝ: ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ด์Šˆ๋ฅผ ์ƒ์„ฑ/์ „์ดํ•˜๋ ค๋ฉด ์ด์Šˆ ๋ฐ ํƒœ์Šคํฌ API ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  • ์ฝ”๋ฉ˜ํŠธ ์กฐํšŒ/์ถ”๊ฐ€: ์ด์Šˆ ์ƒ์„ธ ํ™”๋ฉด์€ giipIssueComments API๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ

์ฆ์ƒ์›์ธํ•ด๊ฒฐ
401 {"error":"Auth required"}x-api-key ํ—ค๋” ์ž์ฒด๊ฐ€ ์—†๊ฑฐ๋‚˜, JSON ๋ฐ”๋””/์ฟผ๋ฆฌ ๋ฌธ์ž์—ด ๋“ฑ ๋ฏธ์ง€์› ๋ฐฉ์‹์œผ๋กœ ํ‚ค๋ฅผ ์ „๋‹ฌํ•จx-api-key: <key> ํ—ค๋”(๋˜๋Š” Authorization: Bearer <key>)๋กœ ์ „๋‹ฌ. ์‹ค์ธก ํ™•์ธ: ๋ฐ”๋”” tokenยท์ฟผ๋ฆฌ ?token=์€ ์ฝํžˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค
401 {"error":"Invalid session"}ํ‚ค ์˜คํƒ€ยท๋งŒ๋ฃŒยท๋น„ํ™œ์„ฑํ™”(SK ์žฌ๋ฐœ๊ธ‰/ํšŒ์ „, AK ์„ธ์…˜ ๋งŒ๋ฃŒ ๋“ฑ)์œ ํšจํ•œ ํ‚ค๋กœ ์žฌ์‹œ๋„ํ•˜๊ฑฐ๋‚˜ ์žฌ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค. ํ‚ค ์กฐ๊ฑด ์ƒ์„ธ๋Š” ์ด์Šˆยทํƒœ์Šคํฌ API ์ฐธ์กฐ
๋นˆ issues: [](ํ•ด๋‹น csn์— ์ด์Šˆ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ)ํ•ด๋‹น csn์— ์ด์Šˆ๊ฐ€ ์—†์Œcsn ๊ฐ’์„ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ์ด์Šˆ๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค
๋นˆ issues: [](ํ‚ค์— ๊ถŒํ•œ์ด ์—†๋Š” ๊ฒฝ์šฐ)ํ‚ค๊ฐ€ ๊ทธ csn์— ์ ‘๊ทผ ๊ถŒํ•œ์ด ์—†์Œ(401์ด ์•„๋‹ˆ๋ผ ๋นˆ ๋ฐฐ์—ด์ด ๋จ โ€” ์‹ค์ธก ํ™•์ธ, 2026-08-20)ํ•ด๋‹น csn์šฉ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ด€๋ฆฌ์ž์—๊ฒŒ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค
csn ์—†์ด ํ˜ธ์ถœํ•„์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ˆ„๋ฝ?csn=<๋ฒˆํ˜ธ> ๋ฅผ ๋ฐ˜๋“œ์‹œ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค

๋ฒ„์ „: 1.1 ์ตœ์ข… ์—…๋ฐ์ดํŠธ: 2026-08-20(ํ…Œ์ŠคํŠธ ๋Œ€์ƒ API: giipfaw ํ”„๋กœ๋•์…˜) ์†Œ์Šค ํŒŒ์ผ: giipv3/public/help/api-catquest.ko.md

v1.1 ๋ณ€๊ฒฝ ์ด๋ ฅ (2026-08-20, giip #1280): ์ธ์ฆ ์„น์…˜์„ ์ด์Šˆยทํƒœ์Šคํฌ API์˜ ํ™•์žฅ๋œ ์ธ์ฆ ์ •์˜๋กœ ๋งํฌํ•˜์—ฌ ์ค‘๋ณต์„ ์ œ๊ฑฐ. curl ์˜ˆ์ œ๋ฅผ ํ™˜๊ฒฝ๋ณ€์ˆ˜ํ™”. 401์˜ ์›์ธ(ํ‚ค ๋ฏธ๋„๋‹ฌ/ํ‚ค ๋ฌดํšจ)๊ณผ csn ๊ถŒํ•œ ๋ถˆ์ผ์น˜ ์‹œ ๋™์ž‘(401์ด ์•„๋‹ˆ๋ผ ๋นˆ ๋ฐฐ์—ด)์„ ๋ฌธ์ œ ํ•ด๊ฒฐ ํ‘œ์— ์ถ”๊ฐ€(giip-issue-api์˜ ์‹ค์ธก ๊ฒฐ๊ณผ ๋ฐ˜์˜).