# Types

Use this page when you already know the operation you need and want the exact public data types returned by the Luxonis Hub
GraphQL control API. It covers the public object and connection types you are most likely to select directly in queries and
mutation results.

> **Reference scope**
> This page focuses on public object and connection types. For exhaustive SDL details such as enums, input objects, unions, and helper edge wrappers, continue to [Schema](https://docs.luxonis.com/cloud/api/reference/control-api/schema.md).

## About types

These types are the public output shapes you will most often encounter when working with `publicApp`, `publicApps`, and `team {
... }`.

Use this page to:

 * confirm the exact field names available on public objects
 * inspect the top-level shape of connection and detail wrapper types
 * link directly to one type from queries, mutations, or guides

Deprecated fields are intentionally omitted.

## App

Represents an app visible in the public or team-scoped catalog.

### Fields for `App`

 * `id` (`ID!`)
 * `identifier` (`String!`)
 * `isPublic` (`Boolean!`)
 * `scope` (`AppScope!`)
 * `coverImageUrl` (`String`)
 * `tags` (`[String!]`)
 * `stats` (`AppStats`)
 * `store` (`AppStore`)
 * `createdAt` (`DateTime!`)
 * `updatedAt` (`DateTime!`)

## AppConnection

Cursor-paginated list of apps.

### Fields for `AppConnection`

 * `nodes` (`[App!]!`)
 * `edges` (`[AppEdge!]!`)
 * `pageInfo` (`PageInfo!`)

## AppDetail

Detailed app view that combines the base app object with related frontend, release, screenshot, and viewer-specific data.

### Fields for `AppDetail`

 * `app` (`App!`)
 * `frontend` (`AppFrontend`)
 * `releases` (`AppReleaseConnection!`)
 * `screenshots` (`[AppScreenshot!]`)
 * `user` (`AppUser!`)

## AppFrontend

Frontend metadata for an app.

### Fields for `AppFrontend`

 * `frontendUrl` (`String!`)
 * `isFallback` (`Boolean!`)

## AppRelease

Basic metadata for one app release.

### Fields for `AppRelease`

 * `id` (`ID!`)
 * `appId` (`ID!`)
 * `version` (`String!`)
 * `isPublic` (`Boolean!`)
 * `createdAt` (`DateTime!`)
 * `updatedAt` (`DateTime!`)

## AppReleaseConnection

Cursor-paginated list of app releases.

### Fields for `AppReleaseConnection`

 * `nodes` (`[AppRelease!]!`)
 * `edges` (`[AppReleaseEdge!]!`)
 * `pageInfo` (`PageInfo!`)

## AppReleaseModel

Model metadata attached to an app release.

### Fields for `AppReleaseModel`

 * `modelId` (`ID!`)
 * `modelIdentifier` (`String!`)
 * `modelInstanceId` (`ID!`)
 * `modelVersionId` (`ID!`)

## AppReleaseStore

Store metadata attached to an app release.

### Fields for `AppReleaseStore`

 * `changelog` (`String!`)
 * `createdAt` (`DateTime!`)
 * `updatedAt` (`DateTime!`)

## AppReleaseWithDetail

Detailed app release view with model and store metadata.

### Fields for `AppReleaseWithDetail`

 * `id` (`ID!`)
 * `appId` (`ID!`)
 * `version` (`String!`)
 * `isPublic` (`Boolean!`)
 * `models` (`[AppReleaseModel!]`)
 * `store` (`AppReleaseStore`)
 * `createdAt` (`DateTime!`)
 * `updatedAt` (`DateTime!`)

## AppScreenshot

Screenshot metadata for an app listing.

### Fields for `AppScreenshot`

 * `appStoreMediaId` (`ID!`)
 * `order` (`Int!`)
 * `url` (`String!`)

## AppStats

Aggregated usage metrics for an app.

### Fields for `AppStats`

 * `downloadCount` (`Int!`)
 * `starCount` (`Int!`)

## AppStore

Store-facing metadata for an app.

### Fields for `AppStore`

 * `name` (`String`)
 * `descriptionShort` (`String`)
 * `descriptionLong` (`String`)
 * `sourceUrl` (`String`)

## AppUser

Viewer-specific app metadata.

### Fields for `AppUser`

 * `isStarred` (`Boolean!`)

## Device

Base metadata for a managed device.

### Fields for `Device`

 * `id` (`ID!`)
 * `name` (`String!`)
 * `kind` (`DeviceKind!`)
 * `status` (`DeviceStatus!`)
 * `architecture` (`DeviceArch!`)
 * `capabilities` (`[DeviceCapability!]!`)
 * `flags` (`[DeviceFlag!]!`)
 * `model` (`String`)
 * `normalizedModel` (`String`)
 * `platform` (`String`)
 * `serialNumber` (`String`)
 * `linuxId` (`String`)
 * `osRelease` (`DeviceOsRelease`)
 * `version` (`String`)
 * `lastContactAt` (`DateTime`)
 * `lastStatusChangeAt` (`DateTime`)

## DeviceApp

Base metadata for an app installed on a device.

### Fields for `DeviceApp`

 * `id` (`ID!`)
 * `identifier` (`String!`)
 * `localAppId` (`String!`)
 * `appVersion` (`String!`)
 * `enabled` (`Boolean`)
 * `frontendPort` (`Int`)
 * `isDev` (`Boolean!`)
 * `state` (`DeviceAppState!`)

## DeviceAppConnection

Cursor-paginated list of device apps for one device.

### Fields for `DeviceAppConnection`

 * `nodes` (`[DeviceApp!]!`)
 * `edges` (`[DeviceAppEdge!]!`)
 * `pageInfo` (`PageInfo!`)

## DeviceAppDetail

Detailed view of an installed device app and its related app metadata.

### Fields for `DeviceAppDetail`

 * `deviceApp` (`DeviceApp!`)
 * `app` (`AppDetail`)
 * `appRelease` (`AppRelease`)
 * `frontend` (`DeviceAppFrontend`)

## DeviceAppFailure

Failure details for a device app state.

### Fields for `DeviceAppFailure`

 * `code` (`Int`)
 * `message` (`String!`)

## DeviceAppFrontend

Frontend endpoint metadata for a device app.

### Fields for `DeviceAppFrontend`

 * `kind` (`DeviceAppFrontendKind!`)
 * `url` (`String!`)

## DeviceAppInstallation

Installation progress details for a device app.

### Fields for `DeviceAppInstallation`

 * `processing` (`Boolean!`)
 * `progress` (`Int`)

## DeviceAppState

Current runtime and update state for a device app.

### Fields for `DeviceAppState`

 * `status` (`DeviceAppStatus!`)
 * `failure` (`DeviceAppFailure`)
 * `installation` (`DeviceAppInstallation`)
 * `update` (`DeviceAppUpdate`)

## DeviceAppUpdate

Update progress details for a device app.

### Fields for `DeviceAppUpdate`

 * `appVersion` (`String!`)
 * `message` (`String`)
 * `progress` (`Int`)
 * `status` (`DeviceAppUpdateStatus!`)

## DeviceConnection

Cursor-paginated list of devices.

### Fields for `DeviceConnection`

 * `nodes` (`[Device!]!`)
 * `edges` (`[DeviceEdge!]!`)
 * `pageInfo` (`PageInfo!`)

## DeviceGroup

Metadata for one device group.

### Fields for `DeviceGroup`

 * `id` (`ID!`)
 * `name` (`String!`)
 * `createdAt` (`DateTime!`)
 * `updatedAt` (`DateTime!`)

## DeviceGroupConnection

Cursor-paginated list of device groups.

### Fields for `DeviceGroupConnection`

 * `nodes` (`[DeviceGroup!]!`)
 * `edges` (`[DeviceGroupEdge!]!`)
 * `pageInfo` (`PageInfo!`)

## DeviceNetworkInterface

Network interface details for a device.

### Fields for `DeviceNetworkInterface`

 * `interfaceName` (`String!`)
 * `ipv4Address` (`IpAddress`)
 * `ipv6Address` (`IpAddress`)
 * `macAddress` (`MacAddress`)
 * `otherIps` (`[IpAddress!]`)

## DeviceOsRelease

Operating system release metadata for a device.

### Fields for `DeviceOsRelease`

 * `id` (`Int!`)
 * `imageRev` (`String!`)
 * `versionId` (`String!`)
 * `buildId` (`String`)
 * `flavor` (`String`)
 * `name` (`String`)
 * `prettyName` (`String`)
 * `version` (`String`)

## DeviceUpgrade

OTA or upgrade record for a device.

### Fields for `DeviceUpgrade`

 * `status` (`DeviceUpgradeStatus!`)
 * `percentage` (`Int`)
 * `error` (`String`)
 * `stdout` (`String`)
 * `stderr` (`String`)
 * `startedByTeamMemberId` (`ID`)
 * `versionFrom` (`UUID`)
 * `versionTo` (`UUID`)
 * `startAt` (`DateTime`)
 * `endAt` (`DateTime`)
 * `createdAt` (`DateTime!`)
 * `updatedAt` (`DateTime!`)

## DeviceUpgradeConnection

Cursor-paginated list of device upgrade records.

### Fields for `DeviceUpgradeConnection`

 * `nodes` (`[DeviceUpgrade!]!`)
 * `edges` (`[DeviceUpgradeEdge!]!`)
 * `pageInfo` (`PageInfo!`)

## DeviceWithDetail

Detailed device view with network and upgrade metadata.

### Fields for `DeviceWithDetail`

 * `id` (`ID!`)
 * `name` (`String!`)
 * `kind` (`DeviceKind!`)
 * `status` (`DeviceStatus!`)
 * `architecture` (`DeviceArch!`)
 * `capabilities` (`[DeviceCapability!]!`)
 * `flags` (`[DeviceFlag!]!`)
 * `availableUpgrade` (`Firmware`)
 * `networkInterfaces` (`[DeviceNetworkInterface!]!`)
 * `model` (`String`)
 * `normalizedModel` (`String`)
 * `platform` (`String`)
 * `serialNumber` (`String`)
 * `linuxId` (`String`)
 * `osRelease` (`DeviceOsRelease`)
 * `version` (`String`)
 * `lastContactAt` (`DateTime`)
 * `lastStatusChangeAt` (`DateTime`)

## EventFile

Stored file attached to an event snap.

### Fields for `EventFile`

 * `id` (`ID!`)
 * `name` (`String!`)
 * `classification` (`EventFileClassification!`)
 * `mimeType` (`String!`)
 * `hash` (`String!`)
 * `size` (`Int!`)
 * `presignedUrl` (`String!`)

## EventSnap

Stored snap and its associated metadata.

### Fields for `EventSnap`

 * `id` (`ID!`)
 * `name` (`String!`)
 * `createdAt` (`DateTime!`)
 * `tags` (`[String!]!`)
 * `extras` (`JSONObject!`)
 * `files` (`[EventFile!]`)
 * `sourceAppIdentifier` (`String`)
 * `sourceDeviceId` (`ID`)
 * `sourceSerialNumber` (`String`)

## EventSnapConnection

Cursor-paginated list of event snaps.

### Fields for `EventSnapConnection`

 * `nodes` (`[EventSnap!]!`)
 * `edges` (`[EventSnapEdge!]!`)
 * `pageInfo` (`PageInfo!`)

## PageInfo

Pagination metadata shared by connection types.

### Fields for `PageInfo`

 * `hasNextPage` (`Boolean!`)
 * `hasPreviousPage` (`Boolean!`)
 * `startCursor` (`String`)
 * `endCursor` (`String`)

## TeamAdoptKey

Metadata for one adopt key.

### Fields for `TeamAdoptKey`

 * `id` (`ID!`)
 * `name` (`String!`)
 * `usesRemaining` (`Int!`)
 * `deleteWhenUnusable` (`Boolean!`)
 * `expiresAt` (`DateTime`)
 * `revokedAt` (`DateTime`)

## TeamAdoptKeyConnection

Cursor-paginated list of adopt keys.

### Fields for `TeamAdoptKeyConnection`

 * `nodes` (`[TeamAdoptKey!]!`)
 * `edges` (`[TeamAdoptKeyEdge!]!`)
 * `pageInfo` (`PageInfo!`)

## Related docs

### Schema

Inspect the live schema endpoint, SDL workflow, and introspection options.

[Schema](https://docs.luxonis.com/cloud/api/reference/control-api/schema.md)

### Queries

Switch to the exact public query field reference.

[Queries](https://docs.luxonis.com/cloud/api/reference/control-api/queries.md)

### Mutations

Switch to the exact public mutation field reference.

[Mutations](https://docs.luxonis.com/cloud/api/reference/control-api/mutations.md)

### About GraphQL

Return to request shape, authentication, and public API boundaries.

[About GraphQL](https://docs.luxonis.com/cloud/api/graphql.md)
