API Reference

아래 목록은 LinkOStar 백엔드의 live OpenAPI spec에서 자동 생성됩니다. 외부 통합 대상에 해당하는 endpoint만 추렸고, 내부 운영용(/platform, /actuator 등)은 의도적으로 숨겼습니다.

spec은 한 시간마다 자동 갱신됩니다. 백엔드 배포 직후라면 약간 지연될 수 있습니다.

최근 동기화:

Hub 등록 (Public)

대상: Hub-agent (Pi)

hub-agent가 부팅 직후 claim 코드를 가지고 한 번 호출합니다. 인증 없이 접근 가능하지만 claim 코드 자체가 일회성 자격증명 역할을 합니다.

post/v1/hubs/claim

Claim hub instance

Register a hub to a usage unit using a claim code. **Process:** 1. Validates the claim code (expiration, revocation, usage limits) 2. Creates new hub_instance or updates existing one by device_instance_id 3. Checks if hub is blocked (rejects if blocked) 4. Generates access_token and refresh_token 5. Saves to hub_auth_token table 6. Records audit log **Security:** - No authentication required (public endpoint) - Claim code acts as authorization - Blocked hubs cannot claim **Rate Limiting:** None (one-time operation)

파라미터

파라미터 없음

요청 본문

application/jsonHubClaimRequest필수

응답

  • 201Hub claimed successfullyApiResponse
  • 400Invalid claim code (expired, revoked, or max uses reached)
  • 409Conflict - Hub already belongs to different unit
  • 423Hub is blocked/locked

Hub Bearer 보호 API (V1)

대상: Hub-agent (Pi)

claim 직후 받은 access token으로 호출합니다. telemetry · 로그 업로드 · 토큰 갱신이 여기 들어갑니다. supplier BFF는 직접 부르지 않습니다.

get/v1/hubs/{hubUuid}/desired-state

Get current DesiredState for this hub (poll)

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수

응답

  • 200OKApiResponseMapStringObject
post/v1/hubs/{hubUuid}/device-query

Resolve a scanned BLE asset to a device instance and activate it

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수

요청 본문

application/jsonDeviceQueryRequest필수

응답

  • 200OKApiResponseDeviceQueryResponse
post/v1/hubs/{hubUuid}/jobs/{hubJobUuid}/events

Record job event

Record job event and update job status

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수Hub UUID
hubJobUuidpathstring<uuid>필수Hub Job UUID

요청 본문

application/jsonHubJobEventRequest필수

응답

  • 204No Content
post/v1/hubs/{hubUuid}/logs

Record log

Record log entry from hub

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수Hub UUID

요청 본문

application/jsonJsonNode필수

응답

  • 204No Content
post/v1/hubs/{hubUuid}/telemetry

Record telemetry

Record telemetry data from hub

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수Hub UUID

요청 본문

application/jsonJsonNode필수

응답

  • 204No Content
post/v1/hubs/refresh

Refresh hub access token

Refresh hub access token using refresh token. **Process:** 1. Validates hub authentication (must be authenticated) 2. Checks if hub is blocked (rejects if blocked) 3. Verifies refresh token matches stored token 4. Checks if token is revoked 5. Generates new access_token (refresh token remains the same) 6. Updates hub_auth_token table 7. Records audit log **Security:** - Requires hub authentication (Bearer token) - Blocked hubs cannot refresh - Revoked tokens cannot be refreshed **Token Expiration:** - Access token: 24 hours (configurable) - Refresh token: 30 days (configurable)

파라미터

파라미터 없음

요청 본문

application/jsonHubRefreshRequest필수

응답

  • 200Tokens refreshed successfullyApiResponse
  • 401Hub authentication required or invalid refresh token
  • 403Hub is blocked or token is revoked

Tenant — Hubs

대상: Supplier 콘솔 / BFF

특정 tenant 소속 hub의 조회·관리. X-API-Key 또는 sdx-oauth JWT + X-Tenant-UUID 헤더로 인증합니다.

get/tenant/hubs

List hubs

List all hubs for current unit with READ permission check

파라미터

NameInTypeDescription
pagequeryinteger<int32>선택Page number (1-based)
sizequeryinteger<int32>선택Page size

응답

  • 200OKApiResponseListHubSummaryResponse
get/tenant/hubs/{hubUuid}

Get hub detail

Get hub detail with READ permission check

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수Hub UUID

응답

  • 200OKApiResponseHubDetailResponse
get/tenant/hubs/{hubUuid}/apps

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수

응답

  • 200OKApiResponseListHubInstalledAppResponse
get/tenant/hubs/{hubUuid}/installed-apps

List apps scheduled / installed on this hub

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수

응답

  • 200OKApiResponseListInstalledAppView
get/tenant/hubs/{hubUuid}/jobs

Get hub jobs

Get hub jobs with READ permission check

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수Hub UUID
pagequeryinteger<int32>선택Page number (1-based)
sizequeryinteger<int32>선택Page size

응답

  • 200OKApiResponseListHubJobResponse
post/tenant/hubs/{hubUuid}/jobs/app-install

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수

요청 본문

application/jsonAppInstallRequest필수

응답

  • 201CreatedApiResponseUUID
post/tenant/hubs/{hubUuid}/jobs/app-remove

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수
appUuidquerystring<uuid>필수

응답

  • 201CreatedApiResponseUUID
get/tenant/hubs/{hubUuid}/logs

Get hub logs

Get hub logs with time range filter

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수Hub UUID
fromquerystring<date-time>선택Start time (ISO 8601)
toquerystring<date-time>선택End time (ISO 8601)
pagequeryinteger<int32>선택Page number (1-based)
sizequeryinteger<int32>선택Page size

응답

  • 200OKApiResponseListHubLogResponse
get/tenant/hubs/{hubUuid}/provisioning/steps

List wizard steps + submission state for the hub

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수

응답

  • 200OKApiResponseListProvisioningRunResponse
post/tenant/hubs/{hubUuid}/provisioning/steps/{stepId}/submit

Submit (or skip) one wizard step

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수
stepIdpathinteger<int64>필수

요청 본문

application/jsonStepSubmitRequest필수

응답

  • 200OKApiResponseProvisioningRunResponse
get/tenant/hubs/{hubUuid}/setup-delegations

List setup delegations

List all setup delegations for a hub

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수Hub UUID

응답

  • 200OKApiResponseListSetupDelegationResponse
post/tenant/hubs/{hubUuid}/setup-delegations

Create setup delegation

Delegate hub setup rights to another user

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수Hub UUID

요청 본문

application/jsonSetupDelegationRequest필수

응답

  • 200OKApiResponseSetupDelegationResponse
