class AllTypes(messages.Message): """Contains all field types.""" class SimpleEnum(messages.Enum): """Simple enumeration type.""" VAL1 = 1 VAL2 = 2 bool_value = messages.BooleanField(1, variant=messages.Variant.BOOL) bytes_value = messages.BytesField(2, variant=messages.Variant.BYTES) double_value = messages.FloatField(3, variant=messages.Variant.DOUBLE) enum_value = messages.EnumField(SimpleEnum, 4) float_value = messages.FloatField(5, variant=messages.Variant.FLOAT) int32_value = messages.IntegerField(6, variant=messages.Variant.INT32) int64_value = messages.IntegerField(7, variant=messages.Variant.INT64) string_value = messages.StringField( 8, variant=messages.Variant.STRING) uint32_value = messages.IntegerField( 9, variant=messages.Variant.UINT32) uint64_value = messages.IntegerField( 10, variant=messages.Variant.UINT64) int_value = messages.IntegerField(11) # Default variant is INT64. datetime_value = message_types.DateTimeField(12) repeated_datetime_value = message_types.DateTimeField( 13, repeated=True)
class OverviewResponse(messages.Message): borrower_name = messages.StringField(1) outstanding_principal = messages.FloatField(2) outstanding_interest = messages.FloatField(3) paid_interest = messages.FloatField(4) paid_principal = messages.FloatField(5) date = messages.IntegerField(6) last_transaction_date = messages.IntegerField(7) borrower_id = messages.StringField(8)
class MoveRequest(messages.Message): board_id = messages.StringField(1) item_id = messages.StringField(2) x = messages.IntegerField(3) y = messages.IntegerField(4) z = messages.IntegerField(5) client_id = messages.StringField(6) lock_token = messages.StringField(7) is_release = messages.BooleanField(8, default=False)
class MyMessage(messages.Message): """Test message containing various types.""" var_int32 = messages.IntegerField(1, variant=messages.Variant.INT32) var_int64 = messages.IntegerField(2, variant=messages.Variant.INT64) var_repeated_int64 = messages.IntegerField(3, variant=messages.Variant.INT64, repeated=True) var_sint64 = messages.IntegerField(4, variant=messages.Variant.SINT64) var_uint64 = messages.IntegerField(5, variant=messages.Variant.UINT64) var_bytes = messages.BytesField(6)
class TransactionUpdateRequest(messages.Message): type = messages.StringField(1) payment_type = messages.StringField(2) amount = messages.FloatField(3) transaction_date = messages.IntegerField(4) borrower_id = messages.StringField(5) interest_rate = messages.FloatField(6)
class TransactionResponse(messages.Message): type = messages.StringField(1) payment_type = messages.StringField(2) amount = messages.FloatField(3) transaction_date = messages.IntegerField(4) borrower_id = messages.StringField(5) borrower_name = messages.StringField(6) interest_rate = messages.FloatField(7) transaction_id = messages.StringField(8)
class AllBasicFields(messages.Message): """Contains all field types.""" bool_value = messages.BooleanField(1, variant=messages.Variant.BOOL) bytes_value = messages.BytesField(2, variant=messages.Variant.BYTES) double_value = messages.FloatField(3, variant=messages.Variant.DOUBLE) float_value = messages.FloatField(5, variant=messages.Variant.FLOAT) int32_value = messages.IntegerField(6, variant=messages.Variant.INT32) int64_value = messages.IntegerField(7, variant=messages.Variant.INT64) string_value = messages.StringField(8, variant=messages.Variant.STRING) uint32_value = messages.IntegerField(9, variant=messages.Variant.UINT32) uint64_value = messages.IntegerField(10, variant=messages.Variant.UINT64) sint32_value = messages.IntegerField(11, variant=messages.Variant.SINT32) sint64_value = messages.IntegerField(12, variant=messages.Variant.SINT64) datetime_value = message_types.DateTimeField(14)
class Foo(messages.Message): name = messages.StringField(1) value = messages.IntegerField(2, variant=messages.Variant.INT32)
class Bar(messages.Message): name = messages.StringField(1, default='Jimothy') value = messages.IntegerField(2, default=42, variant=messages.Variant.INT32) active = messages.BooleanField(3, default=True)
class ItemState(messages.Message): id = messages.StringField(1) x = messages.IntegerField(2) y = messages.IntegerField(3) z = messages.IntegerField(4) version = messages.IntegerField(5)
class ReviewResponse(messages.Message): reviews = messages.MessageField(Review, 1, repeated=True) total_review = messages.IntegerField(2)
class ReviewRequest(messages.Message): product_id = messages.IntegerField(1, required=True) name = messages.StringField(2, required=True) review = messages.StringField(3, required=True) stars = messages.IntegerField(4, required=True)
class GreetingApi(remote.Service): @endpoints.method( # This method does not take a request message. message_types.VoidMessage, # This method returns a GreetingCollection message. GreetingCollection, path='greetings', http_method='GET', name='greetings.list') def list_greetings(self, unused_request): return STORED_GREETINGS # ResourceContainers are used to encapsuate a request body and url # parameters. This one is used to represent the Greeting ID for the # greeting_get method. GET_RESOURCE = endpoints.ResourceContainer( # The request body should be empty. message_types.VoidMessage, # Accept one url parameter: and integer named 'id' id=messages.IntegerField(1, variant=messages.Variant.INT32)) @endpoints.method( # Use the ResourceContainer defined above to accept an empty body # but an ID in the query string. GET_RESOURCE, # This method returns a Greeting message. Greeting, # The path defines the source of the URL parameter 'id'. If not # specified here, it would need to be in the query string. path='greetings/{id}', http_method='GET', name='greetings.get') def get_greeting(self, request): try: # request.id is used to access the URL parameter. return STORED_GREETINGS.items[request.id] except (IndexError, TypeError): raise endpoints.NotFoundException('Greeting {} not found'.format( request.id)) # [END endpoints_greeting_api] # [START endpoints_greeting_api_multiply] # This ResourceContainer is similar to the one used for get_greeting, but # this one also contains a request body in the form of a Greeting message. MULTIPLY_RESOURCE = endpoints.ResourceContainer( Greeting, times=messages.IntegerField(2, variant=messages.Variant.INT32, required=True)) @endpoints.method( # This method accepts a request body containing a Greeting message # and a URL parameter specifying how many times to multiply the # message. MULTIPLY_RESOURCE, # This method returns a Greeting message. Greeting, path='greetings/multiply/{times}', http_method='POST', name='greetings.multiply') def multiply_greeting(self, request): return Greeting(message=request.message * request.times)
class CreateItemRequest(messages.Message): board_id = messages.StringField(1) item_id = messages.StringField(2) x = messages.IntegerField(3) y = messages.IntegerField(4) z = messages.IntegerField(5)
class MoveResponse(messages.Message): lock_token = messages.StringField(1) version = messages.IntegerField(2) error = messages.IntegerField(3)
class Nested(messages.Message): """Message class to be used in a message field.""" int_value = messages.IntegerField(1) string_value = messages.StringField(2)
# [END endpoints_echo_api_imports] # [START endpoints_echo_api_messages] class EchoRequest(messages.Message): message = messages.StringField(1) class EchoResponse(messages.Message): """A proto Message that contains a simple string field.""" message = messages.StringField(1) ECHO_RESOURCE = endpoints.ResourceContainer(EchoRequest, n=messages.IntegerField(2, default=1)) # [END endpoints_echo_api_messages] # [START endpoints_echo_api_class] @endpoints.api(name='echo', version='v1') class EchoApi(remote.Service): # [START endpoints_echo_api_method] @endpoints.method( # This method takes a ResourceContainer defined above. ECHO_RESOURCE, # This method returns an Echo message. EchoResponse, path='echo', http_method='POST',
class IdField(messages.Message): """Just contains an integer field.""" id_value = messages.IntegerField(1, variant=messages.Variant.INT32)
class ReviewMessage(messages.Message): message = messages.StringField(1) class ProductId(messages.Message): product_id = messages.IntegerField(1, required=True) class ReviewRequest(messages.Message): product_id = messages.IntegerField(1, required=True) name = messages.StringField(2, required=True) review = messages.StringField(3, required=True) stars = messages.IntegerField(4, required=True) class Review(messages.Message): name = messages.StringField(1) review = messages.StringField(2) stars = messages.IntegerField(3) date = message_types.DateTimeField(4) class ReviewResponse(messages.Message): reviews = messages.MessageField(Review, 1, repeated=True) total_review = messages.IntegerField(2) REVIEW_RESOURCE = endpoints.ResourceContainer(message_types.VoidMessage, id=messages.IntegerField( 2, required=True))
class ContainsRecursive(messages.Message): """Message which contains a recursive message.""" id = messages.IntegerField(1) recursives = messages.MessageField(Recursive, 2, repeated=True)
class Review(messages.Message): name = messages.StringField(1) review = messages.StringField(2) stars = messages.IntegerField(3) date = message_types.DateTimeField(4)
name = messages.StringField(1) value = messages.IntegerField(2, variant=messages.Variant.INT32) FooCollection = make_collection(Foo) FooResource = endpoints.ResourceContainer( Foo, id=messages.StringField(1, required=True), ) FooIdResource = endpoints.ResourceContainer( message_types.VoidMessage, id=messages.StringField(1, required=True), ) FooNResource = endpoints.ResourceContainer( message_types.VoidMessage, n=messages.IntegerField(1, required=True, variant=messages.Variant.INT32), ) @endpoints.api(name='foo', version='v1', audiences=['audiences'], title='The Foo API', description='Just Foo Things', documentation='https://example.com', canonical_name='CanonicalName') class FooEndpoint(remote.Service): @endpoints.method(FooResource, Foo, name='foo.create', path='foos/{id}',
class ProductId(messages.Message): product_id = messages.IntegerField(1, required=True)
class ConnectResponse(messages.Message): client_id = messages.StringField(1) error = messages.IntegerField(2)