pub const TINC_ANNOTATIONS_PB: &[u8] = b"\n\xaf}\n\x16tinc/annotations.proto\x12\x04tinc\x1a google/protobuf/descriptor.proto\"8\n\x0eServiceOptions\x12\x1b\n\x06prefix\x18\x01 \x01(\tH\x00R\x06prefix\x88\x01\x01B\t\n\x07_prefix\"m\n\rMethodOptions\x125\n\x08endpoint\x18\x01 \x03(\x0b2\x19.tinc.HttpEndpointOptionsR\x08endpoint\x12%\n\x03cel\x18\x02 \x03(\x0b2\x13.tinc.CelExpressionR\x03cel\"\xeb\x01\n\x0eMessageOptions\x12\x1f\n\x08generate\x18\x01 \x01(\x08H\x00R\x08generate\x88\x01\x01\x123\n\nrename_all\x18\x02 \x01(\x0e2\x0f.tinc.RenameAllH\x01R\trenameAll\x88\x01\x01\x12,\n\x0fskip_validation\x18e \x01(\x08H\x02R\x0eskipValidation\x88\x01\x01\x12%\n\x03cel\x18d \x03(\x0b2\x13.tinc.CelExpressionR\x03celB\x0b\n\t_generateB\r\n\x0b_rename_allB\x12\n\x10_skip_validation\"\xf0\x01\n\x15PredefinedConstraints\x12%\n\x03cel\x18\x01 \x03(\x0b2\x13.tinc.CelExpressionR\x03cel\x124\n\x04type\x18\x02 \x01(\x0e2 .tinc.PredefinedConstraints.TypeR\x04type\"z\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x19\n\x15WRAPPER_REPEATED_ITEM\x10\x01\x12\x13\n\x0fWRAPPER_MAP_KEY\x10\x02\x12\x15\n\x11WRAPPER_MAP_VALUE\x10\x03\x12\x15\n\x11CUSTOM_EXPRESSION\x10\x04\"\xb2\x02\n\x0cFieldOptions\x12\x1b\n\x06rename\x18\x01 \x01(\tH\x00R\x06rename\x88\x01\x01\x12;\n\x0ejson_omittable\x18\xc8\x01 \x01(\x0e2\x13.tinc.JsonOmittableR\rjsonOmittable\x12\x1e\n\x07flatten\x18\xcd\x01 \x01(\x08H\x01R\x07flatten\x88\x01\x01\x126\n\nvisibility\x18\xca\x01 \x01(\x0e2\x10.tinc.VisibilityH\x02R\nvisibility\x88\x01\x01\x12;\n\nconstraint\x18e \x01(\x0b2\x16.tinc.FieldConstraintsH\x03R\nconstraint\x88\x01\x01B\t\n\x07_renameB\n\n\x08_flattenB\r\n\x0b_visibilityB\r\n\x0b_constraint\"\x82\t\n\x10FloatConstraints\x12i\n\x02gt\x18\x01 \x01(\x02BW\xa2\xc9\x07S\nQ\x12#value must be greater than `{this}`\x1a\x0cinput > this*\x1c{ \"exclusiveMinimum\": this }H\x00R\x02gt\x12o\n\x03gte\x18\x02 \x01(\x02B[\xa2\xc9\x07W\nU\x12/value must be greater than or equal to `{this}`\x1a\rinput >= this*\x13{ \"minimum\": this }H\x00R\x03gte\x12f\n\x02lt\x18\x03 \x01(\x02BT\xa2\xc9\x07P\nN\x12 value must be less than `{this}`\x1a\x0cinput < this*\x1c{ \"exclusiveMaximum\": this }H\x01R\x02lt\x12j\n\x03lte\x18\x04 \x01(\x02BV\xa2\xc9\x07R\nP\x12*value must be less than or equal to {this}\x1a\rinput <= this*\x13{ \"maximum\": this }H\x01R\x03lte\x12]\n\x02in\x18\x05 \x03(\x02BM\xa2\xc9\x07I\nG\x12\x1dvalue must be one of `{this}`\x1a\x14this.contains(input)*\x10{ \"enum\": this }R\x02in\x12s\n\x06not_in\x18\x06 \x03(\x02B\\\xa2\xc9\x07X\nV\x12!value must not be one of `{this}`\x1a\x15!this.contains(input)*\x1a{ \"not\": { \"enum\": this }}R\x05notIn\x12d\n\x05const\x18\x08 \x01(\x02BI\xa2\xc9\x07E\nC\x12\x1fvalue must be equal to `{this}`\x1a\rinput == this*\x11{ \"const\": this }H\x02R\x05const\x88\x01\x01\x12\x89\x01\n\x0cdisallow_nan\x18\t \x01(\x08Ba\xa2\xc9\x07]\n[\x12\x15value must not be NaN\x1a\x17!this || !input.isNaN()*)this ? { \"not\": { \"enum\": [\"NaN\"] }} : {}H\x03R\x0bdisallowNan\x88\x01\x01\x12\xb3\x01\n\x11disallow_infinity\x18\n \x01(\x08B\x80\x01\xa2\xc9\x07|\nz\x12\"value must not be of infinity kind\x1a\x17!this || !input.isInf()*;this ? { \"not\": { \"enum\": [\"Infinity\", \"-Infinity\"] }} : {}H\x04R\x10disallowInfinity\x88\x01\x01B\t\n\x07greaterB\x06\n\x04lessB\x08\n\x06_constB\x0f\n\r_disallow_nanB\x14\n\x12_disallow_infinity\"\x85\t\n\x11DoubleConstraints\x12i\n\x02gt\x18\x01 \x01(\x01BW\xa2\xc9\x07S\nQ\x12#value must be greater than `{this}`\x1a\x0cinput > this*\x1c{ \"exclusiveMinimum\": this }H\x00R\x02gt\x12o\n\x03gte\x18\x02 \x01(\x01B[\xa2\xc9\x07W\nU\x12/value must be greater than or equal to `{this}`\x1a\rinput >= this*\x13{ \"minimum\": this }H\x00R\x03gte\x12f\n\x02lt\x18\x03 \x01(\x01BT\xa2\xc9\x07P\nN\x12 value must be less than `{this}`\x1a\x0cinput < this*\x1c{ \"exclusiveMaximum\": this }H\x01R\x02lt\x12l\n\x03lte\x18\x04 \x01(\x01BX\xa2\xc9\x07T\nR\x12,value must be less than or equal to `{this}`\x1a\rinput <= this*\x13{ \"maximum\": this }H\x01R\x03lte\x12]\n\x02in\x18\x05 \x03(\x01BM\xa2\xc9\x07I\nG\x12\x1dvalue must be one of `{this}`\x1a\x14this.contains(input)*\x10{ \"enum\": this }R\x02in\x12s\n\x06not_in\x18\x06 \x03(\x01B\\\xa2\xc9\x07X\nV\x12!value must not be one of `{this}`\x1a\x15!this.contains(input)*\x1a{ \"not\": { \"enum\": this }}R\x05notIn\x12d\n\x05const\x18\x08 \x01(\x01BI\xa2\xc9\x07E\nC\x12\x1fvalue must be equal to `{this}`\x1a\rinput == this*\x11{ \"const\": this }H\x02R\x05const\x88\x01\x01\x12\x89\x01\n\x0cdisallow_nan\x18\t \x01(\x08Ba\xa2\xc9\x07]\n[\x12\x15value must not be NaN\x1a\x17!this || !input.isNaN()*)this ? { \"not\": { \"enum\": [\"NaN\"] }} : {}H\x03R\x0bdisallowNan\x88\x01\x01\x12\xb3\x01\n\x11disallow_infinity\x18\n \x01(\x08B\x80\x01\xa2\xc9\x07|\nz\x12\"value must not be of infinity kind\x1a\x17!this || !input.isInf()*;this ? { \"not\": { \"enum\": [\"Infinity\", \"-Infinity\"] }} : {}H\x04R\x10disallowInfinity\x88\x01\x01B\t\n\x07greaterB\x06\n\x04lessB\x08\n\x06_constB\x0f\n\r_disallow_nanB\x14\n\x12_disallow_infinity\"\x9b\x06\n\x10Int32Constraints\x12i\n\x02gt\x18\x01 \x01(\x05BW\xa2\xc9\x07S\nQ\x12#value must be greater than `{this}`\x1a\x0cinput > this*\x1c{ \"exclusiveMinimum\": this }H\x00R\x02gt\x12o\n\x03gte\x18\x02 \x01(\x05B[\xa2\xc9\x07W\nU\x12/value must be greater than or equal to `{this}`\x1a\rinput >= this*\x13{ \"minimum\": this }H\x00R\x03gte\x12f\n\x02lt\x18\x03 \x01(\x05BT\xa2\xc9\x07P\nN\x12 value must be less than `{this}`\x1a\x0cinput < this*\x1c{ \"exclusiveMaximum\": this }H\x01R\x02lt\x12l\n\x03lte\x18\x04 \x01(\x05BX\xa2\xc9\x07T\nR\x12,value must be less than or equal to `{this}`\x1a\rinput <= this*\x13{ \"maximum\": this }H\x01R\x03lte\x12]\n\x02in\x18\x05 \x03(\x05BM\xa2\xc9\x07I\nG\x12\x1dvalue must be one of `{this}`\x1a\x14this.contains(input)*\x10{ \"enum\": this }R\x02in\x12s\n\x06not_in\x18\x06 \x03(\x05B\\\xa2\xc9\x07X\nV\x12!value must not be one of `{this}`\x1a\x15!this.contains(input)*\x1a{ \"not\": { \"enum\": this }}R\x05notIn\x12d\n\x05const\x18\x08 \x01(\x05BI\xa2\xc9\x07E\nC\x12\x1fvalue must be equal to `{this}`\x1a\rinput == this*\x11{ \"const\": this }H\x02R\x05const\x88\x01\x01B\t\n\x07greaterB\x06\n\x04lessB\x08\n\x06_const\"\x9b\x06\n\x10Int64Constraints\x12i\n\x02gt\x18\x01 \x01(\x03BW\xa2\xc9\x07S\nQ\x12#value must be greater than `{this}`\x1a\x0cinput > this*\x1c{ \"exclusiveMinimum\": this }H\x00R\x02gt\x12o\n\x03gte\x18\x02 \x01(\x03B[\xa2\xc9\x07W\nU\x12/value must be greater than or equal to `{this}`\x1a\rinput >= this*\x13{ \"minimum\": this }H\x00R\x03gte\x12f\n\x02lt\x18\x03 \x01(\x03BT\xa2\xc9\x07P\nN\x12 value must be less than `{this}`\x1a\x0cinput < this*\x1c{ \"exclusiveMaximum\": this }H\x01R\x02lt\x12l\n\x03lte\x18\x04 \x01(\x03BX\xa2\xc9\x07T\nR\x12,value must be less than or equal to `{this}`\x1a\rinput <= this*\x13{ \"maximum\": this }H\x01R\x03lte\x12]\n\x02in\x18\x05 \x03(\x03BM\xa2\xc9\x07I\nG\x12\x1dvalue must be one of `{this}`\x1a\x14this.contains(input)*\x10{ \"enum\": this }R\x02in\x12s\n\x06not_in\x18\x06 \x03(\x03B\\\xa2\xc9\x07X\nV\x12!value must not be one of `{this}`\x1a\x15!this.contains(input)*\x1a{ \"not\": { \"enum\": this }}R\x05notIn\x12d\n\x05const\x18\x08 \x01(\x03BI\xa2\xc9\x07E\nC\x12\x1fvalue must be equal to `{this}`\x1a\rinput == this*\x11{ \"const\": this }H\x02R\x05const\x88\x01\x01B\t\n\x07greaterB\x06\n\x04lessB\x08\n\x06_const\"\x9c\x06\n\x11UInt32Constraints\x12i\n\x02gt\x18\x01 \x01(\rBW\xa2\xc9\x07S\nQ\x12#value must be greater than `{this}`\x1a\x0cinput > this*\x1c{ \"exclusiveMinimum\": this }H\x00R\x02gt\x12o\n\x03gte\x18\x02 \x01(\rB[\xa2\xc9\x07W\nU\x12/value must be greater than or equal to `{this}`\x1a\rinput >= this*\x13{ \"minimum\": this }H\x00R\x03gte\x12f\n\x02lt\x18\x03 \x01(\rBT\xa2\xc9\x07P\nN\x12 value must be less than `{this}`\x1a\x0cinput < this*\x1c{ \"exclusiveMaximum\": this }H\x01R\x02lt\x12l\n\x03lte\x18\x04 \x01(\rBX\xa2\xc9\x07T\nR\x12,value must be less than or equal to `{this}`\x1a\rinput <= this*\x13{ \"maximum\": this }H\x01R\x03lte\x12]\n\x02in\x18\x05 \x03(\rBM\xa2\xc9\x07I\nG\x12\x1dvalue must be one of `{this}`\x1a\x14this.contains(input)*\x10{ \"enum\": this }R\x02in\x12s\n\x06not_in\x18\x06 \x03(\rB\\\xa2\xc9\x07X\nV\x12!value must not be one of `{this}`\x1a\x15!this.contains(input)*\x1a{ \"not\": { \"enum\": this }}R\x05notIn\x12d\n\x05const\x18\x08 \x01(\rBI\xa2\xc9\x07E\nC\x12\x1fvalue must be equal to `{this}`\x1a\rinput == this*\x11{ \"const\": this }H\x02R\x05const\x88\x01\x01B\t\n\x07greaterB\x06\n\x04lessB\x08\n\x06_const\"\x9c\x06\n\x11UInt64Constraints\x12i\n\x02gt\x18\x01 \x01(\x03BW\xa2\xc9\x07S\nQ\x12#value must be greater than `{this}`\x1a\x0cinput > this*\x1c{ \"exclusiveMinimum\": this }H\x00R\x02gt\x12o\n\x03gte\x18\x02 \x01(\x04B[\xa2\xc9\x07W\nU\x12/value must be greater than or equal to `{this}`\x1a\rinput >= this*\x13{ \"minimum\": this }H\x00R\x03gte\x12f\n\x02lt\x18\x03 \x01(\x04BT\xa2\xc9\x07P\nN\x12 value must be less than `{this}`\x1a\x0cinput < this*\x1c{ \"exclusiveMaximum\": this }H\x01R\x02lt\x12l\n\x03lte\x18\x04 \x01(\x04BX\xa2\xc9\x07T\nR\x12,value must be less than or equal to `{this}`\x1a\rinput <= this*\x13{ \"maximum\": this }H\x01R\x03lte\x12]\n\x02in\x18\x05 \x03(\x04BM\xa2\xc9\x07I\nG\x12\x1dvalue must be one of `{this}`\x1a\x14this.contains(input)*\x10{ \"enum\": this }R\x02in\x12s\n\x06not_in\x18\x06 \x03(\x04B\\\xa2\xc9\x07X\nV\x12!value must not be one of `{this}`\x1a\x15!this.contains(input)*\x1a{ \"not\": { \"enum\": this }}R\x05notIn\x12d\n\x05const\x18\x08 \x01(\x04BI\xa2\xc9\x07E\nC\x12\x1fvalue must be equal to `{this}`\x1a\rinput == this*\x11{ \"const\": this }H\x02R\x05const\x88\x01\x01B\t\n\x07greaterB\x06\n\x04lessB\x08\n\x06_const\"\xf7\x13\n\x11StringConstraints\x12]\n\x05const\x18\x01 \x01(\tBB\xa2\xc9\x07>\n<\x12\x19value must equal `{this}`\x1a\rinput == this*\x10{\"const\": this }H\x01R\x05const\x88\x01\x01\x12\x91\x01\n\x03len\x18\x02 \x01(\x04Bz\xa2\xc9\x07v\nt\x12.value must be exactly `{this}` characters long\x1a\x14input.size() == this*\x15{ \"maxLength\": this }*\x15{ \"minLength\": this }H\x02R\x03len\x88\x01\x01\x12\x82\x01\n\x07min_len\x18\x03 \x01(\x04Bd\xa2\xc9\x07`\n^\x12/value must be at least `{this}` characters long\x1a\x14input.size() >= this*\x15{ \"minLength\": this }H\x03R\x06minLen\x88\x01\x01\x12\x81\x01\n\x07max_len\x18\x04 \x01(\x04Bc\xa2\xc9\x07_\n]\x12.value must be at most `{this}` characters long\x1a\x14input.size() <= this*\x15{ \"maxLength\": this }H\x04R\x06maxLen\x88\x01\x01\x12r\n\x05match\x18\x05 \x01(\tBW\xa2\xc9\x07S\nQ\x12%value must match the pattern `{this}`\x1a\x13input.matches(this)*\x13{ \"pattern\": this }H\x05R\x05match\x88\x01\x01\x12\x8a\x01\n\tnot_match\x18\x06 \x01(\tBh\xa2\xc9\x07d\nb\x12)value must not match the pattern `{this}`\x1a\x16!(input.matches(this))*\x1d{ \"not\": { \"pattern\": this }}H\x06R\x08notMatch\x88\x01\x01\x12v\n\x06prefix\x18\x07 \x01(\tBY\xa2\xc9\x07U\nS\x12\x1evalue must start with `{this}`\x1a\x16input.startsWith(this)*\x19{ \"pattern\": \"^\" + this }H\x07R\x06prefix\x88\x01\x01\x12r\n\x06suffix\x18\x08 \x01(\tBU\xa2\xc9\x07Q\nO\x12\x1cvalue must end with `{this}`\x1a\x14input.endsWith(this)*\x19{ \"pattern\": this + \"$\" }H\x08R\x06suffix\x88\x01\x01\x12o\n\x08contains\x18\t \x01(\tBN\xa2\xc9\x07J\nH\x12\x1bvalue must contain `{this}`\x1a\x14input.contains(this)*\x13{ \"pattern\": this }H\tR\x08contains\x88\x01\x01\x12\x85\x01\n\x0cnot_contains\x18\n \x01(\tB]\xa2\xc9\x07Y\nW\x12\x1fvalue must not contain `{this}`\x1a\x15!input.contains(this)*\x1d{ \"not\": { \"pattern\": this }}H\nR\x0bnotContains\x88\x01\x01\x12]\n\x02in\x18\x0b \x03(\tBM\xa2\xc9\x07I\nG\x12\x1dvalue must be one of `{this}`\x1a\x14this.contains(input)*\x10{ \"enum\": this }R\x02in\x12s\n\x06not_in\x18\x0c \x03(\tB\\\xa2\xc9\x07X\nV\x12!value must not be one of `{this}`\x1a\x15!this.contains(input)*\x1a{ \"not\": { \"enum\": this }}R\x05notIn\x12\x80\x01\n\x05email\x18\r \x01(\x08Bh\xa2\xc9\x07d\nb\x12#value must be a valid email address\x1a\x18!this || input.isEmail()*!this ? { \"format\": \"email\" } : {}H\x00R\x05email\x12\xbb\x01\n\x02ip\x18\x0e \x01(\x08B\xa8\x01\xa2\xc9\x07\xa3\x01\n\xa0\x01\x12*value must be a valid ipv4 or ipv6 address\x1a)!this || input.isIpv4() || input.isIpv6()*Gthis ? { \"anyOf\": [ { \"format\": \"ipv4\" }, { \"format\": \"ipv6\" } ] } : {}H\x00R\x02ip\x12{\n\x04ipv4\x18\x0f \x01(\x08Be\xa2\xc9\x07a\n_\x12\"value must be a valid ipv4 address\x1a\x17!this || input.isIpv4()* this ? { \"format\": \"ipv4\" } : {}H\x00R\x04ipv4\x12{\n\x04ipv6\x18\x10 \x01(\x08Be\xa2\xc9\x07a\n_\x12\"value must be a valid ipv6 address\x1a\x17!this || input.isIpv6()* this ? { \"format\": \"ipv6\" } : {}H\x00R\x04ipv6\x12s\n\x04uuid\x18\x11 \x01(\x08B]\xa2\xc9\x07Y\nW\x12\x1avalue must be a valid uuid\x1a\x17!this || input.isUuid()* this ? { \"format\": \"uuid\" } : {}H\x00R\x04uuid\x12\x87\x01\n\x08hostname\x18\x12 \x01(\x08Bi\xa2\xc9\x07e\nc\x12\x1evalue must be a valid hostname\x1a\x1b!this || input.isHostname()*$this ? { \"format\": \"hostname\" } : {}H\x00R\x08hostname\x12n\n\x03uri\x18\x13 \x01(\x08BZ\xa2\xc9\x07V\nT\x12\x19value must be a valid uri\x1a\x16!this || input.isUri()*\x1fthis ? { \"format\": \"uri\" } : {}H\x00R\x03uriB\x0c\n\nwell_knownB\x08\n\x06_constB\x06\n\x04_lenB\n\n\x08_min_lenB\n\n\x08_max_lenB\x08\n\x06_matchB\x0c\n\n_not_matchB\t\n\x07_prefixB\t\n\x07_suffixB\x0b\n\t_containsB\x0f\n\r_not_contains\"\xa7\x04\n\x10BytesConstraints\x12]\n\x05const\x18\x01 \x01(\x0cBB\xa2\xc9\x07>\n<\x12\x19value must equal `{this}`\x1a\rinput == this*\x10{\"const\": this }H\x00R\x05const\x88\x01\x01\x12\x8c\x01\n\x03len\x18\x02 \x01(\x04Bu\xa2\xc9\x07q\no\x12)value must be exactly `{this}` bytes long\x1a\x14input.size() == this*\x15{ \"minLength\": this }*\x15{ \"maxLength\": this }H\x01R\x03len\x88\x01\x01\x12}\n\x07min_len\x18\x03 \x01(\x04B_\xa2\xc9\x07[\nY\x12*value must be at least `{this}` bytes long\x1a\x14input.size() >= this*\x15{ \"minLength\": this }H\x02R\x06minLen\x88\x01\x01\x12|\n\x07max_len\x18\x04 \x01(\x04B^\xa2\xc9\x07Z\nX\x12)value must be at most `{this}` bytes long\x1a\x14input.size() <= this*\x15{ \"maxLength\": this }H\x03R\x06maxLen\x88\x01\x01B\x08\n\x06_constB\x06\n\x04_lenB\n\n\x08_min_lenB\n\n\x08_max_len\"\x95\x04\n\x0fEnumConstraints\x12r\n\x05const\x18\x01 \x01(\x05BW\xa2\xc9\x07S\nQ\x12&value must be equal to `{this.enum()}`\x1a\rinput == this*\x18{ \"const\": this.enum() }H\x00R\x05const\x88\x01\x01\x12_\n\x07defined\x18\x02 \x01(\x08B@\xa2\xc9\x07<\n:\x12!value must be defined in the enum\x1a\x15!this || input.enum()H\x01R\x07defined\x88\x01\x01\x12\x7f\n\x02in\x18\x03 \x03(\x05Bo\xa2\xc9\x07k\ni\x12.value must be one of `{this.map(e, e.enum())}`\x1a\x14this.contains(input)*!{ \"enum\": this.map(e, e.enum()) }R\x02in\x12\x95\x01\n\x06not_in\x18\x04 \x03(\x05B~\xa2\xc9\x07z\nx\x122value must not be one of `{this.map(e, e.enum())}`\x1a\x15!this.contains(input)*+{ \"not\": { \"enum\": this.map(e, e.enum()) }}R\x05notInB\x08\n\x06_constB\n\n\x08_defined\"\x83\x04\n\x13RepeatedConstraints\x12|\n\x07min_len\x18\x01 \x01(\x04B^\xa2\xc9\x07Z\nX\x12*value must have at least `{this}` elements\x1a\x14input.size() >= this*\x14{ \"minItems\": this }H\x00R\x06minLen\x88\x01\x01\x12{\n\x07max_len\x18\x02 \x01(\x04B]\xa2\xc9\x07Y\nW\x12)value must have at most `{this}` elements\x1a\x14input.size() <= this*\x14{ \"maxItems\": this }H\x01R\x06maxLen\x88\x01\x01\x12\x8a\x01\n\x03len\x18\x03 \x01(\x04Bs\xa2\xc9\x07o\nm\x12)value must have exactly `{this}` elements\x1a\x14input.size() == this*\x14{ \"maxItems\": this }*\x14{ \"minItems\": this }H\x02R\x03len\x88\x01\x01\x12;\n\x04item\x18\x05 \x01(\x0b2\x1a.tinc.PrimitiveConstraintsB\x06\xa2\xc9\x07\x02\x10\x01H\x03R\x04item\x88\x01\x01B\n\n\x08_min_lenB\n\n\x08_max_lenB\x06\n\x04_lenB\x07\n\x05_item\"\xb2\x07\n\x0eMapConstraints\x12\x81\x01\n\x07min_len\x18\x01 \x01(\x04Bc\xa2\xc9\x07_\n]\x12*value must have at least `{this}` elements\x1a\x14input.size() >= this*\x19{ \"minProperties\": this }H\x00R\x06minLen\x88\x01\x01\x12\x80\x01\n\x07max_len\x18\x02 \x01(\x04Bb\xa2\xc9\x07^\n\\\x12)value must have at most `{this}` elements\x1a\x14input.size() <= this*\x19{ \"maxProperties\": this }H\x01R\x06maxLen\x88\x01\x01\x12\x94\x01\n\x03len\x18\x03 \x01(\x04B}\xa2\xc9\x07y\nw\x12)value must have exactly `{this}` elements\x1a\x14input.size() == this*\x19{ \"minProperties\": this }*\x19{ \"maxProperties\": this }H\x02R\x03len\x88\x01\x01\x12E\n\x03key\x18\x04 \x01(\x0b2&.tinc.MapConstraints.MapKeyConstraintsB\x06\xa2\xc9\x07\x02\x10\x02H\x03R\x03key\x88\x01\x01\x12=\n\x05value\x18\x05 \x01(\x0b2\x1a.tinc.PrimitiveConstraintsB\x06\xa2\xc9\x07\x02\x10\x03H\x04R\x05value\x88\x01\x01\x1a\xc9\x02\n\x11MapKeyConstraints\x12.\n\x05int32\x18\x01 \x01(\x0b2\x16.tinc.Int32ConstraintsH\x00R\x05int32\x12.\n\x05int64\x18\x02 \x01(\x0b2\x16.tinc.Int64ConstraintsH\x00R\x05int64\x121\n\x06uint32\x18\x03 \x01(\x0b2\x17.tinc.UInt32ConstraintsH\x00R\x06uint32\x121\n\x06uint64\x18\x04 \x01(\x0b2\x17.tinc.UInt64ConstraintsH\x00R\x06uint64\x121\n\x06string\x18\x05 \x01(\x0b2\x17.tinc.StringConstraintsH\x00R\x06string\x12-\n\x03cel\x18\x08 \x03(\x0b2\x13.tinc.CelExpressionB\x06\xa2\xc9\x07\x02\x10\x04R\x03celB\x0c\n\nconstraintB\n\n\x08_min_lenB\n\n\x08_max_lenB\x06\n\x04_lenB\x06\n\x04_keyB\x08\n\x06_value\"\x8c\x04\n\x14PrimitiveConstraints\x12.\n\x05float\x18\x01 \x01(\x0b2\x16.tinc.FloatConstraintsH\x00R\x05float\x121\n\x06double\x18\x02 \x01(\x0b2\x17.tinc.DoubleConstraintsH\x00R\x06double\x12.\n\x05int32\x18\x03 \x01(\x0b2\x16.tinc.Int32ConstraintsH\x00R\x05int32\x12.\n\x05int64\x18\x04 \x01(\x0b2\x16.tinc.Int64ConstraintsH\x00R\x05int64\x121\n\x06uint32\x18\x05 \x01(\x0b2\x17.tinc.UInt32ConstraintsH\x00R\x06uint32\x121\n\x06uint64\x18\x06 \x01(\x0b2\x17.tinc.UInt64ConstraintsH\x00R\x06uint64\x121\n\x06string\x18\x07 \x01(\x0b2\x17.tinc.StringConstraintsH\x00R\x06string\x12.\n\x05bytes\x18\x08 \x01(\x0b2\x16.tinc.BytesConstraintsH\x00R\x05bytes\x12+\n\x04enum\x18\t \x01(\x0b2\x15.tinc.EnumConstraintsH\x00R\x04enum\x12-\n\x03cel\x18\x0b \x03(\x0b2\x13.tinc.CelExpressionB\x06\xa2\xc9\x07\x02\x10\x04R\x03celB\x0c\n\nconstraint\"\xeb\x04\n\x10FieldConstraints\x12.\n\x05float\x18\x01 \x01(\x0b2\x16.tinc.FloatConstraintsH\x00R\x05float\x121\n\x06double\x18\x02 \x01(\x0b2\x17.tinc.DoubleConstraintsH\x00R\x06double\x12.\n\x05int32\x18\x03 \x01(\x0b2\x16.tinc.Int32ConstraintsH\x00R\x05int32\x12.\n\x05int64\x18\x04 \x01(\x0b2\x16.tinc.Int64ConstraintsH\x00R\x05int64\x121\n\x06uint32\x18\x05 \x01(\x0b2\x17.tinc.UInt32ConstraintsH\x00R\x06uint32\x121\n\x06uint64\x18\x06 \x01(\x0b2\x17.tinc.UInt64ConstraintsH\x00R\x06uint64\x121\n\x06string\x18\x07 \x01(\x0b2\x17.tinc.StringConstraintsH\x00R\x06string\x12.\n\x05bytes\x18\x08 \x01(\x0b2\x16.tinc.BytesConstraintsH\x00R\x05bytes\x12+\n\x04enum\x18\t \x01(\x0b2\x15.tinc.EnumConstraintsH\x00R\x04enum\x127\n\x08repeated\x18\n \x01(\x0b2\x19.tinc.RepeatedConstraintsH\x00R\x08repeated\x12(\n\x03map\x18\x0b \x01(\x0b2\x14.tinc.MapConstraintsH\x00R\x03map\x12-\n\x03cel\x18\r \x03(\x0b2\x13.tinc.CelExpressionB\x06\xa2\xc9\x07\x02\x10\x04R\x03celB\x0c\n\nconstraint\"k\n\rCelExpression\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\x12\x1e\n\nexpression\x18\x03 \x01(\tR\nexpression\x12 \n\x0bjsonschemas\x18\x05 \x03(\tR\x0bjsonschemas\"\x81\x01\n\x0bEnumOptions\x12 \n\trepr_enum\x18\x02 \x01(\x08H\x00R\x08reprEnum\x88\x01\x01\x123\n\nrename_all\x18\x03 \x01(\x0e2\x0f.tinc.RenameAllH\x01R\trenameAll\x88\x01\x01B\x0c\n\n_repr_enumB\r\n\x0b_rename_all\"\x82\x01\n\x12EnumVariantOptions\x12\x1b\n\x06rename\x18\x01 \x01(\tH\x00R\x06rename\x88\x01\x01\x125\n\nvisibility\x18\x02 \x01(\x0e2\x10.tinc.VisibilityH\x01R\nvisibility\x88\x01\x01B\t\n\x07_renameB\r\n\x0b_visibility\"\x93\x0b\n\x13HttpEndpointOptions\x12\x12\n\x03get\x18\x01 \x01(\tH\x00R\x03get\x12\x14\n\x04post\x18\x02 \x01(\tH\x00R\x04post\x12\x12\n\x03put\x18\x03 \x01(\tH\x00R\x03put\x12\x18\n\x06delete\x18\x04 \x01(\tH\x00R\x06delete\x12\x16\n\x05patch\x18\x05 \x01(\tH\x00R\x05patch\x12;\n\x07request\x18\x08 \x01(\x0b2!.tinc.HttpEndpointOptions.RequestR\x07request\x12>\n\x08response\x18\t \x01(\x0b2\".tinc.HttpEndpointOptions.ResponseR\x08response\x1a\x88\x05\n\x07Request\x12@\n\x04json\x18\x01 \x01(\x0b2*.tinc.HttpEndpointOptions.Request.JsonBodyH\x00R\x04json\x12@\n\x04text\x18\x02 \x01(\x0b2*.tinc.HttpEndpointOptions.Request.TextBodyH\x00R\x04text\x12F\n\x06binary\x18\x03 \x01(\x0b2,.tinc.HttpEndpointOptions.Request.BinaryBodyH\x00R\x06binary\x12E\n\x05query\x18\x04 \x01(\x0b2-.tinc.HttpEndpointOptions.Request.QueryParamsH\x00R\x05query\x1a/\n\x08JsonBody\x12\x19\n\x05field\x18\x01 \x01(\tH\x00R\x05field\x88\x01\x01B\x08\n\x06_field\x1a/\n\x08TextBody\x12\x19\n\x05field\x18\x01 \x01(\tH\x00R\x05field\x88\x01\x01B\x08\n\x06_field\x1a\xcb\x01\n\nBinaryBody\x12\x19\n\x05field\x18\x01 \x01(\tH\x00R\x05field\x88\x01\x01\x121\n\x12content_type_field\x18\x02 \x01(\tH\x01R\x10contentTypeField\x88\x01\x01\x125\n\x14content_type_accepts\x18\x03 \x01(\tH\x02R\x12contentTypeAccepts\x88\x01\x01B\x08\n\x06_fieldB\x15\n\x13_content_type_fieldB\x17\n\x15_content_type_accepts\x1a2\n\x0bQueryParams\x12\x19\n\x05field\x18\x01 \x01(\tH\x00R\x05field\x88\x01\x01B\x08\n\x06_fieldB\x06\n\x04mode\x1a\xf9\x03\n\x08Response\x12=\n\x04json\x18\x01 \x01(\x0b2\'.tinc.HttpEndpointOptions.Response.JsonH\x00R\x04json\x12=\n\x04text\x18\x02 \x01(\x0b2\'.tinc.HttpEndpointOptions.Response.TextH\x00R\x04text\x12C\n\x06binary\x18\x03 \x01(\x0b2).tinc.HttpEndpointOptions.Response.BinaryH\x00R\x06binary\x1a+\n\x04Json\x12\x19\n\x05field\x18\x01 \x01(\tH\x00R\x05field\x88\x01\x01B\x08\n\x06_field\x1a+\n\x04Text\x12\x19\n\x05field\x18\x01 \x01(\tH\x00R\x05field\x88\x01\x01B\x08\n\x06_field\x1a\xc7\x01\n\x06Binary\x12\x19\n\x05field\x18\x01 \x01(\tH\x00R\x05field\x88\x01\x01\x121\n\x12content_type_field\x18\x02 \x01(\tH\x01R\x10contentTypeField\x88\x01\x01\x125\n\x14content_type_accepts\x18\x03 \x01(\tH\x02R\x12contentTypeAccepts\x88\x01\x01B\x08\n\x06_fieldB\x15\n\x13_content_type_fieldB\x17\n\x15_content_type_acceptsB\x06\n\x04modeB\x08\n\x06method\"\xa2\x03\n\x0cOneofOptions\x12\x1b\n\x06rename\x18\x01 \x01(\tH\x00R\x06rename\x88\x01\x01\x123\n\nrename_all\x18\x04 \x01(\x0e2\x0f.tinc.RenameAllH\x01R\trenameAll\x88\x01\x01\x12;\n\x0ejson_omittable\x18\xc8\x01 \x01(\x0e2\x13.tinc.JsonOmittableR\rjsonOmittable\x126\n\nvisibility\x18\xca\x01 \x01(\x0e2\x10.tinc.VisibilityH\x02R\nvisibility\x88\x01\x01\x126\n\x06tagged\x18d \x01(\x0b2\x19.tinc.OneofOptions.TaggedH\x03R\x06tagged\x88\x01\x01\x12\x1d\n\x07flatten\x18e \x01(\x08H\x04R\x07flatten\x88\x01\x01\x1a4\n\x06Tagged\x12\x10\n\x03tag\x18\x01 \x01(\tR\x03tag\x12\x18\n\x07content\x18\x02 \x01(\tR\x07contentB\t\n\x07_renameB\r\n\x0b_rename_allB\r\n\x0b_visibilityB\t\n\x07_taggedB\n\n\x08_flatten*\xbc\x01\n\tRenameAll\x12\x1a\n\x16RENAME_ALL_UNSPECIFIED\x10\x00\x12\x0e\n\nLOWER_CASE\x10\x01\x12\x0e\n\nUPPER_CASE\x10\x02\x12\x0f\n\x0bPASCAL_CASE\x10\x03\x12\x0e\n\nCAMEL_CASE\x10\x04\x12\x0e\n\nSNAKE_CASE\x10\x05\x12\x18\n\x14SCREAMING_SNAKE_CASE\x10\x06\x12\x0e\n\nKEBAB_CASE\x10\x07\x12\x18\n\x14SCREAMING_KEBAB_CASE\x10\x08*S\n\nVisibility\x12\x1a\n\x16VISIBILITY_UNSPECIFIED\x10\x00\x12\x08\n\x04SKIP\x10\x01\x12\x0e\n\nINPUT_ONLY\x10\x02\x12\x0f\n\x0bOUTPUT_ONLY\x10\x03*b\n\rJsonOmittable\x12\x1e\n\x1aJSON_OMITTABLE_UNSPECIFIED\x10\x00\x12\x08\n\x04TRUE\x10\x01\x12\t\n\x05FALSE\x10\x02\x12\x1c\n\x18TRUE_BUT_STILL_SERIALIZE\x10\x03:P\n\x07message\x12\x1f.google.protobuf.MessageOptions\x18\x8dy \x01(\x0b2\x14.tinc.MessageOptionsR\x07message:H\n\x05field\x12\x1d.google.protobuf.FieldOptions\x18\x8ey \x01(\x0b2\x12.tinc.FieldOptionsR\x05field:^\n\npredefined\x12\x1d.google.protobuf.FieldOptions\x18\x94y \x01(\x0b2\x1b.tinc.PredefinedConstraintsR\npredefined\x88\x01\x01:D\n\x04enum\x12\x1c.google.protobuf.EnumOptions\x18\x8fy \x01(\x0b2\x11.tinc.EnumOptionsR\x04enum:V\n\x07variant\x12!.google.protobuf.EnumValueOptions\x18\x90y \x01(\x0b2\x18.tinc.EnumVariantOptionsR\x07variant:L\n\x06method\x12\x1e.google.protobuf.MethodOptions\x18\x91y \x01(\x0b2\x13.tinc.MethodOptionsR\x06method:P\n\x07service\x12\x1f.google.protobuf.ServiceOptions\x18\x92y \x01(\x0b2\x14.tinc.ServiceOptionsR\x07service:H\n\x05oneof\x12\x1d.google.protobuf.OneofOptions\x18\x93y \x01(\x0b2\x12.tinc.OneofOptionsR\x05oneofb\x06proto3";
Expand description
Field descriptor binary