XRCLOUD API (1.1)

Download OpenAPI specification:Download

Authentication

해당 문서의 모든 API 호출은 ApiKey를 필요로 합니다.

  • ApiKey는 XRCLOUD 페이지에 로그인 한 후 페이지 우상단의 My page에서 발급 받을 수 있습니다.

Webhook

XRCLOUD는 Room과 Scene의 이벤트 발생 시 설정된 webhook URL로 로그를 전송합니다.

Room 관련 이벤트

  • room-join: 사용자가 Room에 입장
  • room-exit: 사용자가 Room에서 퇴장
  • room-video-click-event: Room 내 비디오 클릭 이벤트

Scene 관련 이벤트

  • scene-created: Scene 생성
  • scene-updated: Scene 수정

Webhook 요청 정보

  • Method: POST
  • Headers:
    • Content-Type: application/json
    • X-Forwarded-For: 사용자 IP

요청 데이터 형식

{
  "code": "room-join",              // 이벤트 코드
  "resourceId": "uuid",            // Room/Scene의 ID
  "sessionId": "uuid",             // 세션 ID
  "reticulumId": "string",         // XRCLOUD(Hubs)의 사용자 ID
  "logTime": "2024-01-01T00:00:00Z", // 이벤트 발생 시간
  "action": "string",              // 이벤트 액션 정보 (예: "enter", "exit")
  "ip": "string",                  // 사용자 IP (X-Forwarded-For 헤더에서 추출)
  "userAgent": "string",           // 사용자 브라우저 정보
  "device": "string"               // 사용자 디바이스 정보 (pc/mobile/vr)
}```

**참고**: 
- webhook URL은 Project 생성 시 또는 Project 정보 수정 시 설정할 수 있습니다.
- 현재 ip와 userAgent 값은 제대로 전송되지 않을 수 있습니다.
- webhook 요청에 대한 응답이 300 이상의 상태 코드를 반환하면 오류로 처리됩니다.

Project

XRCLOUD의 Project는 개발자의 프로젝트, 플랫폼, 또는 3rd-party 애플리케이션이 될 수 있습니다. 이는 Scene과 Room을 관리하는 단위로, 여러 Scene과 Room이 특정 Project에 속하게 됩니다.

  • webhookUrl은 XRCLOUD 페이지에서 Project를 생성하거나 정보를 수정할 때 설정할 수 있습니다.

라벨로 프로젝트 가져오기

라벨로 필터링하여 프로젝트를 가져옵니다. label 쿼리 파라미터를 사용하여 특정 라벨의 프로젝트를 필터링할 수 있습니다.

query Parameters
label
string

필터링할 프로젝트의 라벨입니다. 제공되지 않으면 모든 프로젝트가 반환됩니다.

header Parameters
X-XRCLOUD-API-KEY
required
string

헤더에 다음과 같은 형태로 인증 키를 포함시켜야합니다. X-XRCLOUD-API-KEY: ${ApiKey}.

Responses

Response samples

Content type
application/json
[]

프로젝트 생성

다음과 같은 형식으로 프로젝트를 생성할 수 있습니다:

RES=$(curl -s -X POST "$XRCLOUD_HOST/api/projects" \
    -H "Authorization: Bearer $ACCESS_TOKEN" \
    -H "Content-Type: multipart/form-data" \
    -F "favicon=@$FILE_DIR/favicon.ico" \
    -F "logo=@$FILE_DIR/logo.png" \
    -F "name=lms" \
    -F "label=lms"
)

이 API는 multipart/form-data 형식으로 프로젝트의 파비콘, 로고, 이름, 라벨을 포함하여 프로젝트를 생성합니다.

Request Body schema: multipart/form-data
required
favicon
string <binary>

프로젝트의 파비콘 파일.

logo
string <binary>

프로젝트의 로고 파일.

name
string

프로젝트의 이름.

label
string

프로젝트의 라벨.

Responses

Response samples

Content type
application/json
{}

XRCLOUD에 서비스 사용자 계정, 생성 및 가져오기

사용자 서비스의 사용자ID를 전달하여 XRCLOUD에 사용자ID(reticulumId)를 생성하고 가져옵니다. 다른 Api에서 userId를 사용할 때 이 Api에 보낸 userId를 통해 플랫폼에 고유 사용자의 행위임을 전달합니다. logging 정보는 XRCLOUD의 사용자 ID인 reticulumId로 전달 됩니다.

path Parameters
projectId
required
string

프로젝트의 고유 ID.

accountId
required
string

사용자의 계정 ID.

header Parameters
X-XRCLOUD-API-KEY
required
string

헤더에 다음과 같은 형태로 인증 키를 포함시켜야합니다. X-XRCLOUD-API-KEY: ${ApiKey}.

Responses

Response samples

Content type
application/json
{ }

프로젝트 정보 가져오기

header Parameters
X-XRCLOUD-API-KEY
required
string

헤더에 다음과 같은 형태로 인증 키를 포함시켜야합니다. X-XRCLOUD-API-KEY: ${ApiKey}.

Responses

Response samples

Content type
application/json
{}

Scene

웹페이지 기반의 3D 가상공간을 제작하는 공간으로 Room을 생성할 때 필요한 공간입니다.

get-creation-url api를 호출하면 얻을 수 있는 필드 중 'sceneCreationUrl'에 접속하여 에디터(Spoke)에 접근한 후 우상단의 Publish Scene 버튼을 통해 Scene을 생성할 수 있습니다. 또, get-scene api를 호출하면 얻을 수 있는 필드 중 'sceneModificationUrl'에 접근하여 수정합니다.

  • optId 값은 XRCLOUD에서 Scene의 생성 및 수정을 확인하기위한 callback value 입니다. 변형하여 사용하면 오류가 발생할 수 있습니다.

씬(Scene)리스트 정보 가져오기

query Parameters
projectId
required
uuid

Project의 고유 ID.

name
string

(search) 해당 이름을 가진 Object 조회.

creator
string

(search) 특정 제작자의 Object 조회.

take
number

(pagination) 가져올 데이터의 갯수.

skip
number

(pagination) 건너뛸 데이터의 갯수.

header Parameters
X-XRCLOUD-API-KEY
required
string

헤더에 다음과 같은 형태로 인증 키를 포함시켜야합니다. X-XRCLOUD-API-KEY: ${ApiKey}.

Responses

Response samples

Content type
application/json
{}

씬에디터(Spoke)URL 가져와서 씬 생성하기

query Parameters
projectId
required
uuid

Project의 고유 ID.

creator
string

Scene의 제작자를 지정할 수 있습니다. 사용자별 'My Assets'를 구분하는 데에 쓰이며 해당 파라미터를 포함하지 않고 호출하여 제작하는 경우 'Admin'이 제작한 것과 동일하게 취급됩니다.

callback
string
Example: callback=https://api.xrcloud.app/rooms

Scene 제작 직후에 특정 동작이 필요한 경우(해당 Scene으로 곧장 Room을 제작하는 경우 등) 포함하여 호출합니다. XRCloud 측에서의 호출은 아래와 같이 이루어집니다.

{ method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ sceneId }) }

header Parameters
X-XRCLOUD-API-KEY
required
string

헤더에 다음과 같은 형태로 인증 키를 포함시켜야합니다. X-XRCLOUD-API-KEY: ${ApiKey}.

Responses

Response samples

씬(Scene) 정보 가져오기

header Parameters
X-XRCLOUD-API-KEY
required
string

헤더에 다음과 같은 형태로 인증 키를 포함시켜야합니다. X-XRCLOUD-API-KEY: ${ApiKey}.

Responses

Response samples

Content type
application/json
{}

씬(Scene) 삭제하기

header Parameters
X-XRCLOUD-API-KEY
required
string

헤더에 다음과 같은 형태로 인증 키를 포함시켜야합니다. X-XRCLOUD-API-KEY: ${ApiKey}.

Responses

Response samples

Content type
application/json
{
  • "statusCode": 400,
  • "method": "Method",
  • "url": "/example/endpoint",
  • "body": {
    },
  • "message": "Detailed error messages"
}

Room

Room은 에디터(Spoke)를 통해 생성된 Scene으로 구성된 공간입니다.

각 Room에는 정보 요청 시마다 주소가 변하는 private room URL과 고정된 주소를 가진 public room URL이 있습니다. 이 URL들은 또한 방의 호스트에게 권한을 부여하는 host URL과 게스트 권한을 부여하는 guest URL로 구분됩니다.

'returnUrl'은 방을 떠날 때 돌아갈 웹 주소를 의미하며, XRCloud의 Rooms 탭에서 설정할 수 있습니다.

룸(Room) 생성하기

header Parameters
X-XRCLOUD-API-KEY
required
string

헤더에 다음과 같은 형태로 인증 키를 포함시켜야합니다. X-XRCLOUD-API-KEY: ${ApiKey}.

Request Body schema: application/json
required
projectId
required
uuid

Project의 고유 ID.

sceneId
required
uuid

Scene의 고유 ID.

name
required
string

Room의 이름.

returnUrl
required
string

Room 퇴장 시 돌아갈 URL.

size
number

Room에 입장할 수 있는 최대 인원 수.

Responses

Request samples

Content type
application/json
{
  • "projectId": "f24ee5ba-8f1f-4f7a-86ed-738f95ea1f8b",
  • "sceneId": "1234e5ba-5678-4f7a-86ed-abcd95ea1efg",
  • "name": "example room name",
  • "returnUrl": "https://www.google.com/",
  • "size": 10
}

Response samples

Content type
application/json
{}

룸(Room)리스트 정보 가져오기

해당 API는 projectId 또는 sceneId 중 하나를 필수적으로 포함하여 호출해야 합니다.

query Parameters
projectId
uuid

Project의 고유 ID.

sceneId
uuid

Scene의 고유 ID.

name
string

(search) 해당 이름을 가진 Object 조회.

userId
string

Project(app)의 사용자. Room에 입장하는 사용자를 구분하기 위해 사용됩니다.

avatarUrl
string
Example: avatarUrl=https://storage.com/bucket/avatar-file.glb

Room에서 사용할 아바타 파일의 경로.

linkPayload
string
Example: linkPayload=userName:Tom|UserGrade:10

Scene의 element인 'InlineView'에 전달할 값으로 InlineView에서 호출되는 URL에 hubsParam이라는 파라미터에 담겨 전달됩니다.

take
number

(pagination) 가져올 데이터의 갯수.

skip
number

(pagination) 건너뛸 데이터의 갯수.

header Parameters
X-XRCLOUD-API-KEY
required
string

헤더에 다음과 같은 형태로 인증 키를 포함시켜야합니다. X-XRCLOUD-API-KEY: ${ApiKey}.

Responses

Response samples

Content type
application/json
{}

룸(Room) 정보 가져오기

query Parameters
userId
string

Project(app)의 사용자. Room에 입장하는 사용자를 구분하기 위해 사용됩니다.

avatarUrl
string
Example: avatarUrl=https://storage.com/bucket/avatar-file.glb

Room에서 사용할 아바타 파일의 경로.

linkPayload
string
Example: linkPayload=userName:Tom|UserGrade:10

Scene의 element인 'InlineView'에 전달할 값으로 InlineView에서 호출되는 URL에 hubsParam이라는 파라미터에 담겨 전달됩니다.

header Parameters
X-XRCLOUD-API-KEY
required
string

헤더에 다음과 같은 형태로 인증 키를 포함시켜야합니다. X-XRCLOUD-API-KEY: ${ApiKey}.

Responses

Response samples

Content type
application/json
{}

룸(Room) 정보 수정하기

header Parameters
X-XRCLOUD-API-KEY
required
string

헤더에 다음과 같은 형태로 인증 키를 포함시켜야합니다. X-XRCLOUD-API-KEY: ${ApiKey}.

Request Body schema: application/json
required
name
string

Room의 이름.

size
number

Room에 입장할 수 있는 최대 인원 수.

returnUrl
string

Room 퇴장 시 돌아갈 URL.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{}

룸(Room) 삭제하기

header Parameters
X-XRCLOUD-API-KEY
required
string

헤더에 다음과 같은 형태로 인증 키를 포함시켜야합니다. X-XRCLOUD-API-KEY: ${ApiKey}.

Responses

Response samples

Content type
application/json
{
  • "statusCode": 400,
  • "method": "Method",
  • "url": "/example/endpoint",
  • "body": {
    },
  • "message": "Detailed error messages"
}

룸(Room) 로그 가져오기

특정 방에 대한 사용자의 참여 로그를 가져옵니다. 이 로그는 사용자가 방에 참여한 시간, IP 주소, 장치 정보 등을 포함합니다.(2024-12-01 현재 ip주소와 userAgent는 제대로 전송되고 있지 않습니다.)

header Parameters
X-XRCLOUD-API-KEY
required
string

헤더에 다음과 같은 형태로 인증 키를 포함시켜야합니다. X-XRCLOUD-API-KEY: ${ApiKey}.

Responses

Response samples

Content type
application/json
[
  • {
    }
]