data

read-only raw DB introspection (table list, row browsing)

5 operations — read-only raw DB introspection (table list, row browsing)

GET /api/v1/apps/{appID}/db/tables

schemaGetApiV1AppsByAppIDDbTables

앱 전용 데이터베이스(app-data 인스턴스의 database-per-app)에 실제 존재하는 모든 물리 테이블을 information_schema 로 조회한다 (spec 040 raw DB 격리).

  • 호출 권한: 앱 owner 또는 tenant_admin/platform_admin (RequireAppOwnerOrAdmin — 그 외 403).
  • 앱 자격증명으로 앱 자기 database 의 public schema 를 조회하므로, 그 앱이 만든 모든 테이블이 보인다.
  • managed 필드는 항상 false (앱 자기 DB 에는 /data dynamic_tables 메타가 없음 — 응답 shape 호환용으로 유지).
  • 부수 효과 없음 (read-only).
LanguageCall
nodesdk.apps.rawDb.tables(…) — resource model — see the package's TypeScript definitions for arguments and return types
goclient.Data().SchemaGetApiV1AppsByAppIDDbTables(ctx, axhub.OperationParams{PathParams: …, Query: …, Body: …})
javaclient.data().schemaGetApiV1AppsByAppIDDbTables(pathParams, query, body) — async: schemaGetApiV1AppsByAppIDDbTablesAsync(…) → CompletableFuture
kotlinclient.data.schemaGetApiV1AppsByAppIDDbTables(pathParams, query, body) — suspend
pythonclient.data.schema_get_api_v1_apps_by_app_id_db_tables(path_params=…, query=…, body=…) — AsyncAxHubClient awaits the same name
rubyclient.data.schema_get_api_v1_apps_by_app_id_db_tables(path_params: …, query: …, body: …)
genericrequest("schemaGetApiV1AppsByAppIDDbTables", pathParams, query, body)

Path parameters — pass via pathParams

NameTypeDescription
appID requiredstring앱 UUID

Query parameters — pass via query (string values)

NameTypeDescription
environmentstring조회 대상 배포 환경 (production/staging; 기본 production) — 환경별 전용 데이터베이스 (spec 053)

Response — 200 · 물리 테이블 목록 (managed/raw + 컬럼)

NameTypeDescription
tablesarray<object>Tables 는 물리 테이블 목록 (managed + raw 합쳐서).

Error statuses: 400 401 403 404 412 500Error handling

GET /api/v1/apps/{appID}/db/tables/{table}/rows

schemaGetApiV1AppsByAppIDDbTablesByTableRows

앱 전용 데이터베이스(app-data 인스턴스)의 임의 물리 테이블 한 페이지의 행을 반환한다 (spec 040 raw DB 격리).

  • 호출 권한: 앱 owner 또는 tenant_admin/platform_admin (RequireAppOwnerOrAdmin — 그 외 403).
  • owner_column 무시하고 전체 행 반환 (콘솔 관리 뷰).
  • 존재 여부는 앱 자기 database 의 information_schema 기준 — 없으면 404.
  • page(1-base, 기본 1) / per_page(기본 50, 최대 200). exact total 대신 has_more(per_page+1 프로브) 반환.
  • 부수 효과 없음 (read-only).
LanguageCall
nodesdk.apps.rawDb.tableRows(…) — resource model — see the package's TypeScript definitions for arguments and return types
goclient.Data().SchemaGetApiV1AppsByAppIDDbTablesByTableRows(ctx, axhub.OperationParams{PathParams: …, Query: …, Body: …})
javaclient.data().schemaGetApiV1AppsByAppIDDbTablesByTableRows(pathParams, query, body) — async: schemaGetApiV1AppsByAppIDDbTablesByTableRowsAsync(…) → CompletableFuture
kotlinclient.data.schemaGetApiV1AppsByAppIDDbTablesByTableRows(pathParams, query, body) — suspend
pythonclient.data.schema_get_api_v1_apps_by_app_id_db_tables_by_table_rows(path_params=…, query=…, body=…) — AsyncAxHubClient awaits the same name
rubyclient.data.schema_get_api_v1_apps_by_app_id_db_tables_by_table_rows(path_params: …, query: …, body: …)
genericrequest("schemaGetApiV1AppsByAppIDDbTablesByTableRows", pathParams, query, body)

Path parameters — pass via pathParams

NameTypeDescription
appID requiredstring앱 UUID
table requiredstring테이블 이름

Query parameters — pass via query (string values)

NameTypeDescription
pageinteger페이지 (1-base, 기본 1)
per_pageinteger페이지당 행 수 (기본 50, 최대 200)
environmentstring조회 대상 배포 환경 (production/staging; 기본 production) — 환경별 전용 데이터베이스 (spec 053)

Response — 200 · 행 페이지 (rows + has_more)

NameTypeDescription
hasMore (wire: has_more)booleanHasMore 는 다음 페이지 존재 여부 (per_page+1 프로브 결과).
pageintegerPage 는 현재 페이지 (1-base).
perPage (wire: per_page)integerPerPage 는 페이지당 행 수.
rowsarray<object>Rows 는 컬럼명→값 맵의 배열. owner_column 무시한 전체 행 (owner/admin 뷰).

Error statuses: 400 401 403 404 412 500Error handling

GET /api/v1/me/personal-access-tokens

schemaGetApiV1MePersonalAccessTokens

자기 계정에 발급된 PAT 목록을 반환한다. raw token 은 노출하지 않음 (hash 만 저장).

  • 호출 권한: 인증된 사용자. 본인 PAT 만 조회됨.
  • revoked 된 PAT 도 revoked_at 와 함께 포함.
  • 부수 효과 없음 (read-only).
