{
    "description": "An ImageStream stores a mapping of tags to images, metadata overrides that are applied when images are tagged in a stream, and an optional reference to a container image repository on a registry. Users typically update the spec.tags field to point to external images which are imported from container registries using credentials in your namespace with the pull secret type, or to existing image stream tags and images which are immediately accessible for tagging or pulling. The history of images applied to a tag is visible in the status.tags field and any user who can view an image stream is allowed to tag that image into their own image streams. Access to pull images from the integrated registry is granted by having the \"get imagestreams/layers\" permission on a given image stream. Users may remove a tag by deleting the imagestreamtag resource, which causes both spec and status for that tag to be removed. Image stream history is retained until an administrator runs the prune operation, which removes references that are no longer in use. To preserve a historical image, ensure there is a tag in spec pointing to that image by its digest. \n Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).",
    "properties": {
        "apiVersion": {
            "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
            "type": "string"
        },
        "kind": {
            "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
            "type": "string"
        },
        "metadata": {
            "type": "object"
        },
        "spec": {
            "description": "Spec describes the desired state of this stream",
            "properties": {
                "dockerImageRepository": {
                    "description": "dockerImageRepository is optional, if specified this stream is backed by a container repository on this server Deprecated: This field is deprecated as of v3.7 and will be removed in a future release. Specify the source for the tags to be imported in each tag via the spec.tags.from reference instead.",
                    "type": "string"
                },
                "lookupPolicy": {
                    "description": "lookupPolicy controls how other resources reference images within this namespace.",
                    "properties": {
                        "local": {
                            "description": "local will change the docker short image references (like \"mysql\" or \"php:latest\") on objects in this namespace to the image ID whenever they match this image stream, instead of reaching out to a remote registry. The name will be fully qualified to an image ID if found. The tag's referencePolicy is taken into account on the replaced value. Only works within the current namespace.",
                            "type": "boolean"
                        }
                    },
                    "required": [
                        "local"
                    ],
                    "type": "object",
                    "additionalProperties": false
                },
                "tags": {
                    "description": "tags map arbitrary string values to specific image locators",
                    "items": {
                        "description": "TagReference specifies optional annotations for images using this tag and an optional reference to an ImageStreamTag, ImageStreamImage, or DockerImage this tag should track.",
                        "properties": {
                            "annotations": {
                                "additionalProperties": {
                                    "type": "string"
                                },
                                "description": "Optional; if specified, annotations that are applied to images retrieved via ImageStreamTags.",
                                "type": "object"
                            },
                            "from": {
                                "description": "Optional; if specified, a reference to another image that this tag should point to. Valid values are ImageStreamTag, ImageStreamImage, and DockerImage.  ImageStreamTag references can only reference a tag within this same ImageStream.",
                                "properties": {
                                    "apiVersion": {
                                        "description": "API version of the referent.",
                                        "type": "string"
                                    },
                                    "fieldPath": {
                                        "description": "If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.",
                                        "type": "string"
                                    },
                                    "kind": {
                                        "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
                                        "type": "string"
                                    },
                                    "name": {
                                        "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                                        "type": "string"
                                    },
                                    "namespace": {
                                        "description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/",
                                        "type": "string"
                                    },
                                    "resourceVersion": {
                                        "description": "Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency",
                                        "type": "string"
                                    },
                                    "uid": {
                                        "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids",
                                        "type": "string"
                                    }
                                },
                                "type": "object",
                                "additionalProperties": false
                            },
                            "generation": {
                                "description": "Generation is a counter that tracks mutations to the spec tag (user intent). When a tag reference is changed the generation is set to match the current stream generation (which is incremented every time spec is changed). Other processes in the system like the image importer observe that the generation of spec tag is newer than the generation recorded in the status and use that as a trigger to import the newest remote tag. To trigger a new import, clients may set this value to zero which will reset the generation to the latest stream generation. Legacy clients will send this value as nil which will be merged with the current tag generation.",
                                "format": "int64",
                                "type": "integer",
                                "minimum": -9223372036854776000,
                                "maximum": 9223372036854776000
                            },
                            "importPolicy": {
                                "description": "ImportPolicy is information that controls how images may be imported by the server.",
                                "properties": {
                                    "importMode": {
                                        "description": "ImportMode describes how to import an image manifest.",
                                        "type": "string"
                                    },
                                    "insecure": {
                                        "description": "Insecure is true if the server may bypass certificate verification or connect directly over HTTP during image import.",
                                        "type": "boolean"
                                    },
                                    "scheduled": {
                                        "description": "Scheduled indicates to the server that this tag should be periodically checked to ensure it is up to date, and imported",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object",
                                "additionalProperties": false
                            },
                            "name": {
                                "description": "Name of the tag",
                                "type": "string"
                            },
                            "reference": {
                                "description": "Reference states if the tag will be imported. Default value is false, which means the tag will be imported.",
                                "type": "boolean"
                            },
                            "referencePolicy": {
                                "description": "ReferencePolicy defines how other components should consume the image.",
                                "properties": {
                                    "type": {
                                        "description": "Type determines how the image pull spec should be transformed when the image stream tag is used in deployment config triggers or new builds. The default value is `Source`, indicating the original location of the image should be used (if imported). The user may also specify `Local`, indicating that the pull spec should point to the integrated container image registry and leverage the registry's ability to proxy the pull to an upstream registry. `Local` allows the credentials used to pull this image to be managed from the image stream's namespace, so others on the platform can access a remote image but have no access to the remote secret. It also allows the image layers to be mirrored into the local registry which the images can still be pulled even if the upstream registry is unavailable.",
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "type"
                                ],
                                "type": "object",
                                "additionalProperties": false
                            }
                        },
                        "required": [
                            "name"
                        ],
                        "type": "object",
                        "additionalProperties": false
                    },
                    "type": "array"
                }
            },
            "type": "object",
            "additionalProperties": false
        },
        "status": {
            "description": "Status describes the current state of this stream",
            "properties": {
                "dockerImageRepository": {
                    "description": "DockerImageRepository represents the effective location this stream may be accessed at. May be empty until the server determines where the repository is located",
                    "type": "string"
                },
                "publicDockerImageRepository": {
                    "description": "PublicDockerImageRepository represents the public location from where the image can be pulled outside the cluster. This field may be empty if the administrator has not exposed the integrated registry externally.",
                    "type": "string"
                },
                "tags": {
                    "description": "Tags are a historical record of images associated with each tag. The first entry in the TagEvent array is the currently tagged image.",
                    "items": {
                        "description": "NamedTagEventList relates a tag to its image history.",
                        "properties": {
                            "conditions": {
                                "description": "Conditions is an array of conditions that apply to the tag event list.",
                                "items": {
                                    "description": "TagEventCondition contains condition information for a tag event.",
                                    "properties": {
                                        "generation": {
                                            "description": "Generation is the spec tag generation that this status corresponds to",
                                            "format": "int64",
                                            "type": "integer",
                                            "minimum": -9223372036854776000,
                                            "maximum": 9223372036854776000
                                        },
                                        "lastTransitionTime": {
                                            "description": "LastTransitionTIme is the time the condition transitioned from one status to another.",
                                            "format": "date-time",
                                            "type": "string"
                                        },
                                        "message": {
                                            "description": "Message is a human readable description of the details about last transition, complementing reason.",
                                            "type": "string"
                                        },
                                        "reason": {
                                            "description": "Reason is a brief machine readable explanation for the condition's last transition.",
                                            "type": "string"
                                        },
                                        "status": {
                                            "description": "Status of the condition, one of True, False, Unknown.",
                                            "type": "string"
                                        },
                                        "type": {
                                            "description": "Type of tag event condition, currently only ImportSuccess",
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "generation",
                                        "status",
                                        "type"
                                    ],
                                    "type": "object",
                                    "additionalProperties": false
                                },
                                "type": "array"
                            },
                            "items": {
                                "description": "Standard object's metadata.",
                                "items": {
                                    "description": "TagEvent is used by ImageStreamStatus to keep a historical record of images associated with a tag.",
                                    "properties": {
                                        "created": {
                                            "description": "Created holds the time the TagEvent was created",
                                            "format": "date-time",
                                            "type": "string"
                                        },
                                        "dockerImageReference": {
                                            "description": "DockerImageReference is the string that can be used to pull this image",
                                            "type": "string"
                                        },
                                        "generation": {
                                            "description": "Generation is the spec tag generation that resulted in this tag being updated",
                                            "format": "int64",
                                            "type": "integer",
                                            "minimum": -9223372036854776000,
                                            "maximum": 9223372036854776000
                                        },
                                        "image": {
                                            "description": "Image is the image",
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "created",
                                        "dockerImageReference",
                                        "generation",
                                        "image"
                                    ],
                                    "type": "object",
                                    "additionalProperties": false
                                },
                                "type": "array"
                            },
                            "tag": {
                                "description": "Tag is the tag for which the history is recorded",
                                "type": "string"
                            }
                        },
                        "required": [
                            "items",
                            "tag"
                        ],
                        "type": "object",
                        "additionalProperties": false
                    },
                    "type": "array"
                }
            },
            "required": [
                "dockerImageRepository"
            ],
            "type": "object",
            "additionalProperties": false
        }
    },
    "type": "object",
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-04/schema#"
}
