Files
uniare.sori.studio/docs/widget.md
2026-09-15 15:16:09 +09:00

3.8 KiB

외부 서비스 연동

기본 정보

  • 운영 URL: https://uniare.sori.studio
  • API 상태: https://uniare.sori.studio/api/v1/health
  • 운영 지표: https://uniare.sori.studio/api/stats
  • 공유 덱: https://uniare.sori.studio/api/v1/decks/<shareCode>
  • STATS_API_TOKEN이 설정된 경우 운영 지표 API는 Bearer 토큰 또는 X-Stats-Token 헤더가 필요하다.

상태 확인

curl -fsS https://uniare.sori.studio/api/v1/health
{
  "ok": true,
  "version": "4.0.25"
}

로컬 Docker에서는 다음 주소를 사용한다.

curl -fsS http://localhost:44082/api/v1/health

대시보드 위젯

운영 지표 API를 사용하는 예시다.

Custom API 공식 문서:

https://gethomepage.dev/widgets/services/customapi/
- UNIARE:
    icon: mdi-cards-playing
    href: https://uniare.sori.studio
    description: Union Arena Deck Builder
    widget:
      type: customapi
      url: https://uniare.sori.studio/api/stats
      refreshInterval: 30000
      mappings:
        - field: status
          label: 상태
          format: text
        - field: version
          label: 버전
          format: text
        - field: members.total
          label: 회원
          format: number
        - field: members.created24h
          label: 신규 회원 24h
          format: number
        - field: decks.total
          label: 덱
          format: number
        - field: decks.created24h
          label: 신규 덱 24h
          format: number
        - field: cards.seriesTotal
          label: 시리즈
          format: number
        - field: cards.cardTypesTotal
          label: 카드 종류
          format: number

Docker 내부의 대시보드 컨테이너에서 같은 Compose 네트워크를 사용할 경우 공개 도메인 대신 http://uniare-web/api/stats를 사용할 수 있다. 서로 다른 Compose 프로젝트라면 공통 외부 네트워크 연결이 필요하다.

토큰을 설정한 경우 curl 예시는 다음과 같다.

curl -fsS \
  -H "Authorization: Bearer $STATS_API_TOKEN" \
  https://uniare.sori.studio/api/stats

응답 예시:

{
  "status": "online",
  "ok": true,
  "version": "4.0.25",
  "lastUpdated": "2026-08-12T00:00:00.000Z",
  "members": {
    "total": 12,
    "active": 12,
    "inactive": 0,
    "verified": 10,
    "unverified": 2,
    "created24h": 1,
    "latestCreatedAt": "2026-08-12 09:00:00",
    "latestLoginAt": "2026-08-12T10:00:00.000Z"
  },
  "decks": {
    "total": 34,
    "userTotal": 34,
    "presetTotal": 0,
    "publicTotal": 20,
    "privateTotal": 14,
    "anonymousTotal": 0,
    "created24h": 3,
    "updated24h": 5,
    "totalViews": 120,
    "latestCreatedAt": "2026-08-12 09:30:00",
    "latestUpdatedAt": "2026-08-12T10:10:00.000Z"
  },
  "cards": {
    "seriesTotal": 56,
    "cardTypesTotal": 5400,
    "cardPrintsTotal": 6200,
    "parallelPrintsTotal": 800,
    "bySeries": [
      {
        "series": "ua01",
        "cardTypes": 90,
        "cardPrints": 110,
        "parallelPrints": 20
      }
    ]
  }
}

공유 덱 조회

curl -fsS https://uniare.sori.studio/api/v1/decks/x7Kp9m2Q

브라우저와 Node.js 연동은 integrations/uadeck-deck-client.js 또는 docs/api-integration.md를 사용한다.

운영 지표 범위

현재 운영 지표 API는 다음 집계값을 제공한다.

  • API 상태와 현재 버전
  • 전체·활성·인증 회원 수, 최근 24시간 신규 회원 수, 최근 가입·접속 시각
  • 전체·공개·비공개·익명 덱 수, 최근 24시간 생성·수정 덱 수, 전체 조회 수
  • 등록 카드 시리즈 수, 고유 카드 번호 수, 패러렐 포함 카드 수, 시리즈별 카드 수

DB 백업 시각과 미리보기·아바타 저장 공간 사용량은 아직 포함하지 않는다.