public function listPlans(array $filters = [], bool $withAddons = true, string $addonType = null): array
    {
        $cacheKey = 'plans';
        $hit = $this->getFromCache($cacheKey);

        if (false === $hit) {
            $response = $this->sendRequest('GET', 'plans');

            $plans = $this->processResponse($response);
            $hit = $plans['plans'];

            $this->saveToCache($cacheKey, $hit);
        }

        $hit = $this->filterPlans($hit, $filters);

        if ($withAddons) {
            $hit = $this->getAddonsForPlan($hit, $addonType);
        }

        return $hit;
    }