콘텐츠로 이동

createDeviceOperation

POST
/api/v1/devices/{device_id}/operations
curl --request POST \
--url https://dev.api.endueos.com/api/v1/devices/res_01J9ZK3Q8M4XW7D2N5R6T0V1BC/operations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "operation": { "type": "files.list", "input": { "path": "example", "kind": "file", "limit": 1, "cursor": "example" } }, "request_id": "example", "timeout_ms": 1, "queue_ttl_ms": 1, "wait_ms": 1, "retain_output": true }'

Create a typed OS operation. 201 includes output; 202 Location points to /commands/{command_id}.

device_id
필수

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

string
/^res_[0-9A-HJKMNP-TV-Z]{26}$/
예시
res_01J9ZK3Q8M4XW7D2N5R6T0V1BC
Media typeapplication/json

User-visible operation. The command journal, request idempotency, output retention and cancellation are reused.

object
operation
필수
Any of:
object
type
필수
string
허용 값: files.list
input
필수
object
path

OS interface 1.0. Paths are relative to the enrolled root, never host absolute paths.

string
>= 1 characters <= 4096 characters
kind
string
허용 값: file directory symlink
limit
integer format: int32
>= 1 <= 1000
cursor
string
request_id
string
>= 1 characters <= 200 characters
timeout_ms
integer format: int32
>= 100 <= 120000
queue_ttl_ms
integer format: int32
<= 3600000
wait_ms
integer format: int32
<= 25000
retain_output
boolean

만들었다.

Media typeapplication/json
object
data
필수
object
command_id
필수
string
/^cmd_[0-9A-HJKMNP-TV-Z]{26}$/
request_id
필수
string
resource_id
필수
string
/^res_[0-9A-HJKMNP-TV-Z]{26}$/
agent_id
필수
string
/^agnt_[0-9A-HJKMNP-TV-Z]{26}$/
station_id
필수
string
/^stn_[0-9A-HJKMNP-TV-Z]{26}$/
actor_type
필수
string
허용 값: user api_key
actor_id
필수
string
command
필수
string
status
필수
string
허용 값: queued dispatched running cancelling succeeded failed timed_out cancelled expired unknown
error
필수
Any of:
string
error_code
필수
Any of:
string
timeout_ms
필수
integer format: int32
queue_ttl_ms
필수
integer format: int32
duration_ms
필수
Any of:
integer format: int64
created_at
필수
string format: date-time
dispatched_at
필수
Any of:
string format: date-time
completed_at
필수
Any of:
string format: date-time
output_url
필수
Any of:
string
output_expires_at
필수
Any of:
string format: date-time
late_status
필수
Any of:

늦게 도착한 답의 상태 — unknown 으로 끝난 뒤에 온 것.

string
허용 값: succeeded failed timed_out
late_at
필수
Any of:
string format: date-time
updated_at
필수
string format: date-time
output
필수
Any of:
Any of:
object
interface_version
필수
string
허용 값: 1.0
type
필수
string
허용 값: files.list
result
필수
object
path
필수
string
entries
필수
Array<object>
object
path
필수
string
name
필수
string
kind
필수
string
허용 값: file directory symlink
size_bytes
필수
Any of:

JSON integers must be exact in every agent language.

integer format: int64
>= -9007199254740991 <= 9007199254740991
truncated
필수
boolean
next_cursor
필수
Any of:
string
extensions
object
meta
필수
object
request_id
필수
string
timestamp
필수
string format: date-time
duration

서버 처리 시간(ms).

integer format: int32
예시
{
"data": {
"command_id": "cmd_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"resource_id": "res_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"agent_id": "agnt_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"station_id": "stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"actor_type": "user",
"status": "queued",
"late_status": "succeeded",
"output": {
"interface_version": "1.0",
"type": "files.list",
"result": {
"entries": [
{
"kind": "file"
}
]
}
}
}
}

받았지만 아직 끝나지 않았다. Location 으로 상태를 묻는다. Retry-After 는 다음 조회까지 기다릴 초.

Media typeapplication/json
object
data
필수

명령 기록. 입력 원문은 남기지 않는다. 출력은 보관한 경우에만 output_url 로 24시간 받을 수 있다.

object
command_id
필수
string
/^cmd_[0-9A-HJKMNP-TV-Z]{26}$/
request_id
필수
string
resource_id
필수
string
/^res_[0-9A-HJKMNP-TV-Z]{26}$/
agent_id
필수
string
/^agnt_[0-9A-HJKMNP-TV-Z]{26}$/
station_id
필수
string
/^stn_[0-9A-HJKMNP-TV-Z]{26}$/
actor_type
필수
string
허용 값: user api_key
actor_id
필수
string
command
필수
string
status
필수
string
허용 값: queued dispatched running cancelling succeeded failed timed_out cancelled expired unknown
error
필수
Any of:
string
error_code
필수
Any of:
string
timeout_ms
필수
integer format: int32
queue_ttl_ms
필수
integer format: int32
duration_ms
필수
Any of:
integer format: int64
created_at
필수
string format: date-time
dispatched_at
필수
Any of:
string format: date-time
completed_at
필수
Any of:
string format: date-time
output_url
필수
Any of:
string
output_expires_at
필수
Any of:
string format: date-time
late_status
필수
Any of:

늦게 도착한 답의 상태 — unknown 으로 끝난 뒤에 온 것.

string
허용 값: succeeded failed timed_out
late_at
필수
Any of:
string format: date-time
updated_at
필수
string format: date-time
meta
필수
object
request_id
필수
string
timestamp
필수
string format: date-time
duration

서버 처리 시간(ms).

integer format: int32
예시
{
"data": {
"command_id": "cmd_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"resource_id": "res_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"agent_id": "agnt_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"station_id": "stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC",
"actor_type": "user",
"status": "queued",
"late_status": "succeeded"
}
}
Location
필수
string
Retry-After
필수
integer format: int32

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

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

크레딧이 없다 — INSUFFICIENT_CREDITS (충전하면 다시 된다). 본문은 오류 봉투.

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

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

본문이 상한을 넘었다. 본문은 오류 봉투.

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

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

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

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

결과를 알 수 없다 — COMMAND_OUTCOME_UNKNOWN, 같은 request_id 로 다시. 본문은 오류 봉투.