gateway

외부 connector 등록·discover·query·invoke·config

14 operations — 외부 connector 등록·discover·query·invoke·config

GET /api/v1/tenants/{tenantID}/connectors

gatewayGetApiV1TenantsByTenantIDConnectors

  • 호출 권한: tenant_admin 관리자가 grant 와 무관하게 connector 의 모든 active resource 를 조회한다. 사용자 면 (/me/connectors/{cID}/resources) 와 동일한 응답 shape 이지만 grant 체크 없음 — 운영자 / 관리 콘솔의 카탈로그 조회용.
  • limit (1~500, 기본 100) · offset · q (name 부분일치)
언어호출
node@ax-hub/sdk 미제공 — 운영 패키지 @ax-hub/admin-sdkadmin.tenant(x).connectors.list 사용
goclient.Gateway().GatewayGetApiV1TenantsByTenantIDConnectors(ctx, axhub.OperationParams{PathParams: …, Query: …, Body: …})
javaclient.gateway().gatewayGetApiV1TenantsByTenantIDConnectors(pathParams, query, body) — 비동기: gatewayGetApiV1TenantsByTenantIDConnectorsAsync(…) → CompletableFuture
kotlinclient.gateway.gatewayGetApiV1TenantsByTenantIDConnectors(pathParams, query, body) — suspend
pythonclient.gateway.gateway_get_api_v1_tenants_by_tenant_id_connectors(path_params=…, query=…, body=…) — AsyncAxHubClient 는 동일명 await
rubyclient.gateway.gateway_get_api_v1_tenants_by_tenant_id_connectors(path_params: …, query: …, body: …)
공통request("gatewayGetApiV1TenantsByTenantIDConnectors", pathParams, query, body)

Path 파라미터pathParams 로 전달

이름타입설명
tenantID 필수string테넌트 UUID

Query 파라미터query 로 전달 (문자열 값)

이름타입설명
enabled_onlybooleantrue 면 enabled=true 만
limitinteger페이지 크기 (기본 100, 1~500 clamp)
offsetinteger오프셋 (기본 0)
qstringname 부분일치 필터

응답 — 200 · OK

배열 응답 → SDK 는 {"value": [...]} 로 감싸 반환. 원소 필드:

이름타입설명
attributesobject
classificationarray<string>
connectorId (wire: connector_id)string
createdAt (wire: created_at)string
idstring
kindstring
namestring
parentId (wire: parent_id)string
pathstring
tenantId (wire: tenant_id)string
updatedAt (wire: updated_at)string

에러 status: 400 401 403 500에러 처리

GET /api/v1/tenants/{tenantID}/connectors/{connectorID}

gatewayGetApiV1TenantsByTenantIDConnectorsByConnectorID

  • 호출 권한: tenant_admin
언어호출
node@ax-hub/sdk 미제공 — 운영 패키지 @ax-hub/admin-sdkadmin.tenant(x).connectors.get 사용
goclient.Gateway().GatewayGetApiV1TenantsByTenantIDConnectorsByConnectorID(ctx, axhub.OperationParams{PathParams: …, Query: …, Body: …})
javaclient.gateway().gatewayGetApiV1TenantsByTenantIDConnectorsByConnectorID(pathParams, query, body) — 비동기: gatewayGetApiV1TenantsByTenantIDConnectorsByConnectorIDAsync(…) → CompletableFuture
kotlinclient.gateway.gatewayGetApiV1TenantsByTenantIDConnectorsByConnectorID(pathParams, query, body) — suspend
pythonclient.gateway.gateway_get_api_v1_tenants_by_tenant_id_connectors_by_connector_id(path_params=…, query=…, body=…) — AsyncAxHubClient 는 동일명 await
rubyclient.gateway.gateway_get_api_v1_tenants_by_tenant_id_connectors_by_connector_id(path_params: …, query: …, body: …)
공통request("gatewayGetApiV1TenantsByTenantIDConnectorsByConnectorID", pathParams, query, body)

