77import math
88import base64
99import hashlib
10+ from typing import cast
1011from datetime import datetime , timezone , timedelta
1112
13+ from ..types import WebhookEvent
1214from .._types import (
1315 HeadersLike ,
1416)
1517from .._utils import (
1618 get_required_header ,
1719)
20+ from .._models import construct_type
1821from .._resource import SyncAPIResource , AsyncAPIResource
1922
2023__all__ = ["Webhooks" , "AsyncWebhooks" ]
@@ -27,10 +30,16 @@ def unwrap(
2730 headers : HeadersLike ,
2831 * ,
2932 secret : str | None = None ,
30- ) -> object :
33+ ) -> WebhookEvent :
3134 """Validates that the given payload was sent by Finch and parses the payload."""
3235 self .verify_signature (payload = payload , headers = headers , secret = secret )
33- return json .loads (payload )
36+ return cast (
37+ WebhookEvent ,
38+ construct_type (
39+ value = json .loads (payload ),
40+ type_ = WebhookEvent , # type: ignore[arg-type]
41+ ),
42+ )
3443
3544 def verify_signature (
3645 self ,
@@ -120,10 +129,16 @@ def unwrap(
120129 headers : HeadersLike ,
121130 * ,
122131 secret : str | None = None ,
123- ) -> object :
132+ ) -> WebhookEvent :
124133 """Validates that the given payload was sent by Finch and parses the payload."""
125134 self .verify_signature (payload = payload , headers = headers , secret = secret )
126- return json .loads (payload )
135+ return cast (
136+ WebhookEvent ,
137+ construct_type (
138+ value = json .loads (payload ),
139+ type_ = WebhookEvent , # type: ignore[arg-type]
140+ ),
141+ )
127142
128143 def verify_signature (
129144 self ,
0 commit comments