diff --git a/package.json b/package.json index 10086d7dc..fef608c91 100644 --- a/package.json +++ b/package.json @@ -117,6 +117,7 @@ "watch": "^1.0.2" }, "dependencies": { + "@balena/abstract-sql-to-typescript": "^5.0.1", "@balena/es-version": "^1.0.0", "@types/json-schema": "^7.0.9", "@types/node": "^18.19.50", diff --git a/src/types/models.ts b/src/types/models.ts index 6c88e4316..512ef2c09 100644 --- a/src/types/models.ts +++ b/src/types/models.ts @@ -1,3 +1,5 @@ +import type * as Model from './v7-model'; + import type { DeviceOverallStatus } from './device-overall-status'; export type { DeviceOverallStatus } from './device-overall-status'; import type { Contract } from './contract'; @@ -6,10 +8,16 @@ import type { OptionalNavigationResource, ReverseNavigationResource, ConceptTypeNavigationResource, - WebResource, } from '../../typings/pinejs-client-core'; import type { AnyObject } from '../../typings/utils'; +type KeysIncludingArray = { + [P in keyof T]-?: Extract extends never ? P : never; +}[keyof T]; +type OmitNav = { + [P in KeysIncludingArray]: T[P]; +}; + type JsonType = AnyObject; export interface ResourceTypeMap { @@ -77,15 +85,8 @@ export interface ResourceTypeMap { user_application_membership: ApplicationMembership; } -export interface Organization { - id: number; - created_at: string; - name: string; - handle: string; - has_past_due_invoice_since__date: string | null; - is_frozen: boolean; +export interface Organization extends OmitNav { is_using__billing_version: 'v1' | 'v2'; - logo_image: WebResource; application?: ReverseNavigationResource; /** includes__organization_membership */ @@ -97,19 +98,13 @@ export interface Organization { identity_provider_membership?: ReverseNavigationResource; } -export interface OrganizationCreditNotification { - id: number; - created_at: string; - is_sent_when_below__threshold: number; +export interface OrganizationCreditNotification + extends OmitNav { organization: NavigationResource; owns_credit_notification_for__feature: NavigationResource; } -export interface Team { - id: number; - created_at: string; - name: string; - +export interface Team extends OmitNav { belongs_to__organization: NavigationResource; /** includes__user */ @@ -118,16 +113,12 @@ export interface Team { team_application_access?: ReverseNavigationResource; } -export interface RecoveryTwoFactor { - id: number; - used_timestamp: string | null; - +export interface RecoveryTwoFactor + extends OmitNav { belongs_to__user: NavigationResource; } -export interface Actor { - id: number; - +export interface Actor extends OmitNav { is_of__user?: OptionalNavigationResource; is_of__application?: OptionalNavigationResource; is_of__device?: OptionalNavigationResource; @@ -135,11 +126,8 @@ export interface Actor { api_key?: OptionalNavigationResource; } -export interface User { - id: number; +export interface User extends OmitNav { actor: ConceptTypeNavigationResource; - created_at: string; - username: string; organization_membership?: ReverseNavigationResource; user_application_membership?: ReverseNavigationResource; @@ -149,75 +137,39 @@ export interface User { owns__saml_account?: ReverseNavigationResource; } -export interface UserProfile { - id: number; - email: string | null; - first_name: string | null; - last_name: string | null; - company: string; - account_type: string | null; - has_disabled_newsletter: boolean; - has_password_set: boolean; - must_be_verified: boolean; - is_verified: boolean; - +export interface UserProfile extends OmitNav { is_of__user: NavigationResource; } export type OrganizationMembershipRoles = 'administrator' | 'member'; -export interface OrganizationMembershipRole { - id: number; +export interface OrganizationMembershipRole + extends OmitNav { name: OrganizationMembershipRoles; } -export interface OrganizationMembership { - id: number; - created_at: string; - +export interface OrganizationMembership + extends OmitNav { user: NavigationResource; /** organization */ is_member_of__organization: NavigationResource; organization_membership_role: NavigationResource; - effective_seat_role: string; organization_membership_tag?: ReverseNavigationResource; } -export interface TeamMembership { - id: number; - created_at: string; - +export interface TeamMembership extends OmitNav { user: NavigationResource; /** team */ is_member_of__team: NavigationResource; } -export interface ApiKey { - id: number; - created_at: string; - name: string; - description: string | null; - expiry_date: string | null; - +export interface ApiKey extends OmitNav { is_of__actor: NavigationResource; } -export interface Application { - id: number; - created_at: string; - app_name: string; +export interface Application extends OmitNav { actor: ConceptTypeNavigationResource; - slug: string; - uuid: string; - is_accessible_by_support_until__date: string; - is_host: boolean; - should_track_latest_release: boolean; - is_public: boolean; - is_of__class: 'fleet' | 'block' | 'app'; - is_archived: boolean; - is_discoverable: boolean; - is_stored_at__repository_url: string | null; public_organization: OptionalNavigationResource; application_type: NavigationResource; is_for__device_type: NavigationResource; @@ -240,82 +192,60 @@ export interface Application { can_use__application_as_host?: ReverseNavigationResource; } -export interface UserHasDirectAccessToApplication { +export interface UserHasDirectAccessToApplication + extends OmitNav { user: NavigationResource; has_direct_access_to__application: NavigationResource; } -export interface PublicOrganization { - name: string; - handle: string; -} +export type PublicOrganization = OmitNav; -export interface PublicDevice { - latitude: string; - longitude: string; +export interface PublicDevice extends OmitNav { belongs_to__application: NavigationResource; is_of__device_type: NavigationResource; - was_recently_online: boolean; } -export interface Invitee { - id: number; - email: string; -} +export type Invitee = OmitNav; -export interface ApplicationInvite { - id: number; - message: string | null; +export interface ApplicationInvite + extends OmitNav { application_membership_role: NavigationResource; invitee: NavigationResource; is_invited_to__application: NavigationResource; } -export interface OrganizationInvite { - id: number; - message: string | null; +export interface OrganizationInvite + extends OmitNav { organization_membership_role: NavigationResource; invitee: NavigationResource; is_invited_to__organization: NavigationResource; } -export interface ApplicationType { - id: number; - name: string; - slug: string; - description: string | null; - /** @deprecated */ - supports_gateway_mode: boolean; - supports_multicontainer: boolean; - supports_web_url: boolean; - is_legacy: boolean; - requires_payment: boolean; - needs__os_version_range: string | null; - maximum_device_count: number | null; -} +export type ApplicationType = OmitNav; -export interface ApplicationHostedOnApplication { +export interface ApplicationHostedOnApplication + extends OmitNav { application: NavigationResource; can_use__application_as_host: NavigationResource; } export type ApplicationMembershipRoles = 'developer' | 'operator' | 'observer'; -export interface ApplicationMembershipRole { - id: number; +export interface ApplicationMembershipRole + extends OmitNav { name: ApplicationMembershipRoles; } -export interface ApplicationMembership { - id: number; +export interface ApplicationMembership + extends OmitNav { user: NavigationResource; /** application */ is_member_of__application: NavigationResource; application_membership_role: NavigationResource; } -export interface TeamApplicationAccess { - id: number; +export interface TeamApplicationAccess + extends OmitNav { team: NavigationResource; /** application */ grants_access_to__application: NavigationResource; @@ -342,39 +272,12 @@ export interface ReleaseVersion { prerelease: ReadonlyArray; } -export interface Release { - id: number; - created_at: string; - commit: string; +export interface Release extends OmitNav { composition: JsonType | null; contract: JsonType | null; status: ReleaseStatus; - source: string; - build_log: string | null; - is_invalidated: boolean; - start_timestamp: string; - update_timestamp: string; - end_timestamp: string | null; - phase: 'next' | 'current' | 'sunset' | 'end-of-life' | null; - /** @deprecated */ - release_version: string | null; - semver: string; - semver_major: number; - semver_minor: number; - semver_patch: number; - semver_prerelease: string; - semver_build: string; - variant: string; - revision: number | null; - known_issue_list: string | null; - /** This is a computed term */ - raw_version: string; /** This is a computed term */ version: ReleaseVersion; - is_final: boolean; - is_finalized_at__date: string | null; - note: string | null; - invalidation_reason: string | null; is_created_by__user: OptionalNavigationResource; belongs_to__application: NavigationResource; @@ -390,63 +293,10 @@ export interface Release { release_tag?: ReverseNavigationResource; } -export interface Device { - id: number; +export interface Device extends OmitNav { actor: ConceptTypeNavigationResource; - created_at: string; - modified_at: string; - custom_latitude: string | null; - custom_longitude: string | null; - device_name: string; - download_progress: number | null; - ip_address: string | null; - public_address: string | null; - mac_address: string | null; - is_accessible_by_support_until__date: string | null; - is_connected_to_vpn: boolean; - is_locked_until__date: string; - update_status: - | 'rejected' - | 'downloading' - | 'downloaded' - | 'applying changes' - | 'aborted' - | 'done' - | null; - last_update_status_event: string | null; - is_web_accessible: boolean; - is_active: boolean; - /** This is a computed term */ - is_frozen: boolean; - is_online: boolean; - last_connectivity_event: string | null; - last_vpn_event: string; - latitude: string | null; - local_id: string | null; - location: string | null; - longitude: string | null; - note: string; - os_variant: string | null; - os_version: string | null; - provisioning_progress: number | null; - provisioning_state: string; - status: string; - supervisor_version: string; - uuid: string; - api_heartbeat_state: 'online' | 'offline' | 'timeout' | 'unknown'; - memory_usage: number | null; - memory_total: number | null; - storage_block_device: string | null; - storage_usage: number | null; - storage_total: number | null; - cpu_usage: number | null; - cpu_temp: number | null; - cpu_id: string | null; - is_undervolted: boolean; /** This is a computed term */ overall_status: DeviceOverallStatus; - /** This is a computed term */ - overall_progress: number | null; is_of__device_type: NavigationResource; // the schema has this as a nullable, but for simplicity we have it as non-optional @@ -468,19 +318,12 @@ export interface Device { image_install?: ReverseNavigationResource; } -export interface CpuArchitecture { - id: number; - slug: string; - +export interface CpuArchitecture + extends OmitNav { is_supported_by__device_type?: ReverseNavigationResource; } -export interface DeviceType { - id: number; - slug: string; - name: string; - is_private: boolean; - logo: string | null; +export interface DeviceType extends OmitNav { contract: Contract | null; belongs_to__device_family: OptionalNavigationResource; is_default_for__application?: ReverseNavigationResource; @@ -490,119 +333,72 @@ export interface DeviceType { device_type_alias?: ReverseNavigationResource; } -export interface DeviceTypeAlias { - id: number; - is_referenced_by__alias: string; +export interface DeviceTypeAlias + extends OmitNav { references__device_type: NavigationResource; } -export interface DeviceFamily { - id: number; - slug: string; - name: string; +export interface DeviceFamily extends OmitNav { is_manufactured_by__device_manufacturer: OptionalNavigationResource; } -export interface DeviceManufacturer { - id: number; - slug: string; - name: string; -} +export type DeviceManufacturer = OmitNav; -export interface OrganizationPrivateDeviceTypeAccess { - id: number; +export interface OrganizationPrivateDeviceTypeAccess + extends OmitNav { organization: NavigationResource; has_private_access_to__device_type: NavigationResource; } -export interface ServiceInstance { - id: number; - ip_address: string; -} +export type ServiceInstance = OmitNav; -export interface Service { - id: number; - created_at: string; - service_name: string; +export interface Service extends OmitNav { application: NavigationResource; is_built_by__image?: ReverseNavigationResource; service_environment_variable?: ReverseNavigationResource; device_service_environment_variable?: ReverseNavigationResource; } -export interface IdentityProvider { - id: number; - sso_identifier: string; - entry_point: string; - issuer: string; - certificate: string; - requires_signed_authn_response: boolean; +export interface IdentityProvider + extends OmitNav { manages__saml_account?: ReverseNavigationResource; identity_provider_membership?: ReverseNavigationResource; } -export interface SamlAccount { - id: number; +export interface SamlAccount extends OmitNav { belongs_to__user: NavigationResource; was_generated_by__identity_provider: NavigationResource; - remote_id: string; - display_name: string | null; } -export interface IdentityProviderMembership { +export interface IdentityProviderMembership + extends OmitNav { is_authorized_by__identity_provider: NavigationResource; - id: number; grants_access_to__team: OptionalNavigationResource; authorizes__organization: NavigationResource; } -export interface Image { - id: number; - created_at: string; - build_log: string | null; +export interface Image extends OmitNav { contract: Contract | null; - content_hash: string | null; - project_type: string | null; - status: string; - is_stored_at__image_location: string; - start_timestamp: string; - end_timestamp: string | null; - push_timestamp: string | null; - image_size: string | null; - dockerfile: string; - error_message: string | null; is_a_build_of__service: NavigationResource; release_image?: ReverseNavigationResource; } -export interface ReleaseImage { - id: number; - created_at: string; +export interface ReleaseImage + extends OmitNav { image: NavigationResource; is_part_of__release: NavigationResource; } -export interface SSHKey { - title: string; - public_key: string; - id: number; - created_at: string; - +export interface SSHKey extends OmitNav { user: NavigationResource; } -export interface SocialServiceAccount { +export interface SocialServiceAccount + extends OmitNav { belongs_to__user: NavigationResource; - display_name: string | null; - provider: string; } -export interface ImageInstall { - id: number; - download_progress: number | null; - status: string; - install_date: string; - +export interface ImageInstall extends OmitNav { /** @deprecated Use `installs__image` instead. */ image: NavigationResource; installs__image: NavigationResource; @@ -610,8 +406,7 @@ export interface ImageInstall { is_provided_by__release: NavigationResource; } -export interface ServiceInstall { - id: number; +export interface ServiceInstall extends OmitNav { device: NavigationResource; /** service */ installs__service: NavigationResource; @@ -620,133 +415,100 @@ export interface ServiceInstall { device_service_environment_variable?: ReverseNavigationResource; } -export interface EnvironmentVariableBase { - id: number; - name: string; - value: string; -} +export type EnvironmentVariableBase = Pick< + Model.DeviceServiceEnvironmentVariable['Read'] & + Model.ServiceEnvironmentVariable['Read'] & + Model.DeviceEnvironmentVariable['Read'] & + Model.ApplicationEnvironmentVariable['Read'] & + Model.BuildEnvironmentVariable['Read'], + 'id' | 'name' | 'value' +>; export interface DeviceServiceEnvironmentVariable - extends EnvironmentVariableBase { + extends OmitNav { service_install: NavigationResource; } -export interface ServiceEnvironmentVariable extends EnvironmentVariableBase { +export interface ServiceEnvironmentVariable + extends OmitNav { service: NavigationResource; } -export interface DeviceVariable extends EnvironmentVariableBase { +export interface DeviceVariable + extends OmitNav { device: NavigationResource; } -export interface ApplicationVariable extends EnvironmentVariableBase { +export interface ApplicationVariable + extends OmitNav { application: NavigationResource; } -export interface BuildVariable extends EnvironmentVariableBase { +export interface BuildVariable + extends OmitNav { application: NavigationResource; } -export interface ResourceTagBase { - id: number; - tag_key: string; - value: string; -} +export type ResourceTagBase = Pick< + Model.ApplicationTag['Read'] & + Model.DeviceTag['Read'] & + Model.OrganizationMembershipTag['Read'] & + Model.ReleaseTag['Read'], + 'id' | 'tag_key' | 'value' +>; -export interface ApplicationTag extends ResourceTagBase { +export interface ApplicationTag extends OmitNav { application: NavigationResource; } -export interface DeviceTag extends ResourceTagBase { +export interface DeviceTag extends OmitNav { device: NavigationResource; } -export interface OrganizationMembershipTag extends ResourceTagBase { +export interface OrganizationMembershipTag + extends OmitNav { organization_membership: NavigationResource; } -export interface ReleaseTag extends ResourceTagBase { +export interface ReleaseTag extends OmitNav { release: NavigationResource; } -export interface CreditBundle { - id: number; - created_at: string; +export interface CreditBundle extends OmitNav { is_created_by__user: OptionalNavigationResource; - original_quantity: number; - total_balance: number; - total_cost: number; - payment_status: - | 'processing' - | 'paid' - | 'failed' - | 'complimentary' - | 'cancelled' - | 'refunded'; belongs_to__organization: NavigationResource; is_for__feature: NavigationResource; - is_associated_with__invoice_id: string | null; - error_message: string | null; } // Billing model -export interface Feature { - id: number; - title: string; - slug: string; - billing_code: string | null; +export interface Feature extends OmitNav { organization_credit_notification?: ReverseNavigationResource; } -export interface SupportFeature { - id: number; +export interface SupportFeature extends OmitNav { feature: ConceptTypeNavigationResource; support_tier: NavigationResource; } -export interface SupportTier { - id: number; - title: string; - slug: string; - includes_private_support: boolean; - includes__SLA: string | null; -} - -export interface Plan { - id: number; - title: string; - billing_code: string | null; - monthly_price: number; - annual_price: number; - can_self_serve: boolean; - is_legacy: boolean; - is_valid_from__date: string | null; - is_valid_until__date: string | null; +export type SupportTier = OmitNav; +export interface Plan extends OmitNav { plan_feature?: ReverseNavigationResource; offers__plan_addon?: ReverseNavigationResource; plan__has__discount_code?: ReverseNavigationResource; } -export interface PlanAddon { - id: number; - base_price: number; - can_self_serve: boolean; - bills_dynamically: boolean; - +export interface PlanAddon extends OmitNav { offers__feature: NavigationResource; } -export interface PlanDiscountCode { - id: number; - discount_code: string; +export interface PlanDiscountCode + extends OmitNav { plan: NavigationResource; } -export interface PlanFeature { - id: number; - quantity: number; +export interface PlanFeature extends OmitNav { provides__feature: NavigationResource; } @@ -760,14 +522,8 @@ export type SubscriptionBillingCycle = | 'quadrennial' | 'quinquennial'; -export interface Subscription { - id: number; - starts_on__date: string; - ends_on__date: string | null; - discount_percentage: number; +export interface Subscription extends OmitNav { billing_cycle: SubscriptionBillingCycle; - origin: string; - is_active: boolean; is_for__organization: NavigationResource; is_for__plan: NavigationResource; @@ -775,39 +531,25 @@ export interface Subscription { subscription_prepaid_addon?: ReverseNavigationResource; } -export interface SubscriptionPrepaidAddon { - id: number; - discount_percentage: number; - quantity: number; - starts_on__date: string; - expires_on__date: string | null; - +export interface SubscriptionPrepaidAddon + extends OmitNav { is_for__plan_addon: NavigationResource; is_for__subscription: NavigationResource; } -export interface SubscriptionAddonDiscount { - id: number; - discount_percentage: number; +export interface SubscriptionAddonDiscount + extends OmitNav { discounts__plan_addon: NavigationResource; } -export interface DeviceHistory { - created_at: string; - id: number; - end_timestamp: string | null; +export interface DeviceHistory extends OmitNav { is_created_by__actor: OptionalNavigationResource; is_ended_by__actor: OptionalNavigationResource; tracks__device: NavigationResource; tracks__actor: OptionalNavigationResource; - uuid: string | null; belongs_to__application: NavigationResource; - is_active: boolean; is_running__release: OptionalNavigationResource; should_be_running__release: OptionalNavigationResource; - os_version: string | null; - os_variant: string | null; - supervisor_version: string | null; is_of__device_type: OptionalNavigationResource; should_be_managed_by__release: OptionalNavigationResource; } diff --git a/src/types/v7-model.ts b/src/types/v7-model.ts new file mode 100644 index 000000000..b5e3178ef --- /dev/null +++ b/src/types/v7-model.ts @@ -0,0 +1,1879 @@ +// These types were generated by @balena/abstract-sql-to-typescript v5.0.1 + +import type { Types } from '@balena/abstract-sql-to-typescript'; + +export interface Actor { + Read: { + id: Types['Integer']['Read']; + is_of__user?: Array; + is_of__application?: Array; + is_of__device?: Array; + api_key?: Array; + }; + Write: Record; +} + +export interface User { + Read: { + created_at: Types['Date Time']['Read']; + id: Types['Integer']['Read']; + actor: { __id: Actor['Read']['id'] } | [Actor['Read']]; + username: Types['Short Text']['Read']; + has_legacy_link_to__organization: + | { __id: Organization['Read']['id'] } + | [Organization['Read']]; + user__has__public_key?: Array; + user_public_key?: Array; + user__is_member_of__organization?: Array; + organization_membership?: Array; + user__is_member_of__team?: Array; + team_membership?: Array; + user__is_member_of__application?: Array; + user_application_membership?: Array; + is_member_of__organization?: Array; + is_member_of__team?: Array; + is_member_of__application?: Array; + includes__user__is_member_of__organization?: Array< + OrganizationMembership['Read'] + >; + includes__organization_membership?: Array; + includes__user__is_member_of__application?: Array< + UserIsMemberOfApplication['Read'] + >; + includes__user_application_membership?: Array< + UserIsMemberOfApplication['Read'] + >; + creates__invitee__is_invited_to__application?: Array< + InviteeIsInvitedToApplication['Read'] + >; + creates__application_invite?: Array; + creates__invitee__is_invited_to__organization?: Array< + InviteeIsInvitedToOrganization['Read'] + >; + creates__organization_invite?: Array< + InviteeIsInvitedToOrganization['Read'] + >; + creates__release?: Array; + owns__social_service_account?: Array; + owns__device?: Array; + owns__recovery_two_factor?: Array; + owns__saml_account?: Array; + has_direct_access_to__application?: Array< + UserHasDirectAccessToApplication['Read'] + >; + user_profile?: Array; + }; + Write: Record; +} + +export interface ApiKey { + Read: { + created_at: Types['Date Time']['Read']; + id: Types['Integer']['Read']; + expiry_date: Types['Date Time']['Read'] | null; + is_of__actor: { __id: Actor['Read']['id'] } | [Actor['Read']]; + name: Types['Short Text']['Read'] | null; + description: Types['Text']['Read'] | null; + }; + Write: { + expiry_date: Types['Date Time']['Write'] | null; + name: Types['Short Text']['Write'] | null; + description: Types['Text']['Write'] | null; + }; +} + +export interface ApplicationType { + Read: { + id: Types['Integer']['Read']; + name: Types['Short Text']['Read']; + supports_web_url: Types['Boolean']['Read']; + supports_multicontainer: Types['Boolean']['Read']; + supports_gateway_mode: Types['Boolean']['Read']; + needs__os_version_range: Types['Short Text']['Read'] | null; + requires_payment: Types['Boolean']['Read']; + is_legacy: Types['Boolean']['Read']; + slug: Types['Short Text']['Read']; + description: Types['Text']['Read'] | null; + maximum_device_count: Types['Integer']['Read'] | null; + is_of__application?: Array; + }; + Write: Record; +} + +export interface CpuArchitecture { + Read: { + id: Types['Integer']['Read']; + slug: Types['Short Text']['Read']; + is_supported_by__device_type?: Array; + }; + Write: Record; +} + +export interface DeviceFamily { + Read: { + id: Types['Integer']['Read']; + slug: Types['Short Text']['Read']; + name: Types['Short Text']['Read']; + is_manufactured_by__device_manufacturer: + | { __id: DeviceManufacturer['Read']['id'] } + | [DeviceManufacturer['Read']] + | [] + | null; + device_type?: Array; + }; + Write: Record; +} + +export interface DeviceManufacturer { + Read: { + id: Types['Integer']['Read']; + slug: Types['Short Text']['Read']; + name: Types['Short Text']['Read']; + }; + Write: Record; +} + +export interface DeviceType { + Read: { + id: Types['Integer']['Read']; + slug: Types['Short Text']['Read']; + name: Types['Short Text']['Read']; + is_of__cpu_architecture: + | { __id: CpuArchitecture['Read']['id'] } + | [CpuArchitecture['Read']]; + logo: Types['Text']['Read'] | null; + contract: Types['JSON']['Read'] | null; + belongs_to__device_family: + | { __id: DeviceFamily['Read']['id'] } + | [DeviceFamily['Read']] + | [] + | null; + is_private: Types['Boolean']['Read']; + is_default_for__application?: Array; + describes__device?: Array; + describes__public_device?: Array; + device_type__is_referenced_by__alias?: Array; + device_type_alias?: Array; + is_referenced_by__alias?: Array; + is_accessible_privately_by__organization?: Array< + OrganizationHasPrivateAccessToDeviceType['Read'] + >; + device_history?: Array; + }; + Write: Record; +} + +export interface Image { + Read: { + created_at: Types['Date Time']['Read']; + id: Types['Integer']['Read']; + start_timestamp: Types['Date Time']['Read']; + end_timestamp: Types['Date Time']['Read'] | null; + dockerfile: Types['Text']['Read'] | null; + is_a_build_of__service: { __id: Service['Read']['id'] } | [Service['Read']]; + image_size: Types['Big Integer']['Read'] | null; + is_stored_at__image_location: Types['Short Text']['Read']; + project_type: Types['Short Text']['Read'] | null; + error_message: Types['Text']['Read'] | null; + build_log: Types['Text']['Read'] | null; + push_timestamp: Types['Date Time']['Read'] | null; + status: Types['Short Text']['Read']; + content_hash: Types['Short Text']['Read'] | null; + contract: Types['JSON']['Read'] | null; + device__installs__image?: Array; + image_install?: Array; + is_part_of__release?: Array; + image__is_part_of__release?: Array; + release_image?: Array; + is_a_build_of__application__has__service_name: + | { __id: Service['Read']['id'] } + | [Service['Read']]; + is__origin__of__delta?: Array; + is_produced_by__delta?: Array; + }; + Write: { + start_timestamp: Types['Date Time']['Write']; + end_timestamp: Types['Date Time']['Write'] | null; + dockerfile: Types['Text']['Write'] | null; + is_a_build_of__service: Types['Integer']['Write']; + image_size: Types['Big Integer']['Write'] | null; + is_stored_at__image_location: Types['Short Text']['Write']; + project_type: Types['Short Text']['Write'] | null; + error_message: Types['Text']['Write'] | null; + build_log: Types['Text']['Write'] | null; + push_timestamp: Types['Date Time']['Write'] | null; + status: Types['Short Text']['Write']; + content_hash: Types['Short Text']['Write'] | null; + contract: Types['JSON']['Write'] | null; + }; +} + +export interface Organization { + Read: { + created_at: Types['Date Time']['Read']; + id: Types['Integer']['Read']; + name: Types['Short Text']['Read']; + handle: Types['Short Text']['Read']; + company_name: Types['Text']['Read'] | null; + billing_account_code: Types['Short Text']['Read'] | null; + has_past_due_invoice_since__date: Types['Date Time']['Read'] | null; + is_frozen: Types['Boolean']['Read']; + industry: Types['Short Text']['Read'] | null; + website: Types['Text']['Read'] | null; + logo_image: Types['WebResource']['Read'] | null; + is_using__billing_version: Types['Text']['Read'] | null; + is_enforcing_saml_login: Types['Boolean']['Read']; + user__is_member_of__organization?: Array; + organization_membership?: Array; + includes__user?: Array; + includes__user__is_member_of__organization?: Array< + OrganizationMembership['Read'] + >; + includes__organization_membership?: Array; + includes__organization__is_authorized_by__identity_provider?: Array< + IdentityProviderMembership['Read'] + >; + includes__identity_provider_membership?: Array< + IdentityProviderMembership['Read'] + >; + organization__has_private_access_to__device_type?: Array< + OrganizationHasPrivateAccessToDeviceType['Read'] + >; + organization__owns_credit_notification_for__feature?: Array< + OrganizationCreditNotification['Read'] + >; + organization_credit_notification?: Array< + OrganizationCreditNotification['Read'] + >; + organization__is_authorized_by__identity_provider?: Array< + IdentityProviderMembership['Read'] + >; + identity_provider_membership?: Array; + application?: Array; + owns__team?: Array; + owns__credit_bundle?: Array; + invitee__is_invited_to__organization?: Array< + InviteeIsInvitedToOrganization['Read'] + >; + organization_invite?: Array; + invitee?: Array; + includes_legacy_link_to__user?: Array; + has_private_access_to__device_type?: Array< + OrganizationHasPrivateAccessToDeviceType['Read'] + >; + owns_credit_notification_for__feature?: Array< + OrganizationCreditNotification['Read'] + >; + subscription?: Array; + is_authorized_by__identity_provider?: Array< + IdentityProviderMembership['Read'] + >; + }; + Write: { + company_name: Types['Text']['Write'] | null; + industry: Types['Short Text']['Write'] | null; + website: Types['Text']['Write'] | null; + logo_image: Types['WebResource']['Write'] | null; + is_enforcing_saml_login: Types['Boolean']['Write']; + }; +} + +export interface ServiceInstance { + Read: { + id: Types['Integer']['Read']; + ip_address: Types['Short Text']['Read']; + manages__device?: Array; + }; + Write: Record; +} + +export interface Application { + Read: { + created_at: Types['Date Time']['Read']; + id: Types['Integer']['Read']; + actor: { __id: Actor['Read']['id'] } | [Actor['Read']]; + should_track_latest_release: Types['Boolean']['Read']; + is_of__class: 'fleet' | 'block' | 'app'; + organization: { __id: Organization['Read']['id'] } | [Organization['Read']]; + app_name: Types['Text']['Read']; + slug: Types['Short Text']['Read']; + is_for__device_type: + | { __id: DeviceType['Read']['id'] } + | [DeviceType['Read']]; + should_be_running__release: + | { __id: Release['Read']['id'] } + | [Release['Read']] + | [] + | null; + application_type: + | { __id: ApplicationType['Read']['id'] } + | [ApplicationType['Read']]; + is_host: Types['Boolean']['Read']; + is_archived: Types['Boolean']['Read']; + uuid: Types['Text']['Read']; + is_public: Types['Boolean']['Read']; + is_accessible_by_support_until__date: Types['Date Time']['Read'] | null; + is_discoverable: Types['Boolean']['Read']; + is_stored_at__repository_url: Types['Text']['Read'] | null; + application__has__env_var_name?: Array< + ApplicationEnvironmentVariable['Read'] + >; + application_environment_variable?: Array< + ApplicationEnvironmentVariable['Read'] + >; + application__has__config_var_name?: Array< + ApplicationConfigVariable['Read'] + >; + application_config_variable?: Array; + application__has__service_name?: Array; + service?: Array; + application__has__tag_key?: Array; + application_tag?: Array; + application__has__domain?: Array; + application_domain_mapping?: Array; + application__has__build_var_name?: Array; + build_environment_variable?: Array; + owns__device?: Array; + owns__release?: Array; + owns__public_device?: Array; + team__grants_access_to__application?: Array; + team_application_access?: Array; + is_accessible_by__team?: Array; + user__is_member_of__application?: Array; + user_application_membership?: Array; + includes__user?: Array; + includes__user__is_member_of__application?: Array< + UserIsMemberOfApplication['Read'] + >; + includes__user_application_membership?: Array< + UserIsMemberOfApplication['Read'] + >; + invitee__is_invited_to__application?: Array< + InviteeIsInvitedToApplication['Read'] + >; + application_invite?: Array; + invitee?: Array; + is_directly_accessible_by__user?: Array< + UserHasDirectAccessToApplication['Read'] + >; + can_use__application_as_host?: Array< + ApplicationCanUseApplicationAsHost['Read'] + >; + }; + Write: { + should_track_latest_release: Types['Boolean']['Write']; + is_of__class: 'fleet' | 'block' | 'app'; + organization: Types['Integer']['Write']; + app_name: Types['Text']['Write']; + slug: Types['Short Text']['Write']; + is_for__device_type: Types['Integer']['Write']; + should_be_running__release: Types['Integer']['Write'] | null; + application_type: Types['Integer']['Write']; + is_archived: Types['Boolean']['Write']; + uuid: Types['Text']['Write']; + is_public: Types['Boolean']['Write']; + is_accessible_by_support_until__date: Types['Date Time']['Write'] | null; + is_stored_at__repository_url: Types['Text']['Write'] | null; + }; +} + +export interface ApplicationEnvironmentVariable { + Read: { + created_at: Types['Date Time']['Read']; + application: { __id: Application['Read']['id'] } | [Application['Read']]; + name: Types['Short Text']['Read']; + id: Types['Integer']['Read']; + value: Types['Text']['Read']; + }; + Write: { + application: Types['Integer']['Write']; + name: Types['Short Text']['Write']; + value: Types['Text']['Write']; + }; +} + +export interface ApplicationConfigVariable { + Read: { + application: { __id: Application['Read']['id'] } | [Application['Read']]; + name: Types['Short Text']['Read']; + id: Types['Integer']['Read']; + value: Types['Text']['Read']; + }; + Write: { + application: Types['Integer']['Write']; + name: Types['Short Text']['Write']; + value: Types['Text']['Write']; + }; +} + +export interface Service { + Read: { + created_at: Types['Date Time']['Read']; + application: { __id: Application['Read']['id'] } | [Application['Read']]; + service_name: Types['Short Text']['Read']; + id: Types['Integer']['Read']; + application__has__service_name__has__label_name?: Array< + ServiceLabel['Read'] + >; + service__has__label_name?: Array; + service_label?: Array; + application__has__service_name__has__name?: Array< + ServiceEnvironmentVariable['Read'] + >; + service__has__name?: Array; + service_environment_variable?: Array; + device__installs__application__has__service_name?: Array< + ServiceInstall['Read'] + >; + device__installs__service?: Array; + service_install?: Array; + is_built_by__image?: Array; + }; + Write: { + application: Types['Integer']['Write']; + service_name: Types['Short Text']['Write']; + }; +} + +export interface ServiceLabel { + Read: { + created_at: Types['Date Time']['Read']; + service: { __id: Service['Read']['id'] } | [Service['Read']]; + label_name: Types['Short Text']['Read']; + id: Types['Integer']['Read']; + value: Types['Text']['Read']; + application__has__service_name: + | { __id: Service['Read']['id'] } + | [Service['Read']]; + }; + Write: { + service: Types['Integer']['Write']; + label_name: Types['Short Text']['Write']; + value: Types['Text']['Write']; + }; +} + +export interface ServiceEnvironmentVariable { + Read: { + created_at: Types['Date Time']['Read']; + service: { __id: Service['Read']['id'] } | [Service['Read']]; + name: Types['Short Text']['Read']; + id: Types['Integer']['Read']; + value: Types['Text']['Read']; + application__has__service_name: + | { __id: Service['Read']['id'] } + | [Service['Read']]; + }; + Write: { + service: Types['Integer']['Write']; + name: Types['Short Text']['Write']; + value: Types['Text']['Write']; + }; +} + +export interface ApplicationTag { + Read: { + application: { __id: Application['Read']['id'] } | [Application['Read']]; + tag_key: Types['Short Text']['Read']; + id: Types['Integer']['Read']; + value: Types['Text']['Read']; + }; + Write: { + application: Types['Integer']['Write']; + tag_key: Types['Short Text']['Write']; + value: Types['Text']['Write']; + }; +} + +export interface Device { + Read: { + created_at: Types['Date Time']['Read']; + modified_at: Types['Date Time']['Read']; + id: Types['Integer']['Read']; + actor: { __id: Actor['Read']['id'] } | [Actor['Read']]; + api_heartbeat_state: 'online' | 'offline' | 'timeout' | 'unknown'; + changed_api_heartbeat_state_on__date: Types['Date Time']['Read'] | null; + uuid: Types['Text']['Read']; + local_id: Types['Short Text']['Read'] | null; + device_name: Types['Short Text']['Read']; + note: Types['Text']['Read'] | null; + is_of__device_type: + | { __id: DeviceType['Read']['id'] } + | [DeviceType['Read']]; + belongs_to__application: + | { __id: Application['Read']['id'] } + | [Application['Read']] + | [] + | null; + is_online: Types['Boolean']['Read']; + last_connectivity_event: Types['Date Time']['Read'] | null; + is_connected_to_vpn: Types['Boolean']['Read']; + last_vpn_event: Types['Date Time']['Read'] | null; + is_locked_until__date: Types['Date Time']['Read'] | null; + public_address: Types['Short Text']['Read'] | null; + ip_address: Types['Short Text']['Read'] | null; + mac_address: Types['Short Text']['Read'] | null; + is_web_accessible: Types['Boolean']['Read']; + memory_usage: Types['Integer']['Read'] | null; + memory_total: Types['Integer']['Read'] | null; + storage_block_device: Types['Short Text']['Read'] | null; + storage_usage: Types['Integer']['Read'] | null; + storage_total: Types['Integer']['Read'] | null; + cpu_usage: Types['Integer']['Read'] | null; + cpu_temp: Types['Integer']['Read'] | null; + is_undervolted: Types['Boolean']['Read']; + cpu_id: Types['Short Text']['Read'] | null; + is_running__release: + | { __id: Release['Read']['id'] } + | [Release['Read']] + | [] + | null; + download_progress: Types['Integer']['Read'] | null; + status: Types['Short Text']['Read'] | null; + os_version: Types['Short Text']['Read'] | null; + os_variant: Types['Short Text']['Read'] | null; + overall_status: Types['Short Text']['Read']; + overall_progress: Types['Integer']['Read'] | null; + supervisor_version: Types['Short Text']['Read'] | null; + provisioning_progress: Types['Integer']['Read'] | null; + provisioning_state: Types['Short Text']['Read'] | null; + is_managed_by__service_instance: + | { __id: ServiceInstance['Read']['id'] } + | [ServiceInstance['Read']] + | [] + | null; + is_pinned_on__release: + | { __id: Release['Read']['id'] } + | [Release['Read']] + | [] + | null; + should_be_running__release: + | { __id: Release['Read']['id'] } + | [Release['Read']] + | [] + | null; + should_be_operated_by__release: + | { __id: Release['Read']['id'] } + | [Release['Read']] + | [] + | null; + should_be_managed_by__release: + | { __id: Release['Read']['id'] } + | [Release['Read']] + | [] + | null; + update_status: + | 'rejected' + | 'downloading' + | 'downloaded' + | 'applying changes' + | 'aborted' + | 'done' + | null; + last_update_status_event: Types['Date Time']['Read'] | null; + belongs_to__user: { __id: User['Read']['id'] } | [User['Read']] | [] | null; + latitude: Types['Short Text']['Read'] | null; + longitude: Types['Short Text']['Read'] | null; + custom_latitude: Types['Short Text']['Read'] | null; + custom_longitude: Types['Short Text']['Read'] | null; + location: Types['Text']['Read'] | null; + is_accessible_by_support_until__date: Types['Date Time']['Read'] | null; + is_active: Types['Boolean']['Read']; + is_frozen: Types['Boolean']['Read']; + device__has__env_var_name?: Array; + device_environment_variable?: Array; + device__has__config_var_name?: Array; + device_config_variable?: Array; + device__has__tag_key?: Array; + device_tag?: Array; + device__has__fqdn?: Array; + device_domain_mapping?: Array; + device__installs__image?: Array; + image_install?: Array; + device__installs__application__has__service_name?: Array< + ServiceInstall['Read'] + >; + device__installs__service?: Array; + service_install?: Array; + installs__image?: Array; + installs__application__has__service_name?: Array; + installs__service?: Array; + }; + Write: { + uuid: Types['Text']['Write']; + local_id: Types['Short Text']['Write'] | null; + device_name: Types['Short Text']['Write']; + note: Types['Text']['Write'] | null; + is_of__device_type: Types['Integer']['Write']; + belongs_to__application: Types['Integer']['Write'] | null; + is_online: Types['Boolean']['Write']; + last_connectivity_event: Types['Date Time']['Write'] | null; + is_locked_until__date: Types['Date Time']['Write'] | null; + public_address: Types['Short Text']['Write'] | null; + ip_address: Types['Short Text']['Write'] | null; + mac_address: Types['Short Text']['Write'] | null; + is_web_accessible: Types['Boolean']['Write']; + memory_usage: Types['Integer']['Write'] | null; + memory_total: Types['Integer']['Write'] | null; + storage_block_device: Types['Short Text']['Write'] | null; + storage_usage: Types['Integer']['Write'] | null; + storage_total: Types['Integer']['Write'] | null; + cpu_usage: Types['Integer']['Write'] | null; + cpu_temp: Types['Integer']['Write'] | null; + is_undervolted: Types['Boolean']['Write']; + cpu_id: Types['Short Text']['Write'] | null; + is_running__release: Types['Integer']['Write'] | null; + download_progress: Types['Integer']['Write'] | null; + status: Types['Short Text']['Write'] | null; + os_version: Types['Short Text']['Write'] | null; + os_variant: Types['Short Text']['Write'] | null; + supervisor_version: Types['Short Text']['Write'] | null; + provisioning_progress: Types['Integer']['Write'] | null; + provisioning_state: Types['Short Text']['Write'] | null; + is_managed_by__service_instance: Types['Integer']['Write'] | null; + is_pinned_on__release: Types['Integer']['Write'] | null; + should_be_operated_by__release: Types['Integer']['Write'] | null; + should_be_managed_by__release: Types['Integer']['Write'] | null; + update_status: + | 'rejected' + | 'downloading' + | 'downloaded' + | 'applying changes' + | 'aborted' + | 'done' + | null; + last_update_status_event: Types['Date Time']['Write'] | null; + belongs_to__user: Types['Integer']['Write'] | null; + custom_latitude: Types['Short Text']['Write'] | null; + custom_longitude: Types['Short Text']['Write'] | null; + is_accessible_by_support_until__date: Types['Date Time']['Write'] | null; + is_active: Types['Boolean']['Write']; + }; +} + +export interface DeviceEnvironmentVariable { + Read: { + created_at: Types['Date Time']['Read']; + device: { __id: Device['Read']['id'] } | [Device['Read']]; + name: Types['Short Text']['Read']; + id: Types['Integer']['Read']; + value: Types['Text']['Read']; + }; + Write: { + device: Types['Integer']['Write']; + name: Types['Short Text']['Write']; + value: Types['Text']['Write']; + }; +} + +export interface DeviceConfigVariable { + Read: { + device: { __id: Device['Read']['id'] } | [Device['Read']]; + name: Types['Short Text']['Read']; + id: Types['Integer']['Read']; + value: Types['Text']['Read']; + }; + Write: { + device: Types['Integer']['Write']; + name: Types['Short Text']['Write']; + value: Types['Text']['Write']; + }; +} + +export interface ImageInstall { + Read: { + device: { __id: Device['Read']['id'] } | [Device['Read']]; + installs__image: { __id: Image['Read']['id'] } | [Image['Read']]; + id: Types['Integer']['Read']; + install_date: Types['Date Time']['Read']; + download_progress: Types['Integer']['Read'] | null; + status: Types['Short Text']['Read']; + is_provided_by__release: + | { __id: Release['Read']['id'] } + | [Release['Read']]; + image: { __id: Image['Read']['id'] } | [Image['Read']]; + }; + Write: { + device: Types['Integer']['Write']; + installs__image: Types['Integer']['Write']; + install_date: Types['Date Time']['Write']; + download_progress: Types['Integer']['Write'] | null; + status: Types['Short Text']['Write']; + is_provided_by__release: Types['Integer']['Write']; + }; +} + +export interface ServiceInstall { + Read: { + created_at: Types['Date Time']['Read']; + device: { __id: Device['Read']['id'] } | [Device['Read']]; + installs__service: { __id: Service['Read']['id'] } | [Service['Read']]; + id: Types['Integer']['Read']; + device__installs__application__has__service_name__has__name?: Array< + DeviceServiceEnvironmentVariable['Read'] + >; + device__installs__service__has__name?: Array< + DeviceServiceEnvironmentVariable['Read'] + >; + device__installs__service_environment_variable?: Array< + DeviceServiceEnvironmentVariable['Read'] + >; + service_install__has__name?: Array< + DeviceServiceEnvironmentVariable['Read'] + >; + device_service_environment_variable?: Array< + DeviceServiceEnvironmentVariable['Read'] + >; + application__has__service_name: + | { __id: Service['Read']['id'] } + | [Service['Read']]; + service: { __id: Service['Read']['id'] } | [Service['Read']]; + installs__application__has__service_name: + | { __id: Service['Read']['id'] } + | [Service['Read']]; + }; + Write: { + device: Types['Integer']['Write']; + installs__service: Types['Integer']['Write']; + }; +} + +export interface DeviceServiceEnvironmentVariable { + Read: { + created_at: Types['Date Time']['Read']; + service_install: + | { __id: ServiceInstall['Read']['id'] } + | [ServiceInstall['Read']]; + name: Types['Short Text']['Read']; + id: Types['Integer']['Read']; + value: Types['Text']['Read']; + device__installs__application__has__service_name: + | { __id: ServiceInstall['Read']['id'] } + | [ServiceInstall['Read']]; + device__installs__service: + | { __id: ServiceInstall['Read']['id'] } + | [ServiceInstall['Read']]; + }; + Write: { + service_install: Types['Integer']['Write']; + name: Types['Short Text']['Write']; + value: Types['Text']['Write']; + }; +} + +export interface DeviceTag { + Read: { + device: { __id: Device['Read']['id'] } | [Device['Read']]; + tag_key: Types['Short Text']['Read']; + id: Types['Integer']['Read']; + value: Types['Text']['Read']; + }; + Write: { + device: Types['Integer']['Write']; + tag_key: Types['Short Text']['Write']; + value: Types['Text']['Write']; + }; +} + +export interface Release { + Read: { + created_at: Types['Date Time']['Read']; + id: Types['Integer']['Read']; + belongs_to__application: + | { __id: Application['Read']['id'] } + | [Application['Read']]; + commit: Types['Short Text']['Read']; + composition: Types['JSON']['Read']; + status: Types['Short Text']['Read']; + source: Types['Short Text']['Read']; + build_log: Types['Text']['Read'] | null; + is_invalidated: Types['Boolean']['Read']; + start_timestamp: Types['Date Time']['Read']; + end_timestamp: Types['Date Time']['Read'] | null; + update_timestamp: Types['Date Time']['Read']; + release_version: Types['Short Text']['Read'] | null; + contract: Types['JSON']['Read'] | null; + is_passing_tests: Types['Boolean']['Read']; + is_finalized_at__date: Types['Date Time']['Read'] | null; + phase: 'next' | 'current' | 'sunset' | 'end-of-life' | null; + is_final: Types['Boolean']['Read']; + semver: Types['Short Text']['Read']; + semver_major: Types['Integer']['Read']; + semver_minor: Types['Integer']['Read']; + semver_patch: Types['Integer']['Read']; + semver_prerelease: Types['Short Text']['Read']; + semver_build: Types['Short Text']['Read']; + variant: Types['Short Text']['Read']; + revision: Types['Integer']['Read'] | null; + raw_version: Types['Short Text']['Read']; + version: Types['JSON']['Read']; + known_issue_list: Types['Text']['Read'] | null; + note: Types['Text']['Read'] | null; + invalidation_reason: Types['Text']['Read'] | null; + is_created_by__user: + | { __id: User['Read']['id'] } + | [User['Read']] + | [] + | null; + release__has__tag_key?: Array; + release_tag?: Array; + image__is_part_of__release?: Array; + release_image?: Array; + contains__image?: Array; + should_be_running_on__application?: Array; + should_be_running_on__device?: Array; + is_running_on__device?: Array; + is_pinned_to__device?: Array; + should_operate__device?: Array; + should_manage__device?: Array; + provides__device__installs__image?: Array; + provides__image_install?: Array; + }; + Write: { + belongs_to__application: Types['Integer']['Write']; + commit: Types['Short Text']['Write']; + composition: Types['JSON']['Write']; + status: Types['Short Text']['Write']; + source: Types['Short Text']['Write']; + build_log: Types['Text']['Write'] | null; + is_invalidated: Types['Boolean']['Write']; + start_timestamp: Types['Date Time']['Write']; + end_timestamp: Types['Date Time']['Write'] | null; + update_timestamp: Types['Date Time']['Write']; + release_version: Types['Short Text']['Write'] | null; + contract: Types['JSON']['Write'] | null; + is_passing_tests: Types['Boolean']['Write']; + phase: 'next' | 'current' | 'sunset' | 'end-of-life' | null; + is_final: Types['Boolean']['Write']; + semver: Types['Short Text']['Write']; + semver_major: Types['Integer']['Write']; + semver_minor: Types['Integer']['Write']; + semver_patch: Types['Integer']['Write']; + semver_prerelease: Types['Short Text']['Write']; + semver_build: Types['Short Text']['Write']; + variant: Types['Short Text']['Write']; + known_issue_list: Types['Text']['Write'] | null; + note: Types['Text']['Write'] | null; + invalidation_reason: Types['Text']['Write'] | null; + is_created_by__user: Types['Integer']['Write'] | null; + }; +} + +export interface ReleaseTag { + Read: { + release: { __id: Release['Read']['id'] } | [Release['Read']]; + tag_key: Types['Short Text']['Read']; + id: Types['Integer']['Read']; + value: Types['Text']['Read']; + }; + Write: { + release: Types['Integer']['Write']; + tag_key: Types['Short Text']['Write']; + value: Types['Text']['Write']; + }; +} + +export interface ImageIsPartOfRelease { + Read: { + created_at: Types['Date Time']['Read']; + image: { __id: Image['Read']['id'] } | [Image['Read']]; + is_part_of__release: { __id: Release['Read']['id'] } | [Release['Read']]; + id: Types['Integer']['Read']; + image__is_part_of__release__has__label_name?: Array; + release_image__has__label_name?: Array; + image_label?: Array; + image__is_part_of__release__has__name?: Array< + ImageEnvironmentVariable['Read'] + >; + release_image__has__name?: Array; + image_environment_variable?: Array; + release: { __id: Release['Read']['id'] } | [Release['Read']]; + contains__image: { __id: Image['Read']['id'] } | [Image['Read']]; + }; + Write: { + image: Types['Integer']['Write']; + is_part_of__release: Types['Integer']['Write']; + }; +} + +export interface ImageLabel { + Read: { + created_at: Types['Date Time']['Read']; + release_image: + | { __id: ImageIsPartOfRelease['Read']['id'] } + | [ImageIsPartOfRelease['Read']]; + label_name: Types['Short Text']['Read']; + id: Types['Integer']['Read']; + value: Types['Text']['Read']; + image__is_part_of__release: + | { __id: ImageIsPartOfRelease['Read']['id'] } + | [ImageIsPartOfRelease['Read']]; + }; + Write: { + release_image: Types['Integer']['Write']; + label_name: Types['Short Text']['Write']; + value: Types['Text']['Write']; + }; +} + +export interface ImageEnvironmentVariable { + Read: { + created_at: Types['Date Time']['Read']; + release_image: + | { __id: ImageIsPartOfRelease['Read']['id'] } + | [ImageIsPartOfRelease['Read']]; + name: Types['Short Text']['Read']; + id: Types['Integer']['Read']; + value: Types['Text']['Read']; + image__is_part_of__release: + | { __id: ImageIsPartOfRelease['Read']['id'] } + | [ImageIsPartOfRelease['Read']]; + }; + Write: { + release_image: Types['Integer']['Write']; + name: Types['Short Text']['Write']; + value: Types['Text']['Write']; + }; +} + +export interface OrganizationMembership { + Read: { + created_at: Types['Date Time']['Read']; + user: { __id: User['Read']['id'] } | [User['Read']]; + is_member_of__organization: + | { __id: Organization['Read']['id'] } + | [Organization['Read']]; + id: Types['Integer']['Read']; + organization_membership_role: + | { __id: OrganizationMembershipRole['Read']['id'] } + | [OrganizationMembershipRole['Read']]; + effective_seat_role: Types['Short Text']['Read']; + user__is_member_of__organization__has__tag_key?: Array< + OrganizationMembershipTag['Read'] + >; + organization_membership__has__tag_key?: Array< + OrganizationMembershipTag['Read'] + >; + organization_membership_tag?: Array; + organization: { __id: Organization['Read']['id'] } | [Organization['Read']]; + includes__user: { __id: User['Read']['id'] } | [User['Read']]; + }; + Write: { + user: Types['Integer']['Write']; + is_member_of__organization: Types['Integer']['Write']; + organization_membership_role: Types['Integer']['Write']; + }; +} + +export interface UserHasPublicKey { + Read: { + created_at: Types['Date Time']['Read']; + user: { __id: User['Read']['id'] } | [User['Read']]; + public_key: Types['Text']['Read']; + id: Types['Integer']['Read']; + title: Types['Short Text']['Read']; + }; + Write: { + user: Types['Integer']['Write']; + public_key: Types['Text']['Write']; + title: Types['Short Text']['Write']; + }; +} + +export interface DeviceTypeAlias { + Read: { + device_type: { __id: DeviceType['Read']['id'] } | [DeviceType['Read']]; + is_referenced_by__alias: Types['Short Text']['Read']; + id: Types['Integer']['Read']; + }; + Write: Record; +} + +export interface ApplicationMembershipRole { + Read: { + id: Types['Integer']['Read']; + name: Types['Short Text']['Read']; + is_of__team__grants_access_to__application?: Array< + TeamApplicationAccess['Read'] + >; + is_of__team_application_access?: Array; + is_of__invitee__is_invited_to__application?: Array< + InviteeIsInvitedToApplication['Read'] + >; + is_of__application_invite?: Array; + is_of__user__is_member_of__application?: Array< + UserIsMemberOfApplication['Read'] + >; + is_of__user_application_membership?: Array< + UserIsMemberOfApplication['Read'] + >; + }; + Write: Record; +} + +export interface CreditBundle { + Read: { + created_at: Types['Date Time']['Read']; + modified_at: Types['Date Time']['Read']; + id: Types['Integer']['Read']; + payment_status: + | 'processing' + | 'paid' + | 'failed' + | 'complimentary' + | 'cancelled' + | 'refunded' + | 'manually invoiced'; + is_created_by__user: { __id: User['Read']['id'] } | [User['Read']]; + is_for__feature: { __id: Feature['Read']['id'] } | [Feature['Read']]; + belongs_to__organization: + | { __id: Organization['Read']['id'] } + | [Organization['Read']]; + unit_cost: Types['Integer']['Read']; + original_quantity: Types['Integer']['Read']; + available_balance: Types['Integer']['Read']; + total_cost: Types['Integer']['Read']; + total_balance: Types['Integer']['Read']; + expires_on__date: Types['Date Time']['Read']; + is_associated_with__invoice_id: Types['Short Text']['Read'] | null; + error_message: Types['Text']['Read'] | null; + }; + Write: { + is_for__feature: Types['Integer']['Write']; + belongs_to__organization: Types['Integer']['Write']; + original_quantity: Types['Integer']['Write']; + }; +} + +export interface Delta { + Read: { + created_at: Types['Date Time']['Read']; + id: Types['Integer']['Read']; + originates_from__image: + | { __id: Image['Read']['id'] } + | [Image['Read']] + | [] + | null; + produces__image: { __id: Image['Read']['id'] } | [Image['Read']]; + version: Types['Integer']['Read']; + status: Types['Short Text']['Read']; + error_message: Types['Text']['Read'] | null; + is_stored_at__location: Types['Text']['Read'] | null; + size: Types['Big Integer']['Read'] | null; + update_timestamp: Types['Date Time']['Read']; + end_timestamp: Types['Date Time']['Read'] | null; + }; + Write: { + created_at: Types['Date Time']['Write']; + originates_from__image: Types['Integer']['Write'] | null; + produces__image: Types['Integer']['Write']; + version: Types['Integer']['Write']; + status: Types['Short Text']['Write']; + error_message: Types['Text']['Write'] | null; + is_stored_at__location: Types['Text']['Write'] | null; + size: Types['Big Integer']['Write'] | null; + update_timestamp: Types['Date Time']['Write']; + end_timestamp: Types['Date Time']['Write'] | null; + }; +} + +export interface Feature { + Read: { + id: Types['Integer']['Read']; + title: Types['Short Text']['Read']; + slug: Types['Short Text']['Read']; + billing_code: Types['Short Text']['Read'] | null; + is_of__support_feature?: Array; + organization__owns_credit_notification_for__feature?: Array< + OrganizationCreditNotification['Read'] + >; + organization_credit_notification?: Array< + OrganizationCreditNotification['Read'] + >; + plan__provides__feature?: Array; + plan_feature?: Array; + plan__offers__feature?: Array; + plan_addon?: Array; + is_offered_by__plan?: Array; + }; + Write: Record; +} + +export interface OauthApplication { + Read: { + id: Types['Integer']['Read']; + name: Types['Short Text']['Read']; + client_id: Types['Short Text']['Read']; + redirect_uri: Types['Short Text']['Read']; + description: Types['Text']['Read'] | null; + oauth_application_authorization?: Array< + OauthApplicationAuthorization['Read'] + >; + }; + Write: Record; +} + +export interface OauthApplicationAuthorization { + Read: { + id: Types['Integer']['Read']; + belongs_to__user: { __id: User['Read']['id'] } | [User['Read']]; + is_for__oauth_application: + | { __id: OauthApplication['Read']['id'] } + | [OauthApplication['Read']]; + }; + Write: { + id: Types['Integer']['Write']; + belongs_to__user: Types['Integer']['Write']; + is_for__oauth_application: Types['Integer']['Write']; + }; +} + +export interface OrganizationMembershipRole { + Read: { + id: Types['Integer']['Read']; + name: Types['Short Text']['Read']; + is_of__user__is_member_of__organization?: Array< + OrganizationMembership['Read'] + >; + is_of__organization_membership?: Array; + is_of__invitee__is_invited_to__organization?: Array< + InviteeIsInvitedToOrganization['Read'] + >; + is_of__organization_invite?: Array; + }; + Write: Record; +} + +export interface Plan { + Read: { + id: Types['Integer']['Read']; + title: Types['Short Text']['Read']; + billing_code: Types['Short Text']['Read'] | null; + monthly_price: Types['Integer']['Read']; + annual_price: Types['Integer']['Read']; + can_self_serve: Types['Boolean']['Read']; + is_legacy: Types['Boolean']['Read']; + is_valid_from__date: Types['Date Time']['Read'] | null; + is_valid_until__date: Types['Date Time']['Read'] | null; + plan__has__discount_code?: Array; + subscription?: Array; + }; + Write: Record; +} + +export interface RecoveryTwoFactor { + Read: { + id: Types['Integer']['Read']; + used_timestamp: Types['Date Time']['Read'] | null; + belongs_to__user: { __id: User['Read']['id'] } | [User['Read']]; + }; + Write: Record; +} + +export interface SocialServiceAccount { + Read: { + belongs_to__user: { __id: User['Read']['id'] } | [User['Read']]; + provider: Types['Short Text']['Read']; + display_name: Types['Short Text']['Read'] | null; + }; + Write: Record; +} + +export interface Subscription { + Read: { + id: Types['Integer']['Read']; + is_for__plan: { __id: Plan['Read']['id'] } | [Plan['Read']]; + is_for__organization: + | { __id: Organization['Read']['id'] } + | [Organization['Read']]; + billing_cycle: Types['Short Text']['Read']; + starts_on__date: Types['Date Time']['Read']; + ends_on__date: Types['Date Time']['Read'] | null; + is_active: Types['Boolean']['Read']; + discount_percentage: Types['Real']['Read']; + origin: Types['Short Text']['Read']; + subscription__discounts__plan__offers__feature?: Array< + SubscriptionDiscountsPlanAddon['Read'] + >; + subscription__discounts__plan_addon?: Array< + SubscriptionDiscountsPlanAddon['Read'] + >; + subscription_addon_discount?: Array; + discounts__plan__offers__feature?: Array< + SubscriptionDiscountsPlanAddon['Read'] + >; + discounts__plan_addon?: Array; + subscription_prepaid_addon?: Array; + }; + Write: { + is_for__plan: Types['Integer']['Write']; + is_for__organization: Types['Integer']['Write']; + billing_cycle: Types['Short Text']['Write']; + starts_on__date: Types['Date Time']['Write']; + ends_on__date: Types['Date Time']['Write'] | null; + discount_percentage: Types['Real']['Write']; + origin: Types['Short Text']['Write']; + }; +} + +export interface SubscriptionPrepaidAddon { + Read: { + id: Types['Integer']['Read']; + is_for__subscription: + | { __id: Subscription['Read']['id'] } + | [Subscription['Read']]; + is_for__plan_addon: { __id: PlanAddon['Read']['id'] } | [PlanAddon['Read']]; + discount_percentage: Types['Real']['Read']; + quantity: Types['Integer']['Read']; + starts_on__date: Types['Date Time']['Read']; + expires_on__date: Types['Date Time']['Read'] | null; + is_for__plan__offers__feature: + | { __id: PlanAddon['Read']['id'] } + | [PlanAddon['Read']]; + }; + Write: Record; +} + +export interface SupportTier { + Read: { + id: Types['Integer']['Read']; + title: Types['Short Text']['Read']; + slug: Types['Short Text']['Read']; + includes_private_support: Types['Boolean']['Read']; + includes__SLA: Types['Short Text']['Read'] | null; + is_of__support_feature?: Array; + }; + Write: Record; +} + +export interface Team { + Read: { + created_at: Types['Date Time']['Read']; + id: Types['Integer']['Read']; + belongs_to__organization: + | { __id: Organization['Read']['id'] } + | [Organization['Read']]; + name: Types['Short Text']['Read']; + description: Types['Text']['Read'] | null; + team__grants_access_to__application?: Array; + team_application_access?: Array; + grants_access_to__application?: Array; + user__is_member_of__team?: Array; + team_membership?: Array; + includes__user?: Array; + }; + Write: { + belongs_to__organization: Types['Integer']['Write']; + name: Types['Short Text']['Write']; + description: Types['Text']['Write'] | null; + }; +} + +export interface Invitee { + Read: { + id: Types['Integer']['Read']; + email: Types['Text']['Read']; + is_invited_to__application?: Array; + is_invited_to__organization?: Array; + invitee__is_invited_to__application?: Array< + InviteeIsInvitedToApplication['Read'] + >; + application_invite?: Array; + invitee__is_invited_to__organization?: Array< + InviteeIsInvitedToOrganization['Read'] + >; + organization_invite?: Array; + includes__invitee__is_invited_to__application?: Array< + InviteeIsInvitedToApplication['Read'] + >; + includes__application_invite?: Array; + includes__invitee__is_invited_to__organization?: Array< + InviteeIsInvitedToOrganization['Read'] + >; + includes__organization_invite?: Array< + InviteeIsInvitedToOrganization['Read'] + >; + }; + Write: { + email: Types['Text']['Write']; + }; +} + +export interface SupportFeature { + Read: { + id: Types['Integer']['Read']; + feature: { __id: Feature['Read']['id'] } | [Feature['Read']]; + support_tier: { __id: SupportTier['Read']['id'] } | [SupportTier['Read']]; + }; + Write: Record; +} + +export interface TeamApplicationAccess { + Read: { + created_at: Types['Date Time']['Read']; + team: { __id: Team['Read']['id'] } | [Team['Read']]; + grants_access_to__application: + | { __id: Application['Read']['id'] } + | [Application['Read']]; + id: Types['Integer']['Read']; + application_membership_role: + | { __id: ApplicationMembershipRole['Read']['id'] } + | [ApplicationMembershipRole['Read']]; + application: { __id: Application['Read']['id'] } | [Application['Read']]; + is_accessible_by__team: { __id: Team['Read']['id'] } | [Team['Read']]; + }; + Write: { + team: Types['Integer']['Write']; + grants_access_to__application: Types['Integer']['Write']; + application_membership_role: Types['Integer']['Write']; + }; +} + +export interface TeamMembership { + Read: { + created_at: Types['Date Time']['Read']; + user: { __id: User['Read']['id'] } | [User['Read']]; + is_member_of__team: { __id: Team['Read']['id'] } | [Team['Read']]; + id: Types['Integer']['Read']; + team: { __id: Team['Read']['id'] } | [Team['Read']]; + includes__user: { __id: User['Read']['id'] } | [User['Read']]; + }; + Write: { + user: Types['Integer']['Write']; + is_member_of__team: Types['Integer']['Write']; + }; +} + +export interface UserIsMemberOfApplication { + Read: { + user: { __id: User['Read']['id'] } | [User['Read']]; + is_member_of__application: + | { __id: Application['Read']['id'] } + | [Application['Read']]; + id: Types['Integer']['Read']; + application_membership_role: + | { __id: ApplicationMembershipRole['Read']['id'] } + | [ApplicationMembershipRole['Read']]; + application: { __id: Application['Read']['id'] } | [Application['Read']]; + includes__user: { __id: User['Read']['id'] } | [User['Read']]; + }; + Write: { + user: Types['Integer']['Write']; + is_member_of__application: Types['Integer']['Write']; + application_membership_role: Types['Integer']['Write']; + }; +} + +export interface InviteeIsInvitedToApplication { + Read: { + invitee: { __id: Invitee['Read']['id'] } | [Invitee['Read']]; + is_invited_to__application: + | { __id: Application['Read']['id'] } + | [Application['Read']]; + id: Types['Integer']['Read']; + application_membership_role: + | { __id: ApplicationMembershipRole['Read']['id'] } + | [ApplicationMembershipRole['Read']]; + message: Types['Text']['Read'] | null; + is_created_by__user: + | { __id: User['Read']['id'] } + | [User['Read']] + | [] + | null; + application: { __id: Application['Read']['id'] } | [Application['Read']]; + }; + Write: { + invitee: Types['Integer']['Write']; + is_invited_to__application: Types['Integer']['Write']; + application_membership_role: Types['Integer']['Write']; + message: Types['Text']['Write'] | null; + }; +} + +export interface InviteeIsInvitedToOrganization { + Read: { + invitee: { __id: Invitee['Read']['id'] } | [Invitee['Read']]; + is_invited_to__organization: + | { __id: Organization['Read']['id'] } + | [Organization['Read']]; + id: Types['Integer']['Read']; + organization_membership_role: + | { __id: OrganizationMembershipRole['Read']['id'] } + | [OrganizationMembershipRole['Read']]; + message: Types['Text']['Read'] | null; + is_created_by__user: + | { __id: User['Read']['id'] } + | [User['Read']] + | [] + | null; + organization: { __id: Organization['Read']['id'] } | [Organization['Read']]; + }; + Write: { + invitee: Types['Integer']['Write']; + is_invited_to__organization: Types['Integer']['Write']; + organization_membership_role: Types['Integer']['Write']; + message: Types['Text']['Write'] | null; + }; +} + +export interface DeviceDomainMapping { + Read: { + created_at: Types['Date Time']['Read']; + device: { __id: Device['Read']['id'] } | [Device['Read']]; + fqdn: Types['Text']['Read']; + id: Types['Integer']['Read']; + }; + Write: { + device: Types['Integer']['Write']; + fqdn: Types['Text']['Write']; + }; +} + +export interface ApplicationDomainMapping { + Read: { + created_at: Types['Date Time']['Read']; + application: { __id: Application['Read']['id'] } | [Application['Read']]; + domain: Types['Text']['Read']; + id: Types['Integer']['Read']; + }; + Write: { + application: Types['Integer']['Write']; + domain: Types['Text']['Write']; + }; +} + +export interface BuildEnvironmentVariable { + Read: { + created_at: Types['Date Time']['Read']; + application: { __id: Application['Read']['id'] } | [Application['Read']]; + name: Types['Short Text']['Read']; + id: Types['Integer']['Read']; + value: Types['Text']['Read']; + }; + Write: { + application: Types['Integer']['Write']; + name: Types['Short Text']['Write']; + value: Types['Text']['Write']; + }; +} + +export interface OrganizationHasPrivateAccessToDeviceType { + Read: { + organization: { __id: Organization['Read']['id'] } | [Organization['Read']]; + has_private_access_to__device_type: + | { __id: DeviceType['Read']['id'] } + | [DeviceType['Read']]; + id: Types['Integer']['Read']; + device_type: { __id: DeviceType['Read']['id'] } | [DeviceType['Read']]; + is_accessible_privately_by__organization: + | { __id: Organization['Read']['id'] } + | [Organization['Read']]; + }; + Write: Record; +} + +export interface OrganizationMembershipTag { + Read: { + organization_membership: + | { __id: OrganizationMembership['Read']['id'] } + | [OrganizationMembership['Read']]; + tag_key: Types['Short Text']['Read']; + id: Types['Integer']['Read']; + value: Types['Text']['Read']; + user__is_member_of__organization: + | { __id: OrganizationMembership['Read']['id'] } + | [OrganizationMembership['Read']]; + }; + Write: { + organization_membership: Types['Integer']['Write']; + tag_key: Types['Short Text']['Write']; + value: Types['Text']['Write']; + }; +} + +export interface OrganizationCreditNotification { + Read: { + created_at: Types['Date Time']['Read']; + organization: { __id: Organization['Read']['id'] } | [Organization['Read']]; + owns_credit_notification_for__feature: + | { __id: Feature['Read']['id'] } + | [Feature['Read']]; + id: Types['Integer']['Read']; + is_sent_when_below__threshold: Types['Integer']['Read']; + feature: { __id: Feature['Read']['id'] } | [Feature['Read']]; + }; + Write: { + organization: Types['Integer']['Write']; + owns_credit_notification_for__feature: Types['Integer']['Write']; + is_sent_when_below__threshold: Types['Integer']['Write']; + }; +} + +export interface PlanHasDiscountCode { + Read: { + plan: { __id: Plan['Read']['id'] } | [Plan['Read']]; + discount_code: Types['Short Text']['Read']; + id: Types['Integer']['Read']; + }; + Write: Record; +} + +export interface PlanFeature { + Read: { + plan: { __id: Plan['Read']['id'] } | [Plan['Read']]; + provides__feature: { __id: Feature['Read']['id'] } | [Feature['Read']]; + id: Types['Integer']['Read']; + quantity: Types['Integer']['Read']; + feature: { __id: Feature['Read']['id'] } | [Feature['Read']]; + }; + Write: Record; +} + +export interface PlanAddon { + Read: { + plan: { __id: Plan['Read']['id'] } | [Plan['Read']]; + offers__feature: { __id: Feature['Read']['id'] } | [Feature['Read']]; + id: Types['Integer']['Read']; + base_price: Types['Integer']['Read']; + can_self_serve: Types['Boolean']['Read']; + bills_dynamically: Types['Boolean']['Read']; + feature: { __id: Feature['Read']['id'] } | [Feature['Read']]; + is_offered_by__plan: { __id: Plan['Read']['id'] } | [Plan['Read']]; + subscription__discounts__plan__offers__feature?: Array< + SubscriptionDiscountsPlanAddon['Read'] + >; + subscription__discounts__plan_addon?: Array< + SubscriptionDiscountsPlanAddon['Read'] + >; + subscription_addon_discount?: Array; + }; + Write: Record; +} + +export interface SubscriptionDiscountsPlanAddon { + Read: { + subscription: { __id: Subscription['Read']['id'] } | [Subscription['Read']]; + discounts__plan_addon: + | { __id: PlanAddon['Read']['id'] } + | [PlanAddon['Read']]; + id: Types['Integer']['Read']; + discount_percentage: Types['Real']['Read']; + plan__offers__feature: + | { __id: PlanAddon['Read']['id'] } + | [PlanAddon['Read']]; + plan_addon: { __id: PlanAddon['Read']['id'] } | [PlanAddon['Read']]; + discounts__plan__offers__feature: + | { __id: PlanAddon['Read']['id'] } + | [PlanAddon['Read']]; + }; + Write: Record; +} + +export interface PublicDevice { + Read: { + is_of__device_type: + | { __id: DeviceType['Read']['id'] } + | [DeviceType['Read']]; + belongs_to__application: + | { __id: Application['Read']['id'] } + | [Application['Read']] + | [] + | null; + latitude: Types['Short Text']['Read'] | null; + longitude: Types['Short Text']['Read'] | null; + was_recently_online: Types['Boolean']['Read']; + }; + Write: Record; +} + +export interface IdentityProvider { + Read: { + id: Types['Integer']['Read']; + sso_identifier: Types['Short Text']['Read']; + entry_point: Types['Text']['Read']; + issuer: Types['Text']['Read']; + certificate: Types['Text']['Read']; + requires_signed_authn_response: Types['Boolean']['Read']; + organization__is_authorized_by__identity_provider?: Array< + IdentityProviderMembership['Read'] + >; + identity_provider_membership?: Array; + authorizes__organization?: Array; + authorizes__organization__is_authorized_by__identity_provider?: Array< + IdentityProviderMembership['Read'] + >; + authorizes__identity_provider_membership?: Array< + IdentityProviderMembership['Read'] + >; + }; + Write: { + sso_identifier: Types['Short Text']['Write']; + entry_point: Types['Text']['Write']; + issuer: Types['Text']['Write']; + certificate: Types['Text']['Write']; + requires_signed_authn_response: Types['Boolean']['Write']; + }; +} + +export interface SamlAccount { + Read: { + id: Types['Integer']['Read']; + belongs_to__user: { __id: User['Read']['id'] } | [User['Read']]; + was_generated_by__identity_provider: + | { __id: IdentityProvider['Read']['id'] } + | [IdentityProvider['Read']]; + remote_id: Types['Short Text']['Read']; + display_name: Types['Short Text']['Read'] | null; + }; + Write: Record; +} + +export interface IdentityProviderMembership { + Read: { + organization: { __id: Organization['Read']['id'] } | [Organization['Read']]; + is_authorized_by__identity_provider: + | { __id: IdentityProvider['Read']['id'] } + | [IdentityProvider['Read']]; + id: Types['Integer']['Read']; + grants_access_to__team: + | { __id: Team['Read']['id'] } + | [Team['Read']] + | [] + | null; + identity_provider: + | { __id: IdentityProvider['Read']['id'] } + | [IdentityProvider['Read']]; + authorizes__organization: + | { __id: Organization['Read']['id'] } + | [Organization['Read']]; + }; + Write: { + organization: Types['Integer']['Write']; + is_authorized_by__identity_provider: Types['Integer']['Write']; + grants_access_to__team: Types['Integer']['Write'] | null; + }; +} + +export interface DeviceHistory { + Read: { + created_at: Types['Date Time']['Read']; + id: Types['Integer']['Read']; + end_timestamp: Types['Date Time']['Read'] | null; + is_created_by__actor: + | { __id: Actor['Read']['id'] } + | [Actor['Read']] + | [] + | null; + is_ended_by__actor: + | { __id: Actor['Read']['id'] } + | [Actor['Read']] + | [] + | null; + tracks__device: + | { __id: Device['Read']['id'] } + | [Device['Read']] + | [] + | null; + tracks__actor: { __id: Actor['Read']['id'] } | [Actor['Read']] | [] | null; + uuid: Types['Text']['Read'] | null; + belongs_to__application: + | { __id: Application['Read']['id'] } + | [Application['Read']] + | [] + | null; + is_active: Types['Boolean']['Read']; + is_running__release: + | { __id: Release['Read']['id'] } + | [Release['Read']] + | [] + | null; + is_pinned_on__release: + | { __id: Release['Read']['id'] } + | [Release['Read']] + | [] + | null; + is_managed_by__service_instance: + | { __id: ServiceInstance['Read']['id'] } + | [ServiceInstance['Read']] + | [] + | null; + os_version: Types['Short Text']['Read'] | null; + os_variant: Types['Short Text']['Read'] | null; + supervisor_version: Types['Short Text']['Read'] | null; + is_of__device_type: + | { __id: DeviceType['Read']['id'] } + | [DeviceType['Read']] + | [] + | null; + should_be_managed_by__release: + | { __id: Release['Read']['id'] } + | [Release['Read']] + | [] + | null; + }; + Write: Record; +} + +export interface UserHasDirectAccessToApplication { + Read: { + user: { __id: User['Read']['id'] } | [User['Read']]; + has_direct_access_to__application: + | { __id: Application['Read']['id'] } + | [Application['Read']]; + application: { __id: Application['Read']['id'] } | [Application['Read']]; + is_directly_accessible_by__user: + | { __id: User['Read']['id'] } + | [User['Read']]; + }; + Write: Record; +} + +export interface ApplicationCanUseApplicationAsHost { + Read: { + application: { __id: Application['Read']['id'] } | [Application['Read']]; + can_use__application_as_host: + | { __id: Application['Read']['id'] } + | [Application['Read']]; + }; + Write: Record; +} + +export interface PublicOrganization { + Read: { + name: Types['Short Text']['Read']; + handle: Types['Short Text']['Read']; + application?: Array; + owns__team?: Array; + owns__credit_bundle?: Array; + includes_legacy_link_to__user?: Array; + subscription?: Array; + }; + Write: Record; +} + +export interface UserProfile { + Read: { + id: Types['Integer']['Read']; + is_of__user: { __id: User['Read']['id'] } | [User['Read']]; + email: Types['Text']['Read'] | null; + has_disabled_newsletter: Types['Boolean']['Read']; + is_verified: Types['Boolean']['Read']; + must_be_verified: Types['Boolean']['Read']; + first_name: Types['Text']['Read'] | null; + last_name: Types['Text']['Read'] | null; + account_type: Types['Text']['Read'] | null; + has_password_set: Types['Boolean']['Read']; + company: Types['Text']['Read'] | null; + }; + Write: Record; +} + +export default interface $Model { + actor: Actor; + user: User; + api_key: ApiKey; + application_type: ApplicationType; + cpu_architecture: CpuArchitecture; + device_family: DeviceFamily; + device_manufacturer: DeviceManufacturer; + device_type: DeviceType; + image: Image; + organization: Organization; + service_instance: ServiceInstance; + application: Application; + application__has__env_var_name: ApplicationEnvironmentVariable; + application__has__config_var_name: ApplicationConfigVariable; + application__has__service_name: Service; + application__has__service_name__has__label_name: ServiceLabel; + application__has__service_name__has__name: ServiceEnvironmentVariable; + application__has__tag_key: ApplicationTag; + device: Device; + device__has__env_var_name: DeviceEnvironmentVariable; + device__has__config_var_name: DeviceConfigVariable; + device__installs__image: ImageInstall; + device__installs__application__has__service_name: ServiceInstall; + device__installs__application__has__service_name__has__name: DeviceServiceEnvironmentVariable; + device__has__tag_key: DeviceTag; + release: Release; + release__has__tag_key: ReleaseTag; + image__is_part_of__release: ImageIsPartOfRelease; + image__is_part_of__release__has__label_name: ImageLabel; + image__is_part_of__release__has__name: ImageEnvironmentVariable; + user__is_member_of__organization: OrganizationMembership; + user__has__public_key: UserHasPublicKey; + device_type__is_referenced_by__alias: DeviceTypeAlias; + application_membership_role: ApplicationMembershipRole; + credit_bundle: CreditBundle; + delta: Delta; + feature: Feature; + oauth_application: OauthApplication; + oauth_application_authorization: OauthApplicationAuthorization; + organization_membership_role: OrganizationMembershipRole; + plan: Plan; + recovery_two_factor: RecoveryTwoFactor; + social_service_account: SocialServiceAccount; + subscription: Subscription; + subscription_prepaid_addon: SubscriptionPrepaidAddon; + support_tier: SupportTier; + team: Team; + invitee: Invitee; + support_feature: SupportFeature; + team__grants_access_to__application: TeamApplicationAccess; + user__is_member_of__team: TeamMembership; + user__is_member_of__application: UserIsMemberOfApplication; + invitee__is_invited_to__application: InviteeIsInvitedToApplication; + invitee__is_invited_to__organization: InviteeIsInvitedToOrganization; + device__has__fqdn: DeviceDomainMapping; + application__has__domain: ApplicationDomainMapping; + application__has__build_var_name: BuildEnvironmentVariable; + organization__has_private_access_to__device_type: OrganizationHasPrivateAccessToDeviceType; + user__is_member_of__organization__has__tag_key: OrganizationMembershipTag; + organization__owns_credit_notification_for__feature: OrganizationCreditNotification; + plan__has__discount_code: PlanHasDiscountCode; + plan__provides__feature: PlanFeature; + plan__offers__feature: PlanAddon; + subscription__discounts__plan__offers__feature: SubscriptionDiscountsPlanAddon; + public_device: PublicDevice; + identity_provider: IdentityProvider; + saml_account: SamlAccount; + organization__is_authorized_by__identity_provider: IdentityProviderMembership; + device_history: DeviceHistory; + user__has_direct_access_to__application: UserHasDirectAccessToApplication; + application__can_use__application_as_host: ApplicationCanUseApplicationAsHost; + public_organization: PublicOrganization; + user_profile: UserProfile; + // Synonyms + application_environment_variable: ApplicationEnvironmentVariable; + application_config_variable: ApplicationConfigVariable; + service: Service; + service_label: ServiceLabel; + service_environment_variable: ServiceEnvironmentVariable; + application_tag: ApplicationTag; + device_environment_variable: DeviceEnvironmentVariable; + device_config_variable: DeviceConfigVariable; + image_install: ImageInstall; + service_install: ServiceInstall; + device_service_environment_variable: DeviceServiceEnvironmentVariable; + device_tag: DeviceTag; + release_tag: ReleaseTag; + release_image: ImageIsPartOfRelease; + image_label: ImageLabel; + image_environment_variable: ImageEnvironmentVariable; + organization_membership: OrganizationMembership; + user_public_key: UserHasPublicKey; + device_type_alias: DeviceTypeAlias; + team_application_access: TeamApplicationAccess; + team_membership: TeamMembership; + user_application_membership: UserIsMemberOfApplication; + application_invite: InviteeIsInvitedToApplication; + organization_invite: InviteeIsInvitedToOrganization; + device_domain_mapping: DeviceDomainMapping; + application_domain_mapping: ApplicationDomainMapping; + build_environment_variable: BuildEnvironmentVariable; + organization_membership_tag: OrganizationMembershipTag; + organization_credit_notification: OrganizationCreditNotification; + plan_feature: PlanFeature; + plan_addon: PlanAddon; + subscription_addon_discount: SubscriptionDiscountsPlanAddon; + identity_provider_membership: IdentityProviderMembership; +}