온프레미스 V2.0
API 소개
온프레미스 OpenAPI V2.0은 RESTful 사양을 기반으로 하는 개방형 플랫폼으로, 개발자에게 타사 프라이빗 클라우드 플랫폼과 DJI FlightHub 2 온프레미스 버전 간의 데이터 연동 및 비즈니스 통합을 제공하기 위해 설계되었습니다.
OpenAPI V2.0을 통해 개발자는 장치 관리, 비행 임무 관리, 데이터 관리(미디어, 모델, 지도 데이터) 등 핵심 모듈을 중심으로 시스템 통합을 구축하여, FlightHub 2를 기반으로 한 데이터 연동, 장치 관리, 임무 스케줄링, 경량 실시간 제어 등의 비즈니스 시나리오를 지원할 수 있습니다.
V1.0과 비교하여, V2.0은 2차 개발 시나리오의 클로즈드 루프를 핵심 목표로 합니다. 기존 기능을 기반으로 장치 관리, 비행 임무 관리, 데이터 관리(미디어, 모델, 지도) 등 핵심 모듈에 대한 API를 체계적으로 보완하여, 인터페이스 수를 300개 이상으로 늘렸습니다(V1.0은 67개).
또한 인터페이스 체계를 재구성하여 퍼블릭 클라우드와 온프레미스 인터페이스 문서를 분리함으로써, 인터페이스 분류를 더욱 명확하게 만들어 개발자의 빠른 이해와 통합을 돕고, 향후 OpenAPI의 보다 민첩한 반복 주기를 가능하게 합니다.
기능 목록
| 기능 | 설명 |
|---|---|
| 조직 및 프로젝트 관리 | 프로젝트, 구성원, 역할 권한의 조회 및 관리 기능을 제공합니다. |
| 장치 관리 | 장치 목록, 실시간 상태, 사물 모델 섀도우, HMS 상태 이벤트, 네트워크 및 RTK 구성 등 장치 조회 및 관리를 지원하여, 장치 관리 및 구성 시스템을 구축하는 데 사용됩니다. |
| 비행 임무 | 비행 임무 생성, 임무 목록 및 실행 상세 정보 조회, 비행 기록, AI 경고 등의 기능을 지원하여, 비행 임무 관리 시스템을 구축하는 데 사용됩니다. |
| 실시간 제어 | 클라우드 제어 권한 조회 및 획득, 지점 비행, POI 선회, 카메라 제어 등의 명령 전송을 지원하여, 비즈니스 수준의 경량 실시간 제어 기능을 구현합니다. |
| 라이브 스트리밍 | 라이브 스트리밍 및 전송 관리, 카메라 및 화질 전환 등의 기능을 지원하여, 라이브 스트리밍 관리 시스템을 구축하는 데 사용됩니다. |
| 미디어 관리 | 미디어 파일의 조회, 관리 및 다운로드를 지원하여, 미디어 관리 시스템을 구축하는 데 사용됩니다. |
| 모델 관리 | 재구성 작업 시작 및 모델 자산 관리를 지원하여, 모델 관리 시스템을 구축하는 데 사용됩니다. |
| 비행 경로 관리 | 비행 경로 목록 가져오기, 비행 경로 파일 관리 등을 지원하여, 비행 경로 파일 관리 시스템을 구축하는 데 사용됩니다. |
| 지도 데이터 관리 | 주석 관리, 사용자 정의 비행 구역 관리, 신호 히트맵 조회 등의 기능을 지원합니다. |
| 변화 감지 | 변화 분석 작업 시작 및 감지 결과 조회를 지원하여, 시공 모니터링, 점검 비교 등의 시나리오에 적용할 수 있습니다. |
| 개방형 모델링 | 타사 플랫폼의 미디어 데이터를 사용하여 모델링 작업을 시작할 수 있습니다. |
인터페이스 문서
- 인터페이스 문서에는 OpenAPI의 기능 목록, 튜토리얼, 인터페이스 목록 및 인터페이스 설명이 포함되어 있습니다. 자세한 내용은 OpenAPI 인터페이스 문서를 참조하십시오.
예제 소스 코드
예제 소스 코드를 배포하고 성공적으로 실행하면 OpenAPI V2.0을 기반으로 개발된 기능 화면을 체험할 수 있습니다. 예제 소스 코드를 통해 OpenAPI의 연동 방식 및 사용 방법을 빠르게 파악하여 개발과 통합을 가속화할 수 있습니다.
**예제 소스 코드**를 클릭하여 소스 코드와 연동 가이드를 확인하십시오.
제품 아키텍처