LanguageCall
nodesdk.identity.pat(…) — resource model — see the package's TypeScript definitions for arguments and return types
goclient.Data().SchemaGetApiV1MePersonalAccessTokens(ctx, axhub.OperationParams{PathParams: …, Query: …, Body: …})
javaclient.data().schemaGetApiV1MePersonalAccessTokens(pathParams, query, body) — async: schemaGetApiV1MePersonalAccessTokensAsync(…) → CompletableFuture
kotlinclient.data.schemaGetApiV1MePersonalAccessTokens(pathParams, query, body) — suspend
pythonclient.data.schema_get_api_v1_me_personal_access_tokens(path_params=…, query=…, body=…) — AsyncAxHubClient awaits the same name
rubyclient.data.schema_get_api_v1_me_personal_access_tokens(path_params: …, query: …, body: …)
genericrequest("schemaGetApiV1MePersonalAccessTokens", pathParams, query, body)

Response — 200 · PAT 목록

NameTypeDescription
itemsarray<object>
nextCursor (wire: next_cursor)string
totalinteger

Error statuses: 401 500Error handling

POST /api/v1/me/personal-access-tokens

schemaPostApiV1MePersonalAccessTokens

자기 계정의 새 PAT 를 발급한다. raw token 은 발급 응답에서 단 한 번만 노출.

  • 호출 권한: 인증된 사용자. 발급된 PAT 는 issuer 본인 권한으로 동작.
  • name 은 1자 이상. expires_in_days 가 nil 이면 무기한.
  • 부수 효과: personal_access_tokens row 삽입. 응답에는 1회성 raw_token (이후 hash 만 저장).
LanguageCall
nodesdk.identity.pat(…) — resource model — see the package's TypeScript definitions for arguments and return types
goclient.Data().SchemaPostApiV1MePersonalAccessTokens(ctx, axhub.OperationParams{PathParams: …, Query: …, Body: …})
javaclient.data().schemaPostApiV1MePersonalAccessTokens(pathParams, query, body) — async: schemaPostApiV1MePersonalAccessTokensAsync(…) → CompletableFuture
kotlinclient.data.schemaPostApiV1MePersonalAccessTokens(pathParams, query, body) — suspend
pythonclient.data.schema_post_api_v1_me_personal_access_tokens(path_params=…, query=…, body=…) — AsyncAxHubClient awaits the same name
rubyclient.data.schema_post_api_v1_me_personal_access_tokens(path_params: …, query: …, body: …)
genericrequest("schemaPostApiV1MePersonalAccessTokens", pathParams, query, body)

Request body — pass via body, wire keys (snake_case) as-is

NameTypeDescription
expires_in_daysintegerExpiresInDays 는 발급 후 만료까지의 일수 (선택). 미지정 시 무기한.
namestringName 은 PAT 식별용 사람 친화 이름. 1자 이상.

Response — 201 · 발급된 PAT + raw_token (단 1회 노출)

NameTypeDescription
createdAt (wire: created_at)stringCreatedAt 은 발급 시각.
expiresAt (wire: expires_at)stringExpiresAt 은 만료 시각 (선택, 없으면 무기한).
idstringID 는 PAT UUID.
lastUsedAt (wire: last_used_at)stringLastUsedAt 은 마지막 사용 시각 (선택).
namestringName 은 PAT 이름.
rawToken (wire: raw_token)stringRawToken 은 발급 직후 한 번만 노출되는 raw token 값. 이후로는 hash 만 저장.
revokedAt (wire: revoked_at)stringRevokedAt 은 회수 시각 (선택). 회수되지 않으면 omit.
userId (wire: user_id)stringUserID 는 PAT 소유자 UUID.

Error statuses: 400 401 500Error handling

DELETE /api/v1/me/personal-access-tokens/{patID}

schemaDeleteApiV1MePersonalAccessTokensByPatID

자기 계정의 PAT 를 회수한다 (revoked_at 기록). 회수 즉시 해당 token 의 모든 호출 거부.

  • 호출 권한: 인증된 사용자. 본인 소유 PAT 만 회수 가능. 다른 사용자 PAT 는 404 로 위장 (ErrNotOwner → 404).
  • 이미 revoked 된 PAT 는 409.
  • 부수 효과: PAT row 의 revoked_at 업데이트 (soft delete).
LanguageCall
nodesdk.identity.pat(…) — resource model — see the package's TypeScript definitions for arguments and return types
goclient.Data().SchemaDeleteApiV1MePersonalAccessTokensByPatID(ctx, axhub.OperationParams{PathParams: …, Query: …, Body: …})
javaclient.data().schemaDeleteApiV1MePersonalAccessTokensByPatID(pathParams, query, body) — async: schemaDeleteApiV1MePersonalAccessTokensByPatIDAsync(…) → CompletableFuture
kotlinclient.data.schemaDeleteApiV1MePersonalAccessTokensByPatID(pathParams, query, body) — suspend
pythonclient.data.schema_delete_api_v1_me_personal_access_tokens_by_pat_id(path_params=…, query=…, body=…) — AsyncAxHubClient awaits the same name
rubyclient.data.schema_delete_api_v1_me_personal_access_tokens_by_pat_id(path_params: …, query: …, body: …)
genericrequest("schemaDeleteApiV1MePersonalAccessTokensByPatID", pathParams, query, body)

Path parameters — pass via pathParams

NameTypeDescription
patID requiredstringPAT UUID

Response — 204 · 회수 완료 (응답 본문 없음)

No body → the SDK returns an empty map {}

Error statuses: 400 401 404 409 500Error handling