delete/tenant/hubs/{hubUuid}/setup-delegations/{id}

Revoke setup delegation

Revoke a setup delegation

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수Hub UUID
idpathinteger<int64>필수Delegation ID

응답

  • 200OKApiResponseVoid
get/tenant/hubs/{hubUuid}/telemetry

Get hub telemetry

Get hub telemetry with time range filter

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수Hub UUID
fromquerystring<date-time>선택Start time (ISO 8601)
toquerystring<date-time>선택End time (ISO 8601)
pagequeryinteger<int32>선택Page number (1-based)
sizequeryinteger<int32>선택Page size

응답

  • 200OKApiResponseListHubTelemetryResponse
get/tenant/hubs/claim-codes

List my claim codes

Newest first; status is derived (PENDING/USED/EXPIRED/REVOKED)

파라미터

NameInTypeDescription
pagequeryinteger<int32>선택
sizequeryinteger<int32>선택

응답

  • 200OKApiResponseListClaimCodeListItem
post/tenant/hubs/claim-codes

Generate claim code

Generate a new hub claim code for this tenant

파라미터

파라미터 없음

요청 본문

application/jsonClaimCodeGenerateRequest필수

응답

  • 200OKApiResponseClaimCodeResponse
delete/tenant/hubs/claim-codes/{claimCode}

Hard-delete (unused) or soft-revoke (used) a claim code

파라미터

NameInTypeDescription
claimCodepathstring필수

응답

  • 204No Content

Tenant — Devices

대상: Supplier 콘솔 / BFF

각 hub에 연결된 device 인스턴스 조회·관리. BLE 스캐너로 발견된 디바이스가 여기 들어옵니다.

get/tenant/devices

List device instances (optionally filter by activationStatus)

파라미터

NameInTypeDescription
pagequeryinteger<int32>선택
sizequeryinteger<int32>선택
activationStatusquerystring선택

응답

  • 200OKApiResponseListDeviceInstanceResponse
post/tenant/devices

Register new device instance

파라미터

파라미터 없음

요청 본문

application/jsonCreateDeviceInstanceRequest필수

응답

  • 200OKApiResponseDeviceInstanceResponse
get/tenant/devices/{deviceInstanceId}

Get device instance detail

파라미터

NameInTypeDescription
deviceInstanceIdpathinteger<int64>필수

응답

  • 200OKApiResponseDeviceInstanceResponse
delete/tenant/devices/{deviceInstanceId}

Delete device instance

파라미터

NameInTypeDescription
deviceInstanceIdpathinteger<int64>필수

응답

  • 200OK
patch/tenant/devices/{deviceInstanceId}

Update device instance

파라미터

NameInTypeDescription
deviceInstanceIdpathinteger<int64>필수

요청 본문

application/jsonUpdateDeviceInstanceRequest필수

응답

  • 200OKApiResponseDeviceInstanceResponse
post/tenant/devices/{deviceInstanceId}/activate

Force-activate device instance (manual override)

파라미터

NameInTypeDescription
deviceInstanceIdpathinteger<int64>필수

응답

  • 200OKApiResponseDeviceInstanceResponse
post/tenant/devices/{deviceInstanceId}/retire

Retire device instance (terminal state)

파라미터

NameInTypeDescription
deviceInstanceIdpathinteger<int64>필수

응답

  • 200OKApiResponseDeviceInstanceResponse
get/tenant/devices/{deviceInstanceId}/sensor-data

Query sensor timeseries (TODO: backed by ble_event for now — empty stub)

파라미터

NameInTypeDescription
deviceInstanceIdpathinteger<int64>필수
fromquerystring<date-time>선택
toquerystring<date-time>선택
pagequeryinteger<int32>선택
sizequeryinteger<int32>선택

응답

  • 200OKApiResponseListMapStringObject
post/tenant/devices/{deviceInstanceId}/suspend

Suspend device instance

파라미터

NameInTypeDescription
deviceInstanceIdpathinteger<int64>필수

응답

  • 200OKApiResponseDeviceInstanceResponse

Tenant — Provisioning Steps

대상: Supplier 콘솔

supplier가 정의하는 onboarding 위저드 단계의 CRUD. 5가지 type 중 하나 (TEXT_INPUT, EXTERNAL_LIST_PICK, CONFIRM, INFO, CUSTOM).

get/tenant/provisioning-steps

List provisioning steps for current tenant

Uses X-Tenant-UUID header to scope the list

파라미터

파라미터 없음

응답

  • 200OKApiResponseListProvisioningStepResponse
post/tenant/provisioning-steps

Create provisioning step

Create a new provisioning step for a supplier

파라미터

파라미터 없음

요청 본문

application/jsonCreateProvisioningStepRequest필수

응답

  • 201CreatedApiResponseProvisioningStepResponse
put/tenant/provisioning-steps/{stepId}

Update provisioning step

Update an existing provisioning step

파라미터

NameInTypeDescription
stepIdpathinteger<int64>필수Step ID

요청 본문

application/jsonUpdateProvisioningStepRequest필수

응답

  • 200OKApiResponseProvisioningStepResponse
delete/tenant/provisioning-steps/{stepId}

Delete provisioning step

Delete a provisioning step

파라미터

NameInTypeDescription
stepIdpathinteger<int64>필수Step ID

응답

  • 204No Content
get/tenant/provisioning-steps/{supplierUuid}

List provisioning steps

List all provisioning steps for a supplier

파라미터

NameInTypeDescription
supplierUuidpathstring<uuid>필수Supplier UUID

응답

  • 200OKApiResponseListProvisioningStepResponse
put/tenant/provisioning-steps/reorder

Reorder provisioning steps

Reorder provisioning steps for a supplier

파라미터

파라미터 없음

요청 본문

application/jsonReorderStepsRequest필수

응답

  • 200OKApiResponseListProvisioningStepResponse

Tenant — Supplier Bundles

대상: Supplier 콘솔

출시 패키지(SupplierBundle) CRUD + DRAFT → PUBLISHED → ARCHIVED 상태머신. claim 시점에 자동으로 expand됩니다.

get/tenant/supplier-bundles

List supplier bundles (optionally filter by status)

파라미터

NameInTypeDescription
statusquerystring선택
pagequeryinteger<int32>선택
sizequeryinteger<int32>선택

응답

  • 200OKApiResponseListBundleResponse
post/tenant/supplier-bundles

Create bundle (DRAFT)

파라미터

파라미터 없음

요청 본문

application/jsonCreateBundleRequest필수

응답

  • 200OKApiResponseBundleResponse
get/tenant/supplier-bundles/{bundleUuid}

Get bundle detail

