| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| syntax = "proto2"; |
| |
| package oci.spec.image.v1; |
| |
| /** |
| * Protobuf for the OCI content descriptor JSON schema: |
| * https://github.com/opencontainers/image-spec/blob/master/descriptor.md |
| */ |
| message Descriptor { |
| // Media types identify their referenced resources, see more details in: |
| // https://github.com/opencontainers/image-spec/blob/master/media-types.md |
| required string mediaType = 1; |
| required string digest = 2; |
| required int64 size = 3; |
| repeated string urls = 4; |
| map<string, string> annotations = 5; |
| } |
| |
| |
| message Platform { |
| required string architecture = 1; |
| required string os = 2; |
| |
| // NOTE: The actual field names in OCI spec are 'os.version' and 'os.features', |
| // but we can not use them in protobuf message since "." is not allowed in |
| // field name, so these two fields will be handled manually during parsing. |
| optional string os_version = 3; |
| repeated string os_features = 4; |
| optional string variant = 5; |
| repeated string features = 6; |
| } |
| |
| |
| message ManifestDescriptor { |
| required string mediaType = 1; |
| required string digest = 2; |
| required int64 size = 3; |
| optional Platform platform = 4; |
| repeated string urls = 5; |
| map<string, string> annotations = 6; |
| } |
| |
| |
| /** |
| * Protobuf for the OCI image index JSON schema: |
| * https://github.com/opencontainers/image-spec/blob/master/image-index.md |
| * |
| * The OCI MIME type of this message is: |
| * application/vnd.oci.image.index.v1+json |
| */ |
| message Index { |
| required int64 schemaVersion = 1; |
| repeated ManifestDescriptor manifests = 2; |
| map<string, string> annotations = 3; |
| } |
| |
| |
| /** |
| * Protobuf for the OCI image manifest JSON schema: |
| * https://github.com/opencontainers/image-spec/blob/master/manifest.md |
| * |
| * The OCI MIME type of this message is: |
| * application/vnd.oci.image.manifest.v1+json |
| */ |
| message Manifest { |
| required int64 schemaVersion = 1; |
| required Descriptor config = 2; |
| repeated Descriptor layers = 3; |
| map<string, string> annotations = 4; |
| } |
| |
| |
| /** |
| * Protobuf for the OCI image configuration JSON schema: |
| * https://github.com/opencontainers/image-spec/blob/master/config.md |
| * |
| * The OCI MIME type of this message is: |
| * application/vnd.oci.image.config.v1+json |
| */ |
| message Configuration { |
| required string architecture = 1; |
| required string os = 2; |
| |
| message Rootfs { |
| required string type = 1; |
| repeated string diff_ids = 2; |
| } |
| |
| required Rootfs rootfs = 3; |
| optional string created = 4; |
| optional string author = 5; |
| |
| message Config { |
| message Empty {} |
| |
| optional string User = 1; |
| map<string, Empty> ExposedPorts = 2; |
| repeated string Env = 3; |
| repeated string Entrypoint = 4; |
| repeated string Cmd = 5; |
| map<string, Empty> Volumes = 6; |
| optional string WorkingDir = 7; |
| map<string, string> Labels = 8; |
| } |
| |
| optional Config config = 6; |
| |
| message History { |
| optional string created = 1; |
| optional string author = 2; |
| optional string created_by = 3; |
| optional string comment = 4; |
| optional bool empty_layer = 5; |
| } |
| |
| repeated History history = 7; |
| } |