콘텐츠로 이동

리소스 등록 (옛 경로)

POST
/api/v1/stations/{station_id}/resources
curl --request POST \
--url https://dev.api.endueos.com/api/v1/stations/stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC/resources \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "kind": "mac", "name": "내 맥북" }'

연결형 리소스를 등록한다. 에이전트 하나와 연결 토큰 하나가 함께 생긴다. 토큰은 이 응답에만 나온다.

station_id
필수
string
/^stn_[0-9A-HJKMNP-TV-Z]{26}$/
예시
stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC
Media typeapplication/json

연결형 리소스(actual Device)를 등록한다. 호스팅형은 virtual Device 를 만들 때 OS 가 만든다.

object
kind
필수
string
허용 값: chrome mac android linux windows
name
필수
string
>= 1 characters <= 100 characters
description
string
<= 500 characters
labels

20개까지. 키 1~63자, 값 255자까지.

object
예시
{
"kind": "mac",
"name": "내 맥북"
}

비밀값이 든 응답 — 캐시하지 않는다.

Media typeapplication/json
object
data
필수
object
resource
필수
object
resource_id
필수
string
/^res_[0-9A-HJKMNP-TV-Z]{26}$/
station_id
필수
string
/^stn_[0-9A-HJKMNP-TV-Z]{26}$/
kind
필수
string
허용 값: chrome mac android linux windows
name
필수
string
description
필수
Any of:
string
labels
필수
object
status
필수
string
허용 값: pending active disabled
origin
필수
string
허용 값: connected hosted
workload_id
필수
Any of:
string
/^wkl_[0-9A-HJKMNP-TV-Z]{26}$/
agent_id
필수
Any of:
string
/^agnt_[0-9A-HJKMNP-TV-Z]{26}$/
online
필수

에이전트가 접속해 있고 핸드셰이크를 마쳤다. 접속·끊김의 전이로 정한다 — 60초 안에 다시 붙는 짧은 끊김은 반영하지 않는다. 조용히 죽은 기기는 주기적으로 감시하지 않는다. 이 리소스 하나를 조회하거나 명령을 보낼 때 마지막 ping 으로 확인한다.

boolean
agent_version
필수
Any of:
string
os
필수
Any of:
string
arch
필수
Any of:
string
facts
필수

에이전트가 알려 준 기기 정보. 끊겨도 지워지지 않는다.

object
tool_count
필수
integer format: int32
last_connected_at
필수
Any of:
string format: date-time
last_seen_at
필수
Any of:
string format: date-time
last_disconnected_at
필수
Any of:
string format: date-time
created_at
필수
string format: date-time
updated_at
필수
string format: date-time
enrollment
필수

에이전트를 기기에 붙일 때 넣는 값.

object
token
필수

osat_{agent_id}_{hex 64}. 이 응답에서만 볼 수 있다. 에이전트는 불투명한 문자열로 다룬다.

string
endpoint
필수

wss://{host}/api/v1/relay/socket

string
meta
필수
object
request_id
필수
string
timestamp
필수
string format: date-time
duration

서버 처리 시간(ms).

integer format: int32
예시
{
"data": {
"resource": {
"resource_id": "res_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"station_id": "stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"kind": "chrome",
"status": "pending",
"origin": "connected",
"workload_id": "wkl_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"agent_id": "agnt_01J9ZK3Q8M4XW7D2N5R6T0V1BC"
}
}
}
Cache-Control
필수
string
허용 값: no-store

요청 형식이 틀렸다 — VALIDATION_ERROR(details.errors[]) 또는 BAD_REQUEST. 본문은 오류 봉투.

인증이 없거나 무효다 — UNAUTHORIZED. 본문은 오류 봉투.

없거나 내 것이 아니다 — *_NOT_FOUND. 본문은 오류 봉투.

지금 상태와 충돌한다 — 코드는 위 설명을 본다. 본문은 오류 봉투.

형식은 맞지만 할 수 없다 — 코드는 위 설명을 본다. 본문은 오류 봉투.

한도를 넘었다 — Retry-After 초 뒤에 다시. 본문은 오류 봉투.

서버 오류 — INTERNAL_ERROR. 본문은 오류 봉투.

의존 서비스에 닿지 못했다 — 잠시 뒤 다시. 본문은 오류 봉투.