From 6f2ef7d3899f05dae7eb03847d8dddf9b04a7738 Mon Sep 17 00:00:00 2001 From: Michael Lehenbauer Date: Thu, 12 Apr 2018 09:08:18 -0700 Subject: Update protos. (#1075) --- Firestore/Protos/nanopb/google/api/http.pb.c | 5 +- Firestore/Protos/nanopb/google/api/http.pb.h | 10 +-- .../nanopb/google/firestore/v1beta1/query.pb.h | 9 +-- .../nanopb/google/firestore/v1beta1/write.pb.c | 15 +++-- .../nanopb/google/firestore/v1beta1/write.pb.h | 16 +++-- Firestore/Protos/objc/google/api/HTTP.pbobjc.h | 75 ++++++++++++++------- Firestore/Protos/objc/google/api/HTTP.pbobjc.m | 10 +++ .../google/firestore/v1beta1/Document.pbobjc.h | 4 +- .../google/firestore/v1beta1/Firestore.pbobjc.h | 5 +- .../objc/google/firestore/v1beta1/Query.pbobjc.h | 3 + .../objc/google/firestore/v1beta1/Query.pbobjc.m | 4 +- .../objc/google/firestore/v1beta1/Write.pbobjc.h | 57 ++++++++++++---- .../objc/google/firestore/v1beta1/Write.pbobjc.m | 33 ++++++---- Firestore/Protos/protos/google/api/http.proto | 72 +++++++++++++------- .../protos/google/firestore/v1beta1/common.proto | 3 +- .../protos/google/firestore/v1beta1/document.proto | 7 +- .../google/firestore/v1beta1/firestore.proto | 76 +++++++++++++++++----- .../protos/google/firestore/v1beta1/query.proto | 6 +- .../protos/google/firestore/v1beta1/write.proto | 45 ++++++++++--- Firestore/Protos/protos/google/protobuf/any.proto | 21 +++--- .../Protos/protos/google/protobuf/timestamp.proto | 8 ++- 21 files changed, 338 insertions(+), 146 deletions(-) (limited to 'Firestore/Protos') diff --git a/Firestore/Protos/nanopb/google/api/http.pb.c b/Firestore/Protos/nanopb/google/api/http.pb.c index 5219163..7a2cd21 100644 --- a/Firestore/Protos/nanopb/google/api/http.pb.c +++ b/Firestore/Protos/nanopb/google/api/http.pb.c @@ -15,7 +15,7 @@ */ /* Automatically generated nanopb constant definitions */ -/* Generated by nanopb-0.3.8 at Fri Feb 2 17:48:02 2018. */ +/* Generated by nanopb-0.3.8 at Thu Apr 12 07:27:15 2018. */ #include "http.pb.h" @@ -26,8 +26,9 @@ -const pb_field_t google_api_Http_fields[2] = { +const pb_field_t google_api_Http_fields[3] = { PB_FIELD( 1, MESSAGE , REPEATED, CALLBACK, FIRST, google_api_Http, rules, rules, &google_api_HttpRule_fields), + PB_FIELD( 2, BOOL , SINGULAR, STATIC , OTHER, google_api_Http, fully_decode_reserved_expansion, rules, 0), PB_LAST_FIELD }; diff --git a/Firestore/Protos/nanopb/google/api/http.pb.h b/Firestore/Protos/nanopb/google/api/http.pb.h index e29758c..a7bbc46 100644 --- a/Firestore/Protos/nanopb/google/api/http.pb.h +++ b/Firestore/Protos/nanopb/google/api/http.pb.h @@ -15,7 +15,7 @@ */ /* Automatically generated nanopb header */ -/* Generated by nanopb-0.3.8 at Fri Feb 2 17:48:02 2018. */ +/* Generated by nanopb-0.3.8 at Thu Apr 12 07:27:15 2018. */ #ifndef PB_GOOGLE_API_HTTP_PB_H_INCLUDED #define PB_GOOGLE_API_HTTP_PB_H_INCLUDED @@ -39,6 +39,7 @@ typedef struct _google_api_CustomHttpPattern { typedef struct _google_api_Http { pb_callback_t rules; + bool fully_decode_reserved_expansion; /* @@protoc_insertion_point(struct:google_api_Http) */ } google_api_Http; @@ -58,10 +59,10 @@ typedef struct _google_api_HttpRule { /* Default values for struct fields */ /* Initializer values for message structs */ -#define google_api_Http_init_default {{{NULL}, NULL}} +#define google_api_Http_init_default {{{NULL}, NULL}, 0} #define google_api_HttpRule_init_default {{{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, google_api_CustomHttpPattern_init_default, {{NULL}, NULL}} #define google_api_CustomHttpPattern_init_default {{{NULL}, NULL}, {{NULL}, NULL}} -#define google_api_Http_init_zero {{{NULL}, NULL}} +#define google_api_Http_init_zero {{{NULL}, NULL}, 0} #define google_api_HttpRule_init_zero {{{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, google_api_CustomHttpPattern_init_zero, {{NULL}, NULL}} #define google_api_CustomHttpPattern_init_zero {{{NULL}, NULL}, {{NULL}, NULL}} @@ -69,6 +70,7 @@ typedef struct _google_api_HttpRule { #define google_api_CustomHttpPattern_kind_tag 1 #define google_api_CustomHttpPattern_path_tag 2 #define google_api_Http_rules_tag 1 +#define google_api_Http_fully_decode_reserved_expansion_tag 2 #define google_api_HttpRule_selector_tag 1 #define google_api_HttpRule_get_tag 2 #define google_api_HttpRule_put_tag 3 @@ -80,7 +82,7 @@ typedef struct _google_api_HttpRule { #define google_api_HttpRule_additional_bindings_tag 11 /* Struct field encoding specification for nanopb */ -extern const pb_field_t google_api_Http_fields[2]; +extern const pb_field_t google_api_Http_fields[3]; extern const pb_field_t google_api_HttpRule_fields[10]; extern const pb_field_t google_api_CustomHttpPattern_fields[3]; diff --git a/Firestore/Protos/nanopb/google/firestore/v1beta1/query.pb.h b/Firestore/Protos/nanopb/google/firestore/v1beta1/query.pb.h index faad2a2..75b8168 100644 --- a/Firestore/Protos/nanopb/google/firestore/v1beta1/query.pb.h +++ b/Firestore/Protos/nanopb/google/firestore/v1beta1/query.pb.h @@ -15,7 +15,7 @@ */ /* Automatically generated nanopb header */ -/* Generated by nanopb-0.3.8 at Fri Feb 2 17:48:02 2018. */ +/* Generated by nanopb-0.3.8 at Thu Apr 12 07:27:15 2018. */ #ifndef PB_GOOGLE_FIRESTORE_V1BETA1_QUERY_PB_H_INCLUDED #define PB_GOOGLE_FIRESTORE_V1BETA1_QUERY_PB_H_INCLUDED @@ -60,11 +60,12 @@ typedef enum _google_firestore_v1beta1_StructuredQuery_FieldFilter_Operator { google_firestore_v1beta1_StructuredQuery_FieldFilter_Operator_LESS_THAN_OR_EQUAL = 2, google_firestore_v1beta1_StructuredQuery_FieldFilter_Operator_GREATER_THAN = 3, google_firestore_v1beta1_StructuredQuery_FieldFilter_Operator_GREATER_THAN_OR_EQUAL = 4, - google_firestore_v1beta1_StructuredQuery_FieldFilter_Operator_EQUAL = 5 + google_firestore_v1beta1_StructuredQuery_FieldFilter_Operator_EQUAL = 5, + google_firestore_v1beta1_StructuredQuery_FieldFilter_Operator_ARRAY_CONTAINS = 7 } google_firestore_v1beta1_StructuredQuery_FieldFilter_Operator; #define _google_firestore_v1beta1_StructuredQuery_FieldFilter_Operator_MIN google_firestore_v1beta1_StructuredQuery_FieldFilter_Operator_OPERATOR_UNSPECIFIED -#define _google_firestore_v1beta1_StructuredQuery_FieldFilter_Operator_MAX google_firestore_v1beta1_StructuredQuery_FieldFilter_Operator_EQUAL -#define _google_firestore_v1beta1_StructuredQuery_FieldFilter_Operator_ARRAYSIZE ((google_firestore_v1beta1_StructuredQuery_FieldFilter_Operator)(google_firestore_v1beta1_StructuredQuery_FieldFilter_Operator_EQUAL+1)) +#define _google_firestore_v1beta1_StructuredQuery_FieldFilter_Operator_MAX google_firestore_v1beta1_StructuredQuery_FieldFilter_Operator_ARRAY_CONTAINS +#define _google_firestore_v1beta1_StructuredQuery_FieldFilter_Operator_ARRAYSIZE ((google_firestore_v1beta1_StructuredQuery_FieldFilter_Operator)(google_firestore_v1beta1_StructuredQuery_FieldFilter_Operator_ARRAY_CONTAINS+1)) typedef enum _google_firestore_v1beta1_StructuredQuery_UnaryFilter_Operator { google_firestore_v1beta1_StructuredQuery_UnaryFilter_Operator_OPERATOR_UNSPECIFIED = 0, diff --git a/Firestore/Protos/nanopb/google/firestore/v1beta1/write.pb.c b/Firestore/Protos/nanopb/google/firestore/v1beta1/write.pb.c index 462eca6..26542e0 100644 --- a/Firestore/Protos/nanopb/google/firestore/v1beta1/write.pb.c +++ b/Firestore/Protos/nanopb/google/firestore/v1beta1/write.pb.c @@ -15,7 +15,7 @@ */ /* Automatically generated nanopb constant definitions */ -/* Generated by nanopb-0.3.8 at Fri Feb 2 17:48:02 2018. */ +/* Generated by nanopb-0.3.8 at Thu Apr 12 07:27:15 2018. */ #include "write.pb.h" @@ -26,13 +26,12 @@ -const pb_field_t google_firestore_v1beta1_Write_fields[7] = { +const pb_field_t google_firestore_v1beta1_Write_fields[6] = { PB_FIELD( 1, MESSAGE , SINGULAR, STATIC , FIRST, google_firestore_v1beta1_Write, update, update, &google_firestore_v1beta1_Document_fields), PB_FIELD( 2, STRING , SINGULAR, CALLBACK, OTHER, google_firestore_v1beta1_Write, delete_, update, 0), PB_FIELD( 3, MESSAGE , SINGULAR, STATIC , OTHER, google_firestore_v1beta1_Write, update_mask, delete_, &google_firestore_v1beta1_DocumentMask_fields), PB_FIELD( 4, MESSAGE , SINGULAR, STATIC , OTHER, google_firestore_v1beta1_Write, current_document, update_mask, &google_firestore_v1beta1_Precondition_fields), - PB_FIELD( 5, STRING , SINGULAR, CALLBACK, OTHER, google_firestore_v1beta1_Write, verify, current_document, 0), - PB_FIELD( 6, MESSAGE , SINGULAR, STATIC , OTHER, google_firestore_v1beta1_Write, transform, verify, &google_firestore_v1beta1_DocumentTransform_fields), + PB_FIELD( 6, MESSAGE , SINGULAR, STATIC , OTHER, google_firestore_v1beta1_Write, transform, current_document, &google_firestore_v1beta1_DocumentTransform_fields), PB_LAST_FIELD }; @@ -42,9 +41,11 @@ const pb_field_t google_firestore_v1beta1_DocumentTransform_fields[3] = { PB_LAST_FIELD }; -const pb_field_t google_firestore_v1beta1_DocumentTransform_FieldTransform_fields[3] = { +const pb_field_t google_firestore_v1beta1_DocumentTransform_FieldTransform_fields[5] = { PB_FIELD( 1, STRING , SINGULAR, CALLBACK, FIRST, google_firestore_v1beta1_DocumentTransform_FieldTransform, field_path, field_path, 0), PB_ONEOF_FIELD(transform_type, 2, ENUM , ONEOF, STATIC , OTHER, google_firestore_v1beta1_DocumentTransform_FieldTransform, set_to_server_value, field_path, 0), + PB_ONEOF_FIELD(transform_type, 6, MESSAGE , ONEOF, STATIC , UNION, google_firestore_v1beta1_DocumentTransform_FieldTransform, append_missing_elements, field_path, &google_firestore_v1beta1_ArrayValue_fields), + PB_ONEOF_FIELD(transform_type, 7, MESSAGE , ONEOF, STATIC , UNION, google_firestore_v1beta1_DocumentTransform_FieldTransform, remove_all_from_array, field_path, &google_firestore_v1beta1_ArrayValue_fields), PB_LAST_FIELD }; @@ -92,7 +93,7 @@ const pb_field_t google_firestore_v1beta1_ExistenceFilter_fields[3] = { * numbers or field sizes that are larger than what can fit in 8 or 16 bit * field descriptors. */ -PB_STATIC_ASSERT((pb_membersize(google_firestore_v1beta1_Write, update) < 65536 && pb_membersize(google_firestore_v1beta1_Write, transform) < 65536 && pb_membersize(google_firestore_v1beta1_Write, update_mask) < 65536 && pb_membersize(google_firestore_v1beta1_Write, current_document) < 65536 && pb_membersize(google_firestore_v1beta1_WriteResult, update_time) < 65536 && pb_membersize(google_firestore_v1beta1_DocumentChange, document) < 65536 && pb_membersize(google_firestore_v1beta1_DocumentDelete, read_time) < 65536 && pb_membersize(google_firestore_v1beta1_DocumentRemove, read_time) < 65536), YOU_MUST_DEFINE_PB_FIELD_32BIT_FOR_MESSAGES_google_firestore_v1beta1_Write_google_firestore_v1beta1_DocumentTransform_google_firestore_v1beta1_DocumentTransform_FieldTransform_google_firestore_v1beta1_WriteResult_google_firestore_v1beta1_DocumentChange_google_firestore_v1beta1_DocumentDelete_google_firestore_v1beta1_DocumentRemove_google_firestore_v1beta1_ExistenceFilter) +PB_STATIC_ASSERT((pb_membersize(google_firestore_v1beta1_Write, update) < 65536 && pb_membersize(google_firestore_v1beta1_Write, transform) < 65536 && pb_membersize(google_firestore_v1beta1_Write, update_mask) < 65536 && pb_membersize(google_firestore_v1beta1_Write, current_document) < 65536 && pb_membersize(google_firestore_v1beta1_DocumentTransform_FieldTransform, transform_type.append_missing_elements) < 65536 && pb_membersize(google_firestore_v1beta1_DocumentTransform_FieldTransform, transform_type.remove_all_from_array) < 65536 && pb_membersize(google_firestore_v1beta1_WriteResult, update_time) < 65536 && pb_membersize(google_firestore_v1beta1_DocumentChange, document) < 65536 && pb_membersize(google_firestore_v1beta1_DocumentDelete, read_time) < 65536 && pb_membersize(google_firestore_v1beta1_DocumentRemove, read_time) < 65536), YOU_MUST_DEFINE_PB_FIELD_32BIT_FOR_MESSAGES_google_firestore_v1beta1_Write_google_firestore_v1beta1_DocumentTransform_google_firestore_v1beta1_DocumentTransform_FieldTransform_google_firestore_v1beta1_WriteResult_google_firestore_v1beta1_DocumentChange_google_firestore_v1beta1_DocumentDelete_google_firestore_v1beta1_DocumentRemove_google_firestore_v1beta1_ExistenceFilter) #endif #if !defined(PB_FIELD_16BIT) && !defined(PB_FIELD_32BIT) @@ -103,7 +104,7 @@ PB_STATIC_ASSERT((pb_membersize(google_firestore_v1beta1_Write, update) < 65536 * numbers or field sizes that are larger than what can fit in the default * 8 bit descriptors. */ -PB_STATIC_ASSERT((pb_membersize(google_firestore_v1beta1_Write, update) < 256 && pb_membersize(google_firestore_v1beta1_Write, transform) < 256 && pb_membersize(google_firestore_v1beta1_Write, update_mask) < 256 && pb_membersize(google_firestore_v1beta1_Write, current_document) < 256 && pb_membersize(google_firestore_v1beta1_WriteResult, update_time) < 256 && pb_membersize(google_firestore_v1beta1_DocumentChange, document) < 256 && pb_membersize(google_firestore_v1beta1_DocumentDelete, read_time) < 256 && pb_membersize(google_firestore_v1beta1_DocumentRemove, read_time) < 256), YOU_MUST_DEFINE_PB_FIELD_16BIT_FOR_MESSAGES_google_firestore_v1beta1_Write_google_firestore_v1beta1_DocumentTransform_google_firestore_v1beta1_DocumentTransform_FieldTransform_google_firestore_v1beta1_WriteResult_google_firestore_v1beta1_DocumentChange_google_firestore_v1beta1_DocumentDelete_google_firestore_v1beta1_DocumentRemove_google_firestore_v1beta1_ExistenceFilter) +PB_STATIC_ASSERT((pb_membersize(google_firestore_v1beta1_Write, update) < 256 && pb_membersize(google_firestore_v1beta1_Write, transform) < 256 && pb_membersize(google_firestore_v1beta1_Write, update_mask) < 256 && pb_membersize(google_firestore_v1beta1_Write, current_document) < 256 && pb_membersize(google_firestore_v1beta1_DocumentTransform_FieldTransform, transform_type.append_missing_elements) < 256 && pb_membersize(google_firestore_v1beta1_DocumentTransform_FieldTransform, transform_type.remove_all_from_array) < 256 && pb_membersize(google_firestore_v1beta1_WriteResult, update_time) < 256 && pb_membersize(google_firestore_v1beta1_DocumentChange, document) < 256 && pb_membersize(google_firestore_v1beta1_DocumentDelete, read_time) < 256 && pb_membersize(google_firestore_v1beta1_DocumentRemove, read_time) < 256), YOU_MUST_DEFINE_PB_FIELD_16BIT_FOR_MESSAGES_google_firestore_v1beta1_Write_google_firestore_v1beta1_DocumentTransform_google_firestore_v1beta1_DocumentTransform_FieldTransform_google_firestore_v1beta1_WriteResult_google_firestore_v1beta1_DocumentChange_google_firestore_v1beta1_DocumentDelete_google_firestore_v1beta1_DocumentRemove_google_firestore_v1beta1_ExistenceFilter) #endif diff --git a/Firestore/Protos/nanopb/google/firestore/v1beta1/write.pb.h b/Firestore/Protos/nanopb/google/firestore/v1beta1/write.pb.h index a44b6d4..5a272b2 100644 --- a/Firestore/Protos/nanopb/google/firestore/v1beta1/write.pb.h +++ b/Firestore/Protos/nanopb/google/firestore/v1beta1/write.pb.h @@ -15,7 +15,7 @@ */ /* Automatically generated nanopb header */ -/* Generated by nanopb-0.3.8 at Fri Feb 2 17:48:02 2018. */ +/* Generated by nanopb-0.3.8 at Thu Apr 12 07:27:15 2018. */ #ifndef PB_GOOGLE_FIRESTORE_V1BETA1_WRITE_PB_H_INCLUDED #define PB_GOOGLE_FIRESTORE_V1BETA1_WRITE_PB_H_INCLUDED @@ -80,6 +80,8 @@ typedef struct _google_firestore_v1beta1_DocumentTransform_FieldTransform { pb_size_t which_transform_type; union { google_firestore_v1beta1_DocumentTransform_FieldTransform_ServerValue set_to_server_value; + google_firestore_v1beta1_ArrayValue append_missing_elements; + google_firestore_v1beta1_ArrayValue remove_all_from_array; } transform_type; /* @@protoc_insertion_point(struct:google_firestore_v1beta1_DocumentTransform_FieldTransform) */ } google_firestore_v1beta1_DocumentTransform_FieldTransform; @@ -95,7 +97,6 @@ typedef struct _google_firestore_v1beta1_Write { pb_callback_t delete_; google_firestore_v1beta1_DocumentMask update_mask; google_firestore_v1beta1_Precondition current_document; - pb_callback_t verify; google_firestore_v1beta1_DocumentTransform transform; /* @@protoc_insertion_point(struct:google_firestore_v1beta1_Write) */ } google_firestore_v1beta1_Write; @@ -109,7 +110,7 @@ typedef struct _google_firestore_v1beta1_WriteResult { /* Default values for struct fields */ /* Initializer values for message structs */ -#define google_firestore_v1beta1_Write_init_default {google_firestore_v1beta1_Document_init_default, {{NULL}, NULL}, google_firestore_v1beta1_DocumentMask_init_default, google_firestore_v1beta1_Precondition_init_default, {{NULL}, NULL}, google_firestore_v1beta1_DocumentTransform_init_default} +#define google_firestore_v1beta1_Write_init_default {google_firestore_v1beta1_Document_init_default, {{NULL}, NULL}, google_firestore_v1beta1_DocumentMask_init_default, google_firestore_v1beta1_Precondition_init_default, google_firestore_v1beta1_DocumentTransform_init_default} #define google_firestore_v1beta1_DocumentTransform_init_default {{{NULL}, NULL}, {{NULL}, NULL}} #define google_firestore_v1beta1_DocumentTransform_FieldTransform_init_default {{{NULL}, NULL}, 0, {(google_firestore_v1beta1_DocumentTransform_FieldTransform_ServerValue)0}} #define google_firestore_v1beta1_WriteResult_init_default {google_protobuf_Timestamp_init_default, {{NULL}, NULL}} @@ -117,7 +118,7 @@ typedef struct _google_firestore_v1beta1_WriteResult { #define google_firestore_v1beta1_DocumentDelete_init_default {{{NULL}, NULL}, google_protobuf_Timestamp_init_default, {{NULL}, NULL}} #define google_firestore_v1beta1_DocumentRemove_init_default {{{NULL}, NULL}, {{NULL}, NULL}, google_protobuf_Timestamp_init_default} #define google_firestore_v1beta1_ExistenceFilter_init_default {0, 0} -#define google_firestore_v1beta1_Write_init_zero {google_firestore_v1beta1_Document_init_zero, {{NULL}, NULL}, google_firestore_v1beta1_DocumentMask_init_zero, google_firestore_v1beta1_Precondition_init_zero, {{NULL}, NULL}, google_firestore_v1beta1_DocumentTransform_init_zero} +#define google_firestore_v1beta1_Write_init_zero {google_firestore_v1beta1_Document_init_zero, {{NULL}, NULL}, google_firestore_v1beta1_DocumentMask_init_zero, google_firestore_v1beta1_Precondition_init_zero, google_firestore_v1beta1_DocumentTransform_init_zero} #define google_firestore_v1beta1_DocumentTransform_init_zero {{{NULL}, NULL}, {{NULL}, NULL}} #define google_firestore_v1beta1_DocumentTransform_FieldTransform_init_zero {{{NULL}, NULL}, 0, {(google_firestore_v1beta1_DocumentTransform_FieldTransform_ServerValue)0}} #define google_firestore_v1beta1_WriteResult_init_zero {google_protobuf_Timestamp_init_zero, {{NULL}, NULL}} @@ -139,12 +140,13 @@ typedef struct _google_firestore_v1beta1_WriteResult { #define google_firestore_v1beta1_DocumentRemove_removed_target_ids_tag 2 #define google_firestore_v1beta1_DocumentRemove_read_time_tag 4 #define google_firestore_v1beta1_DocumentTransform_FieldTransform_set_to_server_value_tag 2 +#define google_firestore_v1beta1_DocumentTransform_FieldTransform_append_missing_elements_tag 6 +#define google_firestore_v1beta1_DocumentTransform_FieldTransform_remove_all_from_array_tag 7 #define google_firestore_v1beta1_DocumentTransform_FieldTransform_field_path_tag 1 #define google_firestore_v1beta1_ExistenceFilter_target_id_tag 1 #define google_firestore_v1beta1_ExistenceFilter_count_tag 2 #define google_firestore_v1beta1_Write_update_tag 1 #define google_firestore_v1beta1_Write_delete_tag 2 -#define google_firestore_v1beta1_Write_verify_tag 5 #define google_firestore_v1beta1_Write_transform_tag 6 #define google_firestore_v1beta1_Write_update_mask_tag 3 #define google_firestore_v1beta1_Write_current_document_tag 4 @@ -152,9 +154,9 @@ typedef struct _google_firestore_v1beta1_WriteResult { #define google_firestore_v1beta1_WriteResult_transform_results_tag 2 /* Struct field encoding specification for nanopb */ -extern const pb_field_t google_firestore_v1beta1_Write_fields[7]; +extern const pb_field_t google_firestore_v1beta1_Write_fields[6]; extern const pb_field_t google_firestore_v1beta1_DocumentTransform_fields[3]; -extern const pb_field_t google_firestore_v1beta1_DocumentTransform_FieldTransform_fields[3]; +extern const pb_field_t google_firestore_v1beta1_DocumentTransform_FieldTransform_fields[5]; extern const pb_field_t google_firestore_v1beta1_WriteResult_fields[3]; extern const pb_field_t google_firestore_v1beta1_DocumentChange_fields[4]; extern const pb_field_t google_firestore_v1beta1_DocumentDelete_fields[4]; diff --git a/Firestore/Protos/objc/google/api/HTTP.pbobjc.h b/Firestore/Protos/objc/google/api/HTTP.pbobjc.h index 9cc00dc..c9e5bb5 100644 --- a/Firestore/Protos/objc/google/api/HTTP.pbobjc.h +++ b/Firestore/Protos/objc/google/api/HTTP.pbobjc.h @@ -67,10 +67,11 @@ NS_ASSUME_NONNULL_BEGIN typedef GPB_ENUM(GAPIHttp_FieldNumber) { GAPIHttp_FieldNumber_RulesArray = 1, + GAPIHttp_FieldNumber_FullyDecodeReservedExpansion = 2, }; /** - * Defines the HTTP configuration for a service. It contains a list of + * Defines the HTTP configuration for an API service. It contains a list of * [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method * to one or more HTTP REST API methods. **/ @@ -85,6 +86,16 @@ typedef GPB_ENUM(GAPIHttp_FieldNumber) { /** The number of items in @c rulesArray without causing the array to be created. */ @property(nonatomic, readonly) NSUInteger rulesArray_Count; +/** + * When set to true, URL path parmeters will be fully URI-decoded except in + * cases of single segment matches in reserved expansion, where "%2F" will be + * left encoded. + * + * The default behavior is to not decode RFC 6570 reserved characters in multi + * segment matches. + **/ +@property(nonatomic, readwrite) BOOL fullyDecodeReservedExpansion; + @end #pragma mark - GAPIHttpRule @@ -113,11 +124,11 @@ typedef GPB_ENUM(GAPIHttpRule_Pattern_OneOfCase) { /** * `HttpRule` defines the mapping of an RPC method to one or more HTTP - * REST APIs. The mapping determines what portions of the request - * message are populated from the path, query parameters, or body of - * the HTTP request. The mapping is typically specified as an - * `google.api.http` annotation, see "google/api/annotations.proto" - * for details. + * REST API methods. The mapping specifies how different portions of the RPC + * request message are mapped to URL path, URL query parameters, and + * HTTP request body. The mapping is typically specified as an + * `google.api.http` annotation on the RPC method, + * see "google/api/annotations.proto" for details. * * The mapping consists of a field specifying the path template and * method kind. The path template can refer to fields in the request @@ -165,6 +176,11 @@ typedef GPB_ENUM(GAPIHttpRule_Pattern_OneOfCase) { * parameters. Assume the following definition of the request message: * * + * service Messaging { + * rpc GetMessage(GetMessageRequest) returns (Message) { + * option (google.api.http).get = "/v1/messages/{message_id}"; + * } + * } * message GetMessageRequest { * message SubMessage { * string subfield = 1; @@ -277,7 +293,7 @@ typedef GPB_ENUM(GAPIHttpRule_Pattern_OneOfCase) { * to the request message are as follows: * * 1. The `body` field specifies either `*` or a field path, or is - * omitted. If omitted, it assumes there is no HTTP body. + * omitted. If omitted, it indicates there is no HTTP request body. * 2. Leaf fields (recursive expansion of nested messages in the * request) can be classified into three types: * (a) Matched in the URL template. @@ -296,28 +312,34 @@ typedef GPB_ENUM(GAPIHttpRule_Pattern_OneOfCase) { * FieldPath = IDENT { "." IDENT } ; * Verb = ":" LITERAL ; * - * The syntax `*` matches a single path segment. It follows the semantics of - * [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String - * Expansion. + * The syntax `*` matches a single path segment. The syntax `**` matches zero + * or more path segments, which must be the last part of the path except the + * `Verb`. The syntax `LITERAL` matches literal text in the path. * - * The syntax `**` matches zero or more path segments. It follows the semantics - * of [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.3 Reserved - * Expansion. NOTE: it must be the last segment in the path except the Verb. - * - * The syntax `LITERAL` matches literal text in the URL path. - * - * The syntax `Variable` matches the entire path as specified by its template; - * this nested template must not contain further variables. If a variable + * The syntax `Variable` matches part of the URL path as specified by its + * template. A variable template must not contain other variables. If a variable * matches a single path segment, its template may be omitted, e.g. `{var}` * is equivalent to `{var=*}`. * + * If a variable contains exactly one path segment, such as `"{var}"` or + * `"{var=*}"`, when such a variable is expanded into a URL path, all characters + * except `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up in the + * Discovery Document as `{var}`. + * + * If a variable contains one or more path segments, such as `"{var=foo/\*}"` + * or `"{var=**}"`, when such a variable is expanded into a URL path, all + * characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such variables + * show up in the Discovery Document as `{+var}`. + * + * NOTE: While the single segment variable matches the semantics of + * [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 + * Simple String Expansion, the multi segment variable **does not** match + * RFC 6570 Reserved Expansion. The reason is that the Reserved Expansion + * does not expand special characters like `?` and `#`, which would lead + * to invalid URLs. + * * NOTE: the field paths in variables and in the `body` must not refer to * repeated fields or map fields. - * - * Use CustomHttpPattern to specify any HTTP method that is not included in the - * `pattern` field, such as HEAD, or "*" to leave the HTTP method unspecified for - * a given URL path rule. The wild-card rule is useful for services that provide - * content to Web (HTML) clients. **/ @interface GAPIHttpRule : GPBMessage @@ -350,7 +372,12 @@ typedef GPB_ENUM(GAPIHttpRule_Pattern_OneOfCase) { /** Used for updating a resource. */ @property(nonatomic, readwrite, copy, null_resettable) NSString *patch; -/** Custom pattern is used for defining custom verbs. */ +/** + * The custom pattern is used for specifying an HTTP method that is not + * included in the `pattern` field, such as HEAD, or "*" to leave the + * HTTP method unspecified for this rule. The wild-card rule is useful + * for services that provide content to Web (HTML) clients. + **/ @property(nonatomic, readwrite, strong, null_resettable) GAPICustomHttpPattern *custom; /** diff --git a/Firestore/Protos/objc/google/api/HTTP.pbobjc.m b/Firestore/Protos/objc/google/api/HTTP.pbobjc.m index 5adf41c..67d8732 100644 --- a/Firestore/Protos/objc/google/api/HTTP.pbobjc.m +++ b/Firestore/Protos/objc/google/api/HTTP.pbobjc.m @@ -65,6 +65,7 @@ static GPBFileDescriptor *GAPIHTTPRoot_FileDescriptor(void) { @implementation GAPIHttp @dynamic rulesArray, rulesArray_Count; +@dynamic fullyDecodeReservedExpansion; typedef struct GAPIHttp__storage_ { uint32_t _has_storage_[1]; @@ -86,6 +87,15 @@ typedef struct GAPIHttp__storage_ { .flags = GPBFieldRepeated, .dataType = GPBDataTypeMessage, }, + { + .name = "fullyDecodeReservedExpansion", + .dataTypeSpecific.className = NULL, + .number = GAPIHttp_FieldNumber_FullyDecodeReservedExpansion, + .hasIndex = 0, + .offset = 1, // Stored in _has_storage_ to save space. + .flags = GPBFieldOptional, + .dataType = GPBDataTypeBool, + }, }; GPBDescriptor *localDescriptor = [GPBDescriptor allocDescriptorForClass:[GAPIHttp class] diff --git a/Firestore/Protos/objc/google/firestore/v1beta1/Document.pbobjc.h b/Firestore/Protos/objc/google/firestore/v1beta1/Document.pbobjc.h index 3c5bfb1..b960b00 100644 --- a/Firestore/Protos/objc/google/firestore/v1beta1/Document.pbobjc.h +++ b/Firestore/Protos/objc/google/firestore/v1beta1/Document.pbobjc.h @@ -95,7 +95,7 @@ typedef GPB_ENUM(GCFSDocument_FieldNumber) { * The map keys represent field names. * * A simple field name contains only characters `a` to `z`, `A` to `Z`, - * `0` to `9`, or `_`, and must not start with `0` to `9` or `_`. For example, + * `0` to `9`, or `_`, and must not start with `0` to `9`. For example, * `foo_bar_17`. * * Field names matching the regular expression `__.*__` are reserved. Reserved @@ -133,7 +133,7 @@ typedef GPB_ENUM(GCFSDocument_FieldNumber) { /** * Output only. The time at which the document was last changed. * - * This value is initally set to the `create_time` then increases + * This value is initially set to the `create_time` then increases * monotonically with each change to the document. It can also be * compared to values from other documents and the `read_time` of a query. **/ diff --git a/Firestore/Protos/objc/google/firestore/v1beta1/Firestore.pbobjc.h b/Firestore/Protos/objc/google/firestore/v1beta1/Firestore.pbobjc.h index 0acd8c0..11f55a9 100644 --- a/Firestore/Protos/objc/google/firestore/v1beta1/Firestore.pbobjc.h +++ b/Firestore/Protos/objc/google/firestore/v1beta1/Firestore.pbobjc.h @@ -642,10 +642,7 @@ typedef GPB_ENUM(GCFSCommitRequest_FieldNumber) { /** The number of items in @c writesArray without causing the array to be created. */ @property(nonatomic, readonly) NSUInteger writesArray_Count; -/** - * If non-empty, applies all writes in this transaction, and commits it. - * Otherwise, applies the writes as if they were in their own transaction. - **/ +/** If set, applies all writes in this transaction, and commits it. */ @property(nonatomic, readwrite, copy, null_resettable) NSData *transaction; @end diff --git a/Firestore/Protos/objc/google/firestore/v1beta1/Query.pbobjc.h b/Firestore/Protos/objc/google/firestore/v1beta1/Query.pbobjc.h index c2d80e7..7e32934 100644 --- a/Firestore/Protos/objc/google/firestore/v1beta1/Query.pbobjc.h +++ b/Firestore/Protos/objc/google/firestore/v1beta1/Query.pbobjc.h @@ -140,6 +140,9 @@ typedef GPB_ENUM(GCFSStructuredQuery_FieldFilter_Operator) { /** Equal. */ GCFSStructuredQuery_FieldFilter_Operator_Equal = 5, + + /** Contains. Requires that the field is an array. */ + GCFSStructuredQuery_FieldFilter_Operator_ArrayContains = 7, }; GPBEnumDescriptor *GCFSStructuredQuery_FieldFilter_Operator_EnumDescriptor(void); diff --git a/Firestore/Protos/objc/google/firestore/v1beta1/Query.pbobjc.m b/Firestore/Protos/objc/google/firestore/v1beta1/Query.pbobjc.m index 804a5d0..124930a 100644 --- a/Firestore/Protos/objc/google/firestore/v1beta1/Query.pbobjc.m +++ b/Firestore/Protos/objc/google/firestore/v1beta1/Query.pbobjc.m @@ -542,7 +542,7 @@ GPBEnumDescriptor *GCFSStructuredQuery_FieldFilter_Operator_EnumDescriptor(void) static const char *valueNames = "OperatorUnspecified\000LessThan\000LessThanOrE" "qual\000GreaterThan\000GreaterThanOrEqual\000Equa" - "l\000"; + "l\000ArrayContains\000"; static const int32_t values[] = { GCFSStructuredQuery_FieldFilter_Operator_OperatorUnspecified, GCFSStructuredQuery_FieldFilter_Operator_LessThan, @@ -550,6 +550,7 @@ GPBEnumDescriptor *GCFSStructuredQuery_FieldFilter_Operator_EnumDescriptor(void) GCFSStructuredQuery_FieldFilter_Operator_GreaterThan, GCFSStructuredQuery_FieldFilter_Operator_GreaterThanOrEqual, GCFSStructuredQuery_FieldFilter_Operator_Equal, + GCFSStructuredQuery_FieldFilter_Operator_ArrayContains, }; GPBEnumDescriptor *worker = [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(GCFSStructuredQuery_FieldFilter_Operator) @@ -572,6 +573,7 @@ BOOL GCFSStructuredQuery_FieldFilter_Operator_IsValidValue(int32_t value__) { case GCFSStructuredQuery_FieldFilter_Operator_GreaterThan: case GCFSStructuredQuery_FieldFilter_Operator_GreaterThanOrEqual: case GCFSStructuredQuery_FieldFilter_Operator_Equal: + case GCFSStructuredQuery_FieldFilter_Operator_ArrayContains: return YES; default: return NO; diff --git a/Firestore/Protos/objc/google/firestore/v1beta1/Write.pbobjc.h b/Firestore/Protos/objc/google/firestore/v1beta1/Write.pbobjc.h index c3c4498..539bfa3 100644 --- a/Firestore/Protos/objc/google/firestore/v1beta1/Write.pbobjc.h +++ b/Firestore/Protos/objc/google/firestore/v1beta1/Write.pbobjc.h @@ -43,6 +43,7 @@ CF_EXTERN_C_BEGIN +@class GCFSArrayValue; @class GCFSDocument; @class GCFSDocumentMask; @class GCFSDocumentTransform; @@ -66,7 +67,10 @@ typedef GPB_ENUM(GCFSDocumentTransform_FieldTransform_ServerValue) { /** Unspecified. This value must not be used. */ GCFSDocumentTransform_FieldTransform_ServerValue_ServerValueUnspecified = 0, - /** The time at which the server processed the request. */ + /** + * The time at which the server processed the request, with millisecond + * precision. + **/ GCFSDocumentTransform_FieldTransform_ServerValue_RequestTime = 1, }; @@ -100,7 +104,6 @@ typedef GPB_ENUM(GCFSWrite_FieldNumber) { GCFSWrite_FieldNumber_Delete_p = 2, GCFSWrite_FieldNumber_UpdateMask = 3, GCFSWrite_FieldNumber_CurrentDocument = 4, - GCFSWrite_FieldNumber_Verify = 5, GCFSWrite_FieldNumber_Transform = 6, }; @@ -108,7 +111,6 @@ typedef GPB_ENUM(GCFSWrite_Operation_OneOfCase) { GCFSWrite_Operation_OneOfCase_GPBUnsetOneOfCase = 0, GCFSWrite_Operation_OneOfCase_Update = 1, GCFSWrite_Operation_OneOfCase_Delete_p = 2, - GCFSWrite_Operation_OneOfCase_Verify = 5, GCFSWrite_Operation_OneOfCase_Transform = 6, }; @@ -129,13 +131,6 @@ typedef GPB_ENUM(GCFSWrite_Operation_OneOfCase) { **/ @property(nonatomic, readwrite, copy, null_resettable) NSString *delete_p; -/** - * The name of a document on which to verify the `current_document` - * precondition. - * This only requires read access to the document. - **/ -@property(nonatomic, readwrite, copy, null_resettable) NSString *verify; - /** * Applies a tranformation to a document. * At most one `transform` per document is allowed in a given request. @@ -148,9 +143,10 @@ typedef GPB_ENUM(GCFSWrite_Operation_OneOfCase) { * The fields to update in this write. * * This field can be set only when the operation is `update`. - * None of the field paths in the mask may contain a reserved name. - * If the document exists on the server and has fields not referenced in the - * mask, they are left unchanged. + * If the mask is not set for an `update` and the document exists, any + * existing data will be overwritten. + * If the mask is set and the document on the server has fields not covered by + * the mask, they are left unchanged. * Fields referenced in the mask, but not present in the input document, are * deleted from the document on the server. * The field paths in this mask must not contain a reserved field name. @@ -193,6 +189,7 @@ typedef GPB_ENUM(GCFSDocumentTransform_FieldNumber) { /** * The list of transformations to apply to the fields of the document, in * order. + * This must not be empty. **/ @property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *fieldTransformsArray; /** The number of items in @c fieldTransformsArray without causing the array to be created. */ @@ -205,11 +202,15 @@ typedef GPB_ENUM(GCFSDocumentTransform_FieldNumber) { typedef GPB_ENUM(GCFSDocumentTransform_FieldTransform_FieldNumber) { GCFSDocumentTransform_FieldTransform_FieldNumber_FieldPath = 1, GCFSDocumentTransform_FieldTransform_FieldNumber_SetToServerValue = 2, + GCFSDocumentTransform_FieldTransform_FieldNumber_AppendMissingElements = 6, + GCFSDocumentTransform_FieldTransform_FieldNumber_RemoveAllFromArray_p = 7, }; typedef GPB_ENUM(GCFSDocumentTransform_FieldTransform_TransformType_OneOfCase) { GCFSDocumentTransform_FieldTransform_TransformType_OneOfCase_GPBUnsetOneOfCase = 0, GCFSDocumentTransform_FieldTransform_TransformType_OneOfCase_SetToServerValue = 2, + GCFSDocumentTransform_FieldTransform_TransformType_OneOfCase_AppendMissingElements = 6, + GCFSDocumentTransform_FieldTransform_TransformType_OneOfCase_RemoveAllFromArray_p = 7, }; /** @@ -229,6 +230,36 @@ typedef GPB_ENUM(GCFSDocumentTransform_FieldTransform_TransformType_OneOfCase) { /** Sets the field to the given server value. */ @property(nonatomic, readwrite) GCFSDocumentTransform_FieldTransform_ServerValue setToServerValue; +/** + * Append the given elements in order if they are not already present in + * the current field value. + * If the field is not an array, or if the field does not yet exist, it is + * first set to the empty array. + * + * Equivalent numbers of different types (e.g. 3L and 3.0) are + * considered equal when checking if a value is missing. + * NaN is equal to NaN, and Null is equal to Null. + * If the input contains multiple equivalent values, only the first will + * be considered. + * + * The corresponding transform_result will be the null value. + **/ +@property(nonatomic, readwrite, strong, null_resettable) GCFSArrayValue *appendMissingElements; + +/** + * Remove all of the given elements from the array in the field. + * If the field is not an array, or if the field does not yet exist, it is + * set to the empty array. + * + * Equivalent numbers of the different types (e.g. 3L and 3.0) are + * considered equal when deciding whether an element should be removed. + * NaN is equal to NaN, and Null is equal to Null. + * This will remove all equivalent values if there are duplicates. + * + * The corresponding transform_result will be the null value. + **/ +@property(nonatomic, readwrite, strong, null_resettable) GCFSArrayValue *removeAllFromArray_p; + @end /** diff --git a/Firestore/Protos/objc/google/firestore/v1beta1/Write.pbobjc.m b/Firestore/Protos/objc/google/firestore/v1beta1/Write.pbobjc.m index e6fd0f4..591e634 100644 --- a/Firestore/Protos/objc/google/firestore/v1beta1/Write.pbobjc.m +++ b/Firestore/Protos/objc/google/firestore/v1beta1/Write.pbobjc.m @@ -74,7 +74,6 @@ static GPBFileDescriptor *GCFSWriteRoot_FileDescriptor(void) { @dynamic operationOneOfCase; @dynamic update; @dynamic delete_p; -@dynamic verify; @dynamic transform; @dynamic hasUpdateMask, updateMask; @dynamic hasCurrentDocument, currentDocument; @@ -85,7 +84,6 @@ typedef struct GCFSWrite__storage_ { NSString *delete_p; GCFSDocumentMask *updateMask; GCFSPrecondition *currentDocument; - NSString *verify; GCFSDocumentTransform *transform; } GCFSWrite__storage_; @@ -131,15 +129,6 @@ typedef struct GCFSWrite__storage_ { .flags = GPBFieldOptional, .dataType = GPBDataTypeMessage, }, - { - .name = "verify", - .dataTypeSpecific.className = NULL, - .number = GCFSWrite_FieldNumber_Verify, - .hasIndex = -1, - .offset = (uint32_t)offsetof(GCFSWrite__storage_, verify), - .flags = GPBFieldOptional, - .dataType = GPBDataTypeString, - }, { .name = "transform", .dataTypeSpecific.className = GPBStringifySymbol(GCFSDocumentTransform), @@ -238,11 +227,15 @@ typedef struct GCFSDocumentTransform__storage_ { @dynamic transformTypeOneOfCase; @dynamic fieldPath; @dynamic setToServerValue; +@dynamic appendMissingElements; +@dynamic removeAllFromArray_p; typedef struct GCFSDocumentTransform_FieldTransform__storage_ { uint32_t _has_storage_[2]; GCFSDocumentTransform_FieldTransform_ServerValue setToServerValue; NSString *fieldPath; + GCFSArrayValue *appendMissingElements; + GCFSArrayValue *removeAllFromArray_p; } GCFSDocumentTransform_FieldTransform__storage_; // This method is threadsafe because it is initially called @@ -269,6 +262,24 @@ typedef struct GCFSDocumentTransform_FieldTransform__storage_ { .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor), .dataType = GPBDataTypeEnum, }, + { + .name = "appendMissingElements", + .dataTypeSpecific.className = GPBStringifySymbol(GCFSArrayValue), + .number = GCFSDocumentTransform_FieldTransform_FieldNumber_AppendMissingElements, + .hasIndex = -1, + .offset = (uint32_t)offsetof(GCFSDocumentTransform_FieldTransform__storage_, appendMissingElements), + .flags = GPBFieldOptional, + .dataType = GPBDataTypeMessage, + }, + { + .name = "removeAllFromArray_p", + .dataTypeSpecific.className = GPBStringifySymbol(GCFSArrayValue), + .number = GCFSDocumentTransform_FieldTransform_FieldNumber_RemoveAllFromArray_p, + .hasIndex = -1, + .offset = (uint32_t)offsetof(GCFSDocumentTransform_FieldTransform__storage_, removeAllFromArray_p), + .flags = GPBFieldOptional, + .dataType = GPBDataTypeMessage, + }, }; GPBDescriptor *localDescriptor = [GPBDescriptor allocDescriptorForClass:[GCFSDocumentTransform_FieldTransform class] diff --git a/Firestore/Protos/protos/google/api/http.proto b/Firestore/Protos/protos/google/api/http.proto index 5f8538a..78d515d 100644 --- a/Firestore/Protos/protos/google/api/http.proto +++ b/Firestore/Protos/protos/google/api/http.proto @@ -1,4 +1,4 @@ -// Copyright 2016 Google Inc. +// Copyright 2018 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -24,7 +24,7 @@ option java_package = "com.google.api"; option objc_class_prefix = "GAPI"; -// Defines the HTTP configuration for a service. It contains a list of +// Defines the HTTP configuration for an API service. It contains a list of // [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method // to one or more HTTP REST API methods. message Http { @@ -32,14 +32,22 @@ message Http { // // **NOTE:** All service configuration rules follow "last one wins" order. repeated HttpRule rules = 1; + + // When set to true, URL path parmeters will be fully URI-decoded except in + // cases of single segment matches in reserved expansion, where "%2F" will be + // left encoded. + // + // The default behavior is to not decode RFC 6570 reserved characters in multi + // segment matches. + bool fully_decode_reserved_expansion = 2; } // `HttpRule` defines the mapping of an RPC method to one or more HTTP -// REST APIs. The mapping determines what portions of the request -// message are populated from the path, query parameters, or body of -// the HTTP request. The mapping is typically specified as an -// `google.api.http` annotation, see "google/api/annotations.proto" -// for details. +// REST API methods. The mapping specifies how different portions of the RPC +// request message are mapped to URL path, URL query parameters, and +// HTTP request body. The mapping is typically specified as an +// `google.api.http` annotation on the RPC method, +// see "google/api/annotations.proto" for details. // // The mapping consists of a field specifying the path template and // method kind. The path template can refer to fields in the request @@ -87,6 +95,11 @@ message Http { // parameters. Assume the following definition of the request message: // // +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http).get = "/v1/messages/{message_id}"; +// } +// } // message GetMessageRequest { // message SubMessage { // string subfield = 1; @@ -199,7 +212,7 @@ message Http { // to the request message are as follows: // // 1. The `body` field specifies either `*` or a field path, or is -// omitted. If omitted, it assumes there is no HTTP body. +// omitted. If omitted, it indicates there is no HTTP request body. // 2. Leaf fields (recursive expansion of nested messages in the // request) can be classified into three types: // (a) Matched in the URL template. @@ -218,28 +231,34 @@ message Http { // FieldPath = IDENT { "." IDENT } ; // Verb = ":" LITERAL ; // -// The syntax `*` matches a single path segment. It follows the semantics of -// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String -// Expansion. +// The syntax `*` matches a single path segment. The syntax `**` matches zero +// or more path segments, which must be the last part of the path except the +// `Verb`. The syntax `LITERAL` matches literal text in the path. // -// The syntax `**` matches zero or more path segments. It follows the semantics -// of [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.3 Reserved -// Expansion. NOTE: it must be the last segment in the path except the Verb. -// -// The syntax `LITERAL` matches literal text in the URL path. -// -// The syntax `Variable` matches the entire path as specified by its template; -// this nested template must not contain further variables. If a variable +// The syntax `Variable` matches part of the URL path as specified by its +// template. A variable template must not contain other variables. If a variable // matches a single path segment, its template may be omitted, e.g. `{var}` // is equivalent to `{var=*}`. // +// If a variable contains exactly one path segment, such as `"{var}"` or +// `"{var=*}"`, when such a variable is expanded into a URL path, all characters +// except `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up in the +// Discovery Document as `{var}`. +// +// If a variable contains one or more path segments, such as `"{var=foo/*}"` +// or `"{var=**}"`, when such a variable is expanded into a URL path, all +// characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such variables +// show up in the Discovery Document as `{+var}`. +// +// NOTE: While the single segment variable matches the semantics of +// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 +// Simple String Expansion, the multi segment variable **does not** match +// RFC 6570 Reserved Expansion. The reason is that the Reserved Expansion +// does not expand special characters like `?` and `#`, which would lead +// to invalid URLs. +// // NOTE: the field paths in variables and in the `body` must not refer to // repeated fields or map fields. -// -// Use CustomHttpPattern to specify any HTTP method that is not included in the -// `pattern` field, such as HEAD, or "*" to leave the HTTP method unspecified for -// a given URL path rule. The wild-card rule is useful for services that provide -// content to Web (HTML) clients. message HttpRule { // Selects methods to which this rule applies. // @@ -265,7 +284,10 @@ message HttpRule { // Used for updating a resource. string patch = 6; - // Custom pattern is used for defining custom verbs. + // The custom pattern is used for specifying an HTTP method that is not + // included in the `pattern` field, such as HEAD, or "*" to leave the + // HTTP method unspecified for this rule. The wild-card rule is useful + // for services that provide content to Web (HTML) clients. CustomHttpPattern custom = 8; } diff --git a/Firestore/Protos/protos/google/firestore/v1beta1/common.proto b/Firestore/Protos/protos/google/firestore/v1beta1/common.proto index e624323..5ceb7b9 100644 --- a/Firestore/Protos/protos/google/firestore/v1beta1/common.proto +++ b/Firestore/Protos/protos/google/firestore/v1beta1/common.proto @@ -1,4 +1,4 @@ -// Copyright 2017 Google Inc. +// Copyright 2018 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -25,6 +25,7 @@ option java_multiple_files = true; option java_outer_classname = "CommonProto"; option java_package = "com.google.firestore.v1beta1"; option objc_class_prefix = "GCFS"; +option php_namespace = "Google\\Cloud\\Firestore\\V1beta1"; // A set of field paths on a document. diff --git a/Firestore/Protos/protos/google/firestore/v1beta1/document.proto b/Firestore/Protos/protos/google/firestore/v1beta1/document.proto index cf6001d..cd84c7a 100644 --- a/Firestore/Protos/protos/google/firestore/v1beta1/document.proto +++ b/Firestore/Protos/protos/google/firestore/v1beta1/document.proto @@ -1,4 +1,4 @@ -// Copyright 2017 Google Inc. +// Copyright 2018 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -27,6 +27,7 @@ option java_multiple_files = true; option java_outer_classname = "DocumentProto"; option java_package = "com.google.firestore.v1beta1"; option objc_class_prefix = "GCFS"; +option php_namespace = "Google\\Cloud\\Firestore\\V1beta1"; // A Firestore document. @@ -42,7 +43,7 @@ message Document { // The map keys represent field names. // // A simple field name contains only characters `a` to `z`, `A` to `Z`, - // `0` to `9`, or `_`, and must not start with `0` to `9` or `_`. For example, + // `0` to `9`, or `_`, and must not start with `0` to `9`. For example, // `foo_bar_17`. // // Field names matching the regular expression `__.*__` are reserved. Reserved @@ -72,7 +73,7 @@ message Document { // Output only. The time at which the document was last changed. // - // This value is initally set to the `create_time` then increases + // This value is initially set to the `create_time` then increases // monotonically with each change to the document. It can also be // compared to values from other documents and the `read_time` of a query. google.protobuf.Timestamp update_time = 4; diff --git a/Firestore/Protos/protos/google/firestore/v1beta1/firestore.proto b/Firestore/Protos/protos/google/firestore/v1beta1/firestore.proto index 3939caa..c7e8561 100644 --- a/Firestore/Protos/protos/google/firestore/v1beta1/firestore.proto +++ b/Firestore/Protos/protos/google/firestore/v1beta1/firestore.proto @@ -1,4 +1,4 @@ -// Copyright 2017 Google Inc. +// Copyright 2018 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -31,6 +31,7 @@ option java_multiple_files = true; option java_outer_classname = "FirestoreProto"; option java_package = "com.google.firestore.v1beta1"; option objc_class_prefix = "GCFS"; +option php_namespace = "Google\\Cloud\\Firestore\\V1beta1"; // Specification of the Firestore API. @@ -55,27 +56,39 @@ option objc_class_prefix = "GCFS"; service Firestore { // Gets a single document. rpc GetDocument(GetDocumentRequest) returns (Document) { - option (google.api.http) = { get: "/v1beta1/{name=projects/*/databases/*/documents/*/**}" }; + option (google.api.http) = { + get: "/v1beta1/{name=projects/*/databases/*/documents/*/**}" + }; } // Lists documents. rpc ListDocuments(ListDocumentsRequest) returns (ListDocumentsResponse) { - option (google.api.http) = { get: "/v1beta1/{parent=projects/*/databases/*/documents/*/**}/{collection_id}" }; + option (google.api.http) = { + get: "/v1beta1/{parent=projects/*/databases/*/documents/*/**}/{collection_id}" + }; } // Creates a new document. rpc CreateDocument(CreateDocumentRequest) returns (Document) { - option (google.api.http) = { post: "/v1beta1/{parent=projects/*/databases/*/documents/**}/{collection_id}" body: "document" }; + option (google.api.http) = { + post: "/v1beta1/{parent=projects/*/databases/*/documents/**}/{collection_id}" + body: "document" + }; } // Updates or inserts a document. rpc UpdateDocument(UpdateDocumentRequest) returns (Document) { - option (google.api.http) = { patch: "/v1beta1/{document.name=projects/*/databases/*/documents/*/**}" body: "document" }; + option (google.api.http) = { + patch: "/v1beta1/{document.name=projects/*/databases/*/documents/*/**}" + body: "document" + }; } // Deletes a document. rpc DeleteDocument(DeleteDocumentRequest) returns (google.protobuf.Empty) { - option (google.api.http) = { delete: "/v1beta1/{name=projects/*/databases/*/documents/*/**}" }; + option (google.api.http) = { + delete: "/v1beta1/{name=projects/*/databases/*/documents/*/**}" + }; } // Gets multiple documents. @@ -83,42 +96,74 @@ service Firestore { // Documents returned by this method are not guaranteed to be returned in the // same order that they were requested. rpc BatchGetDocuments(BatchGetDocumentsRequest) returns (stream BatchGetDocumentsResponse) { - option (google.api.http) = { post: "/v1beta1/{database=projects/*/databases/*}/documents:batchGet" body: "*" }; + option (google.api.http) = { + post: "/v1beta1/{database=projects/*/databases/*}/documents:batchGet" + body: "*" + }; } // Starts a new transaction. rpc BeginTransaction(BeginTransactionRequest) returns (BeginTransactionResponse) { - option (google.api.http) = { post: "/v1beta1/{database=projects/*/databases/*}/documents:beginTransaction" body: "*" }; + option (google.api.http) = { + post: "/v1beta1/{database=projects/*/databases/*}/documents:beginTransaction" + body: "*" + }; } // Commits a transaction, while optionally updating documents. rpc Commit(CommitRequest) returns (CommitResponse) { - option (google.api.http) = { post: "/v1beta1/{database=projects/*/databases/*}/documents:commit" body: "*" }; + option (google.api.http) = { + post: "/v1beta1/{database=projects/*/databases/*}/documents:commit" + body: "*" + }; } // Rolls back a transaction. rpc Rollback(RollbackRequest) returns (google.protobuf.Empty) { - option (google.api.http) = { post: "/v1beta1/{database=projects/*/databases/*}/documents:rollback" body: "*" }; + option (google.api.http) = { + post: "/v1beta1/{database=projects/*/databases/*}/documents:rollback" + body: "*" + }; } // Runs a query. rpc RunQuery(RunQueryRequest) returns (stream RunQueryResponse) { - option (google.api.http) = { post: "/v1beta1/{parent=projects/*/databases/*/documents}:runQuery" body: "*" }; + option (google.api.http) = { + post: "/v1beta1/{parent=projects/*/databases/*/documents}:runQuery" + body: "*" + additional_bindings { + post: "/v1beta1/{parent=projects/*/databases/*/documents/*/**}:runQuery" + body: "*" + } + }; } // Streams batches of document updates and deletes, in order. rpc Write(stream WriteRequest) returns (stream WriteResponse) { - option (google.api.http) = { post: "/v1beta1/{database=projects/*/databases/*}/documents:write" body: "*" }; + option (google.api.http) = { + post: "/v1beta1/{database=projects/*/databases/*}/documents:write" + body: "*" + }; } // Listens to changes. rpc Listen(stream ListenRequest) returns (stream ListenResponse) { - option (google.api.http) = { post: "/v1beta1/{database=projects/*/databases/*}/documents:listen" body: "*" }; + option (google.api.http) = { + post: "/v1beta1/{database=projects/*/databases/*}/documents:listen" + body: "*" + }; } // Lists all the collection IDs underneath a document. rpc ListCollectionIds(ListCollectionIdsRequest) returns (ListCollectionIdsResponse) { - option (google.api.http) = { post: "/v1beta1/{parent=projects/*/databases/*/documents}:listCollectionIds" body: "*" }; + option (google.api.http) = { + post: "/v1beta1/{parent=projects/*/databases/*/documents}:listCollectionIds" + body: "*" + additional_bindings { + post: "/v1beta1/{parent=projects/*/databases/*/documents/*/**}:listCollectionIds" + body: "*" + } + }; } } @@ -356,8 +401,7 @@ message CommitRequest { // Always executed atomically and in order. repeated Write writes = 2; - // If non-empty, applies all writes in this transaction, and commits it. - // Otherwise, applies the writes as if they were in their own transaction. + // If set, applies all writes in this transaction, and commits it. bytes transaction = 3; } diff --git a/Firestore/Protos/protos/google/firestore/v1beta1/query.proto b/Firestore/Protos/protos/google/firestore/v1beta1/query.proto index d19b022..5f5b0cf 100644 --- a/Firestore/Protos/protos/google/firestore/v1beta1/query.proto +++ b/Firestore/Protos/protos/google/firestore/v1beta1/query.proto @@ -1,4 +1,4 @@ -// Copyright 2017 Google Inc. +// Copyright 2018 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -26,6 +26,7 @@ option java_multiple_files = true; option java_outer_classname = "QueryProto"; option java_package = "com.google.firestore.v1beta1"; option objc_class_prefix = "GCFS"; +option php_namespace = "Google\\Cloud\\Firestore\\V1beta1"; // A Firestore query. @@ -98,6 +99,9 @@ message StructuredQuery { // Equal. EQUAL = 5; + + // Contains. Requires that the field is an array. + ARRAY_CONTAINS = 7; } // The field to filter by. diff --git a/Firestore/Protos/protos/google/firestore/v1beta1/write.proto b/Firestore/Protos/protos/google/firestore/v1beta1/write.proto index b6e9d5f..3f4732b 100644 --- a/Firestore/Protos/protos/google/firestore/v1beta1/write.proto +++ b/Firestore/Protos/protos/google/firestore/v1beta1/write.proto @@ -1,4 +1,4 @@ -// Copyright 2017 Google Inc. +// Copyright 2018 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -27,6 +27,7 @@ option java_multiple_files = true; option java_outer_classname = "WriteProto"; option java_package = "com.google.firestore.v1beta1"; option objc_class_prefix = "GCFS"; +option php_namespace = "Google\\Cloud\\Firestore\\V1beta1"; // A write on a document. @@ -40,11 +41,6 @@ message Write { // `projects/{project_id}/databases/{database_id}/documents/{document_path}`. string delete = 2; - // The name of a document on which to verify the `current_document` - // precondition. - // This only requires read access to the document. - string verify = 5; - // Applies a tranformation to a document. // At most one `transform` per document is allowed in a given request. // An `update` cannot follow a `transform` on the same document in a given @@ -55,9 +51,10 @@ message Write { // The fields to update in this write. // // This field can be set only when the operation is `update`. - // None of the field paths in the mask may contain a reserved name. - // If the document exists on the server and has fields not referenced in the - // mask, they are left unchanged. + // If the mask is not set for an `update` and the document exists, any + // existing data will be overwritten. + // If the mask is set and the document on the server has fields not covered by + // the mask, they are left unchanged. // Fields referenced in the mask, but not present in the input document, are // deleted from the document on the server. // The field paths in this mask must not contain a reserved field name. @@ -78,7 +75,8 @@ message DocumentTransform { // Unspecified. This value must not be used. SERVER_VALUE_UNSPECIFIED = 0; - // The time at which the server processed the request. + // The time at which the server processed the request, with millisecond + // precision. REQUEST_TIME = 1; } @@ -90,6 +88,32 @@ message DocumentTransform { oneof transform_type { // Sets the field to the given server value. ServerValue set_to_server_value = 2; + + // Append the given elements in order if they are not already present in + // the current field value. + // If the field is not an array, or if the field does not yet exist, it is + // first set to the empty array. + // + // Equivalent numbers of different types (e.g. 3L and 3.0) are + // considered equal when checking if a value is missing. + // NaN is equal to NaN, and Null is equal to Null. + // If the input contains multiple equivalent values, only the first will + // be considered. + // + // The corresponding transform_result will be the null value. + ArrayValue append_missing_elements = 6; + + // Remove all of the given elements from the array in the field. + // If the field is not an array, or if the field does not yet exist, it is + // set to the empty array. + // + // Equivalent numbers of the different types (e.g. 3L and 3.0) are + // considered equal when deciding whether an element should be removed. + // NaN is equal to NaN, and Null is equal to Null. + // This will remove all equivalent values if there are duplicates. + // + // The corresponding transform_result will be the null value. + ArrayValue remove_all_from_array = 7; } } @@ -98,6 +122,7 @@ message DocumentTransform { // The list of transformations to apply to the fields of the document, in // order. + // This must not be empty. repeated FieldTransform field_transforms = 2; } diff --git a/Firestore/Protos/protos/google/protobuf/any.proto b/Firestore/Protos/protos/google/protobuf/any.proto index c748667..4932942 100644 --- a/Firestore/Protos/protos/google/protobuf/any.proto +++ b/Firestore/Protos/protos/google/protobuf/any.proto @@ -120,17 +120,18 @@ option objc_class_prefix = "GPB"; // } // message Any { - // A URL/resource name whose content describes the type of the - // serialized protocol buffer message. + // A URL/resource name that uniquely identifies the type of the serialized + // protocol buffer message. The last segment of the URL's path must represent + // the fully qualified name of the type (as in + // `path/google.protobuf.Duration`). The name should be in a canonical form + // (e.g., leading "." is not accepted). // - // For URLs which use the scheme `http`, `https`, or no scheme, the - // following restrictions and interpretations apply: + // In practice, teams usually precompile into the binary all types that they + // expect it to use in the context of Any. However, for URLs which use the + // scheme `http`, `https`, or no scheme, one can optionally set up a type + // server that maps type URLs to message definitions as follows: // // * If no scheme is provided, `https` is assumed. - // * The last segment of the URL's path must represent the fully - // qualified name of the type (as in `path/google.protobuf.Duration`). - // The name should be in a canonical form (e.g., leading "." is - // not accepted). // * An HTTP GET on the URL must yield a [google.protobuf.Type][] // value in binary format, or produce an error. // * Applications are allowed to cache lookup results based on the @@ -139,6 +140,10 @@ message Any { // on changes to types. (Use versioned type names to manage // breaking changes.) // + // Note: this functionality is not currently available in the official + // protobuf release, and it is not used for type URLs beginning with + // type.googleapis.com. + // // Schemes other than `http`, `https` (or the empty scheme) might be // used with implementation specific semantics. // diff --git a/Firestore/Protos/protos/google/protobuf/timestamp.proto b/Firestore/Protos/protos/google/protobuf/timestamp.proto index b7cbd17..eafb3fa 100644 --- a/Firestore/Protos/protos/google/protobuf/timestamp.proto +++ b/Firestore/Protos/protos/google/protobuf/timestamp.proto @@ -103,7 +103,9 @@ option objc_class_prefix = "GPB"; // {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional // seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), // are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone -// is required, though only UTC (as indicated by "Z") is presently supported. +// is required. A proto3 JSON serializer should always use UTC (as indicated by +// "Z") when printing the Timestamp type and a proto3 JSON parser should be +// able to accept both UTC and other timezones (as indicated by an offset). // // For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past // 01:30 UTC on January 15, 2017. @@ -114,8 +116,8 @@ option objc_class_prefix = "GPB"; // to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) // with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one // can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( -// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) -// to obtain a formatter capable of generating timestamps in this format. +// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime-- +// ) to obtain a formatter capable of generating timestamps in this format. // // message Timestamp { -- cgit v1.2.3