Sandbox 전용: 모든 배송 결과, 송장번호, 라벨은 가짜입니다. 실제 CJ대한통운·우체국·롯데 접수, 운송장 발급, 운임 청구, 운영 DB 변경은 발생하지 않습니다.
공개 가입은 이메일이나 실제 개인정보를 요구하지 않습니다. 개발용 별칭만 보내고, 응답의 토큰 원문을 안전한 개발 환경에 한 번만 저장하세요.
curl -sS https://sandbox.whatta.co.kr/api/sandbox/tenants \
-H 'Content-Type: application/json' \
-d '{"name":"demo-shop-a"}'
공개 가입 토큰의 scope는 ORDER_WRITE이며 이 sandbox 상태에만 적용됩니다. 운영 WHATTA 주문 저장 권한이나 택배사 접수 권한이 아닙니다.
https://sandbox.whatta.co.krAuthorization: Bearer <token>curl -sS "$WHATTA_API_URL/api/shop/orders/" \
-H "Authorization: Bearer $WHATTA_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"validateOnly":true,"shopOrderId":"DEMO-ORDER-001","receiver":{"name":"홍길동","phone":"010-0000-0000","zipcode":"06236","address1":"서울특별시 강남구 테헤란로 1"},"productName":"테스트 상품"}'
validateOnly:true는 검증만 수행하며 주문을 저장하지 않습니다. 일반 요청은 sandbox 주문 상태를 저장하고 CREATED 또는 DUPLICATE를 반환합니다.
curl -sS "$WHATTA_API_URL/api/shop/shipments/" \
-H "Authorization: Bearer $WHATTA_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"carrier":"CJ","shopOrderId":"DEMO-SHIP-001","idempotencyKey":"demo-key-001","sender":{"name":"테스트 발송인","phone":"010-1111-1111","zipcode":"06236","address1":"서울특별시 강남구 테헤란로 1"},"receiver":{"name":"테스트 수취인","phone":"010-2222-2222","zipcode":"04524","address1":"서울특별시 중구 세종대로 1"},"product":{"name":"샌드박스 상품"}}'
정상 mock 접수는 201 ACCEPTED와 가짜 송장번호를 반환합니다. 주문번호에 UNKNOWN 또는 LABEL-PENDING을 넣으면 해당 상태를 재현할 수 있습니다. UNKNOWN은 자동 재접수하지 말고 상태를 조회하세요.
curl -sS "$WHATTA_API_URL/api/shop/shipments/?shopOrderId=DEMO-SHIP-001" \ -H "Authorization: Bearer $WHATTA_TOKEN" curl -sS "$WHATTA_API_URL/api/shop/shipments/label/?shopOrderId=DEMO-SHIP-001" \ -H "Authorization: Bearer $WHATTA_TOKEN" \ -o mock-label.svg curl -sS -X POST "$WHATTA_API_URL/api/shop/shipments/label/?shopOrderId=DEMO-SHIP-001" \ -H "Authorization: Bearer $WHATTA_TOKEN" \ -H 'Content-Type: application/x-www-form-urlencoded' \ --data 'action=mark_printed'
라벨은 mock SVG입니다. LABEL_PENDING, UNKNOWN, 송장번호 누락, 만료 상태에서는 라벨을 발급하지 않습니다.
curl -sS -X POST "$WHATTA_API_URL/api/sandbox/token/rotate" \ -H "Authorization: Bearer $WHATTA_TOKEN" curl -sS -X POST "$WHATTA_API_URL/api/sandbox/token/revoke" \ -H "Authorization: Bearer $WHATTA_TOKEN"
회전 후 이전 토큰은 즉시 폐기됩니다. 폐기하면 tenant와 연결된 sandbox 주문·배송 데이터도 삭제됩니다. 토큰을 잃어버린 경우 이메일 기반 복구는 제공하지 않으며, 운영자가 공개되지 않은 로컬 CLI로 tenant를 정리하거나 새 테스트 tenant를 발급해야 합니다.
응답 JSON의 error_code와 HTTP 상태를 함께 확인하세요. 주요 값은 INVALID_OR_DISABLED_TOKEN(401), FORBIDDEN_SCOPE(403), PAYLOAD_CONFLICT(409), RATE_LIMITED(429), LABEL_SESSION_EXPIRED(410)입니다.
동일 tenant의 동일 주문번호와 다른 payload는 충돌이며, 다른 tenant의 동일 주문번호는 독립 데이터입니다. 토큰·tenant ID를 바꾸어 다른 tenant를 조회할 수 없습니다.
이 sandbox는 실제 택배사 계약·인증·라벨 규격·운영 접수 절차를 재현하지 않습니다. 실제 발송에는 WHATTA 운영 연동, 택배사 계약과 별도 승인이 필요합니다.