샌드박스

샌드박스는 실제 사용자 데이터 없이 통합을 개발·테스트하는 연습용 환경입니다. 샌드박스 키로 인증하면 서버가 서비스 진입 직후 분기하여 결정적(항상 같은) 합성 응답을 돌려줍니다 — 실제 주체 조회 코드에는 절대 도달하지 않습니다.

라이브와 같은 URL을 사용합니다. 환경은 키에 결속됩니다. 샌드박스 호출도 접근로그에 기록되지만 environment='SANDBOX'로 분리되어 실 로그와 섞이지 않습니다.

고정 연습 주체 (canonical subjects) — 점수 조회

POST /fi/score/query·POST /fi/score/batch에서 아래 주체를 사용하세요.

pairwiseSub결과설명
SANDBOX-TIER-A820 · EXCELLENT최상위 등급(750–850) 고정 케이스
SANDBOX-TIER-B700 · GOOD650–749 구간 고정 케이스
SANDBOX-TIER-C600 · FAIR550–649 구간 고정 케이스
SANDBOX-TIER-D500 · BELOW_AVERAGE450–549 구간 고정 케이스
SANDBOX-TIER-E400 · POOR0–449 구간 고정 케이스
SANDBOX-NO-CONSENT항상 거부(DENIED)단건은 동의 없음 에러(SW2300)와 동일한 형태, 배치는 status="DENIED"
SANDBOX-EXPIRED동의 만료 케이스동의가 만료된 주체의 거부 동작 연습
그 밖의 임의 값300~850 결정적 점수sha256(pairwiseSub) 기반 — 같은 입력이면 항상 같은 점수

사유코드는 실제 카탈로그(31종)의 고정 4건 세트가 영어/현지어 라벨과 함께 반환되어, 라이브와 동일한 스키마로 파싱을 검증할 수 있습니다.

고정 케이스 — 증명서 검증 (verify)

POST /fi/verify는 attestationId(vcId) 접두사로 6가지 판정을 각각 재현합니다.

vcId 접두사판정(reason)valid
SANDBOX-VALIDVALIDtrue
SANDBOX-EXPIREDEXPIRED — 유효기간(90일) 경과false
SANDBOX-REVOKEDREVOKED — 발급기관이 폐기false
SANDBOX-TAMPEREDCOMMITMENT_MISMATCH — 변조 의심false
SANDBOX-NOT-FOUNDNOT_FOUND — 발급 기록 없음false
SANDBOX-TIER-MISMATCHTIER_MISMATCH — 제시 등급 불일치false

예제: 등급별 응답 확인

curl -s https://trendy.storydot.kr/superapp/api/fi/score/query \
  -H "X-Client-Id: YOUR_CLIENT_ID" \
  -H "X-API-Key: YOUR_SANDBOX_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "pairwiseSub": "SANDBOX-TIER-C", "purpose": "PREQUALIFY" }'
{
  "success": true,
  "data": {
    "pairwiseSub": "SANDBOX-TIER-C",
    "score": 600,
    "scoreMin": 0,
    "scoreMax": 850,
    "tier": "FAIR",
    "pullType": "SOFT",
    "reasonCodes": [
      {
        "code": "RC_LOW_UTILITY_PAYMENT_RELIABILITY",
        "labelEn": "Low utility bill payment reliability",
        "labelLocalized": "Low utility bill payment reliability",
        "category": "PAYMENT",
        "impactPoints": 40,
        "rank": 1
      },
      {
        "code": "RC_LOW_TELCO_PAYMENT_REGULARITY",
        "labelEn": "Irregular telecom payment history",
        "labelLocalized": "Irregular telecom payment history",
        "category": "PAYMENT",
        "impactPoints": 30,
        "rank": 2
      },
      {
        "code": "RC_CASHFLOW_INSTABILITY",
        "labelEn": "Cash-flow instability",
        "labelLocalized": "Cash-flow instability",
        "category": "FINANCIAL",
        "impactPoints": 20,
        "rank": 3
      },
      {
        "code": "RC_DID_VC_WEAK",
        "labelEn": "Limited verified digital identity",
        "labelLocalized": "Limited verified digital identity",
        "category": "IDENTITY",
        "impactPoints": 10,
        "rank": 4
      }
    ],
    "modelVersion": "sandbox-v1",
    "scoredAt": "2026-01-01 00:00:00",
    "decisionHash": "30b3aba5849a8cf99e59addd11bb2b8ee21a63ad142634599b5ce26ac24b0e3e",
    "environment": "SANDBOX",
    "confidence": "HIGH",
    "dataSufficiency": {
      "featuresObserved": 18,
      "featuresTotal": 20,
      "coveragePercent": 90.0
    }
  },
  "message": "Score retrieved"
}

권장 테스트 체크리스트