Skip to content

Webhook

CLASS DESCRIPTION
Webhook

Python interface for Planka Webhooks

Webhook

Webhook(schema: Schema, session: Planka)

Bases: PlankaModel[Webhook]

Python interface for Planka Webhooks

METHOD DESCRIPTION
copy

Create a deepcopy of the model and its associated schema.

delete

Delete the Webhook (admin only)

diff

Get a schema diff between two model schemas.

sync

Sync the Webhook with the Planka server (admin only)

update

Update the Webhook (admin only)

ATTRIBUTE DESCRIPTION
__formatter__

Formatter func that allows overriding str behavior for models

TYPE: ModelFormatter[Self]

access_token

Access token for webhook authentication

TYPE: str

created_at

When the Webhook was created

TYPE: datetime

events

List of events that trigger the Webhook

TYPE: list[WebhookEvent]

excluded_events

List of events excluded from the Webhook

TYPE: list[WebhookEvent]

name

Name/title of the Webhook

TYPE: str

updated_at

When the Webhook was last updated

TYPE: datetime

url

URL endpoint for the Webhook

TYPE: str

Source code in src/plankapy/v2/models/_base.py
30
31
32
33
34
35
36
def __init__(self, schema: Schema, session: Planka) -> None:
    self._schema = schema
    self.session = session
    self.endpoints = session.endpoints
    self.client = session.client
    self.current_role = session.current_role
    self.current_id = session.current_id

__formatter__ class-attribute instance-attribute

__formatter__: ModelFormatter[Self] = DEFAULT_FORMATTER

Formatter func that allows overriding str behavior for models

access_token property

access_token: str

Access token for webhook authentication

created_at property

created_at: datetime

When the Webhook was created

events property

events: list[WebhookEvent]

List of events that trigger the Webhook

excluded_events property

excluded_events: list[WebhookEvent]

List of events excluded from the Webhook

name property

name: str

Name/title of the Webhook

updated_at property

updated_at: datetime

When the Webhook was last updated

url property

url: str

URL endpoint for the Webhook

copy

copy() -> Self

Create a deepcopy of the model and its associated schema.

Note

Since the endpoints for both instances of the Model are the same, any calls to update will restore the state and bring both copies into sync. copies like this are meant more for comparing changes when running a sync or update/assignemnt operation.

Example:

    >>> card_copy = card.copy()
    >>> card.name = 'Updated Name'
    >>> card_copy.name
    'Original Name'
    >>> card.name
    'Updated Name'
    >>> # This update may have had side effects
    >>> print(card_copy.diff(card))
    {'name': ('Original Name', 'Updated Name'), 'updatedAt': ('...2:00pm', '...2:45pm'), ...}

Source code in src/plankapy/v2/models/_base.py
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
def copy(self) -> Self:
    """Create a deepcopy of the model and its associated schema.

    Note:
        Since the endpoints for both instances of the Model are the same, any 
        calls to update will restore the state and bring both copies into sync. 
        copies like this are meant more for comparing changes when running a sync 
        or update/assignemnt operation.

    Example:
    ```python
        >>> card_copy = card.copy()
        >>> card.name = 'Updated Name'
        >>> card_copy.name
        'Original Name'
        >>> card.name
        'Updated Name'
        >>> # This update may have had side effects
        >>> print(card_copy.diff(card))
        {'name': ('Original Name', 'Updated Name'), 'updatedAt': ('...2:00pm', '...2:45pm'), ...}
    ```
    """
    return copy.deepcopy(self)

delete

delete()

Delete the Webhook (admin only)

Source code in src/plankapy/v2/models/webhook.py
73
74
75
76
def delete(self):
    """Delete the Webhook (admin only)"""
    if self.current_role == 'admin':
        self.endpoints.deleteWebhook(self.id)

diff

diff(other: PlankaModel[Schema]) -> Diff

Get a schema diff between two model schemas.

Note

Only matching keys are diffed. Any schema keys that are not in the source schema will not be checked in the target schema

Source code in src/plankapy/v2/models/_base.py
104
105
106
107
108
109
110
111
112
113
114
115
116
117
def diff(self, other: PlankaModel[Schema]) -> Diff:
    """Get a schema diff between two model schemas.

    Note:
        Only matching keys are diffed. Any schema keys that are not in the source schema 
        will not be checked in the target schema
    """
    return {
        k: (source, delta) 
        for k, source in self.schema
        if k in other.schema
        and (delta := other.schema[k]) 
        and delta != source
    }

sync

sync()

Sync the Webhook with the Planka server (admin only)

Source code in src/plankapy/v2/models/webhook.py
59
60
61
62
63
64
65
66
def sync(self):
    """Sync the Webhook with the Planka server (admin only)"""
    if self.current_role == 'admin':
        self.schema = [
            Webhook(w, self.session) 
            for w in self.endpoints.getWebhooks()['items'] 
            if w['id'] == self.id
        ].pop().schema

update

update(**kwargs: Unpack[Request_updateWebhook])

Update the Webhook (admin only)

Source code in src/plankapy/v2/models/webhook.py
68
69
70
71
def update(self, **kwargs: Unpack[paths.Request_updateWebhook]):
    """Update the Webhook (admin only)"""
    if self.current_role == 'admin':
        self.schema = self.endpoints.updateWebhook(self.id, **kwargs)['item']