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 변경)
마이너: 새 기능(하위 호환)
패치: 버그 수정(하위 호환)
태그 및 그룹화
반드시 관련 엔드포인트를 그룹화하려면 태그를 사용하세요:
전체 예시
로컬 개발
로컬에서 문서 미리보기
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
이 비밀 정보는 자동화 워크플로가 GitBook에 게시하려면 반드시 구성되어야 합니다.
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 버전
이 워크플로는 다음을 수행합니다:
✅ OpenAPI 사양 검증
✅ 사양을 단일 파일로 번들링
✅ Redocly를 사용해 정적 HTML 문서 생성
✅ GitHub Pages에 자동 배포
✅ (비밀 정보가 구성된 경우) 사양을 GitBook에 게시
3단계: GitHub Pages 활성화
저장소에서 GitHub Pages를 구성하세요:
다음으로 이동: Settings → Pages
다음에서 빌드 및 배포:
설정: 원본 를 GitHub Actions
이름이 다음인 환경이 있는지 확인하세요 github-pages
설정을 저장
첫 번째 성공적인 워크플로 실행 후, 문서는 다음에서 확인할 수 있습니다:
HTML 문서:
https://decentraland.github.io/<repo>/index.htmlOpenAPI 사양:
https://decentraland.github.io/<repo>/openapi.yaml번들된 JSON:
https://decentraland.github.io/<repo>/openapi.json
이 URL은 저장소가 존재하고 GitHub Pages가 활성화되어 있는 한 유효합니다.
GitBook에 추가
API 문서가 배포되면 중앙 집중식 GitBook 문서에 추가하세요.
수동 추가(현재 프로세스)
GitBook 스페이스로 이동하세요
다음으로 이동: API 참조 섹션
클릭: Add API Reference
서비스 세부 정보를 입력하세요:
이름: 서비스 이름(예: "Social Service")
OpenAPI URL:
https://decentraland.github.io/{repo-name}/openapi.yaml
저장
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 문서가 있다면:
OpenAPI로 내보내기: 기존 문서를 OpenAPI 3.1 형식으로 변환
검증: 사용
redocly lint를 사용해 준수 여부를 확인워크플로 추가: GitHub Actions 자동화를 설정
테스트: 문서가 빌드되고 올바르게 배포되는지 확인
링크 업데이트: 기존 문서 링크를 새 GitHub Pages URL로 연결
이전 문서 보관: 전환 기간 동안 참고용으로 이전 문서를 보관
다음 단계
다음을 검토하세요 잘 알려진 구성 요소 API 구현 표준
참고 테스트 표준 API 테스트 가이드라인용
다음의 기존 API 예제를 살펴보세요 API 참조 섹션
관련 표준
종속성 관리 - npm 종속성과 peerDependencies 관리
잘 알려진 구성 요소 - 서비스용 WKC 아키텍처
테스트 표준 - 서비스 테스트 패턴
리소스
OpenAPI 사양: spec.openapis.org
Redocly CLI: redocly.com/docs/cli
GitBook API 통합: docs.gitbook.com
Platform Actions 저장소: github.com/decentraland/platform-actions
마지막 업데이트