Path 파라미터pathParams 로 전달

이름타입설명
tenantID 필수string테넌트 UUID
connectorID 필수stringconnector UUID

응답 — 200 · OK

이름타입설명
classificationarray<string>Classification 은 자유 태그.
configobjectConfig 는 engine 별 설정 (credential 제외).
createdAt (wire: created_at)string
descriptionstringDescription 은 admin 메모.
enabledboolean
enginestringEngine 은 postgres / mysql / mssql / oracle / clickhouse / vertica / rest-api + mysql wire-compatible alias (mariadb / tidb / singlestore) + postgres wire-compatible alias (cockroachdb / yugabytedb / redshift / greenplum / spanner) + oracle alias (tibero). alias 는 UI / catalog 식별만 별, driver / discovery 동일. Aurora / Azure 같은 cloud-managed wrapper 는 host 만 다른 같은 product 라 별도 카드 없이 mysql / postgres / mssql 사용.
idstringID 는 connector UUID.
kindstringKind 는 db / api.
lastDiscoveredAt (wire: last_discovered_at)stringLastDiscoveredAt 는 마지막 발견 시각.
namestringName 은 unique connector 이름.
tenantId (wire: tenant_id)stringTenantID 는 소속 tenant UUID.
updatedAt (wire: updated_at)string

에러 status: 400 401 403 404 500에러 처리

POST /api/v1/tenants/{tenantID}/connectors/{connectorID}/discover

gatewayPostApiV1TenantsByTenantIDConnectorsByConnectorIDDiscover

관리자가 등록 직후 5분 cron 안 기다리고 즉시 스키마/테이블/컬럼을 발견시킨다. 응답으로 발견된 tables/columns 카운트 + schemas + 일부 preview 를 반환.

  • 호출 권한: tenant_admin
  • 부수 효과: 발견 성공 시 connectors.last_discovered_at 갱신, 새 path INSERT, 사라진 path SoftDelete
  • REST connector 등 discoverer 없는 engine 은 zero-value 응답 (정상 200)
언어호출
node@ax-hub/sdk 미제공 — 운영 패키지 @ax-hub/admin-sdkadmin.tenant(x).connectors.discover 사용
goclient.Gateway().GatewayPostApiV1TenantsByTenantIDConnectorsByConnectorIDDiscover(ctx, axhub.OperationParams{PathParams: …, Query: …, Body: …})
javaclient.gateway().gatewayPostApiV1TenantsByTenantIDConnectorsByConnectorIDDiscover(pathParams, query, body) — 비동기: gatewayPostApiV1TenantsByTenantIDConnectorsByConnectorIDDiscoverAsync(…) → CompletableFuture
kotlinclient.gateway.gatewayPostApiV1TenantsByTenantIDConnectorsByConnectorIDDiscover(pathParams, query, body) — suspend
pythonclient.gateway.gateway_post_api_v1_tenants_by_tenant_id_connectors_by_connector_id_discover(path_params=…, query=…, body=…) — AsyncAxHubClient 는 동일명 await
rubyclient.gateway.gateway_post_api_v1_tenants_by_tenant_id_connectors_by_connector_id_discover(path_params: …, query: …, body: …)
공통request("gatewayPostApiV1TenantsByTenantIDConnectorsByConnectorIDDiscover", pathParams, query, body)

Path 파라미터pathParams 로 전달

이름타입설명
tenantID 필수string테넌트 UUID
connectorID 필수stringconnector UUID

응답 — 200 · OK

이름타입설명
columnsCount (wire: columns_count)integerColumnsCount 는 active 컬럼 row 수 (sweep 후 재집계).
lastDiscoveredAt (wire: last_discovered_at)stringLastDiscoveredAt 는 connectors.last_discovered_at 갱신 시각. discoverer 미지원 engine (REST 등) 면 null.
previewarray<object>Preview 는 발견된 table 일부 (최대 20개) — UI 카드 미리보기용.
schemasarray<string>Schemas 는 발견된 스키마(또는 database) 이름 목록.
tablesCount (wire: tables_count)integerTablesCount 는 이번 sweep 에서 engine 이 보고한 table 수.

