@devvit/protos 0.11.7 → 0.11.8-next-2025-02-10-4d44fb2af.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (223) hide show
  1. package/meta.min.json +7820 -0
  2. package/package.json +4 -4
  3. package/protos.min.js +2 -0
  4. package/protos.min.js.map +7 -0
  5. package/schema/.snootobuf/deps/buf/validate/expression.proto +92 -0
  6. package/schema/.snootobuf/deps/buf/validate/priv/private.proto +41 -0
  7. package/schema/.snootobuf/deps/buf/validate/validate.proto +4130 -0
  8. package/schema/.snootobuf/deps/devvit/data/api/admin/v1alpha/audit.proto +72 -0
  9. package/schema/.snootobuf/deps/devvit/data/api/admin/v1alpha/auth.proto +49 -0
  10. package/schema/.snootobuf/deps/devvit/data/api/admin/v1alpha/organization.proto +54 -0
  11. package/schema/.snootobuf/deps/devvit/data/api/admin/v1alpha/service.proto +46 -0
  12. package/schema/.snootobuf/deps/devvit/data/api/admin/v1alpha/subscription.proto +72 -0
  13. package/schema/.snootobuf/deps/devvit/data/api/admin/v1alpha/ui.proto +20 -0
  14. package/schema/.snootobuf/deps/devvit/data/api/admin/v1alpha/user.proto +45 -0
  15. package/schema/.snootobuf/deps/devvit/data/api/v1alpha/admin.proto +54 -0
  16. package/schema/.snootobuf/deps/devvit/data/api/v1alpha/delivery.proto +773 -0
  17. package/schema/.snootobuf/deps/devvit/data/api/v1alpha/filter.proto +66 -0
  18. package/schema/.snootobuf/deps/devvit/data/api/v1alpha/firehose.proto +100 -0
  19. package/schema/.snootobuf/deps/devvit/data/api/v1alpha/intake.proto +19 -0
  20. package/schema/.snootobuf/deps/devvit/events/v1alpha/events.proto +446 -0
  21. package/schema/.snootobuf/deps/devvit/gateway/v1alpha/payments.proto +24 -0
  22. package/schema/.snootobuf/deps/devvit/options/options.proto +98 -0
  23. package/schema/.snootobuf/deps/devvit/reddit/v2alpha/commentv2.proto +29 -0
  24. package/schema/.snootobuf/deps/devvit/reddit/v2alpha/flair.proto +25 -0
  25. package/schema/.snootobuf/deps/devvit/reddit/v2alpha/modaction.proto +53 -0
  26. package/schema/.snootobuf/deps/devvit/reddit/v2alpha/modmail.proto +56 -0
  27. package/schema/.snootobuf/deps/devvit/reddit/v2alpha/postv2.proto +107 -0
  28. package/schema/.snootobuf/deps/devvit/reddit/v2alpha/subredditv2.proto +41 -0
  29. package/schema/.snootobuf/deps/devvit/reddit/v2alpha/userv2.proto +23 -0
  30. package/schema/.snootobuf/deps/devvit/triggers/v1alpha/triggers.proto +162 -0
  31. package/schema/.snootobuf/deps/enum/account_gender_category.proto +14 -0
  32. package/schema/.snootobuf/deps/enum/approval_status.proto +15 -0
  33. package/schema/.snootobuf/deps/enum/automated_reporting_level.proto +12 -0
  34. package/schema/.snootobuf/deps/enum/ban_evasion_threshold.proto +13 -0
  35. package/schema/.snootobuf/deps/enum/ban_info_action.proto +12 -0
  36. package/schema/.snootobuf/deps/enum/block_relation_type.proto +11 -0
  37. package/schema/.snootobuf/deps/enum/comment_sort.proto +18 -0
  38. package/schema/.snootobuf/deps/enum/comment_type.proto +11 -0
  39. package/schema/.snootobuf/deps/enum/crowd_control_level.proto +12 -0
  40. package/schema/.snootobuf/deps/enum/discussion_type.proto +10 -0
  41. package/schema/.snootobuf/deps/enum/distinguish_type.proto +14 -0
  42. package/schema/.snootobuf/deps/enum/flair_position.proto +11 -0
  43. package/schema/.snootobuf/deps/enum/hateful_content_threshold.proto +12 -0
  44. package/schema/.snootobuf/deps/enum/link_content_type.proto +11 -0
  45. package/schema/.snootobuf/deps/enum/link_type.proto +11 -0
  46. package/schema/.snootobuf/deps/enum/link_visibility.proto +11 -0
  47. package/schema/.snootobuf/deps/enum/prediction_leaderboard_entry_type.proto +11 -0
  48. package/schema/.snootobuf/deps/enum/promo_layout.proto +11 -0
  49. package/schema/.snootobuf/deps/enum/removed_by_type.proto +18 -0
  50. package/schema/.snootobuf/deps/enum/spam_level.proto +11 -0
  51. package/schema/.snootobuf/deps/enum/subreddit_type.proto +16 -0
  52. package/schema/.snootobuf/deps/enum/verdict.proto +14 -0
  53. package/schema/.snootobuf/deps/enum/vote.proto +12 -0
  54. package/schema/.snootobuf/deps/enum/whitelist_status.proto +17 -0
  55. package/schema/.snootobuf/deps/enum/wiki_edit_mode.proto +12 -0
  56. package/schema/.snootobuf/deps/evaluator/evaluator.proto +203 -0
  57. package/schema/.snootobuf/deps/google/api/annotations.proto +31 -0
  58. package/schema/.snootobuf/deps/google/api/apikeys/v2/apikeys.proto +288 -0
  59. package/schema/.snootobuf/deps/google/api/apikeys/v2/resources.proto +175 -0
  60. package/schema/.snootobuf/deps/google/api/auth.proto +237 -0
  61. package/schema/.snootobuf/deps/google/api/backend.proto +185 -0
  62. package/schema/.snootobuf/deps/google/api/billing.proto +77 -0
  63. package/schema/.snootobuf/deps/google/api/client.proto +431 -0
  64. package/schema/.snootobuf/deps/google/api/cloudquotas/v1/cloudquotas.proto +322 -0
  65. package/schema/.snootobuf/deps/google/api/cloudquotas/v1/resources.proto +315 -0
  66. package/schema/.snootobuf/deps/google/api/config_change.proto +84 -0
  67. package/schema/.snootobuf/deps/google/api/consumer.proto +82 -0
  68. package/schema/.snootobuf/deps/google/api/context.proto +92 -0
  69. package/schema/.snootobuf/deps/google/api/control.proto +41 -0
  70. package/schema/.snootobuf/deps/google/api/distribution.proto +213 -0
  71. package/schema/.snootobuf/deps/google/api/documentation.proto +168 -0
  72. package/schema/.snootobuf/deps/google/api/endpoint.proto +69 -0
  73. package/schema/.snootobuf/deps/google/api/error_reason.proto +589 -0
  74. package/schema/.snootobuf/deps/google/api/expr/conformance/v1alpha1/conformance_service.proto +183 -0
  75. package/schema/.snootobuf/deps/google/api/expr/v1alpha1/checked.proto +343 -0
  76. package/schema/.snootobuf/deps/google/api/expr/v1alpha1/eval.proto +118 -0
  77. package/schema/.snootobuf/deps/google/api/expr/v1alpha1/explain.proto +53 -0
  78. package/schema/.snootobuf/deps/google/api/expr/v1alpha1/syntax.proto +438 -0
  79. package/schema/.snootobuf/deps/google/api/expr/v1alpha1/value.proto +115 -0
  80. package/schema/.snootobuf/deps/google/api/expr/v1beta1/decl.proto +84 -0
  81. package/schema/.snootobuf/deps/google/api/expr/v1beta1/eval.proto +125 -0
  82. package/schema/.snootobuf/deps/google/api/expr/v1beta1/expr.proto +265 -0
  83. package/schema/.snootobuf/deps/google/api/expr/v1beta1/source.proto +62 -0
  84. package/schema/.snootobuf/deps/google/api/expr/v1beta1/value.proto +114 -0
  85. package/schema/.snootobuf/deps/google/api/field_behavior.proto +104 -0
  86. package/schema/.snootobuf/deps/google/api/field_info.proto +106 -0
  87. package/schema/.snootobuf/deps/google/api/http.proto +371 -0
  88. package/schema/.snootobuf/deps/google/api/httpbody.proto +81 -0
  89. package/schema/.snootobuf/deps/google/api/label.proto +48 -0
  90. package/schema/.snootobuf/deps/google/api/launch_stage.proto +72 -0
  91. package/schema/.snootobuf/deps/google/api/log.proto +54 -0
  92. package/schema/.snootobuf/deps/google/api/logging.proto +81 -0
  93. package/schema/.snootobuf/deps/google/api/metric.proto +268 -0
  94. package/schema/.snootobuf/deps/google/api/monitored_resource.proto +130 -0
  95. package/schema/.snootobuf/deps/google/api/monitoring.proto +107 -0
  96. package/schema/.snootobuf/deps/google/api/policy.proto +85 -0
  97. package/schema/.snootobuf/deps/google/api/quota.proto +184 -0
  98. package/schema/.snootobuf/deps/google/api/resource.proto +243 -0
  99. package/schema/.snootobuf/deps/google/api/routing.proto +461 -0
  100. package/schema/.snootobuf/deps/google/api/service.proto +191 -0
  101. package/schema/.snootobuf/deps/google/api/servicecontrol/v1/check_error.proto +124 -0
  102. package/schema/.snootobuf/deps/google/api/servicecontrol/v1/distribution.proto +166 -0
  103. package/schema/.snootobuf/deps/google/api/servicecontrol/v1/http_request.proto +93 -0
  104. package/schema/.snootobuf/deps/google/api/servicecontrol/v1/log_entry.proto +126 -0
  105. package/schema/.snootobuf/deps/google/api/servicecontrol/v1/metric_value.proto +81 -0
  106. package/schema/.snootobuf/deps/google/api/servicecontrol/v1/operation.proto +123 -0
  107. package/schema/.snootobuf/deps/google/api/servicecontrol/v1/quota_controller.proto +245 -0
  108. package/schema/.snootobuf/deps/google/api/servicecontrol/v1/service_controller.proto +260 -0
  109. package/schema/.snootobuf/deps/google/api/servicecontrol/v2/service_controller.proto +196 -0
  110. package/schema/.snootobuf/deps/google/api/servicemanagement/v1/resources.proto +295 -0
  111. package/schema/.snootobuf/deps/google/api/servicemanagement/v1/servicemanager.proto +508 -0
  112. package/schema/.snootobuf/deps/google/api/serviceusage/v1/resources.proto +130 -0
  113. package/schema/.snootobuf/deps/google/api/serviceusage/v1/serviceusage.proto +305 -0
  114. package/schema/.snootobuf/deps/google/api/serviceusage/v1beta1/resources.proto +458 -0
  115. package/schema/.snootobuf/deps/google/api/serviceusage/v1beta1/serviceusage.proto +793 -0
  116. package/schema/.snootobuf/deps/google/api/source_info.proto +31 -0
  117. package/schema/.snootobuf/deps/google/api/system_parameter.proto +96 -0
  118. package/schema/.snootobuf/deps/google/api/usage.proto +96 -0
  119. package/schema/.snootobuf/deps/google/api/visibility.proto +113 -0
  120. package/schema/.snootobuf/deps/google/cloud/extended_operations.proto +150 -0
  121. package/schema/.snootobuf/deps/google/iam/admin/v1/iam.proto +1087 -0
  122. package/schema/.snootobuf/deps/google/iam/v1/iam_policy.proto +145 -0
  123. package/schema/.snootobuf/deps/google/iam/v1/logging/audit_data.proto +34 -0
  124. package/schema/.snootobuf/deps/google/iam/v1/options.proto +41 -0
  125. package/schema/.snootobuf/deps/google/iam/v1/policy.proto +240 -0
  126. package/schema/.snootobuf/deps/google/logging/type/http_request.proto +92 -0
  127. package/schema/.snootobuf/deps/google/logging/type/log_severity.proto +72 -0
  128. package/schema/.snootobuf/deps/google/longrunning/operations.proto +247 -0
  129. package/schema/.snootobuf/deps/google/protobuf/any.proto +158 -0
  130. package/schema/.snootobuf/deps/google/protobuf/api.proto +208 -0
  131. package/schema/.snootobuf/deps/google/protobuf/compiler/plugin.proto +183 -0
  132. package/schema/.snootobuf/deps/google/protobuf/descriptor.proto +921 -0
  133. package/schema/.snootobuf/deps/google/protobuf/duration.proto +116 -0
  134. package/schema/.snootobuf/deps/google/protobuf/empty.proto +51 -0
  135. package/schema/.snootobuf/deps/google/protobuf/field_mask.proto +245 -0
  136. package/schema/.snootobuf/deps/google/protobuf/source_context.proto +48 -0
  137. package/schema/.snootobuf/deps/google/protobuf/struct.proto +95 -0
  138. package/schema/.snootobuf/deps/google/protobuf/timestamp.proto +147 -0
  139. package/schema/.snootobuf/deps/google/protobuf/type.proto +187 -0
  140. package/schema/.snootobuf/deps/google/protobuf/wrappers.proto +123 -0
  141. package/schema/.snootobuf/deps/google/rpc/code.proto +186 -0
  142. package/schema/.snootobuf/deps/google/rpc/context/attribute_context.proto +287 -0
  143. package/schema/.snootobuf/deps/google/rpc/error_details.proto +246 -0
  144. package/schema/.snootobuf/deps/google/rpc/status.proto +47 -0
  145. package/schema/.snootobuf/deps/google/type/calendar_period.proto +57 -0
  146. package/schema/.snootobuf/deps/google/type/color.proto +170 -0
  147. package/schema/.snootobuf/deps/google/type/date.proto +50 -0
  148. package/schema/.snootobuf/deps/google/type/datetime.proto +97 -0
  149. package/schema/.snootobuf/deps/google/type/dayofweek.proto +51 -0
  150. package/schema/.snootobuf/deps/google/type/expr.proto +51 -0
  151. package/schema/.snootobuf/deps/google/type/fraction.proto +34 -0
  152. package/schema/.snootobuf/deps/google/type/latlng.proto +37 -0
  153. package/schema/.snootobuf/deps/google/type/money.proto +43 -0
  154. package/schema/.snootobuf/deps/google/type/month.proto +66 -0
  155. package/schema/.snootobuf/deps/google/type/postal_address.proto +135 -0
  156. package/schema/.snootobuf/deps/google/type/quaternion.proto +95 -0
  157. package/schema/.snootobuf/deps/google/type/timeofday.proto +44 -0
  158. package/schema/.snootobuf/deps/openapi/helper.proto +20 -0
  159. package/schema/.snootobuf/deps/products-api/protos/reddit/xpaymentsplatform/payproducts/v1/currencies.proto +189 -0
  160. package/schema/.snootobuf/deps/products-api/protos/reddit/xpaymentsplatform/payproducts/v1/payproducts.proto +118 -0
  161. package/schema/.snootobuf/deps/reddit/api/metadata/v1/metadata.proto +55 -0
  162. package/schema/.snootobuf/deps/reddit/coreplatform/account/v1/account.proto +579 -0
  163. package/schema/.snootobuf/deps/reddit/coreplatform/account/v1/account_relations.proto +43 -0
  164. package/schema/.snootobuf/deps/reddit/coreplatform/api/metadata/v1/metadata.proto +82 -0
  165. package/schema/.snootobuf/deps/reddit/coreplatform/blocking/v1/user_blocking_service.proto +221 -0
  166. package/schema/.snootobuf/deps/reddit/coreplatform/comments/v1/comment_tree.proto +78 -0
  167. package/schema/.snootobuf/deps/reddit/coreplatform/comments/v1/comment_tree_service.proto +189 -0
  168. package/schema/.snootobuf/deps/reddit/coreplatform/comments/v1/comment_tree_structure.proto +29 -0
  169. package/schema/.snootobuf/deps/reddit/coreplatform/comments/v1/comments.proto +417 -0
  170. package/schema/.snootobuf/deps/reddit/coreplatform/comments/v1/comments_service.proto +72 -0
  171. package/schema/.snootobuf/deps/reddit/coreplatform/common/v1/auth.proto +25 -0
  172. package/schema/.snootobuf/deps/reddit/coreplatform/common/v1/features.proto +52 -0
  173. package/schema/.snootobuf/deps/reddit/coreplatform/common/v1/lang.proto +16 -0
  174. package/schema/.snootobuf/deps/reddit/coreplatform/common/v1/legal.proto +20 -0
  175. package/schema/.snootobuf/deps/reddit/coreplatform/common/v1/media.proto +149 -0
  176. package/schema/.snootobuf/deps/reddit/coreplatform/common/v1/moderation.proto +197 -0
  177. package/schema/.snootobuf/deps/reddit/coreplatform/common/v1/safety.proto +116 -0
  178. package/schema/.snootobuf/deps/reddit/coreplatform/common/v1/time.proto +25 -0
  179. package/schema/.snootobuf/deps/reddit/coreplatform/domains/v1/domains_metadata_service.proto +101 -0
  180. package/schema/.snootobuf/deps/reddit/coreplatform/grpc_thrift/v1/grpc_thrift_options.proto +34 -0
  181. package/schema/.snootobuf/deps/reddit/coreplatform/links/v1/links.proto +798 -0
  182. package/schema/.snootobuf/deps/reddit/coreplatform/links/v1/links_service.proto +186 -0
  183. package/schema/.snootobuf/deps/reddit/coreplatform/messages/v1/messages.proto +110 -0
  184. package/schema/.snootobuf/deps/reddit/coreplatform/sensitive/v1/wrappers.proto +51 -0
  185. package/schema/.snootobuf/deps/reddit/coreplatform/subreddit/v1/subreddit.proto +1202 -0
  186. package/schema/.snootobuf/deps/reddit/coreplatform/subreddit/v1/subreddit_member_relations.proto +85 -0
  187. package/schema/.snootobuf/deps/reddit/coreplatform/subreddit/v1/subreddit_moderator_service.proto +363 -0
  188. package/schema/.snootobuf/deps/reddit/coreplatform/subreddit/v1/subreddit_service.proto +301 -0
  189. package/schema/.snootobuf/deps/reddit/coreplatform/thing/v0/thing.proto +2869 -0
  190. package/schema/.snootobuf/deps/reddit/devvit/custom_post/v1/custom_post.proto +15 -0
  191. package/schema/.snootobuf/deps/reddit/devvit/custom_post/v1/service.proto +11 -0
  192. package/schema/.snootobuf/deps/reddit/devvit/subreddit/v1/context_action.proto +48 -0
  193. package/schema/.snootobuf/deps/reddit/devvit/subreddit/v1/manifest.proto +70 -0
  194. package/schema/.snootobuf/deps/reddit/devvit/subreddit/v1/service.proto +11 -0
  195. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/acknowledge_order_delivery.proto +17 -0
  196. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/checkout.proto +89 -0
  197. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/common.proto +322 -0
  198. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/delete_products.proto +17 -0
  199. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/events.proto +14 -0
  200. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/get_batch_products.proto +15 -0
  201. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/get_gold_balances.proto +48 -0
  202. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/get_order.proto +31 -0
  203. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/get_orders.proto +26 -0
  204. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/get_orders_by_user.proto +15 -0
  205. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/get_payout_info_batch.proto +52 -0
  206. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/get_products.proto +23 -0
  207. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/get_user_profiles.proto +28 -0
  208. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/refund_order.proto +17 -0
  209. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/service.proto +49 -0
  210. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/service_data_compliance.proto +20 -0
  211. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payapi/v1/upsert_products.proto +17 -0
  212. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/paygatewaypsps/v1/paygatewaypsps.proto +158 -0
  213. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payorders/v1/payments_data_compliance.proto +18 -0
  214. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payorders/v1/payorders.proto +195 -0
  215. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/paypayments/v1/admin.proto +44 -0
  216. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/paypayments/v1/ledger.proto +200 -0
  217. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/paypayments/v1/payments_data_compliance.proto +18 -0
  218. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/paypayments/v1/paypayments.proto +210 -0
  219. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payproducts/v1/currencies.proto +189 -0
  220. package/schema/.snootobuf/deps/reddit/xpaymentsplatform/payproducts/v1/payproducts.proto +135 -0
  221. package/schema/.snootobuf/deps/snooron_sources/text_classification/text_classification.proto +29 -0
  222. package/schema/.snootobuf/deps/snooron_sources/v2_event/v2_event.proto +3292 -0
  223. package/schema/.snootobuf/deps/validate/validate.proto +862 -0