파라미터

NameInTypeDescription
bundleUuidpathstring<uuid>필수

응답

  • 200OKApiResponseBundleResponse
delete/tenant/supplier-bundles/{bundleUuid}

Delete bundle (DRAFT only)

파라미터

NameInTypeDescription
bundleUuidpathstring<uuid>필수

응답

  • 200OK
patch/tenant/supplier-bundles/{bundleUuid}

Update bundle fields (DRAFT only)

파라미터

NameInTypeDescription
bundleUuidpathstring<uuid>필수

요청 본문

application/jsonUpdateBundleRequest필수

응답

  • 200OKApiResponseBundleResponse
get/tenant/supplier-bundles/{bundleUuid}/apps

파라미터

NameInTypeDescription
bundleUuidpathstring<uuid>필수

응답

  • 200OKApiResponseListObject
put/tenant/supplier-bundles/{bundleUuid}/apps

Replace apps list (full overwrite)

파라미터

NameInTypeDescription
bundleUuidpathstring<uuid>필수

요청 본문

application/jsonBundleAppRefRequest필수

응답

  • 200OKApiResponseListObject
post/tenant/supplier-bundles/{bundleUuid}/archive

Archive bundle (PUBLISHED → ARCHIVED)

파라미터

NameInTypeDescription
bundleUuidpathstring<uuid>필수

응답

  • 200OKApiResponseBundleResponse
get/tenant/supplier-bundles/{bundleUuid}/devices

파라미터

NameInTypeDescription
bundleUuidpathstring<uuid>필수

응답

  • 200OKApiResponseListObject
put/tenant/supplier-bundles/{bundleUuid}/devices

Replace devices list (full overwrite)

파라미터

NameInTypeDescription
bundleUuidpathstring<uuid>필수

요청 본문

application/jsonBundleDeviceRefRequest필수

응답

  • 200OKApiResponseListObject
post/tenant/supplier-bundles/{bundleUuid}/publish

Publish bundle (DRAFT → PUBLISHED)

파라미터

NameInTypeDescription
bundleUuidpathstring<uuid>필수

응답

  • 200OKApiResponseBundleResponse
get/tenant/supplier-bundles/{bundleUuid}/steps

파라미터

NameInTypeDescription
bundleUuidpathstring<uuid>필수

응답

  • 200OKApiResponseListObject
put/tenant/supplier-bundles/{bundleUuid}/steps

Replace provisioning steps list (full overwrite)

파라미터

NameInTypeDescription
bundleUuidpathstring<uuid>필수

요청 본문

application/jsonBundleStepRefRequest필수

응답

  • 200OKApiResponseListObject

Tenant — Hub Monitoring

대상: Supplier 콘솔 / BFF

특정 hub의 telemetry·log·job 시계열 조회. 운영 대시보드의 heartbeat·그래프 데이터 소스.

get/tenant/hub-monitoring/{hubUuid}/jobs

Get hub jobs

Retrieve paginated list of jobs for a specific hub. Requires READ permission on the hub's unit.

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수Hub UUID
pageablequeryPageable필수

응답

  • 200Hub jobs retrieved successfullyApiResponse
  • 403Insufficient permissionsApiResponsePageHubJobResponse
  • 404Hub not found or access deniedApiResponsePageHubJobResponse
get/tenant/hub-monitoring/{hubUuid}/jobs/{jobUuid}

Get hub job details

Retrieve detailed information about a specific job including desired and result JSON payloads

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수Hub UUID
jobUuidpathstring<uuid>필수Job UUID

응답

  • 200Job details retrieved successfullyApiResponse
  • 404Hub or job not foundApiResponseHubJobDetailResponse
get/tenant/hub-monitoring/{hubUuid}/jobs/{jobUuid}/events

Get hub job events

Retrieve time-ordered events for a specific job

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수Hub UUID
jobUuidpathstring<uuid>필수Job UUID
pageablequeryPageable필수

응답

  • 200Job events retrieved successfullyApiResponse
  • 404Hub or job not foundApiResponsePageHubJobEventResponse
get/tenant/hub-monitoring/{hubUuid}/logs

Get hub logs

Retrieve log entries filtered by time range (latest first)

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수Hub UUID
fromquerystring<date-time>선택Start time (ISO 8601)
toquerystring<date-time>선택End time (ISO 8601)
pageablequeryPageable필수

응답

  • 200Logs retrieved successfullyApiResponse
  • 404Hub not found or access deniedApiResponsePageHubLogResponse
get/tenant/hub-monitoring/{hubUuid}/telemetry

Get hub telemetry

Retrieve telemetry data filtered by time range (latest first)

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수Hub UUID
fromquerystring<date-time>선택Start time (ISO 8601)
toquerystring<date-time>선택End time (ISO 8601)
pageablequeryPageable필수

응답

  • 200Telemetry data retrieved successfullyApiResponse
  • 404Hub not found or access deniedApiResponsePageHubTelemetryResponse

Tenant — Data Pipelines

대상: Supplier 콘솔

telemetry 변환·외부 전달 규칙 정의 (예: 윈도 평균 → S3, MQTT 등).

get/tenant/data-pipelines

파라미터

파라미터 없음

응답

  • 200OKApiResponseListPipelineConfigResponse
post/tenant/data-pipelines

파라미터

파라미터 없음

요청 본문

application/jsonCreatePipelineRequest필수

응답

  • 201CreatedApiResponsePipelineConfigResponse
get/tenant/data-pipelines/{pipelineUuid}

파라미터

NameInTypeDescription
pipelineUuidpathstring<uuid>필수

응답

  • 200OKApiResponsePipelineConfigResponse
put/tenant/data-pipelines/{pipelineUuid}

파라미터

NameInTypeDescription
pipelineUuidpathstring<uuid>필수

요청 본문

application/jsonUpdatePipelineRequest필수

응답

  • 200OKApiResponsePipelineConfigResponse
delete/tenant/data-pipelines/{pipelineUuid}

파라미터

NameInTypeDescription
pipelineUuidpathstring<uuid>필수

응답

  • 204No Content
get/tenant/data-pipelines/{pipelineUuid}/deliveries

파라미터

NameInTypeDescription
pipelineUuidpathstring<uuid>필수
pagequeryinteger<int32>선택
limitqueryinteger<int32>선택

응답

  • 200OKApiResponseListMapStringObject
get/tenant/data-pipelines/{pipelineUuid}/dlq

파라미터

NameInTypeDescription
pipelineUuidpathstring<uuid>필수
pagequeryinteger<int32>선택
sizequeryinteger<int32>선택

응답

  • 200OKApiResponseListDlqMessageResponse