에러 status: 400 401 403 404 500에러 처리

GET /api/v1/tenants/{tenantID}/connectors/{connectorID}/resources

gatewayGetApiV1TenantsByTenantIDConnectorsByConnectorIDResources

  • 호출 권한: tenant_admin 관리자가 grant 와 무관하게 connector 의 모든 active resource 를 조회한다. 사용자 면 (/me/connectors/{cID}/resources) 와 동일한 응답 shape 이지만 grant 체크 없음 — 운영자 / 관리 콘솔의 카탈로그 조회용.
  • limit (1~500, 기본 100) · offset · q (name 부분일치)
언어호출
node@ax-hub/sdk 미제공 — 운영 패키지 @ax-hub/admin-sdkadmin.tenant(x).connectors.resources 사용
goclient.Gateway().GatewayGetApiV1TenantsByTenantIDConnectorsByConnectorIDResources(ctx, axhub.OperationParams{PathParams: …, Query: …, Body: …})
javaclient.gateway().gatewayGetApiV1TenantsByTenantIDConnectorsByConnectorIDResources(pathParams, query, body) — 비동기: gatewayGetApiV1TenantsByTenantIDConnectorsByConnectorIDResourcesAsync(…) → CompletableFuture
kotlinclient.gateway.gatewayGetApiV1TenantsByTenantIDConnectorsByConnectorIDResources(pathParams, query, body) — suspend
pythonclient.gateway.gateway_get_api_v1_tenants_by_tenant_id_connectors_by_connector_id_resources(path_params=…, query=…, body=…) — AsyncAxHubClient 는 동일명 await
rubyclient.gateway.gateway_get_api_v1_tenants_by_tenant_id_connectors_by_connector_id_resources(path_params: …, query: …, body: …)
공통request("gatewayGetApiV1TenantsByTenantIDConnectorsByConnectorIDResources", pathParams, query, body)

Path 파라미터pathParams 로 전달

이름타입설명
tenantID 필수string테넌트 UUID
connectorID 필수stringconnector UUID

Query 파라미터query 로 전달 (문자열 값)

이름타입설명
enabled_onlybooleantrue 면 enabled=true 만
limitinteger페이지 크기 (기본 100, 1~500 clamp)
offsetinteger오프셋 (기본 0)
qstringname 부분일치 필터

응답 — 200 · OK

배열 응답 → SDK 는 {"value": [...]} 로 감싸 반환. 원소 필드:

이름타입설명
attributesobject
classificationarray<string>
connectorId (wire: connector_id)string
createdAt (wire: created_at)string
idstring
kindstring
namestring
parentId (wire: parent_id)string
pathstring
tenantId (wire: tenant_id)string
updatedAt (wire: updated_at)string

에러 status: 400 401 403 500에러 처리

POST /api/v1/tenants/{tenantID}/gateway/document-invoke

gatewayPostApiV1TenantsByTenantIDGatewayDocumentInvoke

MongoDB connector 의 op 를 실행한다.

  • 호출 권한: tenant_member (session 의 grant 보유 필요)
  • 입력: session_id · op (find/insertOne 등) · collection · 기타 op-별 필드
  • 권한: op → SQL action 매핑 (find→SELECT, insertOne→INSERT 등) 후 preset.Allows 체크 (spec 039 §R2)
  • 부수 효과: audit emit (TypeAPICall), connector pool 캐시
