fleet/frontend/interfaces/mdm.ts
Gabriel Hernandez bd9176d67e
UI for bootstrap package flows (#11288)
relates to #10935

This is the UI for all the flows around adding, removing, downloading,
and viewing information about a bootstrap package for fleet mdm. This is
pretty comprehensive but includes:

### Backend

**Update `Get host/id`** to include bootstrap package name

```json
{
  "macos_setup": {
    ...
    "bootstrap_package_name": "test.pkg"
  }
}
```

### Frontend

**UI for ABM not being set up**:


![image](https://user-images.githubusercontent.com/1153709/234018772-3221e27b-50a4-454e-8e9f-b62c9d349010.png)

**UIs for uploading, downloading, and deleting bootstrap package**:


![image](https://user-images.githubusercontent.com/1153709/234017915-871f252f-bf80-4282-9acf-5ebea12c6efa.png)


![image](https://user-images.githubusercontent.com/1153709/234018029-322a5f30-dd22-44e3-b9ae-a4af7acb68b4.png)


![image](https://user-images.githubusercontent.com/1153709/234018163-4b84a2ce-a064-4952-a63d-0c8307391052.png)

**UIs for seeing bootstrap status aggregate data**


![image](https://user-images.githubusercontent.com/1153709/234018107-455d63ab-5b2c-4727-ad20-eef6b269c336.png)

**UIs for filtering hosts by bootstrap status**


![image](https://user-images.githubusercontent.com/1153709/234018334-170fe93a-700e-48eb-b198-2a1cc54d31a7.png)

**UIs for seeing package status on host details and my device page**:


![image](https://user-images.githubusercontent.com/1153709/234018488-7b515db4-1248-4be7-8de3-9b74bb5d4795.png)


![image](https://user-images.githubusercontent.com/1153709/234018525-d653cb2d-9ef9-437e-8eba-141e557f4f39.png)

- [x] Changes file added for user-visible changes in `changes/` or
`orbit/changes/`.
See [Changes
files](https://fleetdm.com/docs/contributing/committing-changes#changes-files)
for more information.
- [x] Manual QA for all new/changed functionality

---------

Co-authored-by: Roberto Dip <dip.jesusr@gmail.com>
Co-authored-by: gillespi314 <73313222+gillespi314@users.noreply.github.com>
Co-authored-by: Martin Angers <martin.n.angers@gmail.com>
2023-04-27 16:10:41 +01:00

136 lines
2.7 KiB
TypeScript

export interface IMdmApple {
common_name: string;
serial_number: string;
issuer: string;
renew_date: string;
}
export interface IMdmAppleBm {
default_team?: string;
apple_id: string;
org_name: string;
mdm_server_url: string;
renew_date: string;
}
export const MDM_ENROLLMENT_STATUS = {
"On (manual)": "manual",
"On (automatic)": "automatic",
Off: "unenrolled",
Pending: "pending",
};
export type MdmEnrollmentStatus = keyof typeof MDM_ENROLLMENT_STATUS;
export interface IMdmStatusCardData {
status: MdmEnrollmentStatus;
hosts: number;
}
export interface IMdmAggregateStatus {
enrolled_manual_hosts_count: number;
enrolled_automated_hosts_count: number;
unenrolled_hosts_count: number;
pending_hosts_count?: number;
}
export interface IMdmSolution {
id: number;
name: string | null;
server_url: string;
hosts_count: number;
}
interface IMdmStatus {
enrolled_manual_hosts_count: number;
enrolled_automated_hosts_count: number;
unenrolled_hosts_count: number;
pending_hosts_count?: number;
hosts_count: number;
}
export interface IMdmSummaryResponse {
counts_updated_at: string;
mobile_device_management_enrollment_status: IMdmStatus;
mobile_device_management_solution: IMdmSolution[] | null;
}
export interface IMdmProfile {
profile_id: number;
team_id: number;
name: string;
identifier: string;
created_at: string;
updated_at: string;
}
export interface IMdmProfilesResponse {
profiles: IMdmProfile[] | null;
}
export enum MdmProfileStatus {
VERIFYING = "verifying",
PENDING = "pending",
FAILED = "failed",
}
export type MacMdmProfileOperationType = "remove" | "install";
export interface IHostMacMdmProfile {
profile_id: number;
name: string;
operation_type: MacMdmProfileOperationType;
status: MdmProfileStatus;
detail: string;
}
export interface IFileVaultSummaryResponse {
verifying: number;
action_required: number;
enforcing: number;
failed: number;
removing_enforcement: number;
}
export enum FileVaultProfileStatus {
VERIFYING = "verifying",
ACTION_REQUIRED = "action_required",
ENFORCING = "enforcing",
FAILED = "failed",
REMOVING_ENFORCEMENT = "removing_enforcement",
}
// TODO: update when we have API
export interface IMdmScript {
id: number;
name: string;
ran: number;
pending: number;
errors: number;
created_at: string;
updated_at: string;
}
export interface IMdmSSOReponse {
url: string;
}
export interface IBootstrapPackageMetadata {
name: string;
team_id: number;
sha256: string;
token: string;
created_at: string;
}
export interface IBootstrapPackageAggregate {
installed: number;
pending: number;
failed: number;
}
export enum BootstrapPackageStatus {
INSTALLED = "installed",
PENDING = "pending",
FAILED = "failed",
}