For the complete documentation index, see llms.txt. This page is also available as Markdown.

API 문서

이 페이지는 모든 Decentraland 서비스에서 OpenAPI 사양을 사용해 API를 문서화하는 표준을 다룹니다.

목표

우리의 API 문서화 방식은 다음을 보장합니다:

  • 표준화 - 모든 서비스에서 일관된 OpenAPI 사양

  • 자동화 - GitHub Actions를 통한 검증, 번들링, 배포

  • 중앙 집중화 - 모든 서비스 문서는 GitBook을 통해 게시됨

  • 소유권 - 문서는 각 서비스 저장소에 함께 존재함

  • 접근성 - 기여자 친화적이고 최신 상태의 API 레퍼런스


저장소 구조

각 서비스 저장소에는 반드시 다음이 포함되어야 합니다: /docs 다음 구조를 가진 디렉터리:

/docs
  openapi.yaml        # 정본 (OpenAPI 3.1)
  openapi.json        # CI에서 Hugo/렌더러용으로 자동 생성됨
  index.html          # 자동 생성된 독립형 문서(선택 사항)

파일 요구사항

openapi.yaml

  • 반드시 정본 소스 파일이어야 함

  • 반드시 OpenAPI 3.1 사양을 사용

  • 선택적으로 서비스 식별용 접두사를 가질 수 있음(예: worlds-openapi.yaml)

  • 선택적으로 다음으로 분리할 수 있음 components/ 또는 examples/ 필요한 경우 디렉터리로

openapi.json

  • CI/CD 중 자동 생성됨

  • Hugo 및 기타 렌더러에서 사용됨

  • 수동으로 편집하지 마세요

index.html

  • 자동 생성된 독립형 문서

  • Redocly로 빌드됨

  • GitHub Pages에 배포됨


OpenAPI 표준

작성할 때 openapi.yaml일관성과 명확성을 보장하기 위해 다음 규칙을 따르세요.

엔드포인트 요약

반드시 실제 엔드포인트 경로를 반영해야 합니다:

Operation ID

반드시 전역적으로 고유하도록 서비스 이름을 포함하세요:

명명 규칙: {serviceName}_{operationDescription}

  • camelCase를 사용

  • 설명적이되 간결하게

  • 필요한 경우 HTTP 메서드 맥락을 포함하세요(예: createUser, deleteParcel)

버전 관리

반드시 시맨틱 버전 관리를 사용하세요(MAJOR.MINOR.PATCH)를 info.version:

버전 증가 규칙:

  • 메이저: 중단적 변경 사항(호환되지 않는 API 변경)

  • 마이너: 새 기능(하위 호환)

  • 패치: 버그 수정(하위 호환)

태그 및 그룹화

반드시 관련 엔드포인트를 그룹화하려면 태그를 사용하세요:

작업은 GitBook의 탐색에서 태그별로 그룹화됩니다. 더 나은 구성을 위해 관련 엔드포인트는 같은 태그 아래에 그룹화하세요.

전체 예시


로컬 개발

로컬에서 문서 미리보기

OpenAPI 문서를 미리 보려면 Redocly CLI를 사용하세요:

package.json에 추가

편의를 위해 빌드 스크립트를 추가하세요:

Redocly CLI 설치

OpenAPI 사양 검증


자동화 설정

1단계: GitBook 비밀 정보 구성

API 사양을 GitBook에 게시하려면 저장소에 다음 비밀 정보를 추가하세요:

Settings → Secrets and variables → Actions → New repository secret

비밀 이름
설명
찾을 위치

GITBOOK_ORGANIZATION_ID

GitBook 조직 ID

GitBook Settings → Organization

GITBOOK_TOKEN

GitBook API 토큰

GitBook Settings → API Tokens

2단계: GitHub Actions 워크플로 추가

다음 파일을 생성하세요: .github/workflows/build-api-docs.yml 저장소에:

매개변수:

  • api-spec-file: OpenAPI 사양 경로(일반적으로 docs/openapi.yaml)

  • output-file: HTML 문서를 생성할 위치

  • output-directory: 출력 파일 디렉터리

  • api-spec-name: API 사양의 고유 이름(GitBook에서 사용)

  • node-version: 사용할 Node.js 버전

이 워크플로는 다음을 수행합니다:

  1. ✅ OpenAPI 사양 검증

  2. ✅ 사양을 단일 파일로 번들링

  3. ✅ Redocly를 사용해 정적 HTML 문서 생성

  4. ✅ GitHub Pages에 자동 배포

  5. ✅ (비밀 정보가 구성된 경우) 사양을 GitBook에 게시

3단계: GitHub Pages 활성화

