@@ -21,6 +21,8 @@ import "google/api/annotations.proto";
21
21
import "google/api/client.proto" ;
22
22
import "google/api/field_behavior.proto" ;
23
23
import "google/api/resource.proto" ;
24
+ import "google/protobuf/empty.proto" ;
25
+ import "google/protobuf/field_mask.proto" ;
24
26
import "google/protobuf/timestamp.proto" ;
25
27
26
28
option csharp_namespace = "Google.Cloud.RecaptchaEnterprise.V1Beta1" ;
@@ -54,6 +56,43 @@ service RecaptchaEnterpriseServiceV1Beta1 {
54
56
};
55
57
option (google.api.method_signature ) = "name,annotation" ;
56
58
}
59
+
60
+ // Creates a new reCAPTCHA Enterprise key.
61
+ rpc CreateKey (CreateKeyRequest ) returns (Key ) {
62
+ option (google.api.http ) = {
63
+ post : "/v1beta1/{parent=projects/*}/keys"
64
+ body : "key"
65
+ };
66
+ }
67
+
68
+ // Returns the list of all keys that belong to a project.
69
+ rpc ListKeys (ListKeysRequest ) returns (ListKeysResponse ) {
70
+ option (google.api.http ) = {
71
+ get : "/v1beta1/{parent=projects/*}/keys"
72
+ };
73
+ }
74
+
75
+ // Returns the specified key.
76
+ rpc GetKey (GetKeyRequest ) returns (Key ) {
77
+ option (google.api.http ) = {
78
+ get : "/v1beta1/{name=projects/*/keys/*}"
79
+ };
80
+ }
81
+
82
+ // Updates the specified key.
83
+ rpc UpdateKey (UpdateKeyRequest ) returns (Key ) {
84
+ option (google.api.http ) = {
85
+ patch : "/v1beta1/{key.name=projects/*/keys/*}"
86
+ body : "key"
87
+ };
88
+ }
89
+
90
+ // Deletes the specified key.
91
+ rpc DeleteKey (DeleteKeyRequest ) returns (google .protobuf .Empty ) {
92
+ option (google.api.http ) = {
93
+ delete : "/v1beta1/{name=projects/*/keys/*}"
94
+ };
95
+ }
57
96
}
58
97
59
98
// The create assessment request message.
@@ -154,13 +193,25 @@ message Assessment {
154
193
}
155
194
156
195
message Event {
157
- // Required . The user response token provided by the reCAPTCHA client-side integration
196
+ // Optional . The user response token provided by the reCAPTCHA client-side integration
158
197
// on your site.
159
- string token = 1 [(google.api.field_behavior ) = REQUIRED ];
198
+ string token = 1 [(google.api.field_behavior ) = OPTIONAL ];
160
199
161
- // Required . The site key that was used to invoke reCAPTCHA on your site and generate
200
+ // Optional . The site key that was used to invoke reCAPTCHA on your site and generate
162
201
// the token.
163
- string site_key = 2 [(google.api.field_behavior ) = REQUIRED ];
202
+ string site_key = 2 [(google.api.field_behavior ) = OPTIONAL ];
203
+
204
+ // Optional. The user agent present in the request from the user's device related to
205
+ // this event.
206
+ string user_agent = 3 [(google.api.field_behavior ) = OPTIONAL ];
207
+
208
+ // Optional. The IP address in the request from the user's device related to this event.
209
+ string user_ip_address = 4 [(google.api.field_behavior ) = OPTIONAL ];
210
+
211
+ // Optional. The expected action for this type of event. This should be the same action
212
+ // provided at token generation time on client-side platforms already
213
+ // integrated with recaptcha enterprise.
214
+ string expected_action = 5 [(google.api.field_behavior ) = OPTIONAL ];
164
215
}
165
216
166
217
message TokenProperties {
@@ -207,3 +258,184 @@ message TokenProperties {
207
258
// Action name provided at token generation.
208
259
string action = 5 ;
209
260
}
261
+
262
+ // The create key request message.
263
+ message CreateKeyRequest {
264
+ // Required. The name of the project in which the key will be created, in the
265
+ // format "projects/{project_number}".
266
+ string parent = 1 [
267
+ (google.api.field_behavior ) = REQUIRED ,
268
+ (google.api.resource_reference ) = {
269
+ type : "cloudresourcemanager.googleapis.com/Project"
270
+ }
271
+ ];
272
+
273
+ // Required. Information to create a reCAPTCHA Enterprise key.
274
+ Key key = 2 [(google.api.field_behavior ) = REQUIRED ];
275
+ }
276
+
277
+ // The list keys request message.
278
+ message ListKeysRequest {
279
+ // Required. The name of the project that contains the keys that will be
280
+ // listed, in the format "projects/{project_number}".
281
+ string parent = 1 [
282
+ (google.api.field_behavior ) = REQUIRED ,
283
+ (google.api.resource_reference ) = {
284
+ type : "cloudresourcemanager.googleapis.com/Project"
285
+ }
286
+ ];
287
+
288
+ // Optional. The maximum number of keys to return. Default is 10. Max limit is
289
+ // 1000.
290
+ int32 page_size = 2 [(google.api.field_behavior ) = OPTIONAL ];
291
+
292
+ // Optional. The next_page_token value returned from a previous.
293
+ // ListKeysRequest, if any.
294
+ string page_token = 3 [(google.api.field_behavior ) = OPTIONAL ];
295
+ }
296
+
297
+ // Response to request to list keys in a project.
298
+ message ListKeysResponse {
299
+ // Key details.
300
+ repeated Key keys = 1 ;
301
+
302
+ // Token to retrieve the next page of results. It is set to empty if no keys
303
+ // remain in results.
304
+ string next_page_token = 2 ;
305
+ }
306
+
307
+ // The get key request message.
308
+ message GetKeyRequest {
309
+ // Required. The name of the requested key, in the format
310
+ // "projects/{project_number}/keys/{key_id}".
311
+ string name = 1 [
312
+ (google.api.field_behavior ) = REQUIRED ,
313
+ (google.api.resource_reference ) = {
314
+ type : "recaptchaenterprise.googleapis.com/Key"
315
+ }
316
+ ];
317
+ }
318
+
319
+ // The update key request message.
320
+ message UpdateKeyRequest {
321
+ // Required. The key to update.
322
+ Key key = 1 [(google.api.field_behavior ) = REQUIRED ];
323
+
324
+ // Optional. The mask to control which field of the key get updated. If the mask is not
325
+ // present, all fields will be updated.
326
+ google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior ) = OPTIONAL ];
327
+ }
328
+
329
+ // The delete key request message.
330
+ message DeleteKeyRequest {
331
+ // Required. The name of the key to be deleted, in the format
332
+ // "projects/{project_number}/keys/{key_id}".
333
+ string name = 1 [
334
+ (google.api.field_behavior ) = REQUIRED ,
335
+ (google.api.resource_reference ) = {
336
+ type : "recaptchaenterprise.googleapis.com/Key"
337
+ }
338
+ ];
339
+ }
340
+
341
+ // A key used to identify and configure applications (web and/or mobile) that
342
+ // use reCAPTCHA Enterprise.
343
+ message Key {
344
+ option (google.api.resource ) = {
345
+ type : "recaptchaenterprise.googleapis.com/Key"
346
+ pattern : "projects/{project}/keys/{key}"
347
+ };
348
+
349
+ // The resource name for the Key in the format
350
+ // "projects/{project_number}/keys/{key_id}".
351
+ string name = 1 ;
352
+
353
+ // Human-readable display name of this key. Modifiable by user.
354
+ string display_name = 2 ;
355
+
356
+ // Platform specific settings for this key. The key can only be used on one
357
+ // platform, the one it has settings for.
358
+ oneof platform_settings {
359
+ // Settings for keys that can be used by websites.
360
+ WebKeySettings web_settings = 3 ;
361
+
362
+ // Settings for keys that can be used by Android apps.
363
+ AndroidKeySettings android_settings = 4 ;
364
+
365
+ // Settings for keys that can be used by iOS apps.
366
+ IOSKeySettings ios_settings = 5 ;
367
+ }
368
+ }
369
+
370
+ // Settings specific to keys that can be used by websites.
371
+ message WebKeySettings {
372
+ // Enum that represents the integration types for web keys.
373
+ enum IntegrationType {
374
+ // Default type that indicates this enum hasn't been specified. This is not
375
+ // a valid IntegrationType, one of the other types must be specified
376
+ // instead.
377
+ INTEGRATION_TYPE_UNSPECIFIED = 0 ;
378
+
379
+ // Only used to produce scores. It doesn't display the "I'm not a robot"
380
+ // checkbox and never shows captcha challenges.
381
+ SCORE_ONLY = 1 ;
382
+
383
+ // Displays the "I'm not a robot" checkbox and may show captcha challenges
384
+ // after it is checked.
385
+ CHECKBOX_CHALLENGE = 2 ;
386
+
387
+ // Doesn't display the "I'm not a robot" checkbox, but may show captcha
388
+ // challenges after risk analysis.
389
+ INVISIBLE_CHALLENGE = 3 ;
390
+ }
391
+
392
+ // Enum that represents the possible challenge frequency and difficulty
393
+ // configurations for a web key.
394
+ enum ChallengeSecurityPreference {
395
+ // Default type that indicates this enum hasn't been specified.
396
+ CHALLENGE_SECURITY_PREFERENCE_UNSPECIFIED = 0 ;
397
+
398
+ // Key tends to show fewer and easier challenges.
399
+ USABILITY = 1 ;
400
+
401
+ // Key tends to show balanced (in amount and difficulty) challenges.
402
+ BALANCED = 2 ;
403
+
404
+ // Key tends to show more and harder challenges.
405
+ SECURITY = 3 ;
406
+ }
407
+
408
+ // Whether allowed_domains is enforced or not.
409
+ bool enforce_allowed_domains = 3 ;
410
+
411
+ // Domains or subdomains of websites allowed to use the key. All subdomains
412
+ // of an allowed domain are automatically allowed. A valid domain requires a
413
+ // host and must not include any path, port, query or fragment.
414
+ // Examples: 'example.com' or 'subdomain.example.com'
415
+ repeated string allowed_domains = 1 ;
416
+
417
+ // Whether this key can be used on AMP (Accelerated Mobile Pages) websites.
418
+ bool allow_amp_traffic = 2 ;
419
+
420
+ // Required. Describes how this key is integrated with the website.
421
+ IntegrationType integration_type = 4 [(google.api.field_behavior ) = REQUIRED ];
422
+
423
+ // Settings for the frequency and difficulty at which this key triggers
424
+ // captcha challenges. This should only be specified for IntegrationTypes
425
+ // CHECKBOX_CHALLENGE and INVISIBLE_CHALLENGE.
426
+ ChallengeSecurityPreference challenge_security_preference = 5 ;
427
+ }
428
+
429
+ // Settings specific to keys that can be used by Android apps.
430
+ message AndroidKeySettings {
431
+ // Android package names of apps allowed to use the key.
432
+ // Example: 'com.companyname.appname'
433
+ repeated string allowed_package_names = 1 ;
434
+ }
435
+
436
+ // Settings specific to keys that can be used by iOS apps.
437
+ message IOSKeySettings {
438
+ // iOS bundle ids of apps allowed to use the key.
439
+ // Example: 'com.companyname.productname.appname'
440
+ repeated string allowed_bundle_ids = 1 ;
441
+ }
0 commit comments