balena-sdk
Version:
The Balena JavaScript SDK
672 lines (671 loc) • 25.2 kB
TypeScript
import type { DeviceOverallStatus } from './device-overall-status';
export type { DeviceOverallStatus } from './device-overall-status';
import type { Contract } from './contract';
import type { NavigationResource, OptionalNavigationResource, ReverseNavigationResource, ConceptTypeNavigationResource, WebResource } from '../../typings/pinejs-client-core';
import type { AnyObject } from '../../typings/utils';
type JsonType = AnyObject;
export interface ResourceTypeMap {
actor: Actor;
api_key: ApiKey;
application: Application;
application__can_use__application_as_host: ApplicationHostedOnApplication;
application_config_variable: ApplicationVariable;
application_environment_variable: ApplicationVariable;
application_membership_role: ApplicationMembershipRole;
application_tag: ApplicationTag;
application_type: ApplicationType;
build_environment_variable: BuildVariable;
cpu_architecture: CpuArchitecture;
credit_bundle: CreditBundle;
device: Device;
device_config_variable: DeviceVariable;
device_environment_variable: DeviceVariable;
device_history: DeviceHistory;
device_service_environment_variable: DeviceServiceEnvironmentVariable;
device_tag: DeviceTag;
device_type: DeviceType;
device_type_alias: DeviceTypeAlias;
feature: Feature;
image: Image;
image_install: ImageInstall;
identity_provider: IdentityProvider;
identity_provider_membership: IdentityProviderMembership;
invitee: Invitee;
invitee__is_invited_to__application: ApplicationInvite;
invitee__is_invited_to__organization: OrganizationInvite;
organization: Organization;
organization__has_private_access_to__device_type: OrganizationPrivateDeviceTypeAccess;
organization_credit_notification: OrganizationCreditNotification;
organization_membership: OrganizationMembership;
organization_membership_role: OrganizationMembershipRole;
organization_membership_tag: OrganizationMembershipTag;
plan: Plan;
plan__has__discount_code: PlanDiscountCode;
plan_addon: PlanAddon;
plan_feature: PlanFeature;
public_organization: PublicOrganization;
public_device: PublicDevice;
recovery_two_factor: RecoveryTwoFactor;
release: Release;
release_tag: ReleaseTag;
saml_account: SamlAccount;
service: Service;
service_environment_variable: ServiceEnvironmentVariable;
service_install: ServiceInstall;
service_instance: ServiceInstance;
social_service_account: SocialServiceAccount;
subscription: Subscription;
subscription_addon_discount: SubscriptionAddonDiscount;
subscription_prepaid_addon: SubscriptionPrepaidAddon;
support_feature: SupportFeature;
support_tier: SupportTier;
team: Team;
team_application_access: TeamApplicationAccess;
team_membership: TeamMembership;
user: User;
user_profile: UserProfile;
user__has__public_key: SSHKey;
user__has_direct_access_to__application: UserHasDirectAccessToApplication;
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;
is_using__billing_version: 'v1' | 'v2';
logo_image: WebResource;
application?: ReverseNavigationResource<Application>;
/** includes__organization_membership */
organization_membership?: ReverseNavigationResource<OrganizationMembership>;
owns__credit_bundle?: ReverseNavigationResource<CreditBundle>;
owns__team?: ReverseNavigationResource<Team>;
organization__has_private_access_to__device_type?: ReverseNavigationResource<OrganizationPrivateDeviceTypeAccess>;
organization_credit_notification?: ReverseNavigationResource<OrganizationCreditNotification>;
identity_provider_membership?: ReverseNavigationResource<IdentityProviderMembership>;
}
export interface OrganizationCreditNotification {
id: number;
created_at: string;
is_sent_when_below__threshold: number;
organization: NavigationResource<Organization>;
owns_credit_notification_for__feature: NavigationResource<Feature>;
}
export interface Team {
id: number;
created_at: string;
name: string;
belongs_to__organization: NavigationResource<Organization>;
/** includes__user */
team_membership?: ReverseNavigationResource<TeamMembership>;
/** grants_access_to__application */
team_application_access?: ReverseNavigationResource<TeamApplicationAccess>;
}
export interface RecoveryTwoFactor {
id: number;
used_timestamp: string | null;
belongs_to__user: NavigationResource<User>;
}
export interface Actor {
id: number;
is_of__user?: OptionalNavigationResource<User>;
is_of__application?: OptionalNavigationResource<Application>;
is_of__device?: OptionalNavigationResource<Device>;
is_of__public_device?: OptionalNavigationResource<PublicDevice>;
api_key?: OptionalNavigationResource<ApiKey>;
}
export interface User {
id: number;
actor: ConceptTypeNavigationResource<Actor>;
created_at: string;
username: string;
organization_membership?: ReverseNavigationResource<OrganizationMembership>;
user_application_membership?: ReverseNavigationResource<ApplicationMembership>;
team_membership?: ReverseNavigationResource<TeamMembership>;
has_direct_access_to__application?: ReverseNavigationResource<Application>;
user_profile?: ReverseNavigationResource<UserProfile>;
owns__social_service_account?: ReverseNavigationResource<SocialServiceAccount>;
owns__saml_account?: ReverseNavigationResource<SamlAccount>;
}
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;
is_of__user: NavigationResource<User>;
}
export type OrganizationMembershipRoles = 'administrator' | 'member';
export interface OrganizationMembershipRole {
id: number;
name: OrganizationMembershipRoles;
}
export interface OrganizationMembership {
id: number;
created_at: string;
user: NavigationResource<User>;
/** organization */
is_member_of__organization: NavigationResource<Organization>;
organization_membership_role: NavigationResource<OrganizationMembershipRole>;
effective_seat_role: string;
organization_membership_tag?: ReverseNavigationResource<OrganizationMembershipTag>;
}
export interface TeamMembership {
id: number;
created_at: string;
user: NavigationResource<User>;
/** team */
is_member_of__team: NavigationResource<Team>;
}
export interface ApiKey {
id: number;
created_at: string;
name: string;
description: string | null;
expiry_date: string | null;
is_of__actor: NavigationResource<Actor>;
}
export interface Application {
id: number;
created_at: string;
app_name: string;
actor: ConceptTypeNavigationResource<Actor>;
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<PublicOrganization>;
application_type: NavigationResource<ApplicationType>;
is_for__device_type: NavigationResource<DeviceType>;
depends_on__application: OptionalNavigationResource<Application>;
organization: NavigationResource<Organization>;
should_be_running__release: OptionalNavigationResource<Release>;
application_config_variable?: ReverseNavigationResource<ApplicationVariable>;
application_environment_variable?: ReverseNavigationResource<ApplicationVariable>;
build_environment_variable?: ReverseNavigationResource<BuildVariable>;
application_tag?: ReverseNavigationResource<ApplicationTag>;
owns__device?: ReverseNavigationResource<Device>;
owns__public_device?: ReverseNavigationResource<PublicDevice>;
owns__release?: ReverseNavigationResource<Release>;
service?: ReverseNavigationResource<Service>;
is_depended_on_by__application?: ReverseNavigationResource<Application>;
is_directly_accessible_by__user?: ReverseNavigationResource<User>;
user_application_membership?: ReverseNavigationResource<ApplicationMembership>;
team_application_access?: ReverseNavigationResource<TeamApplicationAccess>;
can_use__application_as_host?: ReverseNavigationResource<ApplicationHostedOnApplication>;
}
export interface UserHasDirectAccessToApplication {
user: NavigationResource<User>;
has_direct_access_to__application: NavigationResource<Application>;
}
export interface PublicOrganization {
name: string;
handle: string;
}
export interface PublicDevice {
latitude: string;
longitude: string;
belongs_to__application: NavigationResource<Application>;
is_of__device_type: NavigationResource<DeviceType>;
was_recently_online: boolean;
}
export interface Invitee {
id: number;
email: string;
}
export interface ApplicationInvite {
id: number;
message: string | null;
application_membership_role: NavigationResource<ApplicationMembershipRole>;
invitee: NavigationResource<Invitee>;
is_invited_to__application: NavigationResource<Application>;
}
export interface OrganizationInvite {
id: number;
message: string | null;
organization_membership_role: NavigationResource<OrganizationMembershipRole>;
invitee: NavigationResource<Invitee>;
is_invited_to__organization: NavigationResource<Organization>;
}
export interface ApplicationType {
id: number;
name: string;
slug: string;
description: string | null;
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 interface ApplicationHostedOnApplication {
application: NavigationResource<Application>;
can_use__application_as_host: NavigationResource<Application>;
}
export type ApplicationMembershipRoles = 'developer' | 'safe-developer' | 'operator' | 'safe-operator' | 'observer';
export interface ApplicationMembershipRole {
id: number;
name: ApplicationMembershipRoles;
}
export interface ApplicationMembership {
id: number;
user: NavigationResource<User>;
/** application */
is_member_of__application: NavigationResource<Application>;
application_membership_role: NavigationResource<ApplicationMembershipRole>;
}
export interface TeamApplicationAccess {
id: number;
team: NavigationResource<Team>;
/** application */
grants_access_to__application: NavigationResource<Application>;
application_membership_role: NavigationResource<ApplicationMembershipRole>;
}
export type ReleaseStatus = 'cancelled' | 'error' | 'failed' | 'interrupted' | 'local' | 'running' | 'success' | 'timeout';
export interface ReleaseVersion {
raw: string;
major: number;
minor: number;
patch: number;
version: string;
build: readonly string[];
prerelease: ReadonlyArray<string | number>;
}
export interface Release {
id: number;
created_at: string;
commit: string;
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;
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<User>;
belongs_to__application: NavigationResource<Application>;
release_image?: ReverseNavigationResource<ReleaseImage>;
should_be_running_on__application?: ReverseNavigationResource<Application>;
is_running_on__device?: ReverseNavigationResource<Device>;
is_pinned_to__device?: ReverseNavigationResource<Device>;
should_operate__device?: ReverseNavigationResource<Device>;
should_manage__device?: ReverseNavigationResource<Device>;
release_tag?: ReverseNavigationResource<ReleaseTag>;
}
export interface Device {
id: number;
actor: ConceptTypeNavigationResource<Actor>;
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';
changed_api_heartbeat_state_on__date: string | null;
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<DeviceType>;
belongs_to__application: NavigationResource<Application>;
belongs_to__user: OptionalNavigationResource<User>;
is_running__release: OptionalNavigationResource<Release>;
is_pinned_on__release: OptionalNavigationResource<Release>;
is_managed_by__service_instance: OptionalNavigationResource<ServiceInstance>;
should_be_operated_by__release: OptionalNavigationResource<Release>;
should_be_managed_by__release: OptionalNavigationResource<Release>;
/** This is a computed term that works like: `device.is_pinned_on__release ?? device.belongs_to__application[0].should_be_running__release` */
should_be_running__release: OptionalNavigationResource<Release>;
device_config_variable?: ReverseNavigationResource<DeviceVariable>;
device_environment_variable?: ReverseNavigationResource<DeviceVariable>;
device_tag?: ReverseNavigationResource<DeviceTag>;
service_install?: ReverseNavigationResource<ServiceInstall>;
image_install?: ReverseNavigationResource<ImageInstall>;
}
export interface CpuArchitecture {
id: number;
slug: string;
is_supported_by__device_type?: ReverseNavigationResource<CpuArchitecture>;
}
export interface DeviceType {
id: number;
slug: string;
name: string;
is_private: boolean;
logo: string | null;
contract: Contract | null;
belongs_to__device_family: OptionalNavigationResource<DeviceFamily>;
is_default_for__application?: ReverseNavigationResource<Application>;
is_of__cpu_architecture: NavigationResource<CpuArchitecture>;
is_accessible_privately_by__organization?: ReverseNavigationResource<Organization>;
describes__device?: ReverseNavigationResource<Device>;
device_type_alias?: ReverseNavigationResource<DeviceTypeAlias>;
}
export interface DeviceTypeAlias {
id: number;
is_referenced_by__alias: string;
references__device_type: NavigationResource<DeviceType>;
}
export interface DeviceFamily {
id: number;
slug: string;
name: string;
is_manufactured_by__device_manufacturer: OptionalNavigationResource<DeviceManufacturer>;
}
export interface DeviceManufacturer {
id: number;
slug: string;
name: string;
}
export interface OrganizationPrivateDeviceTypeAccess {
id: number;
organization: NavigationResource<Organization>;
has_private_access_to__device_type: NavigationResource<DeviceType>;
}
export interface ServiceInstance {
id: number;
ip_address: string;
}
export interface Service {
id: number;
created_at: string;
service_name: string;
application: NavigationResource<Application>;
is_built_by__image?: ReverseNavigationResource<Image>;
service_environment_variable?: ReverseNavigationResource<ServiceEnvironmentVariable>;
device_service_environment_variable?: ReverseNavigationResource<DeviceServiceEnvironmentVariable>;
}
export interface IdentityProvider {
id: number;
sso_identifier: string;
entry_point: string;
issuer: string;
certificate: string;
requires_signed_authn_response: boolean;
manages__saml_account?: ReverseNavigationResource<SamlAccount>;
identity_provider_membership?: ReverseNavigationResource<IdentityProviderMembership>;
}
export interface SamlAccount {
id: number;
belongs_to__user: NavigationResource<User>;
was_generated_by__identity_provider: NavigationResource<IdentityProvider>;
remote_id: string;
display_name: string | null;
}
export interface IdentityProviderMembership {
is_authorized_by__identity_provider: NavigationResource<IdentityProvider>;
id: number;
grants_access_to__team: OptionalNavigationResource<Team>;
authorizes__organization: NavigationResource<Organization>;
}
export interface Image {
id: number;
created_at: string;
build_log: string | null;
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<Service>;
release_image?: ReverseNavigationResource<ReleaseImage>;
}
export interface ReleaseImage {
id: number;
created_at: string;
image: NavigationResource<Image>;
is_part_of__release: NavigationResource<Release>;
}
export interface SSHKey {
title: string;
public_key: string;
id: number;
created_at: string;
user: NavigationResource<User>;
}
export interface SocialServiceAccount {
belongs_to__user: NavigationResource<User>;
display_name: string | null;
provider: string;
}
export interface ImageInstall {
id: number;
download_progress: number | null;
status: string;
install_date: string;
installs__image: NavigationResource<Image>;
device: NavigationResource<Device>;
is_provided_by__release: NavigationResource<Release>;
}
export interface ServiceInstall {
id: number;
device: NavigationResource<Device>;
/** service */
installs__service: NavigationResource<Service>;
application: NavigationResource<Application>;
device_service_environment_variable?: ReverseNavigationResource<DeviceServiceEnvironmentVariable>;
}
export interface EnvironmentVariableBase {
id: number;
name: string;
value: string;
}
export interface DeviceServiceEnvironmentVariable extends EnvironmentVariableBase {
service_install: NavigationResource<ServiceInstall>;
}
export interface ServiceEnvironmentVariable extends EnvironmentVariableBase {
service: NavigationResource<Service>;
}
export interface DeviceVariable extends EnvironmentVariableBase {
device: NavigationResource<Device>;
}
export interface ApplicationVariable extends EnvironmentVariableBase {
application: NavigationResource<Application>;
}
export interface BuildVariable extends EnvironmentVariableBase {
application: NavigationResource<Application>;
}
export interface ResourceTagBase {
id: number;
tag_key: string;
value: string;
}
export interface ApplicationTag extends ResourceTagBase {
application: NavigationResource<Application>;
}
export interface DeviceTag extends ResourceTagBase {
device: NavigationResource<Device>;
}
export interface OrganizationMembershipTag extends ResourceTagBase {
organization_membership: NavigationResource<OrganizationMembership>;
}
export interface ReleaseTag extends ResourceTagBase {
release: NavigationResource<Release>;
}
export interface CreditBundle {
id: number;
created_at: string;
is_created_by__user: OptionalNavigationResource<User>;
original_quantity: number;
total_balance: number;
total_cost: number;
payment_status: 'processing' | 'paid' | 'failed' | 'complimentary' | 'cancelled' | 'refunded';
belongs_to__organization: NavigationResource<Organization>;
is_for__feature: NavigationResource<Feature>;
is_associated_with__invoice_id: string | null;
error_message: string | null;
}
export interface Feature {
id: number;
title: string;
slug: string;
billing_code: string | null;
organization_credit_notification?: ReverseNavigationResource<OrganizationCreditNotification>;
}
export interface SupportFeature {
id: number;
feature: ConceptTypeNavigationResource<Feature>;
support_tier: NavigationResource<SupportTier>;
}
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;
plan_feature?: ReverseNavigationResource<PlanFeature>;
offers__plan_addon?: ReverseNavigationResource<PlanAddon>;
plan__has__discount_code?: ReverseNavigationResource<PlanDiscountCode>;
}
export interface PlanAddon {
id: number;
base_price: number;
can_self_serve: boolean;
bills_dynamically: boolean;
offers__feature: NavigationResource<Feature>;
}
export interface PlanDiscountCode {
id: number;
discount_code: string;
plan: NavigationResource<Plan>;
}
export interface PlanFeature {
id: number;
quantity: number;
provides__feature: NavigationResource<Feature>;
}
export type SubscriptionBillingCycle = 'monthly' | 'quarterly' | 'biannual' | 'annual' | 'biennial' | 'triennial' | 'quadrennial' | 'quinquennial';
export interface Subscription {
id: number;
starts_on__date: string;
ends_on__date: string | null;
discount_percentage: number;
billing_cycle: SubscriptionBillingCycle;
origin: string;
is_active: boolean;
is_for__organization: NavigationResource<Organization>;
is_for__plan: NavigationResource<Plan>;
subscription_addon_discount?: ReverseNavigationResource<SubscriptionAddonDiscount>;
subscription_prepaid_addon?: ReverseNavigationResource<SubscriptionPrepaidAddon>;
}
export interface SubscriptionPrepaidAddon {
id: number;
discount_percentage: number;
quantity: number;
starts_on__date: string;
expires_on__date: string | null;
is_for__plan_addon: NavigationResource<PlanAddon>;
is_for__subscription: NavigationResource<Subscription>;
}
export interface SubscriptionAddonDiscount {
id: number;
discount_percentage: number;
discounts__plan_addon: NavigationResource<PlanAddon>;
}
export interface DeviceHistory {
created_at: string;
id: number;
end_timestamp: string | null;
is_created_by__actor: OptionalNavigationResource<Actor>;
is_ended_by__actor: OptionalNavigationResource<Actor>;
tracks__device: NavigationResource<Device>;
tracks__actor: OptionalNavigationResource<Actor>;
uuid: string | null;
belongs_to__application: NavigationResource<Application>;
is_active: boolean;
is_running__release: OptionalNavigationResource<Release>;
should_be_running__release: OptionalNavigationResource<Release>;
os_version: string | null;
os_variant: string | null;
supervisor_version: string | null;
is_of__device_type: OptionalNavigationResource<DeviceType>;
should_be_managed_by__release: OptionalNavigationResource<Release>;
}