1*1b3f573fSAndroid Build Coastguard Worker<?php 2*1b3f573fSAndroid Build Coastguard Worker# Generated by the protocol buffer compiler. DO NOT EDIT! 3*1b3f573fSAndroid Build Coastguard Worker# source: google/protobuf/field_mask.proto 4*1b3f573fSAndroid Build Coastguard Worker 5*1b3f573fSAndroid Build Coastguard Workernamespace Google\Protobuf; 6*1b3f573fSAndroid Build Coastguard Worker 7*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Internal\GPBType; 8*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Internal\RepeatedField; 9*1b3f573fSAndroid Build Coastguard Workeruse Google\Protobuf\Internal\GPBUtil; 10*1b3f573fSAndroid Build Coastguard Worker 11*1b3f573fSAndroid Build Coastguard Worker/** 12*1b3f573fSAndroid Build Coastguard Worker * `FieldMask` represents a set of symbolic field paths, for example: 13*1b3f573fSAndroid Build Coastguard Worker * paths: "f.a" 14*1b3f573fSAndroid Build Coastguard Worker * paths: "f.b.d" 15*1b3f573fSAndroid Build Coastguard Worker * Here `f` represents a field in some root message, `a` and `b` 16*1b3f573fSAndroid Build Coastguard Worker * fields in the message found in `f`, and `d` a field found in the 17*1b3f573fSAndroid Build Coastguard Worker * message in `f.b`. 18*1b3f573fSAndroid Build Coastguard Worker * Field masks are used to specify a subset of fields that should be 19*1b3f573fSAndroid Build Coastguard Worker * returned by a get operation or modified by an update operation. 20*1b3f573fSAndroid Build Coastguard Worker * Field masks also have a custom JSON encoding (see below). 21*1b3f573fSAndroid Build Coastguard Worker * # Field Masks in Projections 22*1b3f573fSAndroid Build Coastguard Worker * When used in the context of a projection, a response message or 23*1b3f573fSAndroid Build Coastguard Worker * sub-message is filtered by the API to only contain those fields as 24*1b3f573fSAndroid Build Coastguard Worker * specified in the mask. For example, if the mask in the previous 25*1b3f573fSAndroid Build Coastguard Worker * example is applied to a response message as follows: 26*1b3f573fSAndroid Build Coastguard Worker * f { 27*1b3f573fSAndroid Build Coastguard Worker * a : 22 28*1b3f573fSAndroid Build Coastguard Worker * b { 29*1b3f573fSAndroid Build Coastguard Worker * d : 1 30*1b3f573fSAndroid Build Coastguard Worker * x : 2 31*1b3f573fSAndroid Build Coastguard Worker * } 32*1b3f573fSAndroid Build Coastguard Worker * y : 13 33*1b3f573fSAndroid Build Coastguard Worker * } 34*1b3f573fSAndroid Build Coastguard Worker * z: 8 35*1b3f573fSAndroid Build Coastguard Worker * The result will not contain specific values for fields x,y and z 36*1b3f573fSAndroid Build Coastguard Worker * (their value will be set to the default, and omitted in proto text 37*1b3f573fSAndroid Build Coastguard Worker * output): 38*1b3f573fSAndroid Build Coastguard Worker * f { 39*1b3f573fSAndroid Build Coastguard Worker * a : 22 40*1b3f573fSAndroid Build Coastguard Worker * b { 41*1b3f573fSAndroid Build Coastguard Worker * d : 1 42*1b3f573fSAndroid Build Coastguard Worker * } 43*1b3f573fSAndroid Build Coastguard Worker * } 44*1b3f573fSAndroid Build Coastguard Worker * A repeated field is not allowed except at the last position of a 45*1b3f573fSAndroid Build Coastguard Worker * paths string. 46*1b3f573fSAndroid Build Coastguard Worker * If a FieldMask object is not present in a get operation, the 47*1b3f573fSAndroid Build Coastguard Worker * operation applies to all fields (as if a FieldMask of all fields 48*1b3f573fSAndroid Build Coastguard Worker * had been specified). 49*1b3f573fSAndroid Build Coastguard Worker * Note that a field mask does not necessarily apply to the 50*1b3f573fSAndroid Build Coastguard Worker * top-level response message. In case of a REST get operation, the 51*1b3f573fSAndroid Build Coastguard Worker * field mask applies directly to the response, but in case of a REST 52*1b3f573fSAndroid Build Coastguard Worker * list operation, the mask instead applies to each individual message 53*1b3f573fSAndroid Build Coastguard Worker * in the returned resource list. In case of a REST custom method, 54*1b3f573fSAndroid Build Coastguard Worker * other definitions may be used. Where the mask applies will be 55*1b3f573fSAndroid Build Coastguard Worker * clearly documented together with its declaration in the API. In 56*1b3f573fSAndroid Build Coastguard Worker * any case, the effect on the returned resource/resources is required 57*1b3f573fSAndroid Build Coastguard Worker * behavior for APIs. 58*1b3f573fSAndroid Build Coastguard Worker * # Field Masks in Update Operations 59*1b3f573fSAndroid Build Coastguard Worker * A field mask in update operations specifies which fields of the 60*1b3f573fSAndroid Build Coastguard Worker * targeted resource are going to be updated. The API is required 61*1b3f573fSAndroid Build Coastguard Worker * to only change the values of the fields as specified in the mask 62*1b3f573fSAndroid Build Coastguard Worker * and leave the others untouched. If a resource is passed in to 63*1b3f573fSAndroid Build Coastguard Worker * describe the updated values, the API ignores the values of all 64*1b3f573fSAndroid Build Coastguard Worker * fields not covered by the mask. 65*1b3f573fSAndroid Build Coastguard Worker * If a repeated field is specified for an update operation, new values will 66*1b3f573fSAndroid Build Coastguard Worker * be appended to the existing repeated field in the target resource. Note that 67*1b3f573fSAndroid Build Coastguard Worker * a repeated field is only allowed in the last position of a `paths` string. 68*1b3f573fSAndroid Build Coastguard Worker * If a sub-message is specified in the last position of the field mask for an 69*1b3f573fSAndroid Build Coastguard Worker * update operation, then new value will be merged into the existing sub-message 70*1b3f573fSAndroid Build Coastguard Worker * in the target resource. 71*1b3f573fSAndroid Build Coastguard Worker * For example, given the target message: 72*1b3f573fSAndroid Build Coastguard Worker * f { 73*1b3f573fSAndroid Build Coastguard Worker * b { 74*1b3f573fSAndroid Build Coastguard Worker * d: 1 75*1b3f573fSAndroid Build Coastguard Worker * x: 2 76*1b3f573fSAndroid Build Coastguard Worker * } 77*1b3f573fSAndroid Build Coastguard Worker * c: [1] 78*1b3f573fSAndroid Build Coastguard Worker * } 79*1b3f573fSAndroid Build Coastguard Worker * And an update message: 80*1b3f573fSAndroid Build Coastguard Worker * f { 81*1b3f573fSAndroid Build Coastguard Worker * b { 82*1b3f573fSAndroid Build Coastguard Worker * d: 10 83*1b3f573fSAndroid Build Coastguard Worker * } 84*1b3f573fSAndroid Build Coastguard Worker * c: [2] 85*1b3f573fSAndroid Build Coastguard Worker * } 86*1b3f573fSAndroid Build Coastguard Worker * then if the field mask is: 87*1b3f573fSAndroid Build Coastguard Worker * paths: ["f.b", "f.c"] 88*1b3f573fSAndroid Build Coastguard Worker * then the result will be: 89*1b3f573fSAndroid Build Coastguard Worker * f { 90*1b3f573fSAndroid Build Coastguard Worker * b { 91*1b3f573fSAndroid Build Coastguard Worker * d: 10 92*1b3f573fSAndroid Build Coastguard Worker * x: 2 93*1b3f573fSAndroid Build Coastguard Worker * } 94*1b3f573fSAndroid Build Coastguard Worker * c: [1, 2] 95*1b3f573fSAndroid Build Coastguard Worker * } 96*1b3f573fSAndroid Build Coastguard Worker * An implementation may provide options to override this default behavior for 97*1b3f573fSAndroid Build Coastguard Worker * repeated and message fields. 98*1b3f573fSAndroid Build Coastguard Worker * In order to reset a field's value to the default, the field must 99*1b3f573fSAndroid Build Coastguard Worker * be in the mask and set to the default value in the provided resource. 100*1b3f573fSAndroid Build Coastguard Worker * Hence, in order to reset all fields of a resource, provide a default 101*1b3f573fSAndroid Build Coastguard Worker * instance of the resource and set all fields in the mask, or do 102*1b3f573fSAndroid Build Coastguard Worker * not provide a mask as described below. 103*1b3f573fSAndroid Build Coastguard Worker * If a field mask is not present on update, the operation applies to 104*1b3f573fSAndroid Build Coastguard Worker * all fields (as if a field mask of all fields has been specified). 105*1b3f573fSAndroid Build Coastguard Worker * Note that in the presence of schema evolution, this may mean that 106*1b3f573fSAndroid Build Coastguard Worker * fields the client does not know and has therefore not filled into 107*1b3f573fSAndroid Build Coastguard Worker * the request will be reset to their default. If this is unwanted 108*1b3f573fSAndroid Build Coastguard Worker * behavior, a specific service may require a client to always specify 109*1b3f573fSAndroid Build Coastguard Worker * a field mask, producing an error if not. 110*1b3f573fSAndroid Build Coastguard Worker * As with get operations, the location of the resource which 111*1b3f573fSAndroid Build Coastguard Worker * describes the updated values in the request message depends on the 112*1b3f573fSAndroid Build Coastguard Worker * operation kind. In any case, the effect of the field mask is 113*1b3f573fSAndroid Build Coastguard Worker * required to be honored by the API. 114*1b3f573fSAndroid Build Coastguard Worker * ## Considerations for HTTP REST 115*1b3f573fSAndroid Build Coastguard Worker * The HTTP kind of an update operation which uses a field mask must 116*1b3f573fSAndroid Build Coastguard Worker * be set to PATCH instead of PUT in order to satisfy HTTP semantics 117*1b3f573fSAndroid Build Coastguard Worker * (PUT must only be used for full updates). 118*1b3f573fSAndroid Build Coastguard Worker * # JSON Encoding of Field Masks 119*1b3f573fSAndroid Build Coastguard Worker * In JSON, a field mask is encoded as a single string where paths are 120*1b3f573fSAndroid Build Coastguard Worker * separated by a comma. Fields name in each path are converted 121*1b3f573fSAndroid Build Coastguard Worker * to/from lower-camel naming conventions. 122*1b3f573fSAndroid Build Coastguard Worker * As an example, consider the following message declarations: 123*1b3f573fSAndroid Build Coastguard Worker * message Profile { 124*1b3f573fSAndroid Build Coastguard Worker * User user = 1; 125*1b3f573fSAndroid Build Coastguard Worker * Photo photo = 2; 126*1b3f573fSAndroid Build Coastguard Worker * } 127*1b3f573fSAndroid Build Coastguard Worker * message User { 128*1b3f573fSAndroid Build Coastguard Worker * string display_name = 1; 129*1b3f573fSAndroid Build Coastguard Worker * string address = 2; 130*1b3f573fSAndroid Build Coastguard Worker * } 131*1b3f573fSAndroid Build Coastguard Worker * In proto a field mask for `Profile` may look as such: 132*1b3f573fSAndroid Build Coastguard Worker * mask { 133*1b3f573fSAndroid Build Coastguard Worker * paths: "user.display_name" 134*1b3f573fSAndroid Build Coastguard Worker * paths: "photo" 135*1b3f573fSAndroid Build Coastguard Worker * } 136*1b3f573fSAndroid Build Coastguard Worker * In JSON, the same mask is represented as below: 137*1b3f573fSAndroid Build Coastguard Worker * { 138*1b3f573fSAndroid Build Coastguard Worker * mask: "user.displayName,photo" 139*1b3f573fSAndroid Build Coastguard Worker * } 140*1b3f573fSAndroid Build Coastguard Worker * # Field Masks and Oneof Fields 141*1b3f573fSAndroid Build Coastguard Worker * Field masks treat fields in oneofs just as regular fields. Consider the 142*1b3f573fSAndroid Build Coastguard Worker * following message: 143*1b3f573fSAndroid Build Coastguard Worker * message SampleMessage { 144*1b3f573fSAndroid Build Coastguard Worker * oneof test_oneof { 145*1b3f573fSAndroid Build Coastguard Worker * string name = 4; 146*1b3f573fSAndroid Build Coastguard Worker * SubMessage sub_message = 9; 147*1b3f573fSAndroid Build Coastguard Worker * } 148*1b3f573fSAndroid Build Coastguard Worker * } 149*1b3f573fSAndroid Build Coastguard Worker * The field mask can be: 150*1b3f573fSAndroid Build Coastguard Worker * mask { 151*1b3f573fSAndroid Build Coastguard Worker * paths: "name" 152*1b3f573fSAndroid Build Coastguard Worker * } 153*1b3f573fSAndroid Build Coastguard Worker * Or: 154*1b3f573fSAndroid Build Coastguard Worker * mask { 155*1b3f573fSAndroid Build Coastguard Worker * paths: "sub_message" 156*1b3f573fSAndroid Build Coastguard Worker * } 157*1b3f573fSAndroid Build Coastguard Worker * Note that oneof type names ("test_oneof" in this case) cannot be used in 158*1b3f573fSAndroid Build Coastguard Worker * paths. 159*1b3f573fSAndroid Build Coastguard Worker * ## Field Mask Verification 160*1b3f573fSAndroid Build Coastguard Worker * The implementation of any API method which has a FieldMask type field in the 161*1b3f573fSAndroid Build Coastguard Worker * request should verify the included field paths, and return an 162*1b3f573fSAndroid Build Coastguard Worker * `INVALID_ARGUMENT` error if any path is unmappable. 163*1b3f573fSAndroid Build Coastguard Worker * 164*1b3f573fSAndroid Build Coastguard Worker * Generated from protobuf message <code>google.protobuf.FieldMask</code> 165*1b3f573fSAndroid Build Coastguard Worker */ 166*1b3f573fSAndroid Build Coastguard Workerclass FieldMask extends \Google\Protobuf\Internal\Message 167*1b3f573fSAndroid Build Coastguard Worker{ 168*1b3f573fSAndroid Build Coastguard Worker /** 169*1b3f573fSAndroid Build Coastguard Worker * The set of field mask paths. 170*1b3f573fSAndroid Build Coastguard Worker * 171*1b3f573fSAndroid Build Coastguard Worker * Generated from protobuf field <code>repeated string paths = 1;</code> 172*1b3f573fSAndroid Build Coastguard Worker */ 173*1b3f573fSAndroid Build Coastguard Worker private $paths; 174*1b3f573fSAndroid Build Coastguard Worker 175*1b3f573fSAndroid Build Coastguard Worker /** 176*1b3f573fSAndroid Build Coastguard Worker * Constructor. 177*1b3f573fSAndroid Build Coastguard Worker * 178*1b3f573fSAndroid Build Coastguard Worker * @param array $data { 179*1b3f573fSAndroid Build Coastguard Worker * Optional. Data for populating the Message object. 180*1b3f573fSAndroid Build Coastguard Worker * 181*1b3f573fSAndroid Build Coastguard Worker * @type array<string>|\Google\Protobuf\Internal\RepeatedField $paths 182*1b3f573fSAndroid Build Coastguard Worker * The set of field mask paths. 183*1b3f573fSAndroid Build Coastguard Worker * } 184*1b3f573fSAndroid Build Coastguard Worker */ 185*1b3f573fSAndroid Build Coastguard Worker public function __construct($data = NULL) { 186*1b3f573fSAndroid Build Coastguard Worker \GPBMetadata\Google\Protobuf\FieldMask::initOnce(); 187*1b3f573fSAndroid Build Coastguard Worker parent::__construct($data); 188*1b3f573fSAndroid Build Coastguard Worker } 189*1b3f573fSAndroid Build Coastguard Worker 190*1b3f573fSAndroid Build Coastguard Worker /** 191*1b3f573fSAndroid Build Coastguard Worker * The set of field mask paths. 192*1b3f573fSAndroid Build Coastguard Worker * 193*1b3f573fSAndroid Build Coastguard Worker * Generated from protobuf field <code>repeated string paths = 1;</code> 194*1b3f573fSAndroid Build Coastguard Worker * @return \Google\Protobuf\Internal\RepeatedField 195*1b3f573fSAndroid Build Coastguard Worker */ 196*1b3f573fSAndroid Build Coastguard Worker public function getPaths() 197*1b3f573fSAndroid Build Coastguard Worker { 198*1b3f573fSAndroid Build Coastguard Worker return $this->paths; 199*1b3f573fSAndroid Build Coastguard Worker } 200*1b3f573fSAndroid Build Coastguard Worker 201*1b3f573fSAndroid Build Coastguard Worker /** 202*1b3f573fSAndroid Build Coastguard Worker * The set of field mask paths. 203*1b3f573fSAndroid Build Coastguard Worker * 204*1b3f573fSAndroid Build Coastguard Worker * Generated from protobuf field <code>repeated string paths = 1;</code> 205*1b3f573fSAndroid Build Coastguard Worker * @param array<string>|\Google\Protobuf\Internal\RepeatedField $var 206*1b3f573fSAndroid Build Coastguard Worker * @return $this 207*1b3f573fSAndroid Build Coastguard Worker */ 208*1b3f573fSAndroid Build Coastguard Worker public function setPaths($var) 209*1b3f573fSAndroid Build Coastguard Worker { 210*1b3f573fSAndroid Build Coastguard Worker $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); 211*1b3f573fSAndroid Build Coastguard Worker $this->paths = $arr; 212*1b3f573fSAndroid Build Coastguard Worker 213*1b3f573fSAndroid Build Coastguard Worker return $this; 214*1b3f573fSAndroid Build Coastguard Worker } 215*1b3f573fSAndroid Build Coastguard Worker 216*1b3f573fSAndroid Build Coastguard Worker} 217*1b3f573fSAndroid Build Coastguard Worker 218