post/tenant/data-pipelines/{pipelineUuid}/dlq/{dlqId}/retry

파라미터

NameInTypeDescription
pipelineUuidpathstring<uuid>필수
dlqIdpathinteger<int64>필수

응답

  • 200OKApiResponseVoid
post/tenant/data-pipelines/{pipelineUuid}/test-run

파라미터

NameInTypeDescription
pipelineUuidpathstring<uuid>필수

요청 본문

application/jsonPipelineTestRequest필수

응답

  • 200OKApiResponsePipelineTestResult
post/tenant/data-pipelines/transpile

파라미터

파라미터 없음

요청 본문

application/jsonJsonNode필수

응답

  • 200OKApiResponseObject

Tenant — 기타

대상: Supplier 콘솔 / BFF

위에 따로 분류되지 않은 /tenant 경로. agent-policies, notification-settings 등.

get/tenant/action-definitions

List action definitions for current tenant (auto-resolved supplier)

파라미터

NameInTypeDescription
supplierUuidquerystring<uuid>선택

응답

  • 200OKApiResponseListActionDefinitionResponse
post/tenant/action-definitions

Create action definition

Create a new protocol action definition

파라미터

파라미터 없음

요청 본문

application/jsonActionDefinitionCreateRequest필수

응답

  • 201CreatedApiResponseActionDefinitionResponse
get/tenant/action-definitions/{actionId}

Get action definition

Get a single action definition by ID

파라미터

NameInTypeDescription
actionIdpathstring필수

응답

  • 200OKApiResponseActionDefinitionResponse
delete/tenant/action-definitions/{actionId}

Delete action definition

Delete an action definition

파라미터

NameInTypeDescription
actionIdpathstring필수

응답

  • 200OKApiResponseVoid
patch/tenant/action-definitions/{actionId}

Update action definition

Update an existing action definition

파라미터

NameInTypeDescription
actionIdpathstring필수

요청 본문

application/jsonActionDefinitionUpdateRequest필수

응답

  • 200OKApiResponseActionDefinitionResponse
get/tenant/agent-releases

List agent releases (optionally filter by channel + active)

파라미터

NameInTypeDescription
channelquerystring선택
activeOnlyqueryboolean선택
pagequeryinteger<int32>선택
sizequeryinteger<int32>선택

응답

  • 200OKApiResponseListAgentReleaseResponse
get/tenant/agent-releases/{releaseUuid}

파라미터

NameInTypeDescription
releaseUuidpathstring<uuid>필수

응답

  • 200OKApiResponseAgentReleaseResponse
get/tenant/agent-update-policies

List agent update policies belonging to current tenant

파라미터

NameInTypeDescription
pagequeryinteger<int32>선택
sizequeryinteger<int32>선택

응답

  • 200OKApiResponseListAgentUpdatePolicyResponse
put/tenant/agent-update-policies

Upsert UNIT/HUB scoped policy (tenant_uuid auto-set on UNIT scope)

파라미터

파라미터 없음

요청 본문

application/jsonCreateAgentUpdatePolicyRequest필수

응답

  • 200OKApiResponseAgentUpdatePolicyResponse
get/tenant/agent-update-policies/{policyUuid}

파라미터

NameInTypeDescription
policyUuidpathstring<uuid>필수

응답

  • 200OKApiResponseAgentUpdatePolicyResponse
delete/tenant/agent-update-policies/{policyUuid}

파라미터

NameInTypeDescription
policyUuidpathstring<uuid>필수

응답

  • 204No Content
get/tenant/api-keys

List API keys

List all active API keys. Key hashes are never exposed.

파라미터

파라미터 없음

응답

  • 200OKApiResponseListApiKeyListResponse
post/tenant/api-keys

Generate new API key

Creates a new API key. The raw key is returned ONCE and cannot be retrieved again.

파라미터

파라미터 없음

요청 본문

application/jsonApiKeyCreateRequest필수

응답

  • 201CreatedApiResponseApiKeyCreateResponse
put/tenant/api-keys/{apiKeyId}

Update API key

Update name, scopes, or rate limit of an existing API key.

파라미터

NameInTypeDescription
apiKeyIdpathinteger<int64>필수

요청 본문

application/jsonApiKeyUpdateRequest필수

응답

  • 200OKApiResponseApiKeyListResponse
delete/tenant/api-keys/{apiKeyId}

Revoke API key

Deactivates an API key. The key can no longer be used for authentication.

파라미터

NameInTypeDescription
apiKeyIdpathinteger<int64>필수

응답

  • 200OKApiResponseVoid
get/tenant/apps

파라미터

NameInTypeDescription
pagequeryinteger<int32>선택
sizequeryinteger<int32>선택

응답

  • 200OKApiResponseListAppResponse
post/tenant/apps

파라미터

파라미터 없음

요청 본문

application/jsonAppCreateRequest필수

응답

  • 201CreatedApiResponseAppResponse
get/tenant/apps/{appUuid}

파라미터

NameInTypeDescription
appUuidpathstring<uuid>필수

응답

  • 200OKApiResponseAppResponse
get/tenant/apps/{appUuid}/releases

파라미터

NameInTypeDescription
appUuidpathstring<uuid>필수
pagequeryinteger<int32>선택
sizequeryinteger<int32>선택

응답

  • 200OKApiResponseListAppReleaseResponse
post/tenant/apps/{appUuid}/releases

파라미터

NameInTypeDescription
appUuidpathstring<uuid>필수

요청 본문

application/jsonAppReleaseCreateRequest필수

응답

  • 201CreatedApiResponseAppReleaseResponse
get/tenant/audit-logs

Get tenant audit logs

Retrieve tenant-level audit logs with pagination

파라미터

NameInTypeDescription
pagequeryinteger<int32>선택
sizequeryinteger<int32>선택

응답

  • 200OKPageAuditLogResponse
get/tenant/billing/balance

Get billing balance

sdx-web pass-through. Returns currentCreditCents, activeSubscription, lastInvoice.

파라미터

파라미터 없음

응답

  • 200OKApiResponseMapStringObject
get/tenant/billing/charge-settings

[DEPRECATED] auto-charge settings — sdx-web으로 이동

파라미터

파라미터 없음

응답

  • 200OKApiResponseMapStringString
put/tenant/billing/charge-settings

[DEPRECATED] auto-charge settings — sdx-web으로 이동

파라미터

파라미터 없음

응답

  • 200OKApiResponseMapStringString
get/tenant/billing/entitlement

Get current entitlement

sdx-web 구독 기반 entitlement (tier, limits, validUntil)

파라미터

