콘텐츠로 이동

Station 한눈에 보기

GET
/api/v1/stations/{station_id}/overview
curl --request GET \
--url https://dev.api.endueos.com/api/v1/stations/stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC/overview \
--header 'Authorization: Bearer <token>'

데스크톱을 그리는 데 필요한 것을 한 번에 — Station·OS·Device 요약·Dock.

가이드 — Station 과 OS

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

성공.

Media typeapplication/json
object
data
필수
object
station
필수
object
station_id
필수
string
/^stn_[0-9A-HJKMNP-TV-Z]{26}$/
project_id
필수

Station 이 속한 프로젝트.

string
/^prj_[0-9A-HJKMNP-TV-Z]{26}$/
org_id
필수

프로젝트의 조직 (D-60). 비용을 내는 지갑의 조직이다 (ENDUE-1105 부터 공개).

string
/^org_[0-9A-HJKMNP-TV-Z]{26}$/
owner_id
필수

만든 사람. v0.2.0 에서 Station 안(기기·명령)은 아직 이 사용자만 다룬다. 관리형 Station 이면 관리자가 지정한 주인이다.

string
/^usr_.+$/
name
필수
string
description
필수
Any of:
string
status
필수
string
허용 값: active
os
필수

Station 에 정확히 하나 딸린 OS. 따로 만들거나 지울 수 없다.

object
os_id
필수
string
/^osi_[0-9A-HJKMNP-TV-Z]{26}$/
station_id
필수
string
/^stn_[0-9A-HJKMNP-TV-Z]{26}$/
version
필수

이 OS 를 만든 endue OS 릴리스.

string
status
필수
string
허용 값: running halted
settings
필수
object
max_resources
필수

Station 에 등록할 수 있는 Device 수 (actual·virtual 합계). 1~500, 기본 50.

integer format: int32
>= 1 <= 500
default_command_timeout_ms
필수

명령에 timeout_ms 가 없을 때 쓰는 값. 1000~120000, 기본 12000.

integer format: int32
>= 1000 <= 120000
allowed_kinds
필수

허용하는 Device 종류. 기본은 다섯 가지 전부. actual·virtual 모두에 적용된다.

Array<string>
허용 값: chrome mac android linux windows
max_virtual_devices
필수

Station 에 만들 수 있는 virtual Device 수. 0~50, 기본 10. 0 이면 virtual Device 를 만들 수 없다.

integer format: int32
<= 50
max_volume_gb
필수

Station 의 virtual Device 영구 볼륨(Storage) 크기 합계 상한 (GB). 0~2000, 기본 100.

integer format: int32
<= 2000
booted_at
필수
Any of:
string format: date-time
halted_at
필수
Any of:
string format: date-time
created_at
필수
string format: date-time
updated_at
필수
string format: date-time
managed_by
필수
Any of:

usr_{Keycloak sub} — ULID 가 아니다.

string
/^usr_.+$/
managed
필수
Any of:

관리형 Station 이 누구의 것인지 — endue AI 에이전트 한 명에 Station 하나.

object
agent_id
필수
string
>= 1 characters <= 100 characters
agent_name
필수
string
>= 1 characters <= 100 characters
created_at
필수
string format: date-time
updated_at
필수
string format: date-time
devices
필수
object
total
필수
integer format: int32
online
필수
integer format: int32
running
필수

compute_status 가 running 인 virtual Device 수.

integer format: int32
by_kind
필수

종류별 개수.

object
items
필수

최신 등록순. 200개까지.

Array<object>

OS 가 관리하는 기기. actual(사용자의 기기)과 virtual(플랫폼이 띄운 VM) 둘이다. id 는 Resource 와 같은 res_ 다 — /resources/{resource_id} 는 같은 기기를 v0.1.0 의 Resource 모양으로 보여 준다.

object
device_id
필수

Device 의 id — Resource 와 같은 res_ 다 (v0.1.0 이 이미 냈다).

string
/^res_[0-9A-HJKMNP-TV-Z]{26}$/
station_id
필수
string
/^stn_[0-9A-HJKMNP-TV-Z]{26}$/
type
필수
string
허용 값: actual virtual
kind
필수
string
허용 값: chrome mac android linux windows
name
필수
string
description
필수
Any of:
string
labels
필수
object
status
필수

