public function getProjects(?string $filter = 'unarchived'): array
    {
        if (is_null($filter)) {
            $filter = 'unarchived';
        }

        try {
            $response = $this->client->getProjects($filter);
        } catch (ClientException $ce) {
            $response = $ce->getResponse();

            throw ExceptionFactory::create($response, $ce);
        }

        $projects = array_map(function (array $project) {
            return ProjectFactory::createFromAPIResponse($project);
        }, $response);

        return $projects;
    }