def cards_list(
        self,
        token: str = None,
        page: int = None,
        page_size: int = None,
        begin: str = None,
        end: str = None,
    ) -> typing.Iterable[Card]:
        """
        Get an iterator of the cards owned by this account.

        Args:
            token (str, optional): Used to get a specific card.
            page (str, optional): Used to specify the start page.
            page_size (str, optional): Used to specify the page size.
            begin (str, optional): The start date of the results as a date string (`YYYY-MM-DD`).
            end (str, optional): The end date of the results as a date string (`YYYY-MM-DD`).

        Returns:
            `privacy.util.pagination.PaginatedResponse` [ `privacy.schema.cards.Card` ]

        Raises:
            APIException (privacy.http_client.APIException): On status code 5xx and certain 429s.
        """
        return Card.paginate(
            self,
            Routes.CARDS_LIST,
            params=optional(card_token=token,
                            page=page,
                            page_size=page_size,
                            begin=begin,
                            end=end),
        )
    def cards_create(
        self,
        card_type: Type,
        memo: str = None,
        spend_limit: int = None,
        spend_limit_duration: SpendLimitDuration = None,
    ) -> Card:
        """
        PREMIUM ENDPOINT - Create a card.

        Args:
            card_type (privacy.schema.cards.Type): The card type.
            memo (str, optional): The card's name.
            spend_limit (int, optional): The spending limit of the card (in pennies).
            spend_limit_duration (privacy.schema.cards.SpendLimitDuration, optional): The spend limit duration.

        Returns:
            `privacy.schema.cards.Card`

        Raises:
            APIException (privacy.http_client.APIException): On status code 5xx and certain 429s.
        """
        response = self.http(
            Routes.CARDS_CREATE,
            json=optional(
                type=card_type,
                memo=memo,
                spend_limit=spend_limit,
                spend_limit_duration=spend_limit_duration,
            ),
        )
        return Card(client=self, **response.json())
    def transactions_list(
        self,
        approval_status: str = "all",
        token: str = None,
        card_token: str = None,
        page: int = None,
        page_size: int = None,
        begin: str = None,
        end: str = None,
    ) -> typing.Iterable[Transaction]:
        """
        Get an iterator of the transactions under this account.

        Args:
            approval_status (str, optional): One of [`approvals`, `declines`, `all`] used to
                get transactions with a specific status.
            token (str, optional): Used to get a specific transaction.
            card_token (str, optional): Used to get the transactions associated with a specific card.
            page (int, optional): Used to specify the start page.
            page_size (int, optional): Used to specify the page size.
            begin (str, optional): The starting date of the results as a date string (`YYYY-MM-DD`).
            end (str, optional): The end date of the results as a date string (`YYYY-MM-DD`).

        Returns:
            `privacy.util.pagination.PaginatedResponse`[ `privacy.schema.transactions.Transaction` ]

        Raises:
            APIException (privacy.http_client.APIException): On status code 5xx and certain 429s.
        """
        return Transaction.paginate(
            self,
            Routes.TRANSACTIONS_LIST,
            dict(approval_status=approval_status),
            params=optional(
                transaction_token=token,
                card_token=card_token,
                page=page,
                page_size=page_size,
                begin=begin,
                end=end,
            ),
        )
    def cards_modify(
        self,
        token: str,
        state: State = None,
        memo: str = None,
        spend_limit: int = None,
        spend_limit_duration: SpendLimitDuration = None,
    ) -> Card:
        """
        PREMIUM ENDPOINT - Modify an existing card.

        Args:
            token (str): The unique token of the card being modified.
            state (privacy.schema.cards.State, optional): The new card state.
            memo (str, optional): The name card name.
            spend_limit (int, optional): The new card spend limit (in pennies).
            spend_limit_duration (privacy.schema.cards.SpendLimitDuration, optional): The spend limit duration.

        Returns:
            `privacy.schema.cards.Card`

        Raises:
            APIException (privacy.http_client.APIException): On status code 5xx and certain 429s.

        Note:
            Setting state to `privacy.schema.cards.State.CLOSED` cannot be undone.
        """
        response = self.http(
            Routes.CARDS_MODIFY,
            json=optional(
                card_token=token,
                state=state,
                memo=memo,
                spend_limit=spend_limit,
                spend_limit_duration=spend_limit_duration,
            ),
        )
        return Card(client=self, **response.json())