언어호출
nodesdk.gateway.documentInvoke(…) — 리소스 모델 — 인자·반환 타입은 패키지의 TypeScript 정의 참조
goclient.Gateway().GatewayPostApiV1TenantsByTenantIDGatewayDocumentInvoke(ctx, axhub.OperationParams{PathParams: …, Query: …, Body: …})
javaclient.gateway().gatewayPostApiV1TenantsByTenantIDGatewayDocumentInvoke(pathParams, query, body) — 비동기: gatewayPostApiV1TenantsByTenantIDGatewayDocumentInvokeAsync(…) → CompletableFuture
kotlinclient.gateway.gatewayPostApiV1TenantsByTenantIDGatewayDocumentInvoke(pathParams, query, body) — suspend
pythonclient.gateway.gateway_post_api_v1_tenants_by_tenant_id_gateway_document_invoke(path_params=…, query=…, body=…) — AsyncAxHubClient 는 동일명 await
rubyclient.gateway.gateway_post_api_v1_tenants_by_tenant_id_gateway_document_invoke(path_params: …, query: …, body: …)
공통request("gatewayPostApiV1TenantsByTenantIDGatewayDocumentInvoke", pathParams, query, body)

Path 파라미터pathParams 로 전달

이름타입설명
tenantID 필수string테넌트 UUID

Request Bodybody 로 전달, wire 키(snake_case) 그대로

이름타입설명
collectionstring
databasestring
documentobject
documentsarray<any>
fieldstring
filterobject
limitinteger
opstring
pipelinearray<any>
projectionobject
session_idstring
skipinteger
sortobject
updateobject

응답 — 200 · 실행 결과

이름타입설명
countinteger
deletedCount (wire: deleted_count)integer
distinctarray<any>
documentsarray<object>
insertedCount (wire: inserted_count)integer
insertedIds (wire: inserted_ids)array<any>
matchedCount (wire: matched_count)integer
modifiedCount (wire: modified_count)integer
opstring

에러 status: 400 401 403 404 500에러 처리

POST /api/v1/tenants/{tenantID}/gateway/file-invoke

gatewayPostApiV1TenantsByTenantIDGatewayFileInvoke

Google Drive connector 의 file action 을 실행한다.

  • 호출 권한: tenant_member (session 의 grant 보유 필요)
  • 입력: session_id · action (file:list|file:get|file:search) · 기타 action-별 필드
  • 권한: action 그대로 preset.Allows 체크 — native vocab (SQL 매핑 X)
  • 응답: Drive API raw shape (id, name, mimeType, size, modifiedTime, parents, webViewLink). 본문 stream X.
  • 부수 효과: audit emit (TypeAPICall). refresh_token revoke 시 connector auth_status='auth_expired' 전이.
언어호출
node미제공
goclient.Gateway().GatewayPostApiV1TenantsByTenantIDGatewayFileInvoke(ctx, axhub.OperationParams{PathParams: …, Query: …, Body: …})
javaclient.gateway().gatewayPostApiV1TenantsByTenantIDGatewayFileInvoke(pathParams, query, body) — 비동기: gatewayPostApiV1TenantsByTenantIDGatewayFileInvokeAsync(…) → CompletableFuture
kotlinclient.gateway.gatewayPostApiV1TenantsByTenantIDGatewayFileInvoke(pathParams, query, body) — suspend
pythonclient.gateway.gateway_post_api_v1_tenants_by_tenant_id_gateway_file_invoke(path_params=…, query=…, body=…) — AsyncAxHubClient 는 동일명 await
rubyclient.gateway.gateway_post_api_v1_tenants_by_tenant_id_gateway_file_invoke(path_params: …, query: …, body: …)
공통request("gatewayPostApiV1TenantsByTenantIDGatewayFileInvoke", pathParams, query, body)

Path 파라미터pathParams 로 전달

이름타입설명
tenantID 필수string테넌트 UUID

Request Bodybody 로 전달, wire 키(snake_case) 그대로

이름타입설명
actionstringAction 은 file:list / file:get / file:search 중 하나.
file_idstringFileID 는 file:get 의 대상.
parent_folder_idstringParentFolderID 는 file:list 의 parent. 비우면 Shared Drive root.
qstringQ 는 file:search 의 Drive query string.
session_idstringSessionID 는 사전 발급된 gateway session id.

응답 — 200 · OK

