프로젝트의 감사 로그
GET
/api/v1/projects/{project_id}/audit-logs
const url = 'https://dev.api.endueos.com/api/v1/projects/prj_01J9ZK3Q8M4XW7D2N5R6T0V1BC/audit-logs?station_id=stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://dev.api.endueos.com/api/v1/projects/prj_01J9ZK3Q8M4XW7D2N5R6T0V1BC/audit-logs?station_id=stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC' \ --header 'Authorization: Bearer <token>'프로젝트의 감사 로그 — project_id 가 이 프로젝트인 줄. 최신순. from·to 는 occurred_at 의 범위 (from 포함, to 제외).
파라미터
섹션 제목: “파라미터”경로 파라미터
섹션 제목: “경로 파라미터”project_id
필수
프로젝트 — 조직 아래, Station 위 (D-51 · D-60).
string
예시
prj_01J9ZK3Q8M4XW7D2N5R6T0V1BC쿼리 파라미터
섹션 제목: “쿼리 파라미터”station_id
string
예시
stn_01J9ZK3Q8M4XW7D2N5R6T0V1BCuser_id
usr_{Keycloak sub} — ULID 가 아니다.
string
from
string format: date-time
to
string format: date-time
page
integer format: int32
1 부터. 기본 1.
limit
integer format: int32
기본 20, 최대 200 (넘으면 200 으로 줄인다).
200
섹션 제목: “200”성공.
Media typeapplication/json
object
data
필수
Array<object>
쓰기 요청(POST·PUT·PATCH·DELETE) 한 건의 기록. 게이트웨이가 남긴다. 읽기는 기록하지 않는다.
object
audit_id
필수
string
actor_type
필수
string
user_id
필수
요청한 사용자 — API 키면 그 키의 Station 소유자.
string
method
필수
string
path
필수
/api/v1/… 경로. 쿼리 문자열은 남기지 않는다.
string
status
필수
응답 HTTP 상태.
integer format: int32
request_id
필수
string
occurred_at
필수
string format: date-time
meta
필수
object
request_id
필수
string
timestamp
필수
string format: date-time
duration
서버 처리 시간(ms).
integer format: int32
pagination
필수
object
page
필수
integer format: int32
limit
필수
integer format: int32
total
필수
integer format: int32
has_next_page
필수
boolean
예시
{ "data": [ { "audit_id": "aud_01J9ZK3Q8M4XW7D2N5R6T0V1BC", "project_id": "prj_01J9ZK3Q8M4XW7D2N5R6T0V1BC", "station_id": "stn_01J9ZK3Q8M4XW7D2N5R6T0V1BC", "actor_type": "user", "api_key_id": "akey_01J9ZK3Q8M4XW7D2N5R6T0V1BC", "method": "POST" } ]}400
섹션 제목: “400”요청 형식이 틀렸다 — VALIDATION_ERROR(details.errors[]) 또는 BAD_REQUEST. 본문은 오류 봉투.
401
섹션 제목: “401”인증이 없거나 무효다 — UNAUTHORIZED. 본문은 오류 봉투.
403
섹션 제목: “403”이 인증 수단으로는 못 하는 일이다 — FORBIDDEN (예: API 키로 클라우드 기기 만들기). 본문은 오류 봉투.
404
섹션 제목: “404”없거나 내 것이 아니다 — *_NOT_FOUND. 본문은 오류 봉투.
429
섹션 제목: “429”한도를 넘었다 — Retry-After 초 뒤에 다시. 본문은 오류 봉투.
500
섹션 제목: “500”서버 오류 — INTERNAL_ERROR. 본문은 오류 봉투.
503
섹션 제목: “503”의존 서비스에 닿지 못했다 — 잠시 뒤 다시. 본문은 오류 봉투.