Main Site

API 인증

지갑 기반 인증

MetaCivia API는 지갑 주소를 기반으로 인증합니다. 모든 요청에 X-Wallet-Address 헤더를 포함해야 합니다.

예시

fetch('https://metacivia-backend.pages.dev/api/citizen/status', {
  headers: {
    'X-Wallet-Address': '0x1234567890123456789012345678901234567890123456789012345678901234'
  }
})

지갑 주소 형식

  • SUI 지갑 주소 형식: 0x로 시작하는 64자리 16진수
  • 총 길이: 66자 (0x 포함)

API Key 인증 (외부 시스템)

외부 시스템에서 MetaCivia API를 사용하려면 API Key가 필요합니다.

API Key 발급

  1. Architect에게 API Key 발급 요청
  2. 또는 Cloudflare 환경 변수에서 설정

사용 방법

fetch('https://metacivia-backend.pages.dev/api/external/citizen/0x.../credit', {
  headers: {
    'X-API-Key': 'your-api-key-here'
  }
})

CSRF 보호

상태 변경 요청(POST, PUT, DELETE)은 CSRF 토큰이 필요할 수 있습니다.

CSRF 토큰 획득

GET 요청 시 응답 헤더에 X-CSRF-Token이 포함됩니다.

CSRF 토큰 사용

// 1. GET 요청으로 토큰 획득
const response = await fetch('/api/citizen/status', {
  headers: { 'X-Wallet-Address': walletAddress }
})
const csrfToken = response.headers.get('X-CSRF-Token')

// 2. POST 요청에 토큰 포함
await fetch('/api/ritual/submit', {
  method: 'POST',
  headers: {
    'X-Wallet-Address': walletAddress,
    'X-CSRF-Token': csrfToken
  },
  body: JSON.stringify({ ... })
})

에러 처리

인증 실패

인증이 실패하면 401 Unauthorized 또는 403 Forbidden 응답이 반환됩니다.

{
  "error": "Wallet address required"
}

권한 부족

Architect 전용 API에 일반 시민이 접근하면 403 Forbidden이 반환됩니다.