이름타입설명
actionstringAction 은 file:list / file:get / file:search 중 하나.
fileobjectFile 은 file:get 의 단건 결과.
filesarray<object>Files 는 file:list / file:search 의 결과 배열.

에러 status: 400 401 403 404 500 503에러 처리

POST /api/v1/tenants/{tenantID}/gateway/invoke

gatewayPostApiV1TenantsByTenantIDGatewayInvoke

5단계: authz → policy in → engine.Invoke → policy out → audit.

  • 호출 권한: tenant_member
언어호출
nodesdk.gateway(…) — 리소스 모델 — 인자·반환 타입은 패키지의 TypeScript 정의 참조
goclient.Gateway().GatewayPostApiV1TenantsByTenantIDGatewayInvoke(ctx, axhub.OperationParams{PathParams: …, Query: …, Body: …})
javaclient.gateway().gatewayPostApiV1TenantsByTenantIDGatewayInvoke(pathParams, query, body) — 비동기: gatewayPostApiV1TenantsByTenantIDGatewayInvokeAsync(…) → CompletableFuture
kotlinclient.gateway.gatewayPostApiV1TenantsByTenantIDGatewayInvoke(pathParams, query, body) — suspend
pythonclient.gateway.gateway_post_api_v1_tenants_by_tenant_id_gateway_invoke(path_params=…, query=…, body=…) — AsyncAxHubClient 는 동일명 await
rubyclient.gateway.gateway_post_api_v1_tenants_by_tenant_id_gateway_invoke(path_params: …, query: …, body: …)
공통request("gatewayPostApiV1TenantsByTenantIDGatewayInvoke", pathParams, query, body)

Path 파라미터pathParams 로 전달

이름타입설명
tenantID 필수string테넌트 UUID

Request Bodybody 로 전달, wire 키(snake_case) 그대로

이름타입설명
bodyarray<integer>
headersobject
methodstring
pathstring
session_idstring

응답 — 200 · OK

이름타입설명
bodyarray<integer>
headersobject
statusCode (wire: status_code)integer

에러 status: 400 401 403 404 500에러 처리

POST /api/v1/tenants/{tenantID}/gateway/query

gatewayPostApiV1TenantsByTenantIDGatewayQuery

5단계: authz → policy in → engine.Execute → policy out → audit.

  • 호출 권한: tenant_member
  • 입력: session_id · sql · params? · action?
  • 부수 효과: audit query emit (allow/deny/error)
언어호출
nodesdk.gateway(…) — 리소스 모델 — 인자·반환 타입은 패키지의 TypeScript 정의 참조
goclient.Gateway().GatewayPostApiV1TenantsByTenantIDGatewayQuery(ctx, axhub.OperationParams{PathParams: …, Query: …, Body: …})
javaclient.gateway().gatewayPostApiV1TenantsByTenantIDGatewayQuery(pathParams, query, body) — 비동기: gatewayPostApiV1TenantsByTenantIDGatewayQueryAsync(…) → CompletableFuture
kotlinclient.gateway.gatewayPostApiV1TenantsByTenantIDGatewayQuery(pathParams, query, body) — suspend
pythonclient.gateway.gateway_post_api_v1_tenants_by_tenant_id_gateway_query(path_params=…, query=…, body=…) — AsyncAxHubClient 는 동일명 await
rubyclient.gateway.gateway_post_api_v1_tenants_by_tenant_id_gateway_query(path_params: …, query: …, body: …)
공통request("gatewayPostApiV1TenantsByTenantIDGatewayQuery", pathParams, query, body)

Path 파라미터pathParams 로 전달

이름타입설명
tenantID 필수string테넌트 UUID

Request Bodybody 로 전달, wire 키(snake_case) 그대로

이름타입설명
actionstring
paramsarray<any>
session_idstring
sqlstring

응답 — 200 · OK

이름타입설명
columnsarray<object>
rowsarray<array>

에러 status: 400 401 403 404 500에러 처리

POST /api/v1/tenants/{tenantID}/gateway/sessions

