public function details($placeId, $query = [])
    {
        if( ! $placeId) {
            throw new InvalidArgumentException('placeId must be a string');
        }

        try {
            $response = $this->httpClient->request('GET', $this->url, [
                'query' => array_merge([
                    'placeid' => $placeId,
                    'key' => $this->auth->key(),
                ], $query)
            ]);

        } catch (Exception $e) {
            throw new ResourceRequestException(null, sprintf('Failed to request place details for place id %s', $placeId), 0, $e);
        }

        if( $response->getStatusCode() > 299) {
            throw new ResourceRequestException($response, sprintf('Failed to request place details for place id %s', $placeId));
        }

        return PlaceDetailsResponse::fromResponse($response);
    }