NameInTypeDescription
tenantUuidquerystring<uuid>선택Unit UUID (생략 시 현재 컨텍스트 사용)

응답

  • 200OKApiResponseEntitlementResponse
get/tenant/billing/transactions

Get billing transactions

sdx-web pass-through. Cursor pagination by createdAt desc.

파라미터

NameInTypeDescription
cursorquerystring선택ISO-8601 datetime; 생략 시 최신부터
limitqueryinteger<int32>선택1-100, default 50

응답

  • 200OKApiResponseMapStringObject
get/tenant/ble-query/deliveries

Get BLE deliveries

Retrieve paginated list of BLE deliveries filtered by unit scope and optional criteria

파라미터

NameInTypeDescription
fromquerystring<date-time>선택Start time (ISO 8601)
toquerystring<date-time>선택End time (ISO 8601)
statusquerystring선택Filter by delivery status
pageablequeryPageable필수

응답

  • 200BLE deliveries retrieved successfullyApiResponse
get/tenant/ble-query/events

Get BLE events

Retrieve paginated list of BLE events filtered by unit scope and optional criteria. Raw base64 data is excluded from list view.

파라미터

NameInTypeDescription
fromquerystring<date-time>선택Start time (ISO 8601)
toquerystring<date-time>선택End time (ISO 8601)
hubUuidquerystring<uuid>선택Filter by hub UUID
deviceInstanceIdqueryinteger<int64>선택Filter by device instance ID
processingStatusquerystring선택Filter by processing status
deliveryStatusquerystring선택Filter by delivery status
pageablequeryPageable필수

응답

  • 200BLE events retrieved successfullyApiResponse
  • 403Insufficient permissionsApiResponsePageBleEventResponse
get/tenant/ble-query/events/{bleEventId}

Get BLE event detail

Retrieve detailed information about a specific BLE event. Raw base64 data can be included with includeRaw=true parameter.

파라미터

NameInTypeDescription
bleEventIdpathinteger<int64>필수BLE event ID
includeRawqueryboolean선택Include raw base64 data

응답

  • 200BLE event detail retrieved successfullyApiResponse
  • 404Event not found or access deniedApiResponseBleEventDetailResponse
get/tenant/ble-query/events/{bleEventId}/runs

Get BLE event processing runs

Retrieve all processing runs and their actions for a specific BLE event

파라미터

NameInTypeDescription
bleEventIdpathinteger<int64>필수BLE event ID

응답

  • 200Processing runs retrieved successfullyApiResponse
  • 404Event not found or access deniedApiResponseListBleProcessingRunResponse
get/tenant/ble/events

파라미터

NameInTypeDescription
fromquerystring<date-time>선택
toquerystring<date-time>선택
hubUuidquerystring<uuid>선택
deviceInstanceIdqueryinteger<int64>선택
processingStatusquerystring선택
pagequeryinteger<int32>선택
sizequeryinteger<int32>선택

응답

  • 200OKApiResponseListBleEventResponse
get/tenant/ble/events/{bleEventId}

파라미터

NameInTypeDescription
bleEventIdpathinteger<int64>필수

응답

  • 200OKApiResponseBleEventResponse
get/tenant/ble/events/{bleEventId}/runs

파라미터

NameInTypeDescription
bleEventIdpathinteger<int64>필수

응답

  • 200OKApiResponseListBleProcessingRunResponse
get/tenant/ble/route

파라미터

파라미터 없음

응답

  • 200OKApiResponseBleRouteConfigResponse
put/tenant/ble/route

파라미터

파라미터 없음

요청 본문

application/jsonBleRouteConfigRequest필수

응답

  • 200OKApiResponseBleRouteConfigResponse
get/tenant/consent-records

List consent records

List all consent records for the current tenant (or pinned supplier)

파라미터

NameInTypeDescription
supplierUuidquerystring<uuid>선택Supplier UUID (defaults to current tenant)

응답

  • 200OKApiResponseListConsentRecordResponse
get/tenant/device-catalog

List device catalog entries (Device models)

파라미터

NameInTypeDescription
pagequeryinteger<int32>선택
sizequeryinteger<int32>선택

응답

  • 200OKApiResponseListDeviceCatalogResponse
post/tenant/device-catalog

Create device catalog entry (deviceUuid auto-issued)

파라미터

파라미터 없음

요청 본문

application/jsonCreateDeviceRequest필수

응답

  • 200OKApiResponseDeviceCatalogResponse
get/tenant/device-catalog/{deviceUuid}

Get device catalog entry detail

파라미터

NameInTypeDescription
deviceUuidpathstring<uuid>필수

응답

  • 200OKApiResponseDeviceCatalogResponse
delete/tenant/device-catalog/{deviceUuid}

Delete device catalog entry (hard delete)

파라미터

NameInTypeDescription
deviceUuidpathstring<uuid>필수

응답

  • 200OK
patch/tenant/device-catalog/{deviceUuid}

Update device catalog entry

파라미터

NameInTypeDescription
deviceUuidpathstring<uuid>필수

요청 본문

application/jsonUpdateDeviceRequest필수

응답

  • 200OKApiResponseDeviceCatalogResponse
get/tenant/device-catalog/{deviceUuid}/identifiers

List identifier hints registered under a device

파라미터

NameInTypeDescription
deviceUuidpathstring<uuid>필수

응답

  • 200OKApiResponseListDeviceMatchIdentifierResponse
post/tenant/device-catalog/{deviceUuid}/identifiers

Add an identifier hint

파라미터

NameInTypeDescription
deviceUuidpathstring<uuid>필수

요청 본문

application/jsonCreateDeviceMatchIdentifierRequest필수

응답

  • 200OKApiResponseDeviceMatchIdentifierResponse
delete/tenant/device-catalog/{deviceUuid}/identifiers/{id}

Remove an identifier

파라미터

NameInTypeDescription
deviceUuidpathstring<uuid>필수
idpathinteger<int64>필수

응답

  • 200OK
patch/tenant/device-catalog/{deviceUuid}/identifiers/{id}

Update label/notes on an identifier

파라미터

NameInTypeDescription
deviceUuidpathstring<uuid>필수
idpathinteger<int64>필수

요청 본문

application/jsonUpdateDeviceMatchIdentifierRequest필수

응답

  • 200OKApiResponseDeviceMatchIdentifierResponse
get/tenant/device-protocols

List device protocols (optionally filter by deviceUuid)

파라미터

NameInTypeDescription
deviceUuidquerystring<uuid>선택
pagequeryinteger<int32>선택
sizequeryinteger<int32>선택

응답

  • 200OKApiResponseListDeviceProtocolResponse
post/tenant/device-protocols

Create device protocol entry

파라미터