gatewayPostApiV1TenantsByTenantIDGatewaySessions

사용자가 connector 에 대한 active grant 의 preset 을 snapshot 으로 8시간 TTL session 시작.

  • 호출 권한: tenant_member
  • 입력: connector_id · mfa_verified?
  • 부수 효과: gateway_sessions INSERT
언어호출
nodesdk.gateway(…) — 리소스 모델 — 인자·반환 타입은 패키지의 TypeScript 정의 참조
goclient.Gateway().GatewayPostApiV1TenantsByTenantIDGatewaySessions(ctx, axhub.OperationParams{PathParams: …, Query: …, Body: …})
javaclient.gateway().gatewayPostApiV1TenantsByTenantIDGatewaySessions(pathParams, query, body) — 비동기: gatewayPostApiV1TenantsByTenantIDGatewaySessionsAsync(…) → CompletableFuture
kotlinclient.gateway.gatewayPostApiV1TenantsByTenantIDGatewaySessions(pathParams, query, body) — suspend
pythonclient.gateway.gateway_post_api_v1_tenants_by_tenant_id_gateway_sessions(path_params=…, query=…, body=…) — AsyncAxHubClient 는 동일명 await
rubyclient.gateway.gateway_post_api_v1_tenants_by_tenant_id_gateway_sessions(path_params: …, query: …, body: …)
공통request("gatewayPostApiV1TenantsByTenantIDGatewaySessions", pathParams, query, body)

Path 파라미터pathParams 로 전달

이름타입설명
tenantID 필수string테넌트 UUID

Request Bodybody 로 전달, wire 키(snake_case) 그대로

이름타입설명
connector_idstring
mfa_verifiedboolean

응답 — 201 · Created

이름타입설명
connectorId (wire: connector_id)string
endedAt (wire: ended_at)string
expiresAt (wire: expires_at)string
grantId (wire: grant_id)string
idstring
presetId (wire: preset_id)string
startedAt (wire: started_at)string
subjectId (wire: subject_id)string
tenantId (wire: tenant_id)string

에러 status: 400 401 403 404 500에러 처리

DELETE /api/v1/tenants/{tenantID}/gateway/sessions/{sessionID}

gatewayDeleteApiV1TenantsByTenantIDGatewaySessionsBySessionID

  • 호출 권한: tenant_member (자기 세션만)
언어호출
nodesdk.gateway(…) — 리소스 모델 — 인자·반환 타입은 패키지의 TypeScript 정의 참조
goclient.Gateway().GatewayDeleteApiV1TenantsByTenantIDGatewaySessionsBySessionID(ctx, axhub.OperationParams{PathParams: …, Query: …, Body: …})
javaclient.gateway().gatewayDeleteApiV1TenantsByTenantIDGatewaySessionsBySessionID(pathParams, query, body) — 비동기: gatewayDeleteApiV1TenantsByTenantIDGatewaySessionsBySessionIDAsync(…) → CompletableFuture
kotlinclient.gateway.gatewayDeleteApiV1TenantsByTenantIDGatewaySessionsBySessionID(pathParams, query, body) — suspend
pythonclient.gateway.gateway_delete_api_v1_tenants_by_tenant_id_gateway_sessions_by_session_id(path_params=…, query=…, body=…) — AsyncAxHubClient 는 동일명 await
rubyclient.gateway.gateway_delete_api_v1_tenants_by_tenant_id_gateway_sessions_by_session_id(path_params: …, query: …, body: …)
공통request("gatewayDeleteApiV1TenantsByTenantIDGatewaySessionsBySessionID", pathParams, query, body)

Path 파라미터pathParams 로 전달

이름타입설명
tenantID 필수string테넌트 UUID
sessionID 필수stringsession UUID

응답 — 204 · No Content

본문 없음 → SDK 는 빈 map {} 반환

에러 status: 400 401 403 404 500에러 처리

GET /api/v1/tenants/{tenantID}/me/connectors

gatewayGetApiV1TenantsByTenantIDMeConnectors

