1*d5c09012SAndroid Build Coastguard Worker// Copyright 2023 Google LLC 2*d5c09012SAndroid Build Coastguard Worker// 3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*d5c09012SAndroid Build Coastguard Worker// 7*d5c09012SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*d5c09012SAndroid Build Coastguard Worker// 9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*d5c09012SAndroid Build Coastguard Worker// limitations under the License. 14*d5c09012SAndroid Build Coastguard Worker 15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3"; 16*d5c09012SAndroid Build Coastguard Worker 17*d5c09012SAndroid Build Coastguard Workerpackage google.api; 18*d5c09012SAndroid Build Coastguard Worker 19*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/descriptor.proto"; 20*d5c09012SAndroid Build Coastguard Worker 21*d5c09012SAndroid Build Coastguard Workeroption go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; 22*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 23*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "FieldInfoProto"; 24*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.api"; 25*d5c09012SAndroid Build Coastguard Workeroption objc_class_prefix = "GAPI"; 26*d5c09012SAndroid Build Coastguard Worker 27*d5c09012SAndroid Build Coastguard Workerextend google.protobuf.FieldOptions { 28*d5c09012SAndroid Build Coastguard Worker // Rich semantic descriptor of an API field beyond the basic typing. 29*d5c09012SAndroid Build Coastguard Worker // 30*d5c09012SAndroid Build Coastguard Worker // Examples: 31*d5c09012SAndroid Build Coastguard Worker // 32*d5c09012SAndroid Build Coastguard Worker // string request_id = 1 [(google.api.field_info).format = UUID4]; 33*d5c09012SAndroid Build Coastguard Worker // string old_ip_address = 2 [(google.api.field_info).format = IPV4]; 34*d5c09012SAndroid Build Coastguard Worker // string new_ip_address = 3 [(google.api.field_info).format = IPV6]; 35*d5c09012SAndroid Build Coastguard Worker // string actual_ip_address = 4 [ 36*d5c09012SAndroid Build Coastguard Worker // (google.api.field_info).format = IPV4_OR_IPV6 37*d5c09012SAndroid Build Coastguard Worker // ]; 38*d5c09012SAndroid Build Coastguard Worker google.api.FieldInfo field_info = 291403980; 39*d5c09012SAndroid Build Coastguard Worker} 40*d5c09012SAndroid Build Coastguard Worker 41*d5c09012SAndroid Build Coastguard Worker// Rich semantic information of an API field beyond basic typing. 42*d5c09012SAndroid Build Coastguard Workermessage FieldInfo { 43*d5c09012SAndroid Build Coastguard Worker // The standard format of a field value. The supported formats are all backed 44*d5c09012SAndroid Build Coastguard Worker // by either an RFC defined by the IETF or a Google-defined AIP. 45*d5c09012SAndroid Build Coastguard Worker enum Format { 46*d5c09012SAndroid Build Coastguard Worker // Default, unspecified value. 47*d5c09012SAndroid Build Coastguard Worker FORMAT_UNSPECIFIED = 0; 48*d5c09012SAndroid Build Coastguard Worker 49*d5c09012SAndroid Build Coastguard Worker // Universally Unique Identifier, version 4, value as defined by 50*d5c09012SAndroid Build Coastguard Worker // https://datatracker.ietf.org/doc/html/rfc4122. The value may be 51*d5c09012SAndroid Build Coastguard Worker // normalized to entirely lowercase letters. For example, the value 52*d5c09012SAndroid Build Coastguard Worker // `F47AC10B-58CC-0372-8567-0E02B2C3D479` would be normalized to 53*d5c09012SAndroid Build Coastguard Worker // `f47ac10b-58cc-0372-8567-0e02b2c3d479`. 54*d5c09012SAndroid Build Coastguard Worker UUID4 = 1; 55*d5c09012SAndroid Build Coastguard Worker 56*d5c09012SAndroid Build Coastguard Worker // Internet Protocol v4 value as defined by [RFC 57*d5c09012SAndroid Build Coastguard Worker // 791](https://datatracker.ietf.org/doc/html/rfc791). The value may be 58*d5c09012SAndroid Build Coastguard Worker // condensed, with leading zeros in each octet stripped. For example, 59*d5c09012SAndroid Build Coastguard Worker // `001.022.233.040` would be condensed to `1.22.233.40`. 60*d5c09012SAndroid Build Coastguard Worker IPV4 = 2; 61*d5c09012SAndroid Build Coastguard Worker 62*d5c09012SAndroid Build Coastguard Worker // Internet Protocol v6 value as defined by [RFC 63*d5c09012SAndroid Build Coastguard Worker // 2460](https://datatracker.ietf.org/doc/html/rfc2460). The value may be 64*d5c09012SAndroid Build Coastguard Worker // normalized to entirely lowercase letters with zeros compressed, following 65*d5c09012SAndroid Build Coastguard Worker // [RFC 5952](https://datatracker.ietf.org/doc/html/rfc5952). For example, 66*d5c09012SAndroid Build Coastguard Worker // the value `2001:0DB8:0::0` would be normalized to `2001:db8::`. 67*d5c09012SAndroid Build Coastguard Worker IPV6 = 3; 68*d5c09012SAndroid Build Coastguard Worker 69*d5c09012SAndroid Build Coastguard Worker // An IP address in either v4 or v6 format as described by the individual 70*d5c09012SAndroid Build Coastguard Worker // values defined herein. See the comments on the IPV4 and IPV6 types for 71*d5c09012SAndroid Build Coastguard Worker // allowed normalizations of each. 72*d5c09012SAndroid Build Coastguard Worker IPV4_OR_IPV6 = 4; 73*d5c09012SAndroid Build Coastguard Worker } 74*d5c09012SAndroid Build Coastguard Worker 75*d5c09012SAndroid Build Coastguard Worker // The standard format of a field value. This does not explicitly configure 76*d5c09012SAndroid Build Coastguard Worker // any API consumer, just documents the API's format for the field it is 77*d5c09012SAndroid Build Coastguard Worker // applied to. 78*d5c09012SAndroid Build Coastguard Worker Format format = 1; 79*d5c09012SAndroid Build Coastguard Worker} 80