grid-sdk 0.3.5

Hyperledger Grid is a platform for building supply chain solutions that include distributed ledger components. It provides a growing set of tools that accelerate development for supply chain smart contractsand client interfaces.
Documentation
// Copyright 2019 Cargill Incorporated
//
// Licensed 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 = "proto3";

message PropertyDefinition {
    enum DataType {
        UNSET_DATA_TYPE = 0;
        BYTES = 1;
        BOOLEAN = 2;
        NUMBER = 3;
        STRING = 4;
        ENUM = 5;
        STRUCT = 6;
        LAT_LONG = 7;
    }
    // The name of the property
    string name = 1;
    // The data type of the value; must not be set to UNSET_DATA_TYPE.
    DataType data_type = 2;
    // Indicates that this is a required property in the Schema
    bool required = 3;
    // An optional description of the field.
    string description = 4;
    // The exponent for a NUMBER property
    sint32 number_exponent = 10;
    // The list of values for an ENUM property; must not be empty/ for
    // properties of that type.
    repeated string enum_options = 11;
    // The list of property definitions for a STRUCT property; must  not be
    // empty for properties of that type.
    repeated PropertyDefinition struct_properties = 12;
}

message Schema {
    // The name of the Schema.  This is also the unique identifier for the
    // Schema.
    string name = 1;
    // An optional description of the schema.
    string description = 2;
    // The Pike organization that has rights to modify the schema.
    string owner = 3;
    // The property definitions that make up the Schema; must not be empty.
    repeated PropertyDefinition properties = 10;
}

message SchemaList {
    // Schemas are stored in a list to handle any hash collisions
    repeated Schema schemas = 1;
}

message LatLong {
    // Coordinates are expected to be in millionths of a degree
    sint64 latitude = 1;
    sint64 longitude = 2;
}

message PropertyValue {
    // The name of the property value.  Used to validate the property against a
    // Schema.
    string name = 1;
    // The data type of the property.  Indicates which value field the actual
    // value may be found.  Must not be set to `UNSET_DATA_TYPE`.
    PropertyDefinition.DataType data_type = 2;
    // The value fields for the possible data types.  Only one of these will
    // contain a value, determined by the value of `data_type`
    bytes bytes_value = 10;
    bool boolean_value = 11;
    sint64 number_value = 12;
    string string_value = 13;
    uint32 enum_value = 14;
    repeated PropertyValue struct_values = 15;
    LatLong lat_long_value = 16;
}