giip
SES Proposal
3 min read

์„œ๋ฒ„ ๊ด€๋ฆฌ API ๊ฐ€์ด๋“œ (v1.5)

GIIP ํ”Œ๋žซํผ์˜ ํ•ต์‹ฌ ์ž์‚ฐ์ธ ๋…ผ๋ฆฌ ๋จธ์‹ (LSVR)์„ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•œ API ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค.

๐Ÿ”Œ ์„œ๋ฒ„ ๋ชฉ๋ก ๊ธฐ๋Šฅ ํŽ˜์ด์ง€๋กœ ์ด๋™ โ†’

๐Ÿ“‹ ๊ฐœ์š”

์„œ๋ฒ„ ๊ด€๋ฆฌ API๋ฅผ ํ†ตํ•ด ์ธํ”„๋ผ ๋‚ด์˜ ์„œ๋ฒ„ ์ž์‚ฐ ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ” ์ธ์ฆ ๋ฐ ๋ณด์•ˆ (์‹ค์ œ ๊ตฌํ˜„ ๊ธฐ์ค€, 2026-08-20 giip #1277 ์‹ค์ธก)

์•„๋ž˜ API๋“ค์€ giipv3 ์–ด๋“œ๋ฏผ UI๊ฐ€ ์•„๋‹ˆ๋ผ giipApiSk2 ๋ฒ”์šฉ SP ๋ž˜ํผ๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค(SP๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋Š” sk ๊ธฐ๋ฐ˜ ๋ฐฉ์‹). ์ด ๋ž˜ํผ๋Š” HTTP ํ—ค๋”๊ฐ€ ์•„๋‹ˆ๋ผ POST ๋ณธ๋ฌธ์˜ ํ•„๋“œ๋กœ๋งŒ ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค.

  • ์—”๋“œํฌ์ธํŠธ: POST https://giipfaw.azurewebsites.net/api/giipApiSk2
  • Content-Type: application/x-www-form-urlencoded
  • ํ•„๋“œ:
    • text: [๋ช…๋ น์–ด] [ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„...]
    • token: [Your_SK] โ€” SK๋Š” ๋ฐ˜๋“œ์‹œ ์ด ํ•„๋“œ๋กœ ์ „๋‹ฌ(text๋‚˜ jsondata์— SK๋ฅผ ๋„ฃ์ง€ ๋งˆ์„ธ์š”)
    • jsondata: ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’(์„ ํƒ, ๋ช…๋ น๋ณ„๋กœ ํ˜•์‹์ด ๋‹ค๋ฆ„ โ€” ์•„๋ž˜ LsvrDetail ์ฐธ๊ณ )
  • โš ๏ธ giipfaw/giipApiSk2/run.ps1์„ ์ง์ ‘ ํ™•์ธํ•œ ๊ฒฐ๊ณผ(2026-08-20), ์ด ์—”๋“œํฌ์ธํŠธ๋Š” HTTP ํ—ค๋”๋ฅผ ์ „ํ˜€ ํŒŒ์‹ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. x-giip-ak/x-giip-sk/x-api-key ๋“ฑ ์–ด๋–ค ํ—ค๋”๋ฅผ ๋ณด๋‚ด๋„ ๋ฌด์‹œ๋˜๋ฉฐ, Azure Function ์ž์ฒด๋„ authLevel: anonymous๋ผ ํ•จ์ˆ˜ ํ‚ค(?code=)๋„ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. ์ธ์ฆ์€ ์˜ค์ง ์œ„ token ํ•„๋“œ ๊ฐ’์œผ๋กœ๋งŒ ์ด๋ค„์ง‘๋‹ˆ๋‹ค.

๐Ÿ“ก API ์ƒ์„ธ

์„œ๋ฒ„ ์ƒ์„ธ ์ •๋ณด ๋‹จ๊ฑด ์กฐํšŒ (LsvrDetail) โ€” ์‹ค์ธก ๊ฒ€์ฆ ์™„๋ฃŒ (giip #1277)

  • ๋ช…๋ น: text=LsvrDetail
  • ์„ค๋ช…: LSSN(๋‚ด๋ถ€ ์„œ๋ฒ„ ์ผ๋ จ๋ฒˆํ˜ธ) 1๊ฑด์˜ ์ƒ์„ธ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ pApiLSVRDetailbySk(@sk, @lssn bigint, @jsondata=NULL) โ†’ pLSvrDescOptbyAT๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  • ์š”์ฒญ ์˜ˆ์‹œ:
    POST https://giipfaw.azurewebsites.net/api/giipApiSk2
    Content-Type: application/x-www-form-urlencoded
    
    text=LsvrDetail&token={SK}&jsondata=71289
    
    (71289๋Š” ์กฐํšŒํ•  ์„œ๋ฒ„์˜ LSSN)
  • ์‘๋‹ต ์˜ˆ์‹œ (lssn=71289):
    { "data": [ { "LSsn": 71289, "LSHostname": "shinsema0104", "CSn": 70418, "CGCode": "smtodr-group", "lsRegdt": "2026-...", "LSLastHeartbeat": null } ] }
  • ๐Ÿšจ jsondata๋Š” ๋ฐ˜๋“œ์‹œ raw ์ˆซ์ž ๋ฌธ์ž์—ด๋งŒ (๊ฐ์ฒด๋กœ ๊ฐ์‹ธ๋ฉด ์‹คํŒจ):
    • โœ… ์„ฑ๊ณต: jsondata=71289
    • โŒ ์‹คํŒจ: jsondata={"lssn":71289}, {"id":71289}, {"isn":71289} ๋“ฑ โ€” ์–ด๋–ค ํ‚ค๋กœ ๊ฐ์‹ธ๋„ ๋ชจ๋‘ Error converting data type nvarchar to bigint ์˜ค๋ฅ˜๊ฐ€ ๋‚ฉ๋‹ˆ๋‹ค.
    • ์›์ธ: text ๊ฐ’์ด LsvrDetail ํ•œ ๋‹จ์–ด๋ฟ์ด๋ผ(๋’ค์— ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„์ด ์—†์Œ) run.ps1์€ ์ด ํ˜ธ์ถœ์„ "ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„ ์—†๋Š” ๋‹จ์ผ ๋ช…๋ น" ๊ฒฝ๋กœ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ๋กœ์—์„œ๋Š” jsondata ๊ฐ’์˜ ๊ฐœ๋ณ„ ํ‚ค๋ฅผ ๊ณจ๋ผ๋‚ด๋Š” ๋Œ€์‹ , jsondata ๋ฌธ์ž์—ด ์ „์ฒด๋ฅผ ๊ทธ๋Œ€๋กœ ์ด์Šค์ผ€์ดํ”„ํ•ด SP์˜ ๋‘ ๋ฒˆ์งธ ์ธ์ž(@lssn bigint)์— ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด๋กœ ๋ถ™์ž…๋‹ˆ๋‹ค(giipApiSk2 ์ž๋™ jsondata ์ „๋‹ฌ ๋กœ์ง, run.ps1 ๋‚ด๋ถ€ ์ฃผ์„ ISN 161). ๊ทธ ๋ฆฌํ„ฐ๋Ÿด์ด 71289์ฒ˜๋Ÿผ ์ˆซ์ž๋งŒ์ด๋ฉด SQL Server๊ฐ€ nvarcharโ†’bigint ์•”๋ฌต ๋ณ€ํ™˜์— ์„ฑ๊ณตํ•˜์ง€๋งŒ, {"lssn":71289}์ฒ˜๋Ÿผ ์ค‘๊ด„ํ˜ธ๊ฐ€ ์„ž์ด๋ฉด ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†์–ด ์˜ค๋ฅ˜๊ฐ€ ๋‚ฉ๋‹ˆ๋‹ค.
    • text=LsvrDetail lssn์ฒ˜๋Ÿผ ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„์„ ๋ช…์‹œํ•˜๊ณ  jsondata={"lssn":71289}๋กœ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์ด ์ด๋ก ์ƒ ๋” ์•ˆ์ „ํ•  ์ˆ˜ ์žˆ์œผ๋‚˜(๊ฐ’ ์ด๋ฆ„ ๋งค์นญ ๊ฒฝ๋กœ๋ฅผ ํƒ€๋ฏ€๋กœ) ์‹ค์ธก ๊ฒ€์ฆ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค โ€” ํ™•์‹คํžˆ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์€ ์œ„ raw-number ๋ฐฉ์‹๋ฟ์ž…๋‹ˆ๋‹ค.

๐Ÿšซ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๋ช…๋ น (giip #1281)

์•„๋ž˜ ๋ช…๋ น์€ giipApiSk2 ๋””์ŠคํŒจ์ฒ˜์— ๋Œ€์‘ SP๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•„ ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. UI๋ฅผ ์ด์šฉํ•ด์ฃผ์„ธ์š”.

๋ช…๋ น์›์ธ๋Œ€์•ˆ
LSVRList <CSN>pApiLSVRListbySk SP๊ฐ€ giipdb์— ์กด์žฌํ•˜์ง€ ์•Š์Œ์„œ๋ฒ„ ๋ชฉ๋ก ํŽ˜์ด์ง€๋ฅผ ์ด์šฉํ•ด ์ฃผ์„ธ์š”
LSvrPut '<lsUsage>', <CSN>SK ๊ธฐ๋ฐ˜ pApiLSvrPutbySk SP๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Œ (AK ๊ธฐ๋ฐ˜ pApiLSvrPutbyAK๋งŒ ์กด์žฌ, giipApiSk2์—์„œ ํ˜ธ์ถœ ๋ถˆ๊ฐ€)์„œ๋ฒ„ ๋ชฉ๋ก ํŽ˜์ด์ง€๋ฅผ ์ด์šฉํ•ด ์ฃผ์„ธ์š”

๐Ÿ›ก๏ธ Sk3(๊ณ ์„ฑ๋Šฅ ๋กœ๊น…) ํ™œ์šฉ

์ƒ์„ธ ์ •๋ณด ์กฐํšŒ ๋“ฑ ์ธํ”„๋ผ ์ž์‚ฐ ๊ด€๋ฆฌ์˜ ํ•ต์‹ฌ ์ž‘์—… ์‹œ, ์ž‘์—…์˜ ์ •ํ•ฉ์„ฑ ํ™•๋ณด์™€ ์ƒ์„ธํ•œ ๊ฐ์‚ฌ ๋กœ๊ทธ(Audit Log)๋ฅผ ์œ„ํ•ด giipApiSk3 ์—”๋“œํฌ์ธํŠธ๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

  • ์—”๋“œํฌ์ธํŠธ: https://giipfaw.azurewebsites.net/api/giipApiSk3
  • ์žฅ์ : ์ƒ์„ธ ํ™˜๊ฒฝ ์ •๋ณด(IP, UA)์™€ StackTrace๋ฅผ ์ฆ‰์‹œ ๊ธฐ๋กํ•˜์—ฌ ์—์ด์ „ํŠธ ์—ฐ๋™ ๋ฌธ์ œ๋‚˜ ์„ค์ • ์˜ค๋ฅ˜๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ

์ฆ์ƒ์›์ธํ•ด๊ฒฐ
LsvrDetail ์กฐํšŒ ์‹œ Error converting data type nvarchar to bigint ์˜ค๋ฅ˜jsondata๋ฅผ {"lssn":71289}์ฒ˜๋Ÿผ ๊ฐ์ฒด๋กœ ๊ฐ์Œˆ โ€” text=LsvrDetail์—๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„์ด ์—†์–ด jsondata ์ „์ฒด๊ฐ€ ๋ฌธ์ž์—ด ๊ทธ๋Œ€๋กœ @lssn bigint ์ธ์ž์— ๋Œ€์ž…๋จjsondata์— LSSN raw ์ˆซ์ž๋งŒ ์ „๋‹ฌ(์˜ˆ: jsondata=71289), ๊ฐ์ฒด๋กœ ๊ฐ์‹ธ์ง€ ๋ง ๊ฒƒ
LsvrDetail ์กฐํšŒ ์‹œ ์ธ์ฆ์ด ๊ฑฐ๋ถ€๋จPOST ๋ณธ๋ฌธ token ํ•„๋“œ ๋ˆ„๋ฝ/์˜คํƒ€ ๋˜๋Š” ๋น„ํ™œ์„ฑํ™”(์žฌ๋ฐœ๊ธ‰/ํšŒ์ „)๋œ SK ์‚ฌ์šฉ. x-giip-ak/x-giip-sk/x-api-key ๋“ฑ ํ—ค๋”๋Š” ์ด ์—”๋“œํฌ์ธํŠธ์—์„œ ์ „ํ˜€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ—ค๋”๋ฅผ ์•„๋ฌด๋ฆฌ ์ฑ„์›Œ๋„ ์†Œ์šฉ์—†์Šต๋‹ˆ๋‹ค.POST ๋ณธ๋ฌธ์˜ token ํ•„๋“œ์— ์œ ํšจํ•œ(ํ˜„์žฌ ๋ฐœ๊ธ‰๋œ) SK๋ฅผ ๋‹ด์•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
LsvrDetail ์กฐํšŒ ๊ฒฐ๊ณผ๊ฐ€ ์—†์Œ์กด์žฌํ•˜์ง€ ์•Š๋Š” LSSN ์‚ฌ์šฉ์œ ํšจํ•œ LSSN์œผ๋กœ ๋‹ค์‹œ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„์ „: 1.5 ์ตœ์ข… ์—…๋ฐ์ดํŠธ: 2026-08-20 ์†Œ์Šค ํŒŒ์ผ: giipv3/public/help/api-server.ko.md

v1.5 ๋ณ€๊ฒฝ ์ด๋ ฅ (2026-08-20, giip #1281): giipApiSk2 ๋””์ŠคํŒจ์ฒ˜์— ๋Œ€์‘ SP๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” LSVRList/LSvrPut ๋ช…๋ น์„ API ์ƒ์„ธ์—์„œ ์ œ๊ฑฐํ•˜๊ณ , "๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๋ช…๋ น" ํ‘œ๋กœ ๋Œ€์•ˆ(UI)์„ ๋ช…์‹œ. LsvrDetail๋งŒ ์œ ์ผํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๋ช…๋ น์œผ๋กœ ๋‚จ๊น€. v1.4 ๋ณ€๊ฒฝ ์ด๋ ฅ (2026-08-20, giip #1277): ์™ธ๋ถ€ ์‚ฌ์šฉ์ž(smartorder-works, csn 70418) ์‹ค์ธก ์ œ๋ณด๋กœ ๋ฌธ์„œ-๊ตฌํ˜„ ๋ถˆ์ผ์น˜๋ฅผ ๋ฐœ๊ฒฌํ•ด ์ •์ •.


๊ด€๋ จ ๋ฌธ์„œ: