def update_endpoint(ApplicationId=None, EndpointId=None, EndpointRequest=None):
    """
    Use to update an endpoint.
    
    
    :example: response = client.update_endpoint(
        ApplicationId='string',
        EndpointId='string',
        EndpointRequest={
            'Address': 'string',
            'Attributes': {
                'string': [
                    'string',
                ]
            },
            'ChannelType': 'APNS'|'GCM',
            'Demographic': {
                'AppVersion': 'string',
                'Locale': 'string',
                'Make': 'string',
                'Model': 'string',
                'ModelVersion': 'string',
                'Platform': 'string',
                'PlatformVersion': 'string',
                'Timezone': 'string'
            },
            'EffectiveDate': 'string',
            'EndpointStatus': 'string',
            'Location': {
                'City': 'string',
                'Country': 'string',
                'Latitude': 123.0,
                'Longitude': 123.0,
                'PostalCode': 'string',
                'Region': 'string'
            },
            'Metrics': {
                'string': 123.0
            },
            'OptOut': 'string',
            'RequestId': 'string',
            'User': {
                'UserAttributes': {
                    'string': [
                        'string',
                    ]
                },
                'UserId': 'string'
            }
        }
    )
    
    
    :type ApplicationId: string
    :param ApplicationId: [REQUIRED]

    :type EndpointId: string
    :param EndpointId: [REQUIRED]

    :type EndpointRequest: dict
    :param EndpointRequest: [REQUIRED] Endpoint update request
            Address (string) -- The address or token of the endpoint as provided by your push provider (e.g. DeviceToken or RegistrationId).
            Attributes (dict) -- Custom attributes that your app reports to Amazon Pinpoint. You can use these attributes as selection criteria when you create a segment.
            (string) --
            (list) --
            (string) --
            
            ChannelType (string) -- The channel type. Valid values: APNS, GCM
            Demographic (dict) -- The endpoint demographic attributes.
            AppVersion (string) -- The version of the application associated with the endpoint.
            Locale (string) -- The endpoint locale in the following format: The ISO 639-1 alpha-2 code, followed by an underscore, followed by an ISO 3166-1 alpha-2 value.
            Make (string) -- The endpoint make, such as such as Apple or Samsung.
            Model (string) -- The endpoint model, such as iPhone.
            ModelVersion (string) -- The endpoint model version.
            Platform (string) -- The endpoint platform, such as ios or android.
            PlatformVersion (string) -- The endpoint platform version.
            Timezone (string) -- The timezone of the endpoint. Specified as a tz database value, such as Americas/Los_Angeles.
            EffectiveDate (string) -- The last time the endpoint was updated. Provided in ISO 8601 format.
            EndpointStatus (string) -- The endpoint status. Can be either ACTIVE or INACTIVE. Will be set to INACTIVE if a delivery fails. Will be set to ACTIVE if the address is updated.
            Location (dict) -- The endpoint location attributes.
            City (string) -- The city where the endpoint is located.
            Country (string) -- Country according to ISO 3166-1 Alpha-2 codes. For example, US.
            Latitude (float) -- The latitude of the endpoint location. Rounded to one decimal (Roughly corresponding to a mile).
            Longitude (float) -- The longitude of the endpoint location. Rounded to one decimal (Roughly corresponding to a mile).
            PostalCode (string) -- The postal code or zip code of the endpoint.
            Region (string) -- The region of the endpoint location. For example, corresponds to a state in US.
            Metrics (dict) -- Custom metrics that your app reports to Amazon Pinpoint.
            (string) --
            (float) --
            
            OptOut (string) -- Indicates whether a user has opted out of receiving messages with one of the following values: ALL   User receives all messages. NONE   User receives no messages.
            RequestId (string) -- The unique ID for the most recent request to update the endpoint.
            User (dict) -- Custom user-specific attributes that your app reports to Amazon Pinpoint.
            UserAttributes (dict) -- Custom attributes specific to the user.
            (string) --
            (list) --
            (string) --
            
            UserId (string) -- The unique ID of the user.
            

    :rtype: dict
    :return: {
        'MessageBody': {
            'Message': 'string',
            'RequestID': 'string'
        }
    }
    
    
    :returns: 
    (dict) -- 202 response
    MessageBody (dict) -- Simple message object.
    Message (string) -- The error message returned from the API.
    RequestID (string) -- The unique message body ID.
    
    
    
    
    
    """
    pass