저장소에서 GitHub Pages를 구성하세요:

  1. 다음으로 이동: Settings → Pages

  2. 다음에서 빌드 및 배포:

    • 설정: 원본 를 GitHub Actions

  3. 이름이 다음인 환경이 있는지 확인하세요 github-pages

  4. 설정을 저장

첫 번째 성공적인 워크플로 실행 후, 문서는 다음에서 확인할 수 있습니다:

  • HTML 문서: https://decentraland.github.io/<repo>/index.html

  • OpenAPI 사양: https://decentraland.github.io/<repo>/openapi.yaml

  • 번들된 JSON: https://decentraland.github.io/<repo>/openapi.json


GitBook에 추가

API 문서가 배포되면 중앙 집중식 GitBook 문서에 추가하세요.

수동 추가(현재 프로세스)

  1. GitBook 스페이스로 이동하세요

  2. 다음으로 이동: API 참조 섹션

  3. 클릭: Add API Reference

  4. 서비스 세부 정보를 입력하세요:

    • 이름: 서비스 이름(예: "Social Service")

    • OpenAPI URL: https://decentraland.github.io/{repo-name}/openapi.yaml

  5. 저장

GitBook 통합 기능

GitBook은 자동으로 다음을 수행합니다:

  • OpenAPI 사양을 파싱합니다

  • 대화형 API 문서를 생성합니다

  • 태그를 기반으로 엔드포인트 탐색을 생성합니다

  • "Try it" 기능을 제공합니다

  • 사양을 업데이트하면 문서도 동기화된 상태로 유지합니다


전체 설정 흐름

초기 설정

Unexpected error with integration mermaid: Integration is not installed on this space

지속적인 업데이트

Unexpected error with integration mermaid: Integration is not installed on this space

모범 사례

문서 품질

  • 설명적으로 작성: 명확한 요약과 설명을 작성하세요

  • 예제를 제공: 요청/응답 예제를 포함하세요

  • 오류를 문서화: 가능한 모든 오류 응답을 설명하세요

  • 컴포넌트 사용: 다음을 통해 스키마를 재사용하세요 $ref 중복을 피하기 위해

  • 설명을 추가: 모든 매개변수, 속성, 응답에는 설명이 있어야 합니다

모범 사례 예시

스키마 재사용성

보안 스키마


유효성 검사 및 품질 확인

커밋 전 유효성 검사

커밋 전 훅 또는 CI 검사를 추가하세요:

일반 유효성 검사 규칙

  • 모든 경로에 operation ID가 있습니다

  • 모든 작업에 태그가 있습니다

  • 모든 매개변수에 설명이 있습니다

  • 모든 응답이 문서화되어 있습니다

  • 예시가 제공됩니다

  • 스키마가 올바르게 참조됩니다


문제 해결

워크플로 실패

문제: GitHub Actions 워크플로가 실패합니다

해결 방법:

  • 검증 오류가 있는지 워크플로 로그를 확인하세요

  • 실행 redocly lint docs/openapi.yaml 로컬에서

  • 워크플로 구성에서 파일 경로를 확인하세요

  • 시크릿이 올바르게 구성되었는지 확인하세요

GitHub Pages가 작동하지 않음

문제: 문서가 GitHub Pages URL에 표시되지 않음

해결 방법:

  • 저장소 설정에서 GitHub Pages가 활성화되어 있는지 확인하세요

  • 워크플로가 성공적으로 완료되었는지 확인하세요

  • GitHub Pages가 업데이트될 때까지 몇 분 기다리세요

  • 확인하세요 github-pages 환경이 존재하는지

GitBook이 동기화되지 않음

문제: GitBook에 업데이트된 API 문서가 표시되지 않음

해결 방법:

  • GitBook 시크릿이 올바른지 확인하세요

  • OpenAPI URL에 접근 가능한지 확인하세요

  • GitBook에서 수동으로 새로고침을 트리거하세요

  • OpenAPI 사양이 유효한지 확인하세요


기존 문서에서 마이그레이션

기존 API 문서가 있다면:

  1. OpenAPI로 내보내기: 기존 문서를 OpenAPI 3.1 형식으로 변환

  2. 검증: 사용 redocly lint 를 사용해 준수 여부를 확인

  3. 워크플로 추가: GitHub Actions 자동화를 설정

  4. 테스트: 문서가 빌드되고 올바르게 배포되는지 확인

  5. 링크 업데이트: 기존 문서 링크를 새 GitHub Pages URL로 연결

  6. 이전 문서 보관: 전환 기간 동안 참고용으로 이전 문서를 보관


다음 단계

관련 표준

리소스

마지막 업데이트