현재 사용자가 active grant 를 가진 connector 들을 반환. 없는 connector 는 노출 0 (FR-018).

  • 호출 권한: tenant_member
언어호출
nodesdk.gateway(…) — 리소스 모델 — 인자·반환 타입은 패키지의 TypeScript 정의 참조
goclient.Gateway().GatewayGetApiV1TenantsByTenantIDMeConnectors(ctx, axhub.OperationParams{PathParams: …, Query: …, Body: …})
javaclient.gateway().gatewayGetApiV1TenantsByTenantIDMeConnectors(pathParams, query, body) — 비동기: gatewayGetApiV1TenantsByTenantIDMeConnectorsAsync(…) → CompletableFuture
kotlinclient.gateway.gatewayGetApiV1TenantsByTenantIDMeConnectors(pathParams, query, body) — suspend
pythonclient.gateway.gateway_get_api_v1_tenants_by_tenant_id_me_connectors(path_params=…, query=…, body=…) — AsyncAxHubClient 는 동일명 await
rubyclient.gateway.gateway_get_api_v1_tenants_by_tenant_id_me_connectors(path_params: …, query: …, body: …)
공통request("gatewayGetApiV1TenantsByTenantIDMeConnectors", pathParams, query, body)

Path 파라미터pathParams 로 전달

이름타입설명
tenantID 필수string테넌트 UUID

응답 — 200 · OK

배열 응답 → SDK 는 {"value": [...]} 로 감싸 반환. 원소 필드:

이름타입설명
classificationarray<string>Classification 은 자유 태그.
configobjectConfig 는 engine 별 설정 (credential 제외).
createdAt (wire: created_at)string
descriptionstringDescription 은 admin 메모.
enabledboolean
enginestringEngine 은 postgres / mysql / mssql / oracle / clickhouse / vertica / rest-api + mysql wire-compatible alias (mariadb / tidb / singlestore) + postgres wire-compatible alias (cockroachdb / yugabytedb / redshift / greenplum / spanner) + oracle alias (tibero). alias 는 UI / catalog 식별만 별, driver / discovery 동일. Aurora / Azure 같은 cloud-managed wrapper 는 host 만 다른 같은 product 라 별도 카드 없이 mysql / postgres / mssql 사용.
idstringID 는 connector UUID.
kindstringKind 는 db / api.
lastDiscoveredAt (wire: last_discovered_at)stringLastDiscoveredAt 는 마지막 발견 시각.
namestringName 은 unique connector 이름.
tenantId (wire: tenant_id)stringTenantID 는 소속 tenant UUID.
updatedAt (wire: updated_at)string

에러 status: 401 403 500에러 처리

GET /api/v1/tenants/{tenantID}/me/connectors/{connectorID}/resources

gatewayGetApiV1TenantsByTenantIDMeConnectorsByConnectorIDResources

active grant 없는 connector 는 404 — 메타데이터 자체 노출 0 (FR-018).

  • 호출 권한: tenant_member
언어호출
nodesdk.gateway(…) — 리소스 모델 — 인자·반환 타입은 패키지의 TypeScript 정의 참조
goclient.Gateway().GatewayGetApiV1TenantsByTenantIDMeConnectorsByConnectorIDResources(ctx, axhub.OperationParams{PathParams: …, Query: …, Body: …})
javaclient.gateway().gatewayGetApiV1TenantsByTenantIDMeConnectorsByConnectorIDResources(pathParams, query, body) — 비동기: gatewayGetApiV1TenantsByTenantIDMeConnectorsByConnectorIDResourcesAsync(…) → CompletableFuture
kotlinclient.gateway.gatewayGetApiV1TenantsByTenantIDMeConnectorsByConnectorIDResources(pathParams, query, body) — suspend
pythonclient.gateway.gateway_get_api_v1_tenants_by_tenant_id_me_connectors_by_connector_id_resources(path_params=…, query=…, body=…) — AsyncAxHubClient 는 동일명 await
rubyclient.gateway.gateway_get_api_v1_tenants_by_tenant_id_me_connectors_by_connector_id_resources(path_params: …, query: …, body: …)
공통request("gatewayGetApiV1TenantsByTenantIDMeConnectorsByConnectorIDResources", pathParams, query, body)