퀵 스타트
환경 설정(FlightHub 2 온프레미스 버전 전용)
DJI FlightHub 2 온프레미스 버전 배포 매뉴얼을 참조하여 FlightHub 2 온프레미스 버전을 배포하십시오.
인증 및 권한 부여
《인증 및 권한 부여 튜토리얼》 문서를 참조하여 OpenAPI 인증 및 권한 부여의 원리를 이해하고 x-user-token 및 X-Project-Uuid를 획득하십시오. 이 두 매개변수는 대부분의 인터페이스의 header 필드에 입력되어, OpenAPI의 보안을 보장하고 FlightHub 2에 대한 액세스 제어를 구현하는 데 사용됩니다.
샘플 코드
1. FlightHub 2 실시간 제어 서비스 상태 조회
FlightHub 2 온프레미스 버전이 성공적으로 배포된 후, 인터페이스를 호출하여 실시간 제어 서비스 상태를 조회합니다: FlightHub 2 시스템 상태 조회
```http
GET /openapi/v2.0/drc/health HTTP/1.1
Host: 127.0.0.1:30812
X-Language: ko
X-Request-Id: 550e8400-e29b-41d4-a716-446655440000
X-Project-Uuid: xxxxxxxxxx
x-user-token: xxxxxxxx
인터페이스가 0을 반환하면 FlightHub 2 실시간 제어 서비스가 정상적으로 작동 중임을 나타냅니다:
```http
{
"code": 0,
"message": "OK",
"data": null
}
2. 조직에 속한 프로젝트 목록 가져오기
FlightHub 2에서 조직을 생성하고, 프로젝트를 생성하고, 장치를 바인딩합니다. 본 설명서의 「플랫폼 기초 > 조직 관리」 섹션을 참조하여 FlightHub 2에서 관련 조직 및 프로젝트 생성 작업을 진행한 후, 조직에 속한 프로젝트 목록 가져오기 인터페이스를 호출하여 생성된 프로젝트 목록을 가져옵니다.
GET /openapi/v2.0/manage/api/v1/organizations/{uuid}/projects?usage=complete&sort_column=create_time&sort_type=desc&page=1&page_size=20 HTTP/1.1
Host: 127.0.0.1:30812
X-Language: ko
X-Request-Id: 550e8400-e29b-41d4-a716-446655440000
X-Project-Uuid: xxxxxxxxxx
x-user-token: xxxxxxxx
생성된 프로젝트 목록이 반환됩니다:
```http
{
"code": 0,
"message": "OK",
"data": {
"list": [
{
"name": "c2c_test",
"introduction": "a",
"uuid": "b2c3d4e5-6789-0123-bcde-f12345678901",
"project_id": "PRJ202401001",
"org_uuid": "a1b2c3d4-5678-9012-abcd-ef1234567890",
"status": "active",
"c2c_enable": true,
"dock_rotation_disabled": false,
"c2c_task_enable": true,
"created_at": 1700000000,
"updated_at": 1700100000
}
]
}
}
3. 라이브 스트리밍 기능 시작
본 설명서의 《장치 관리》 섹션 문서를 참조하여 FlightHub 2에서 관련 장치 바인딩 작업을 진행한 다음, 《라이브 스트리밍 관리 튜토리얼》을 참조하여 라이브 스트리밍 송출을 시작합니다.
```http
POST /openapi/v2.0/drc/api/v2/projects/{proj_uuid}/live-channels/stream/start HTTP/1.1
Host: 127.0.0.1:30812
X-Project-Uuid: xxxxxxxxxx
X-Language: ko
X-Request-Id: 550e8400-e29b-41d4-a716-446655440000
Content-Type: application/json
x-user-token: xxxxxxxx
Content-Length: 130
{
"sn": "1ZNBH1Dxxxxxxx",
"camera": "165-0-7",
"video": "normal-0",
"gateway_sn": "7CTDM3Dxxxxxxx",
"video_quality": 0
}
인터페이스가 0을 반환하면 스트리밍 작업이 성공적으로 전송되었음을 나타내며, 장치는 설정에 따라 미디어 서버로 스트림 송출을 시작합니다:
```c
{
"code": 0,
"message": "OK",
"data": null
}