Skip to content

resources

Monzo API 'webhooks' resource.

WebhooksResource dataclass

Bases: BaseResource

Monzo API 'webhooks' resource.

Note

Monzo API docs: https://docs.monzo.com/#webhooks

Source code in pymonzo/webhooks/resources.py
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
class WebhooksResource(BaseResource):
    """Monzo API 'webhooks' resource.

    Note:
        Monzo API docs: https://docs.monzo.com/#webhooks
    """

    def list(self, account_id: Optional[str] = None) -> List[MonzoWebhook]:
        """List all webhooks.

        Note:
            Monzo API docs: https://docs.monzo.com/#list-webhooks

        Arguments:
            account_id: The account to list registered webhooks for. Can be omitted
                if user has only one active account.

        Returns:
            List of Monzo webhooks.

        Raises:
            CannotDetermineDefaultAccount: If no account ID was passed and default
                account cannot be determined.
        """
        if not account_id:
            account_id = self.client.accounts.get_default_account().id

        endpoint = "/webhooks"
        params = {"account_id": account_id}

        response = self._get_response(method="get", endpoint=endpoint, params=params)

        webhooks = [MonzoWebhook(**webhook) for webhook in response.json()["webhooks"]]

        return webhooks

    def register(
        self,
        url: str,
        account_id: Optional[str] = None,
    ) -> MonzoWebhook:
        """Register a webhook.

        Note:
            Monzo API docs: https://docs.monzo.com/#registering-a-webhook

        Arguments:
            account_id: The account to receive notifications for. Can be omitted
                if user has only one active account.
            url: The URL we will send notifications to.

        Returns:
            Registered Monzo webhook.

        Raises:
            CannotDetermineDefaultAccount: If no account ID was passed and default
                account cannot be determined.
        """
        if not account_id:
            account_id = self.client.accounts.get_default_account().id

        endpoint = "/webhooks"
        data = {
            "account_id": account_id,
            "url": url,
        }
        response = self._get_response(method="post", endpoint=endpoint, data=data)

        webhook = MonzoWebhook(**response.json()["webhook"])

        return webhook

    def delete(self, webhook_id: str) -> dict:
        """Delete a webhook.

        Note:
            Monzo API docs: https://docs.monzo.com/#deleting-a-webhook

        Arguments:
            webhook_id: The ID of the webhook.

        Returns:
            API response.
        """
        endpoint = f"/webhooks/{webhook_id}"

        response = self._get_response(method="delete", endpoint=endpoint)

        return response.json()

delete(webhook_id)

Delete a webhook.

Note

Monzo API docs: https://docs.monzo.com/#deleting-a-webhook

Parameters:

Name Type Description Default
webhook_id str

The ID of the webhook.

required

Returns:

Type Description
dict

API response.

Source code in pymonzo/webhooks/resources.py
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
def delete(self, webhook_id: str) -> dict:
    """Delete a webhook.

    Note:
        Monzo API docs: https://docs.monzo.com/#deleting-a-webhook

    Arguments:
        webhook_id: The ID of the webhook.

    Returns:
        API response.
    """
    endpoint = f"/webhooks/{webhook_id}"

    response = self._get_response(method="delete", endpoint=endpoint)

    return response.json()

list(account_id=None)

List all webhooks.

Note

Monzo API docs: https://docs.monzo.com/#list-webhooks

Parameters:

Name Type Description Default
account_id Optional[str]

The account to list registered webhooks for. Can be omitted if user has only one active account.

None

Returns:

Type Description
List[MonzoWebhook]

List of Monzo webhooks.

Raises:

Type Description
CannotDetermineDefaultAccount

If no account ID was passed and default account cannot be determined.

Source code in pymonzo/webhooks/resources.py
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
def list(self, account_id: Optional[str] = None) -> List[MonzoWebhook]:
    """List all webhooks.

    Note:
        Monzo API docs: https://docs.monzo.com/#list-webhooks

    Arguments:
        account_id: The account to list registered webhooks for. Can be omitted
            if user has only one active account.

    Returns:
        List of Monzo webhooks.

    Raises:
        CannotDetermineDefaultAccount: If no account ID was passed and default
            account cannot be determined.
    """
    if not account_id:
        account_id = self.client.accounts.get_default_account().id

    endpoint = "/webhooks"
    params = {"account_id": account_id}

    response = self._get_response(method="get", endpoint=endpoint, params=params)

    webhooks = [MonzoWebhook(**webhook) for webhook in response.json()["webhooks"]]

    return webhooks

register(url, account_id=None)

Register a webhook.

Note

Monzo API docs: https://docs.monzo.com/#registering-a-webhook

Parameters:

Name Type Description Default
account_id Optional[str]

The account to receive notifications for. Can be omitted if user has only one active account.

None
url str

The URL we will send notifications to.

required

Returns:

Type Description
MonzoWebhook

Registered Monzo webhook.

Raises:

Type Description
CannotDetermineDefaultAccount

If no account ID was passed and default account cannot be determined.

Source code in pymonzo/webhooks/resources.py
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
def register(
    self,
    url: str,
    account_id: Optional[str] = None,
) -> MonzoWebhook:
    """Register a webhook.

    Note:
        Monzo API docs: https://docs.monzo.com/#registering-a-webhook

    Arguments:
        account_id: The account to receive notifications for. Can be omitted
            if user has only one active account.
        url: The URL we will send notifications to.

    Returns:
        Registered Monzo webhook.

    Raises:
        CannotDetermineDefaultAccount: If no account ID was passed and default
            account cannot be determined.
    """
    if not account_id:
        account_id = self.client.accounts.get_default_account().id

    endpoint = "/webhooks"
    data = {
        "account_id": account_id,
        "url": url,
    }
    response = self._get_response(method="post", endpoint=endpoint, data=data)

    webhook = MonzoWebhook(**response.json()["webhook"])

    return webhook