public function getFullUri()
    {
        $queryString = '';

        $params = array();
        if ($this->hasQuery()) {
            $params[] = $this->getQueryParam();
        }

        if ($this->hasOrderBy()) {
            $params[] = $this->getOrderByParam();
        }

        if ($this->hasSummarizeBy()) {
            $params[] = 'summarize-by=' . $this->getSummarizeBy();
        }

        if ($this->hasOffset()) {
            $params[] = 'offset=' . $this->getOffset();
        }

        if ($this->hasLimit()) {
            $params[] = 'limit=' . $this->getLimit();
        }

        if ($this->hasIncludeTotal()) {
            $params[] = 'include-total=' . $this->getIncludeTotalAsString();
        }

        if (!empty($params)) {
            $queryString = '?' . implode('&', $params);
        }

        return '/' . ltrim($this->getUri(), '/') . $queryString;
    }