diff --git a/typespec/models/ContainerRequest.tsp b/typespec/models/ContainerRequest.tsp index 666feee43..6edd6b25d 100644 --- a/typespec/models/ContainerRequest.tsp +++ b/typespec/models/ContainerRequest.tsp @@ -1,5 +1,7 @@ import "./ContainerConfig.tsp"; import "./Packages.tsp"; +import "./ScanMode.tsp"; +import "./ScanLevel.tsp"; @doc("Request payload for creating a container token.") model ContainerRequest { @@ -16,7 +18,10 @@ model ContainerRequest { format: "sif" | "docker"; freeze?: boolean; nameStrategy?: "none" | "tagPrefix" | "imageSuffix"; + mirrorRegistry?: string; packages?: Packages; + scanMode?: ScanMode; + scanLevels?: ScanLevel[]; timestamp: string; towerAccessToken?: string; towerEndpoint?: string; diff --git a/typespec/models/ContainerResponse.tsp b/typespec/models/ContainerResponse.tsp index 649d64048..3d8c83865 100644 --- a/typespec/models/ContainerResponse.tsp +++ b/typespec/models/ContainerResponse.tsp @@ -1,3 +1,5 @@ +import "./ContainerStatus.tsp"; + @doc("Response payload for container token creation.") model ContainerResponse { buildId: string; @@ -5,6 +7,10 @@ model ContainerResponse { containerImage: string; containerToken: string; expiration: string; - freeze?: boolean; + freeze: boolean; + mirror: boolean; + requestId: string; + scanId: string; + status: ContainerStatus; targetImage: string; -} \ No newline at end of file +} diff --git a/typespec/models/ContainerStatus.tsp b/typespec/models/ContainerStatus.tsp new file mode 100644 index 000000000..3203ddbcd --- /dev/null +++ b/typespec/models/ContainerStatus.tsp @@ -0,0 +1,6 @@ +enum ContainerStatus { + PENDING, + BUILDING, + SCANNING, + DONE +} diff --git a/typespec/models/ContainerStatusResponse.tsp b/typespec/models/ContainerStatusResponse.tsp new file mode 100644 index 000000000..93d775d62 --- /dev/null +++ b/typespec/models/ContainerStatusResponse.tsp @@ -0,0 +1,21 @@ +import "./ContainerStatus.tsp"; + +@doc("Response payload for container status.") +model ContainerStatusResponse { + id: string; + status: ContainerStatus; + buildId: string; + mirrorId: string; + scanId: string; + vulnerabilities: Record; + succeeded: boolean; + reason: string; + detailsUri: string; + creationTime: string; + duration: string; +} + +model vulnerability { + severity: string; + count: int32 +} diff --git a/typespec/models/ScanLevel.tsp b/typespec/models/ScanLevel.tsp new file mode 100644 index 000000000..4c675670f --- /dev/null +++ b/typespec/models/ScanLevel.tsp @@ -0,0 +1,6 @@ +enum ScanLevel { + LOW, + MEDIUM, + HIGH, + CRITICAL +} diff --git a/typespec/models/ScanMode.tsp b/typespec/models/ScanMode.tsp new file mode 100644 index 000000000..e42314153 --- /dev/null +++ b/typespec/models/ScanMode.tsp @@ -0,0 +1,5 @@ +enum ScanMode{ + none, + async, + required +} diff --git a/typespec/models/models.tsp b/typespec/models/models.tsp index a7f6a4f71..3062198af 100644 --- a/typespec/models/models.tsp +++ b/typespec/models/models.tsp @@ -9,3 +9,4 @@ import "./WaveBuildRecord.tsp"; import "./ValidateRegistryCredsRequest.tsp"; import "./WaveContainerRecord.tsp"; import "./ContainerMirrorResponse.tsp"; +import "./ContainerStatusResponse.tsp"; diff --git a/typespec/routes.tsp b/typespec/routes.tsp index 862bea78f..8e6f8d957 100644 --- a/typespec/routes.tsp +++ b/typespec/routes.tsp @@ -16,13 +16,21 @@ namespace wave { @statusCode statusCode: 200; }; - @route("/{token}") - @get op getContainerDetails(@path token: string): { + @route("/container/{requestId}") + @get op getContainerDetails(@path requestId: string): { @body response: WaveContainerRecord; @statusCode statusCode: 200; }|{ @statusCode statusCode: 404; }; + + @route("/{requestId}/status") + @get op getContainerStatus(@path requestId: string): { + @body response: ContainerStatusResponse; + @statusCode statusCode: 200; + }|{ + @statusCode statusCode: 404; + }; } @route("/v1alpha1/builds/{buildId}")