파라미터 없음

요청 본문

application/jsonCreateDeviceProtocolRequest필수

응답

  • 200OKApiResponseDeviceProtocolResponse
get/tenant/device-protocols/{deviceProtocolId}

Get device protocol detail

파라미터

NameInTypeDescription
deviceProtocolIdpathinteger<int64>필수

응답

  • 200OKApiResponseDeviceProtocolResponse
delete/tenant/device-protocols/{deviceProtocolId}

Delete device protocol entry

파라미터

NameInTypeDescription
deviceProtocolIdpathinteger<int64>필수

응답

  • 200OK
patch/tenant/device-protocols/{deviceProtocolId}

Update device protocol entry

파라미터

NameInTypeDescription
deviceProtocolIdpathinteger<int64>필수

요청 본문

application/jsonUpdateDeviceProtocolRequest필수

응답

  • 200OKApiResponseDeviceProtocolResponse
get/tenant/device-protocols/devices/{deviceUuid}

Get device catalog header (Device entity)

파라미터

NameInTypeDescription
deviceUuidpathstring<uuid>필수

응답

  • 200OKApiResponseDeviceCatalogResponse
get/tenant/device-ui-schemas

List device UI schemas (optionally filter by deviceUuid)

파라미터

NameInTypeDescription
deviceUuidquerystring<uuid>선택
pagequeryinteger<int32>선택
sizequeryinteger<int32>선택

응답

  • 200OKApiResponseListDeviceUiResponse
post/tenant/device-ui-schemas

Create device UI schema

파라미터

파라미터 없음

요청 본문

application/jsonCreateDeviceUiRequest필수

응답

  • 200OKApiResponseDeviceUiResponse
get/tenant/device-ui-schemas/{deviceUiId}

Get device UI schema detail

파라미터

NameInTypeDescription
deviceUiIdpathinteger<int64>필수

응답

  • 200OKApiResponseDeviceUiResponse
delete/tenant/device-ui-schemas/{deviceUiId}

Delete device UI schema

파라미터

NameInTypeDescription
deviceUiIdpathinteger<int64>필수

응답

  • 200OK
patch/tenant/device-ui-schemas/{deviceUiId}

Update device UI schema

파라미터

NameInTypeDescription
deviceUiIdpathinteger<int64>필수

요청 본문

application/jsonUpdateDeviceUiRequest필수

응답

  • 200OKApiResponseDeviceUiResponse
get/tenant/device-versions

List device versions (optionally filter by deviceUuid)

파라미터

NameInTypeDescription
deviceUuidquerystring<uuid>선택
pagequeryinteger<int32>선택
sizequeryinteger<int32>선택

응답

  • 200OKApiResponseListDeviceVersionResponse
post/tenant/device-versions

Create device version entry

파라미터

파라미터 없음

요청 본문

application/jsonCreateDeviceVersionRequest필수

응답

  • 200OKApiResponseDeviceVersionResponse
get/tenant/device-versions/{deviceVersionUuid}

Get device version detail

파라미터

NameInTypeDescription
deviceVersionUuidpathstring<uuid>필수

응답

  • 200OKApiResponseDeviceVersionResponse
delete/tenant/device-versions/{deviceVersionUuid}

Delete device version entry

파라미터

NameInTypeDescription
deviceVersionUuidpathstring<uuid>필수

응답

  • 200OK
patch/tenant/device-versions/{deviceVersionUuid}

Update device version entry

파라미터

NameInTypeDescription
deviceVersionUuidpathstring<uuid>필수

요청 본문

application/jsonUpdateDeviceVersionRequest필수

응답

  • 200OKApiResponseDeviceVersionResponse
get/tenant/downloads/asset-url

Resolve a GH presigned S3 URL for a single asset (5-min TTL)

파라미터

NameInTypeDescription
categoryquerystring필수
assetIdqueryinteger<int64>필수

응답

  • 200OKApiResponseAssetUrl
get/tenant/downloads/manifest

Latest release + filtered assets for installer / hub-os / hub-agent

파라미터

파라미터 없음

응답

  • 200OKApiResponseDownloadManifest
get/tenant/manuals

List device manuals (optionally filter by deviceUuid)

파라미터

NameInTypeDescription
deviceUuidquerystring<uuid>선택
pagequeryinteger<int32>선택
sizequeryinteger<int32>선택

응답

  • 200OKApiResponseListDeviceManualResponse
post/tenant/manuals

Create device manual

파라미터

파라미터 없음

요청 본문

application/jsonCreateDeviceManualRequest필수

응답

  • 200OKApiResponseDeviceManualResponse
get/tenant/manuals/{deviceManualId}

Get device manual detail

파라미터

NameInTypeDescription
deviceManualIdpathinteger<int64>필수

응답

  • 200OKApiResponseDeviceManualResponse
delete/tenant/manuals/{deviceManualId}

Delete device manual

파라미터

NameInTypeDescription
deviceManualIdpathinteger<int64>필수

응답

  • 200OK
patch/tenant/manuals/{deviceManualId}

Update device manual

파라미터

NameInTypeDescription
deviceManualIdpathinteger<int64>필수

요청 본문

application/jsonUpdateDeviceManualRequest필수

응답

  • 200OKApiResponseDeviceManualResponse
get/tenant/notification-settings

List notification settings for current user within tenant context

파라미터

파라미터 없음

응답

  • 200OKApiResponseListNotificationSettingResponse
put/tenant/notification-settings

Upsert a single notification setting (by type+channel)

파라미터

파라미터 없음

요청 본문

application/jsonUpsertNotificationSettingRequest필수

응답

  • 200OKApiResponseNotificationSettingResponse
post/tenant/notification-settings/bulk

Bulk upsert notification settings

파라미터

파라미터 없음

요청 본문

application/jsonUpsertNotificationSettingRequest필수

응답

  • 200OKApiResponseListNotificationSettingResponse
get/tenant/personas

List members of current tenant

파라미터

파라미터 없음

응답

  • 200OKApiResponseListTenantMemberResponse
delete/tenant/personas/{personaUuid}

Revoke persona access from tenant

파라미터

NameInTypeDescription
personaUuidpathstring<uuid>필수

응답

  • 200OK
patch/tenant/personas/{personaUuid}

Change role of a tenant persona

파라미터

NameInTypeDescription
personaUuidpathstring<uuid>필수

요청 본문

application/jsonUpdatePersonaRoleRequest필수

응답

  • 200OKApiResponseTenantMemberResponse
post/tenant/personas/invite

Invite a persona (create via sdx-oauth or grant existing)

파라미터

파라미터 없음

요청 본문

application/jsonPersonaInviteRequest필수