등록 상태 (Resource 의 status 와 같다).

string
허용 값: pending active disabled
online
필수

에이전트가 접속해 있고 핸드셰이크를 마쳤다. Resource 의 online 과 같은 규칙.

boolean
compute_status
필수
Any of:

Virtual Device 의 컴퓨트 상태. actual 이면 compute_status 가 null 이다.

string
허용 값: provisioning starting running stopping stopped failed deleting
status_reason
필수
Any of:
string
size
필수
Any of:

컴퓨트 크기. small 1 vCPU·1 GiB, medium 2 vCPU·4 GiB, large 4 vCPU·8 GiB — 공급자가 가장 가까운 사양으로 맞춘다.

string
허용 값: small medium large
workloads
필수

Actual 은 agent 하나, virtual 은 vm·storage(없을 수 있다)·agent.

Array<object>
One of: discriminator: type

Virtual Device 의 컴퓨트 한 대.

object
type
필수
string
허용 값: vm
workload_id
필수
string
/^wkl_[0-9A-HJKMNP-TV-Z]{26}$/
status
필수
string
허용 값: pending starting running stopping stopped failed destroyed
provider
필수

컴퓨트 공급자 — local(로컬 컨테이너)·fly·aws·vultr 등.

string
region
필수
Any of:
string
cpus
필수
integer format: int32
memory_mb
필수
integer format: int32
started_at
필수
Any of:
string format: date-time
stopped_at
필수
Any of:
string format: date-time
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
started_at
필수
Any of:
string format: date-time
stopped_at
필수
Any of:
string format: date-time
created_at
필수
string format: date-time
updated_at
필수
string format: date-time
dock
필수

Dock 의 1단 — 실행 진입점의 목록. 순서가 곧 화면의 순서다. Device 와 1단에 고정한 앱을 담는다 (파일·활동·설정 칸은 화면이 그린다). Dock 은 2단이다. 1단의 Device 를 누르면 그 Device 의 저장한 앱 전부가 2단으로 펼쳐진다 (GET /devices/{device_id}/apps). Device 를 만들면 끝에 붙는다 — virtual 은 pin_to_dock(기본 true), actual 은 등록할 때.

object
station_id
필수
string
/^stn_[0-9A-HJKMNP-TV-Z]{26}$/
items
필수
Array<object>
object
type
필수
string
허용 값: device app
device_id
필수

device 면 그 Device, app 이면 그 앱이 있는 Device.

string
/^res_[0-9A-HJKMNP-TV-Z]{26}$/
app_id
필수
Any of:
string
/^app_[0-9A-HJKMNP-TV-Z]{26}$/
label
필수

화면에 쓰는 이름 — Device 이름 또는 앱 이름.

string
kind
필수

그 Device 의 kind. 화면이 기본 아이콘을 고르는 데 쓴다.

string
허용 값: chrome mac android linux windows
device_type
필수
string
허용 값: actual virtual
compute_status
필수
Any of:

Virtual Device 의 컴퓨트 상태. actual 이면 compute_status 가 null 이다.

string
허용 값: provisioning starting running stopping stopped failed deleting
online
필수

그 Device 가 온라인인지.

boolean
icon_data_url
필수
Any of:
string
updated_at
필수
string format: date-time
meta
필수
object
request_id
필수
string
timestamp
필수
string format: date-time
duration

서버 처리 시간(ms).

integer format: int32
예시
{
"data": {
"station": {
"station_id": "stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"project_id": "prj_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"org_id": "org_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"status": "active",
"os": {
"os_id": "osi_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"station_id": "stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"status": "running",
"settings": {
"allowed_kinds": [
"chrome"
]
}
}
},
"devices": {
"items": [
{
"device_id": "res_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"station_id": "stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"type": "actual",
"kind": "chrome",
"status": "pending",
"compute_status": "provisioning",
"size": "small",
"workloads": [
{
"type": "vm",
"workload_id": "wkl_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"status": "pending"
}
]
}
]
},
"dock": {
"station_id": "stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"items": [
{
"type": "device",
"device_id": "res_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"app_id": "app_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"kind": "chrome",
"device_type": "actual",
"compute_status": "provisioning"
}
]
}
}
}

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

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

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

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

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