Path 파라미터pathParams 로 전달

이름타입설명
tenantID 필수string테넌트 UUID
connectorID 필수stringconnector UUID

Query 파라미터query 로 전달 (문자열 값)

이름타입설명
limitinteger페이지 크기 (기본 100, 1~500 clamp)
offsetinteger오프셋 (기본 0)
qstringname 부분일치 필터 (대소문자 무시)

응답 — 200 · OK

배열 응답 → SDK 는 {"value": [...]} 로 감싸 반환. 원소 필드:

이름타입설명
attributesobject
classificationarray<string>
connectorId (wire: connector_id)string
createdAt (wire: created_at)string
idstring
kindstring
namestring
parentId (wire: parent_id)string
pathstring
tenantId (wire: tenant_id)string
updatedAt (wire: updated_at)string

에러 status: 401 403 404 500에러 처리

GET /config/public

configGetConfigPublic

로그인 / 로그아웃 / 만료 토큰 상태와 무관하게 호출 가능한 익명 endpoint. FE 가 부트스트랩 시 1회 호출 후 메모리 캐시. 현재 base_domain 만 반환.

언어호출
nodesdk.config.public(…) — 리소스 모델 — 인자·반환 타입은 패키지의 TypeScript 정의 참조
goclient.Gateway().ConfigGetConfigPublic(ctx, axhub.OperationParams{PathParams: …, Query: …, Body: …})
javaclient.gateway().configGetConfigPublic(pathParams, query, body) — 비동기: configGetConfigPublicAsync(…) → CompletableFuture
kotlinclient.gateway.configGetConfigPublic(pathParams, query, body) — suspend
pythonclient.gateway.config_get_config_public(path_params=…, query=…, body=…) — AsyncAxHubClient 는 동일명 await
rubyclient.gateway.config_get_config_public(path_params: …, query: …, body: …)
공통request("configGetConfigPublic", pathParams, query, body)

응답 — 200 · OK

이름타입설명
baseDomain (wire: base_domain)string

에러 status: 429에러 처리

GET /oauth/google/callback

gatewayGetOauthGoogleCallback

Google 동의 후 redirect 받는 endpoint. code + code_verifier 로 token 교환, Shared Drive 목록 응답. 사용자가 1개 선택 후 finalize 호출.

  • 호출 권한: 인증된 사용자 (state 가 secret 역할 — 10분 TTL).
  • 입력: code · state (query string)
  • 부수 효과: oauth_states row 갱신 (callback_payload 채움)
언어호출
node미제공
goclient.Gateway().GatewayGetOauthGoogleCallback(ctx, axhub.OperationParams{PathParams: …, Query: …, Body: …})
javaclient.gateway().gatewayGetOauthGoogleCallback(pathParams, query, body) — 비동기: gatewayGetOauthGoogleCallbackAsync(…) → CompletableFuture
kotlinclient.gateway.gatewayGetOauthGoogleCallback(pathParams, query, body) — suspend
pythonclient.gateway.gateway_get_oauth_google_callback(path_params=…, query=…, body=…) — AsyncAxHubClient 는 동일명 await
rubyclient.gateway.gateway_get_oauth_google_callback(path_params: …, query: …, body: …)
공통request("gatewayGetOauthGoogleCallback", pathParams, query, body)

Query 파라미터query 로 전달 (문자열 값)

이름타입설명
code 필수stringGoogle authorization code
state 필수stringstart 단계에서 발급된 state
errorstringGoogle 에서 사용자 거부 시 access_denied

응답 — 200 · Shared Drive 목록

이름타입설명
drivesarray<object>
returnTo (wire: return_to)string
statestring
tenantId (wire: tenant_id)string

에러 status: 400 401 500에러 처리