응답

  • 200OKApiResponseTenantMemberResponse
get/tenant/simulator/presets

파라미터

파라미터 없음

응답

  • 200OKApiResponseListSimulationPreset
post/tenant/simulator/run

파라미터

파라미터 없음

요청 본문

application/jsonSimulationRequest필수

응답

  • 200OKApiResponseSimulationResult
post/tenant/simulator/stream

파라미터

파라미터 없음

요청 본문

application/jsonStreamSimulationRequest필수

응답

  • 200OKApiResponseListSimulationResult
get/tenant/stream/ble/events

Stream BLE events

Subscribe to real-time BLE events via Server-Sent Events (SSE). **SSE Protocol:** - Content-Type: text/event-stream - Event name: `ble_event` - Heartbeat: Every 20 seconds (comment: ping) - Connection timeout: 5 minutes **Last-Event-ID Support:** - Client can send `Last-Event-ID` header with ISO-8601 timestamp - Server will stream events after that timestamp - Event IDs are ISO-8601 timestamps (receivedAt) **Permission:** - Requires unit scope (events filtered by persona's unit) - Requires READ permission (permissionCode & 1 == 1) **Testing with curl:** ```bash curl -N -H "Authorization: Bearer YOUR_TOKEN" \ http://localhost:8080/tenant/stream/ble/events ``` **Testing with EventSource (JavaScript):** ```javascript const eventSource = new EventSource('/tenant/stream/ble/events', { headers: { Authorization: 'Bearer YOUR_TOKEN' } }); eventSource.addEventListener('ble_event', (event) => { const data = JSON.parse(event.data); console.log('BLE event:', data); }); eventSource.onerror = (error) => { console.error('SSE error:', error); }; ```

파라미터

NameInTypeDescription
Authorizationheaderstring필수
Last-Event-IDheaderstring선택Last event timestamp (ISO-8601)

응답

  • 200SSE stream established
  • 403Insufficient permissionsSseEmitter
get/tenant/stream/hubs/{hubUuid}/jobs

Stream hub job events

Subscribe to real-time hub job events via Server-Sent Events (SSE). **SSE Protocol:** - Content-Type: text/event-stream - Event name: `hub_job_event` - Heartbeat: Every 20 seconds (comment: ping) - Connection timeout: 5 minutes **Last-Event-ID Support:** - Client can send `Last-Event-ID` header with ISO-8601 timestamp - Server will stream events after that timestamp - Event IDs are ISO-8601 timestamps (receivedAt) **Permission:** - Requires unit scope (persona's unit must match hub's unit) - Requires READ permission (permissionCode & 1 == 1) **Testing with curl:** ```bash curl -N -H "Authorization: Bearer YOUR_TOKEN" \ http://localhost:8080/tenant/stream/hubs/{hubUuid}/jobs ``` **Testing with EventSource (JavaScript):** ```javascript const eventSource = new EventSource('/tenant/stream/hubs/{hubUuid}/jobs', { headers: { Authorization: 'Bearer YOUR_TOKEN' } }); eventSource.addEventListener('hub_job_event', (event) => { const data = JSON.parse(event.data); console.log('Job event:', data); }); ```

파라미터

NameInTypeDescription
Authorizationheaderstring필수
hubUuidpathstring<uuid>필수Hub UUID
Last-Event-IDheaderstring선택Last event timestamp (ISO-8601)

응답

  • 200SSE stream established
  • 403Insufficient permissionsSseEmitter
  • 404Hub not found or persona doesn't have accessSseEmitter
get/tenant/stream/hubs/{hubUuid}/logs

Stream hub logs

Subscribe to real-time hub logs via Server-Sent Events (SSE). **SSE Protocol:** - Content-Type: text/event-stream - Event name: `hub_log` - Heartbeat: Every 20 seconds (comment: ping) - Connection timeout: 5 minutes **Last-Event-ID Support:** - Client can send `Last-Event-ID` header with ISO-8601 timestamp - Server will stream logs after that timestamp - Event IDs are ISO-8601 timestamps (receivedAt) **Permission:** - Requires unit scope (persona's unit must match hub's unit) - Requires READ permission (permissionCode & 1 == 1) **Testing with curl:** ```bash curl -N -H "Authorization: Bearer YOUR_TOKEN" \ http://localhost:8080/tenant/stream/hubs/{hubUuid}/logs ```

파라미터

NameInTypeDescription
Authorizationheaderstring필수
hubUuidpathstring<uuid>필수Hub UUID
Last-Event-IDheaderstring선택Last event timestamp (ISO-8601)

응답

  • 200SSE stream established
  • 403Insufficient permissionsSseEmitter
  • 404Hub not found or persona doesn't have accessSseEmitter
get/tenant/tenants

List my accessible tenants

파라미터

파라미터 없음

응답

  • 200OKApiResponseListTenantResponse
post/tenant/tenants

Create a new tenant under my current sdx unit

파라미터

파라미터 없음

요청 본문

application/jsonCreateTenantRequest필수

응답

  • 200OKApiResponseTenantResponse
delete/tenant/tenants/{tenantUuid}

Soft-delete tenant (OWNER only)

파라미터

NameInTypeDescription
tenantUuidpathstring<uuid>필수

응답

  • 200OK
patch/tenant/tenants/{tenantUuid}

Update tenant name (ADMIN+)

파라미터

NameInTypeDescription
tenantUuidpathstring<uuid>필수

요청 본문

application/jsonCreateTenantRequest필수

응답

  • 200OKApiResponseTenantResponse
get/tenant/tenants/{tenantUuid}/members

List tenant members (any access)

파라미터

NameInTypeDescription
tenantUuidpathstring<uuid>필수

응답

  • 200OKApiResponseListTenantMemberResponse
post/tenant/tenants/{tenantUuid}/members

Grant access (ADMIN+; OWNER for OWNER role)

파라미터

NameInTypeDescription
tenantUuidpathstring<uuid>필수

요청 본문

application/jsonGrantAccessRequest필수

응답

  • 200OKApiResponseTenantMemberResponse
delete/tenant/tenants/{tenantUuid}/members/{targetPersonaUuid}

Revoke access (ADMIN+; last OWNER protected)

파라미터

NameInTypeDescription
tenantUuidpathstring<uuid>필수
targetPersonaUuidpathstring<uuid>필수

응답

  • 200OK
post/tenant/tenants/{tenantUuid}/transfer

Initiate ownership transfer (current OWNER)

파라미터

NameInTypeDescription
tenantUuidpathstring<uuid>필수

요청 본문

application/jsonInitiateTransferRequest필수

응답

  • 200OKApiResponseTenantTransferRequestResponse
get/tenant/test

Tenant test endpoint

Test endpoint that requires JWT authentication

파라미터

파라미터 없음

응답

  • 200OKApiResponseMapStringObject
post/tenant/transfer-requests/{requestUuid}/accept

이전 요청 승인 (받는 unit의 멤버 persona)

파라미터

NameInTypeDescription
requestUuidpathstring<uuid>필수

응답

  • 200OKApiResponseTenantTransferRequestResponse
post/tenant/transfer-requests/{requestUuid}/cancel

이전 요청 취소 (요청자 본인 또는 OWNER)

파라미터

NameInTypeDescription
requestUuidpathstring<uuid>필수

응답

  • 200OKApiResponseTenantTransferRequestResponse
post/tenant/transfer-requests/{requestUuid}/reject

이전 요청 거부 (받는 unit의 멤버 persona)

파라미터

NameInTypeDescription
requestUuidpathstring<uuid>필수

응답

  • 200OKApiResponseTenantTransferRequestResponse
get/tenant/transfer-requests/incoming

받은 PENDING 이전 요청 (현재 persona의 unit으로 향한)

파라미터

파라미터 없음

응답

  • 200OKApiResponseListTenantTransferRequestResponse
get/tenant/transfer-requests/outgoing

보낸 PENDING 이전 요청 (현재 persona의 unit에서 발신)

파라미터

파라미터 없음

응답

  • 200OKApiResponseListTenantTransferRequestResponse
get/tenant/units/{tenantUuid}/test

Test unit boundary enforcement

Test endpoint that verifies persona belongs to specified unit

파라미터

NameInTypeDescription
tenantUuidpathstring<uuid>필수Unit UUID to access

응답

  • 200OKApiResponseMapStringObject

App API — End-user

대상: 모바일 앱 (Flutter)

end-user 모바일 앱이 쓰는 endpoint. sdx-oauth JWT로 인증.

get/app/action-definitions

List action definitions for a supplier

Returns all action definitions for the specified supplier

파라미터

NameInTypeDescription
supplierUuidquerystring<uuid>필수

응답

  • 200OKApiResponseListActionDefinitionResponse
get/app/action-definitions/{actionId}

Get action definition

Get a single action definition by ID

파라미터

NameInTypeDescription
actionIdpathstring필수

응답

  • 200OKApiResponseActionDefinitionResponse
get/app/consent

List consent records

List all consent records for current user

파라미터

파라미터 없음

응답

  • 200OKApiResponseListConsentRecordResponse
post/app/consent

Grant consent

Grant consent for a supplier and consent type

파라미터

파라미터 없음

요청 본문

application/jsonConsentGrantRequest필수

응답

  • 200OKApiResponseConsentRecordResponse
delete/app/consent/{consentId}

Withdraw consent

Withdraw a previously granted consent

파라미터

NameInTypeDescription
consentIdpathinteger<int64>필수Consent record ID

응답

  • 200OKApiResponseVoid
get/app/consent/{consentId}/retention

Get retention settings

Get retention settings for a consent record

파라미터

NameInTypeDescription
consentIdpathinteger<int64>필수Consent record ID

응답

  • 200OKApiResponseRetentionSettingResponse
put/app/consent/{consentId}/retention

Update retention period

Update retention period for a consent record

파라미터

NameInTypeDescription
consentIdpathinteger<int64>필수Consent record ID

요청 본문

application/jsonRetentionUpdateRequest필수

응답

  • 200OKApiResponseRetentionSettingResponse
get/app/devices

List user's devices

List all devices from units where user has a persona

파라미터

파라미터 없음

응답

  • 200OKApiResponseListDeviceSummaryResponse
get/app/devices/{deviceInstanceId}

Get device detail

Get device detail by instance ID

파라미터

NameInTypeDescription
deviceInstanceIdpathinteger<int64>필수Device instance ID

응답

  • 200OKApiResponseDeviceDetailResponse
post/app/devices/{deviceInstanceId}/commands

Send control command

Send a control command to a device

파라미터

NameInTypeDescription
deviceInstanceIdpathinteger<int64>필수Device instance ID

요청 본문

application/jsonDeviceCommandRequest필수

응답

  • 200OKApiResponseDeviceCommandResponse
get/app/devices/{deviceInstanceId}/sensor-data

Get sensor data

Get sensor data for a device with optional time range

파라미터

NameInTypeDescription
deviceInstanceIdpathinteger<int64>필수Device instance ID
fromquerystring선택Start time (ISO 8601)
toquerystring선택End time (ISO 8601)

응답

  • 200OKApiResponseObject
get/app/hubs

List hubs

List all hubs owned by current user

파라미터

파라미터 없음

응답

  • 200OKApiResponseListAppHubSummaryResponse
get/app/hubs/{hubUuid}

Get hub detail

Get hub detail by UUID

파라미터

NameInTypeDescription
hubUuidpathstring<uuid>필수Hub UUID

응답

  • 200OKApiResponseAppHubDetailResponse
get/app/notifications

List notifications

List notifications for current user (paginated)

파라미터

NameInTypeDescription
pagequeryinteger<int32>선택Page number (1-based)
sizequeryinteger<int32>선택Page size

응답

  • 200OKApiResponseListNotificationResponse
put/app/notifications/{notificationId}/read

Mark as read

Mark a notification as read

파라미터

NameInTypeDescription
notificationIdpathinteger<int64>필수Notification ID

응답

  • 200OKApiResponseVoid
get/app/profile

Get profile

Get current user profile

파라미터

파라미터 없음

응답

  • 200OKApiResponseUserProfileResponse
put/app/profile

Update profile

Update current user profile (nickname, etc.)

파라미터

파라미터 없음

요청 본문

application/jsonUserProfileUpdateRequest필수

응답

  • 200OKApiResponseUserProfileResponse
get/app/provisioning-steps/{supplierUuid}

Get provisioning steps

Get supplier's custom provisioning steps

파라미터

NameInTypeDescription
supplierUuidpathstring<uuid>필수Supplier UUID

응답

  • 200OKApiResponseListProvisioningStepResponse

schema 컴포넌트 상세는 Swagger UI 의 Schemas 섹션을 참조하세요.

미분류 endpoint (5)

아래 endpoint는 현재 어떤 그룹에도 매칭되지 않았습니다. 새로 추가된 endpoint인 경우 이 페이지의 분류 규칙(openapi.ts)을 보강해 주세요.

  • post /v1/ble/events
  • post /v1/ble/events/windowed
  • get /v1/test
  • get /v1/apps/{appReleaseUuid}/manifest
  • get /v1/agent/releases/latest