def _retrieve_many(
        cls: Type[T],
        session: Session,
        ids: Optional[List[int]] = None
    ) -> List[T]:
        """Return a list of users"""

        parameters = None
        if ids is not None:
            targets = UrlTarget.from_many_integers(cls._URL_KEY, ids)
            parameters = UrlParameters.from_targets(targets)

        request = ApiRequest(
            path=cls._PATH,
            data=None,
            credentials=session,
            method=HTTPMethod.GET,
            url_parameters=parameters
        )

        users = cls.decode_many(session, request.response_data)

        return users
    def retrieve_many(cls: Type[T], session: Session,
                      ids: List[int]) -> List[T]:
        """Retrieve a set of Global Units"""

        if not isinstance(session, Session):
            raise TypeError('session must be of type `Session`')

        if not isinstance(ids, list):
            raise TypeError('ids must be of type `List[int]`')

        if False in [isinstance(i, int) for i in ids]:
            raise TypeError('ids must be of type `List[int]`')

        targets = UrlTarget.from_many_integers(GlobalUnit._URL_KEY, ids)
        parameters = UrlParameters.from_targets(targets)

        request = ApiRequest(path=GlobalUnit._PATH,
                             url_parameters=parameters,
                             credentials=session,
                             method=HTTPMethod.GET)

        units = GlobalUnit._decode_many(request.response_data)

        return units