docs: def request_ride(
          self,
          product_id=None,
          start_latitude=None,
          start_longitude=None,
          start_place_id=None,
          start_address=None,
          start_nickname=None,
          end_latitude=None,
          end_longitude=None,
          end_place_id=None,
          end_address=None,
          end_nickname=None,
          seat_count=None,
          fare_id=None,
          surge_confirmation_id=None,
          payment_method_id=None,
      ):
          """Request a ride on behalf of an Uber user.
  
          When specifying pickup and dropoff locations, you can either use
          latitude/longitude pairs or place ID (but not both).
  
          Parameters
              product_id (str)
                  The unique ID of the product being requested. If none is
                  provided, it will default to the cheapest product for the
                  given location.
              start_latitude (float)
                  Optional latitude component of a start location.
              start_longitude (float)
                  Optional longitude component of a start location.
              start_place_id (str)
                  The beginning or pickup place ID. Only "home" or "work"
                  is acceptable.
              start_address (str)
                  Optional pickup address.
              start_nickname (str)
                  Optional pickup nickname label.
              end_latitude (float)
                  Optional latitude component of a end location.
              end_longitude (float)
                  Optional longitude component of a end location.
              end_place_id (str)
                  The final or destination place ID. Only "home" or "work"
                  is acceptable.
              end_address (str)
                  Optional destination address.
              end_nickname (str)
                  Optional destination nickname label.
              seat_count (int)
                  Optional seat count for shared products.
              fare_id (str)
                  Optional fare_id for shared products.
              surge_confirmation_id (str)
                  Optional unique identifier of the surge session for a user.
              payment_method_id (str)
                  Optional unique identifier of the payment method selected
                  by a user. If set, the trip will be requested using this
                  payment method. If not, the trip will be requested with the
                  user's last used payment method.
  
          Returns
              (Response)
                  A Response object containing the ride request ID and other
                  details about the requested ride.
  
          Raises
              SurgeError (ClientError)
                  Thrown when the requested product is currently surging.
                  User must confirm surge price through surge_confirmation_href.
          """
          args = {
              'product_id': product_id,
              'start_latitude': start_latitude,
              'start_longitude': start_longitude,
              'start_place_id': start_place_id,
              'start_address': start_address,
              'start_nickname': start_nickname,
              'end_latitude': end_latitude,
              'end_longitude': end_longitude,
              'end_place_id': end_place_id,
              'end_address': end_address,
              'end_nickname': end_nickname,
              'surge_confirmation_id': surge_confirmation_id,
              'payment_method_id': payment_method_id,
              'seat_count': seat_count,
              'fare_id': fare_id
          }
  
          return self._api_call('POST', 'v1.2/requests', args=args)