@@ -0,0 +1,461 @@
1
+ // Copyright 2024 Google LLC
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ syntax = "proto3";
16
+
17
+ package google.api;
18
+
19
+ import "google/protobuf/descriptor.proto";
20
+
21
+ option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
22
+ option java_multiple_files = true;
23
+ option java_outer_classname = "RoutingProto";
24
+ option java_package = "com.google.api";
25
+ option objc_class_prefix = "GAPI";
26
+
27
+ extend google.protobuf.MethodOptions {
28
+ // See RoutingRule.
29
+ google.api.RoutingRule routing = 72295729;
30
+ }
31
+
32
+ // Specifies the routing information that should be sent along with the request
33
+ // in the form of routing header.
34
+ // **NOTE:** All service configuration rules follow the "last one wins" order.
35
+ //
36
+ // The examples below will apply to an RPC which has the following request type:
37
+ //
38
+ // Message Definition:
39
+ //
40
+ // message Request {
41
+ // // The name of the Table
42
+ // // Values can be of the following formats:
43
+ // // - `projects/<project>/tables/<table>`
44
+ // // - `projects/<project>/instances/<instance>/tables/<table>`
45
+ // // - `region/<region>/zones/<zone>/tables/<table>`
46
+ // string table_name = 1;
47
+ //
48
+ // // This value specifies routing for replication.
49
+ // // It can be in the following formats:
50
+ // // - `profiles/<profile_id>`
51
+ // // - a legacy `profile_id` that can be any string
52
+ // string app_profile_id = 2;
53
+ // }
54
+ //
55
+ // Example message:
56
+ //
57
+ // {
58
+ // table_name: projects/proj_foo/instances/instance_bar/table/table_baz,
59
+ // app_profile_id: profiles/prof_qux
60
+ // }
61
+ //
62
+ // The routing header consists of one or multiple key-value pairs. Every key
63
+ // and value must be percent-encoded, and joined together in the format of
64
+ // `key1=value1&key2=value2`.
65
+ // In the examples below I am skipping the percent-encoding for readablity.
66
+ //
67
+ // Example 1
68
+ //
69
+ // Extracting a field from the request to put into the routing header
70
+ // unchanged, with the key equal to the field name.
71
+ //
72
+ // annotation:
73
+ //
74
+ // option (google.api.routing) = {
75
+ // // Take the `app_profile_id`.
76
+ // routing_parameters {
77
+ // field: "app_profile_id"
78
+ // }
79
+ // };
80
+ //
81
+ // result:
82
+ //
83
+ // x-goog-request-params: app_profile_id=profiles/prof_qux
84
+ //
85
+ // Example 2
86
+ //
87
+ // Extracting a field from the request to put into the routing header
88
+ // unchanged, with the key different from the field name.
89
+ //
90
+ // annotation:
91
+ //
92
+ // option (google.api.routing) = {
93
+ // // Take the `app_profile_id`, but name it `routing_id` in the header.
94
+ // routing_parameters {
95
+ // field: "app_profile_id"
96
+ // path_template: "{routing_id=**}"
97
+ // }
98
+ // };
99
+ //
100
+ // result:
101
+ //
102
+ // x-goog-request-params: routing_id=profiles/prof_qux
103
+ //
104
+ // Example 3
105
+ //
106
+ // Extracting a field from the request to put into the routing
107
+ // header, while matching a path template syntax on the field's value.
108
+ //
109
+ // NB: it is more useful to send nothing than to send garbage for the purpose
110
+ // of dynamic routing, since garbage pollutes cache. Thus the matching.
111
+ //
112
+ // Sub-example 3a
113
+ //
114
+ // The field matches the template.
115
+ //
116
+ // annotation:
117
+ //
118
+ // option (google.api.routing) = {
119
+ // // Take the `table_name`, if it's well-formed (with project-based
120
+ // // syntax).
121
+ // routing_parameters {
122
+ // field: "table_name"
123
+ // path_template: "{table_name=projects/*/instances/*/**}"
124
+ // }
125
+ // };
126
+ //
127
+ // result:
128
+ //
129
+ // x-goog-request-params:
130
+ // table_name=projects/proj_foo/instances/instance_bar/table/table_baz
131
+ //
132
+ // Sub-example 3b
133
+ //
134
+ // The field does not match the template.
135
+ //
136
+ // annotation:
137
+ //
138
+ // option (google.api.routing) = {
139
+ // // Take the `table_name`, if it's well-formed (with region-based
140
+ // // syntax).
141
+ // routing_parameters {
142
+ // field: "table_name"
143
+ // path_template: "{table_name=regions/*/zones/*/**}"
144
+ // }
145
+ // };
146
+ //
147
+ // result:
148
+ //
149
+ // <no routing header will be sent>
150
+ //
151
+ // Sub-example 3c
152
+ //
153
+ // Multiple alternative conflictingly named path templates are
154
+ // specified. The one that matches is used to construct the header.
155
+ //
156
+ // annotation:
157
+ //
158
+ // option (google.api.routing) = {
159
+ // // Take the `table_name`, if it's well-formed, whether
160
+ // // using the region- or projects-based syntax.
161
+ //
162
+ // routing_parameters {
163
+ // field: "table_name"
164
+ // path_template: "{table_name=regions/*/zones/*/**}"
165
+ // }
166
+ // routing_parameters {
167
+ // field: "table_name"
168
+ // path_template: "{table_name=projects/*/instances/*/**}"
169
+ // }
170
+ // };
171
+ //
172
+ // result:
173
+ //
174
+ // x-goog-request-params:
175
+ // table_name=projects/proj_foo/instances/instance_bar/table/table_baz
176
+ //
177
+ // Example 4
178
+ //
179
+ // Extracting a single routing header key-value pair by matching a
180
+ // template syntax on (a part of) a single request field.
181
+ //
182
+ // annotation:
183
+ //
184
+ // option (google.api.routing) = {
185
+ // // Take just the project id from the `table_name` field.
186
+ // routing_parameters {
187
+ // field: "table_name"
188
+ // path_template: "{routing_id=projects/*}/**"
189
+ // }
190
+ // };
191
+ //
192
+ // result:
193
+ //
194
+ // x-goog-request-params: routing_id=projects/proj_foo
195
+ //
196
+ // Example 5
197
+ //
198
+ // Extracting a single routing header key-value pair by matching
199
+ // several conflictingly named path templates on (parts of) a single request
200
+ // field. The last template to match "wins" the conflict.
201
+ //
202
+ // annotation:
203
+ //
204
+ // option (google.api.routing) = {
205
+ // // If the `table_name` does not have instances information,
206
+ // // take just the project id for routing.
207
+ // // Otherwise take project + instance.
208
+ //
209
+ // routing_parameters {
210
+ // field: "table_name"
211
+ // path_template: "{routing_id=projects/*}/**"
212
+ // }
213
+ // routing_parameters {
214
+ // field: "table_name"
215
+ // path_template: "{routing_id=projects/*/instances/*}/**"
216
+ // }
217
+ // };
218
+ //
219
+ // result:
220
+ //
221
+ // x-goog-request-params:
222
+ // routing_id=projects/proj_foo/instances/instance_bar
223
+ //
224
+ // Example 6
225
+ //
226
+ // Extracting multiple routing header key-value pairs by matching
227
+ // several non-conflicting path templates on (parts of) a single request field.
228
+ //
229
+ // Sub-example 6a
230
+ //
231
+ // Make the templates strict, so that if the `table_name` does not
232
+ // have an instance information, nothing is sent.
233
+ //
234
+ // annotation:
235
+ //
236
+ // option (google.api.routing) = {
237
+ // // The routing code needs two keys instead of one composite
238
+ // // but works only for the tables with the "project-instance" name
239
+ // // syntax.
240
+ //
241
+ // routing_parameters {
242
+ // field: "table_name"
243
+ // path_template: "{project_id=projects/*}/instances/*/**"
244
+ // }
245
+ // routing_parameters {
246
+ // field: "table_name"
247
+ // path_template: "projects/*/{instance_id=instances/*}/**"
248
+ // }
249
+ // };
250
+ //
251
+ // result:
252
+ //
253
+ // x-goog-request-params:
254
+ // project_id=projects/proj_foo&instance_id=instances/instance_bar
255
+ //
256
+ // Sub-example 6b
257
+ //
258
+ // Make the templates loose, so that if the `table_name` does not
259
+ // have an instance information, just the project id part is sent.
260
+ //
261
+ // annotation:
262
+ //
263
+ // option (google.api.routing) = {
264
+ // // The routing code wants two keys instead of one composite
265
+ // // but will work with just the `project_id` for tables without
266
+ // // an instance in the `table_name`.
267
+ //
268
+ // routing_parameters {
269
+ // field: "table_name"
270
+ // path_template: "{project_id=projects/*}/**"
271
+ // }
272
+ // routing_parameters {
273
+ // field: "table_name"
274
+ // path_template: "projects/*/{instance_id=instances/*}/**"
275
+ // }
276
+ // };
277
+ //
278
+ // result (is the same as 6a for our example message because it has the instance
279
+ // information):
280
+ //
281
+ // x-goog-request-params:
282
+ // project_id=projects/proj_foo&instance_id=instances/instance_bar
283
+ //
284
+ // Example 7
285
+ //
286
+ // Extracting multiple routing header key-value pairs by matching
287
+ // several path templates on multiple request fields.
288
+ //
289
+ // NB: note that here there is no way to specify sending nothing if one of the
290
+ // fields does not match its template. E.g. if the `table_name` is in the wrong
291
+ // format, the `project_id` will not be sent, but the `routing_id` will be.
292
+ // The backend routing code has to be aware of that and be prepared to not
293
+ // receive a full complement of keys if it expects multiple.
294
+ //
295
+ // annotation:
296
+ //
297
+ // option (google.api.routing) = {
298
+ // // The routing needs both `project_id` and `routing_id`
299
+ // // (from the `app_profile_id` field) for routing.
300
+ //
301
+ // routing_parameters {
302
+ // field: "table_name"
303
+ // path_template: "{project_id=projects/*}/**"
304
+ // }
305
+ // routing_parameters {
306
+ // field: "app_profile_id"
307
+ // path_template: "{routing_id=**}"
308
+ // }
309
+ // };
310
+ //
311
+ // result:
312
+ //
313
+ // x-goog-request-params:
314
+ // project_id=projects/proj_foo&routing_id=profiles/prof_qux
315
+ //
316
+ // Example 8
317
+ //
318
+ // Extracting a single routing header key-value pair by matching
319
+ // several conflictingly named path templates on several request fields. The
320
+ // last template to match "wins" the conflict.
321
+ //
322
+ // annotation:
323
+ //
324
+ // option (google.api.routing) = {
325
+ // // The `routing_id` can be a project id or a region id depending on
326
+ // // the table name format, but only if the `app_profile_id` is not set.
327
+ // // If `app_profile_id` is set it should be used instead.
328
+ //
329
+ // routing_parameters {
330
+ // field: "table_name"
331
+ // path_template: "{routing_id=projects/*}/**"
332
+ // }
333
+ // routing_parameters {
334
+ // field: "table_name"
335
+ // path_template: "{routing_id=regions/*}/**"
336
+ // }
337
+ // routing_parameters {
338
+ // field: "app_profile_id"
339
+ // path_template: "{routing_id=**}"
340
+ // }
341
+ // };
342
+ //
343
+ // result:
344
+ //
345
+ // x-goog-request-params: routing_id=profiles/prof_qux
346
+ //
347
+ // Example 9
348
+ //
349
+ // Bringing it all together.
350
+ //
351
+ // annotation:
352
+ //
353
+ // option (google.api.routing) = {
354
+ // // For routing both `table_location` and a `routing_id` are needed.
355
+ // //
356
+ // // table_location can be either an instance id or a region+zone id.
357
+ // //
358
+ // // For `routing_id`, take the value of `app_profile_id`
359
+ // // - If it's in the format `profiles/<profile_id>`, send
360
+ // // just the `<profile_id>` part.
361
+ // // - If it's any other literal, send it as is.
362
+ // // If the `app_profile_id` is empty, and the `table_name` starts with
363
+ // // the project_id, send that instead.
364
+ //
365
+ // routing_parameters {
366
+ // field: "table_name"
367
+ // path_template: "projects/*/{table_location=instances/*}/tables/*"
368
+ // }
369
+ // routing_parameters {
370
+ // field: "table_name"
371
+ // path_template: "{table_location=regions/*/zones/*}/tables/*"
372
+ // }
373
+ // routing_parameters {
374
+ // field: "table_name"
375
+ // path_template: "{routing_id=projects/*}/**"
376
+ // }
377
+ // routing_parameters {
378
+ // field: "app_profile_id"
379
+ // path_template: "{routing_id=**}"
380
+ // }
381
+ // routing_parameters {
382
+ // field: "app_profile_id"
383
+ // path_template: "profiles/{routing_id=*}"
384
+ // }
385
+ // };
386
+ //
387
+ // result:
388
+ //
389
+ // x-goog-request-params:
390
+ // table_location=instances/instance_bar&routing_id=prof_qux
391
+ message RoutingRule {
392
+ // A collection of Routing Parameter specifications.
393
+ // **NOTE:** If multiple Routing Parameters describe the same key
394
+ // (via the `path_template` field or via the `field` field when
395
+ // `path_template` is not provided), "last one wins" rule
396
+ // determines which Parameter gets used.
397
+ // See the examples for more details.
398
+ repeated RoutingParameter routing_parameters = 2;
399
+ }
400
+
401
+ // A projection from an input message to the GRPC or REST header.
402
+ message RoutingParameter {
403
+ // A request field to extract the header key-value pair from.
404
+ string field = 1;
405
+
406
+ // A pattern matching the key-value field. Optional.
407
+ // If not specified, the whole field specified in the `field` field will be
408
+ // taken as value, and its name used as key. If specified, it MUST contain
409
+ // exactly one named segment (along with any number of unnamed segments) The
410
+ // pattern will be matched over the field specified in the `field` field, then
411
+ // if the match is successful:
412
+ // - the name of the single named segment will be used as a header name,
413
+ // - the match value of the segment will be used as a header value;
414
+ // if the match is NOT successful, nothing will be sent.
415
+ //
416
+ // Example:
417
+ //
418
+ // -- This is a field in the request message
419
+ // | that the header value will be extracted from.
420
+ // |
421
+ // | -- This is the key name in the
422
+ // | | routing header.
423
+ // V |
424
+ // field: "table_name" v
425
+ // path_template: "projects/*/{table_location=instances/*}/tables/*"
426
+ // ^ ^
427
+ // | |
428
+ // In the {} brackets is the pattern that -- |
429
+ // specifies what to extract from the |
430
+ // field as a value to be sent. |
431
+ // |
432
+ // The string in the field must match the whole pattern --
433
+ // before brackets, inside brackets, after brackets.
434
+ //
435
+ // When looking at this specific example, we can see that:
436
+ // - A key-value pair with the key `table_location`
437
+ // and the value matching `instances/*` should be added
438
+ // to the x-goog-request-params routing header.
439
+ // - The value is extracted from the request message's `table_name` field
440
+ // if it matches the full pattern specified:
441
+ // `projects/*/instances/*/tables/*`.
442
+ //
443
+ // **NB:** If the `path_template` field is not provided, the key name is
444
+ // equal to the field name, and the whole field should be sent as a value.
445
+ // This makes the pattern for the field and the value functionally equivalent
446
+ // to `**`, and the configuration
447
+ //
448
+ // {
449
+ // field: "table_name"
450
+ // }
451
+ //
452
+ // is a functionally equivalent shorthand to:
453
+ //
454
+ // {
455
+ // field: "table_name"
456
+ // path_template: "{table_name=**}"
457
+ // }
458
+ //
459
+ // See Example 1 for more details.
460
+ string path_template = 2;
461
+ }
@@ -0,0 +1,191 @@
1
+ // Copyright 2024 Google LLC
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ syntax = "proto3";
16
+
17
+ package google.api;
18
+
19
+ import "google/api/auth.proto";
20
+ import "google/api/backend.proto";
21
+ import "google/api/billing.proto";
22
+ import "google/api/client.proto";
23
+ import "google/api/context.proto";
24
+ import "google/api/control.proto";
25
+ import "google/api/documentation.proto";
26
+ import "google/api/endpoint.proto";
27
+ import "google/api/http.proto";
28
+ import "google/api/log.proto";
29
+ import "google/api/logging.proto";
30
+ import "google/api/metric.proto";
31
+ import "google/api/monitored_resource.proto";
32
+ import "google/api/monitoring.proto";
33
+ import "google/api/quota.proto";
34
+ import "google/api/source_info.proto";
35
+ import "google/api/system_parameter.proto";
36
+ import "google/api/usage.proto";
37
+ import "google/protobuf/api.proto";
38
+ import "google/protobuf/type.proto";
39
+ import "google/protobuf/wrappers.proto";
40
+
41
+ option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig";
42
+ option java_multiple_files = true;
43
+ option java_outer_classname = "ServiceProto";
44
+ option java_package = "com.google.api";
45
+ option objc_class_prefix = "GAPI";
46
+
47
+ // `Service` is the root object of Google API service configuration (service
48
+ // config). It describes the basic information about a logical service,
49
+ // such as the service name and the user-facing title, and delegates other
50
+ // aspects to sub-sections. Each sub-section is either a proto message or a
51
+ // repeated proto message that configures a specific aspect, such as auth.
52
+ // For more information, see each proto message definition.
53
+ //
54
+ // Example:
55
+ //
56
+ // type: google.api.Service
57
+ // name: calendar.googleapis.com
58
+ // title: Google Calendar API
59
+ // apis:
60
+ // - name: google.calendar.v3.Calendar
61
+ //
62
+ // visibility:
63
+ // rules:
64
+ // - selector: "google.calendar.v3.*"
65
+ // restriction: PREVIEW
66
+ // backend:
67
+ // rules:
68
+ // - selector: "google.calendar.v3.*"
69
+ // address: calendar.example.com
70
+ //
71
+ // authentication:
72
+ // providers:
73
+ // - id: google_calendar_auth
74
+ // jwks_uri: https://www.googleapis.com/oauth2/v1/certs
75
+ // issuer: https://securetoken.google.com
76
+ // rules:
77
+ // - selector: "*"
78
+ // requirements:
79
+ // provider_id: google_calendar_auth
80
+ message Service {
81
+ // The service name, which is a DNS-like logical identifier for the
82
+ // service, such as `calendar.googleapis.com`. The service name
83
+ // typically goes through DNS verification to make sure the owner
84
+ // of the service also owns the DNS name.
85
+ string name = 1;
86
+
87
+ // The product title for this service, it is the name displayed in Google
88
+ // Cloud Console.
89
+ string title = 2;
90
+
91
+ // The Google project that owns this service.
92
+ string producer_project_id = 22;
93
+
94
+ // A unique ID for a specific instance of this message, typically assigned
95
+ // by the client for tracking purpose. Must be no longer than 63 characters
96
+ // and only lower case letters, digits, '.', '_' and '-' are allowed. If
97
+ // empty, the server may choose to generate one instead.
98
+ string id = 33;
99
+
100
+ // A list of API interfaces exported by this service. Only the `name` field
101
+ // of the [google.protobuf.Api][google.protobuf.Api] needs to be provided by
102
+ // the configuration author, as the remaining fields will be derived from the
103
+ // IDL during the normalization process. It is an error to specify an API
104
+ // interface here which cannot be resolved against the associated IDL files.
105
+ repeated google.protobuf.Api apis = 3;
106
+
107
+ // A list of all proto message types included in this API service.
108
+ // Types referenced directly or indirectly by the `apis` are automatically
109
+ // included. Messages which are not referenced but shall be included, such as
110
+ // types used by the `google.protobuf.Any` type, should be listed here by
111
+ // name by the configuration author. Example:
112
+ //
113
+ // types:
114
+ // - name: google.protobuf.Int32
115
+ repeated google.protobuf.Type types = 4;
116
+
117
+ // A list of all enum types included in this API service. Enums referenced
118
+ // directly or indirectly by the `apis` are automatically included. Enums
119
+ // which are not referenced but shall be included should be listed here by
120
+ // name by the configuration author. Example:
121
+ //
122
+ // enums:
123
+ // - name: google.someapi.v1.SomeEnum
124
+ repeated google.protobuf.Enum enums = 5;
125
+
126
+ // Additional API documentation.
127
+ Documentation documentation = 6;
128
+
129
+ // API backend configuration.
130
+ Backend backend = 8;
131
+
132
+ // HTTP configuration.
133
+ Http http = 9;
134
+
135
+ // Quota configuration.
136
+ Quota quota = 10;
137
+
138
+ // Auth configuration.
139
+ Authentication authentication = 11;
140
+
141
+ // Context configuration.
142
+ Context context = 12;
143
+
144
+ // Configuration controlling usage of this service.
145
+ Usage usage = 15;
146
+
147
+ // Configuration for network endpoints. If this is empty, then an endpoint
148
+ // with the same name as the service is automatically generated to service all
149
+ // defined APIs.
150
+ repeated Endpoint endpoints = 18;
151
+
152
+ // Configuration for the service control plane.
153
+ Control control = 21;
154
+
155
+ // Defines the logs used by this service.
156
+ repeated LogDescriptor logs = 23;
157
+
158
+ // Defines the metrics used by this service.
159
+ repeated MetricDescriptor metrics = 24;
160
+
161
+ // Defines the monitored resources used by this service. This is required
162
+ // by the [Service.monitoring][google.api.Service.monitoring] and
163
+ // [Service.logging][google.api.Service.logging] configurations.
164
+ repeated MonitoredResourceDescriptor monitored_resources = 25;
165
+
166
+ // Billing configuration.
167
+ Billing billing = 26;
168
+
169
+ // Logging configuration.
170
+ Logging logging = 27;
171
+
172
+ // Monitoring configuration.
173
+ Monitoring monitoring = 28;
174
+
175
+ // System parameter configuration.
176
+ SystemParameters system_parameters = 29;
177
+
178
+ // Output only. The source information for this configuration if available.
179
+ SourceInfo source_info = 37;
180
+
181
+ // Settings for [Google Cloud Client
182
+ // libraries](https://cloud.google.com/apis/docs/cloud-client-libraries)
183
+ // generated from APIs defined as protocol buffers.
184
+ Publishing publishing = 45;
185
+
186
+ // Obsolete. Do not use.
187
+ //
188
+ // This field has no semantic meaning. The service config compiler always
189
+ // sets this field to `3`.
190
+ google.protobuf.UInt32Value config_version = 20;
191
+ }