xref: /aosp_15_r20/external/googleapis/google/api/field_info.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
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