mirror of
https://github.com/project-zot/zot.git
synced 2026-06-16 04:17:55 +08:00
feat(GraphQL): playground, served by zot in specific binary (#753)
Signed-off-by: Catalin Hofnar <catalin.hofnar@gmail.com>
This commit is contained in:
@@ -776,11 +776,17 @@ func (ec *executionContext) introspectType(name string) (*introspection.Type, er
|
||||
var sources = []*ast.Source{
|
||||
{Name: "../schema.graphql", Input: `scalar Time
|
||||
|
||||
"""
|
||||
Contains the tag of the image and a list of CVEs
|
||||
"""
|
||||
type CVEResultForImage {
|
||||
Tag: String
|
||||
CVEList: [CVE]
|
||||
}
|
||||
|
||||
"""
|
||||
Contains various details about the CVE and a list of PackageInfo about the affected packages
|
||||
"""
|
||||
type CVE {
|
||||
Id: String
|
||||
Title: String
|
||||
@@ -789,12 +795,18 @@ type CVE {
|
||||
PackageList: [PackageInfo]
|
||||
}
|
||||
|
||||
"""
|
||||
Contains the name of the package, the current installed version and the version where the CVE was fixed
|
||||
"""
|
||||
type PackageInfo {
|
||||
Name: String
|
||||
InstalledVersion: String
|
||||
FixedVersion: String
|
||||
}
|
||||
|
||||
"""
|
||||
Contains details about the repo: a list of image summaries and a summary of the repo
|
||||
"""
|
||||
type RepoInfo {
|
||||
Images: [ImageSummary]
|
||||
Summary: RepoSummary
|
||||
@@ -802,6 +814,9 @@ type RepoInfo {
|
||||
|
||||
# Search results in all repos/images/layers
|
||||
# There will be other more structures for more detailed information
|
||||
"""
|
||||
Search everything. Can search Images, Repos and Layers
|
||||
"""
|
||||
type GlobalSearchResult {
|
||||
Images: [ImageSummary]
|
||||
Repos: [RepoSummary]
|
||||
@@ -810,6 +825,9 @@ type GlobalSearchResult {
|
||||
|
||||
# Brief on a specific image to be used in queries returning a list of images
|
||||
# We define an image as a pairing or a repo and a tag belonging to that repo
|
||||
"""
|
||||
Contains details about the image
|
||||
"""
|
||||
type ImageSummary {
|
||||
RepoName: String
|
||||
Tag: String
|
||||
@@ -839,6 +857,9 @@ type ImageVulnerabilitySummary {
|
||||
}
|
||||
|
||||
# Brief on a specific repo to be used in queries returning a list of repos
|
||||
"""
|
||||
Contains details about the repo
|
||||
"""
|
||||
type RepoSummary {
|
||||
Name: String
|
||||
LastUpdated: Time
|
||||
@@ -854,6 +875,9 @@ type RepoSummary {
|
||||
|
||||
# Currently the same as LayerInfo, we can refactor later
|
||||
# For detailed information on the layer a ImageListForDigest call can be made
|
||||
"""
|
||||
Contains details about the layer
|
||||
"""
|
||||
type LayerSummary {
|
||||
Size: String # Int64 is not supported.
|
||||
Digest: String
|
||||
@@ -885,22 +909,68 @@ type LayerHistory {
|
||||
HistoryDescription: HistoryDescription
|
||||
}
|
||||
|
||||
"""
|
||||
Contains details about the supported OS and architecture of the image
|
||||
"""
|
||||
type OsArch {
|
||||
Os: String
|
||||
Arch: String
|
||||
}
|
||||
|
||||
type Query {
|
||||
"""
|
||||
Returns a CVE list for the image specified in the arugment
|
||||
"""
|
||||
CVEListForImage(image: String!): CVEResultForImage!
|
||||
|
||||
"""
|
||||
Returns a list of images vulnerable to the CVE of the specified ID
|
||||
"""
|
||||
ImageListForCVE(id: String!): [ImageSummary!]
|
||||
|
||||
"""
|
||||
Returns a list of images that are no longer vulnerable to the CVE of the specified ID, from the specified image (repo)
|
||||
"""
|
||||
ImageListWithCVEFixed(id: String!, image: String!): [ImageSummary!]
|
||||
|
||||
"""
|
||||
Returns a list of images which contain the specified digest
|
||||
"""
|
||||
ImageListForDigest(id: String!): [ImageSummary!]
|
||||
|
||||
"""
|
||||
Returns a list of repos with the newest tag within
|
||||
"""
|
||||
RepoListWithNewestImage: [RepoSummary!]! # Newest based on created timestamp
|
||||
|
||||
"""
|
||||
Returns all the images from the specified repo
|
||||
"""
|
||||
ImageList(repo: String!): [ImageSummary!]
|
||||
|
||||
"""
|
||||
Returns information about the specified repo
|
||||
"""
|
||||
ExpandedRepoInfo(repo: String!): RepoInfo!
|
||||
|
||||
"""
|
||||
Searches within repos, images, and layers
|
||||
"""
|
||||
GlobalSearch(query: String!): GlobalSearchResult!
|
||||
|
||||
"""
|
||||
List of images which use the argument image
|
||||
"""
|
||||
DerivedImageList(image: String!): [ImageSummary!]
|
||||
|
||||
"""
|
||||
List of images on which the argument image depends on
|
||||
"""
|
||||
BaseImageList(image: String!): [ImageSummary!]
|
||||
|
||||
"""
|
||||
Search for a specific image using its name
|
||||
"""
|
||||
Image(image: String!): ImageSummary
|
||||
}
|
||||
`, BuiltIn: false},
|
||||
|
||||
@@ -6,6 +6,7 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// Contains various details about the CVE and a list of PackageInfo about the affected packages
|
||||
type Cve struct {
|
||||
ID *string `json:"Id"`
|
||||
Title *string `json:"Title"`
|
||||
@@ -14,11 +15,13 @@ type Cve struct {
|
||||
PackageList []*PackageInfo `json:"PackageList"`
|
||||
}
|
||||
|
||||
// Contains the tag of the image and a list of CVEs
|
||||
type CVEResultForImage struct {
|
||||
Tag *string `json:"Tag"`
|
||||
CVEList []*Cve `json:"CVEList"`
|
||||
}
|
||||
|
||||
// Search everything. Can search Images, Repos and Layers
|
||||
type GlobalSearchResult struct {
|
||||
Images []*ImageSummary `json:"Images"`
|
||||
Repos []*RepoSummary `json:"Repos"`
|
||||
@@ -37,6 +40,7 @@ type HistoryDescription struct {
|
||||
EmptyLayer *bool `json:"EmptyLayer"`
|
||||
}
|
||||
|
||||
// Contains details about the image
|
||||
type ImageSummary struct {
|
||||
RepoName *string `json:"RepoName"`
|
||||
Tag *string `json:"Tag"`
|
||||
@@ -70,28 +74,33 @@ type LayerHistory struct {
|
||||
HistoryDescription *HistoryDescription `json:"HistoryDescription"`
|
||||
}
|
||||
|
||||
// Contains details about the layer
|
||||
type LayerSummary struct {
|
||||
Size *string `json:"Size"`
|
||||
Digest *string `json:"Digest"`
|
||||
Score *int `json:"Score"`
|
||||
}
|
||||
|
||||
// Contains details about the supported OS and architecture of the image
|
||||
type OsArch struct {
|
||||
Os *string `json:"Os"`
|
||||
Arch *string `json:"Arch"`
|
||||
}
|
||||
|
||||
// Contains the name of the package, the current installed version and the version where the CVE was fixed
|
||||
type PackageInfo struct {
|
||||
Name *string `json:"Name"`
|
||||
InstalledVersion *string `json:"InstalledVersion"`
|
||||
FixedVersion *string `json:"FixedVersion"`
|
||||
}
|
||||
|
||||
// Contains details about the repo: a list of image summaries and a summary of the repo
|
||||
type RepoInfo struct {
|
||||
Images []*ImageSummary `json:"Images"`
|
||||
Summary *RepoSummary `json:"Summary"`
|
||||
}
|
||||
|
||||
// Contains details about the repo
|
||||
type RepoSummary struct {
|
||||
Name *string `json:"Name"`
|
||||
LastUpdated *time.Time `json:"LastUpdated"`
|
||||
|
||||
@@ -1,10 +1,16 @@
|
||||
scalar Time
|
||||
|
||||
"""
|
||||
Contains the tag of the image and a list of CVEs
|
||||
"""
|
||||
type CVEResultForImage {
|
||||
Tag: String
|
||||
CVEList: [CVE]
|
||||
}
|
||||
|
||||
"""
|
||||
Contains various details about the CVE and a list of PackageInfo about the affected packages
|
||||
"""
|
||||
type CVE {
|
||||
Id: String
|
||||
Title: String
|
||||
@@ -13,12 +19,18 @@ type CVE {
|
||||
PackageList: [PackageInfo]
|
||||
}
|
||||
|
||||
"""
|
||||
Contains the name of the package, the current installed version and the version where the CVE was fixed
|
||||
"""
|
||||
type PackageInfo {
|
||||
Name: String
|
||||
InstalledVersion: String
|
||||
FixedVersion: String
|
||||
}
|
||||
|
||||
"""
|
||||
Contains details about the repo: a list of image summaries and a summary of the repo
|
||||
"""
|
||||
type RepoInfo {
|
||||
Images: [ImageSummary]
|
||||
Summary: RepoSummary
|
||||
@@ -26,6 +38,9 @@ type RepoInfo {
|
||||
|
||||
# Search results in all repos/images/layers
|
||||
# There will be other more structures for more detailed information
|
||||
"""
|
||||
Search everything. Can search Images, Repos and Layers
|
||||
"""
|
||||
type GlobalSearchResult {
|
||||
Images: [ImageSummary]
|
||||
Repos: [RepoSummary]
|
||||
@@ -34,6 +49,9 @@ type GlobalSearchResult {
|
||||
|
||||
# Brief on a specific image to be used in queries returning a list of images
|
||||
# We define an image as a pairing or a repo and a tag belonging to that repo
|
||||
"""
|
||||
Contains details about the image
|
||||
"""
|
||||
type ImageSummary {
|
||||
RepoName: String
|
||||
Tag: String
|
||||
@@ -63,6 +81,9 @@ type ImageVulnerabilitySummary {
|
||||
}
|
||||
|
||||
# Brief on a specific repo to be used in queries returning a list of repos
|
||||
"""
|
||||
Contains details about the repo
|
||||
"""
|
||||
type RepoSummary {
|
||||
Name: String
|
||||
LastUpdated: Time
|
||||
@@ -78,6 +99,9 @@ type RepoSummary {
|
||||
|
||||
# Currently the same as LayerInfo, we can refactor later
|
||||
# For detailed information on the layer a ImageListForDigest call can be made
|
||||
"""
|
||||
Contains details about the layer
|
||||
"""
|
||||
type LayerSummary {
|
||||
Size: String # Int64 is not supported.
|
||||
Digest: String
|
||||
@@ -109,21 +133,67 @@ type LayerHistory {
|
||||
HistoryDescription: HistoryDescription
|
||||
}
|
||||
|
||||
"""
|
||||
Contains details about the supported OS and architecture of the image
|
||||
"""
|
||||
type OsArch {
|
||||
Os: String
|
||||
Arch: String
|
||||
}
|
||||
|
||||
type Query {
|
||||
"""
|
||||
Returns a CVE list for the image specified in the arugment
|
||||
"""
|
||||
CVEListForImage(image: String!): CVEResultForImage!
|
||||
|
||||
"""
|
||||
Returns a list of images vulnerable to the CVE of the specified ID
|
||||
"""
|
||||
ImageListForCVE(id: String!): [ImageSummary!]
|
||||
|
||||
"""
|
||||
Returns a list of images that are no longer vulnerable to the CVE of the specified ID, from the specified image (repo)
|
||||
"""
|
||||
ImageListWithCVEFixed(id: String!, image: String!): [ImageSummary!]
|
||||
|
||||
"""
|
||||
Returns a list of images which contain the specified digest
|
||||
"""
|
||||
ImageListForDigest(id: String!): [ImageSummary!]
|
||||
|
||||
"""
|
||||
Returns a list of repos with the newest tag within
|
||||
"""
|
||||
RepoListWithNewestImage: [RepoSummary!]! # Newest based on created timestamp
|
||||
|
||||
"""
|
||||
Returns all the images from the specified repo
|
||||
"""
|
||||
ImageList(repo: String!): [ImageSummary!]
|
||||
|
||||
"""
|
||||
Returns information about the specified repo
|
||||
"""
|
||||
ExpandedRepoInfo(repo: String!): RepoInfo!
|
||||
|
||||
"""
|
||||
Searches within repos, images, and layers
|
||||
"""
|
||||
GlobalSearch(query: String!): GlobalSearchResult!
|
||||
|
||||
"""
|
||||
List of images which use the argument image
|
||||
"""
|
||||
DerivedImageList(image: String!): [ImageSummary!]
|
||||
|
||||
"""
|
||||
List of images on which the argument image depends on
|
||||
"""
|
||||
BaseImageList(image: String!): [ImageSummary!]
|
||||
|
||||
"""
|
||||
Search for a specific image using its name
|
||||
"""
|
||||
Image(image: String!): ImageSummary
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user