blob: e254034b68aa4e40c3090b9f43268ab02a9ef6e3 [file] [log] [blame]
// 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;
}