Skip to content

Commit 35a4851

Browse files
committed
[signups] adding support for creating listing and updating signups
1 parent aeb7c2a commit 35a4851

16 files changed

Lines changed: 967 additions & 54 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<a href="https://pywa.readthedocs.io"><img src="https://readthedocs.org/projects/pywa/badge/?version=latest&" alt="Docs"/></a>
2121
<a href="https://github.com/david-lev/pywa/blob/master/LICENSE"><img src="https://img.shields.io/github/license/david-lev/pywa?color=%2334D058" alt="License"/></a>
2222
<a href="https://www.codefactor.io/repository/github/david-lev/pywa/overview/master"><img src="https://www.codefactor.io/repository/github/david-lev/pywa/badge/master" alt="Code Quality"/></a>
23-
<a href="https://t.me/py_wa"><img src="https://badges.aleen42.com/src/telegram.svg" /></a></p>
23+
<a href="https://t.me/py_wa"><img src="https://badges.aleen42.com/src/telegram.svg" alt="Updates"/></a></p>
2424

2525
---
2626

docs/source/content/client/client_reference.rst

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,10 @@ Client Reference
8383
.. automethod:: WhatsApp.get_current_username
8484
.. automethod:: WhatsApp.get_reserved_usernames
8585
.. automethod:: WhatsApp.delete_username
86-
.. automethod:: WhatsApp.delete_qr_code
86+
.. automethod:: WhatsApp.create_signup
87+
.. automethod:: WhatsApp.get_signup
88+
.. automethod:: WhatsApp.get_signups
89+
.. automethod:: WhatsApp.update_signup
8790
.. automethod:: WhatsApp.get_call_permissions
8891
.. automethod:: WhatsApp.pre_accept_call
8992
.. automethod:: WhatsApp.accept_call

docs/source/content/client/overview.rst

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,23 @@ QR Codes
365365
* - :meth:`~WhatsApp.delete_qr_code`
366366
- Delete a QR code
367367

368+
Signups
369+
--------
370+
.. list-table::
371+
:widths: 40 60
372+
:header-rows: 1
373+
374+
* - Method
375+
- Description
376+
* - :meth:`~WhatsApp.create_signup`
377+
- Create a signup
378+
* - :meth:`~WhatsApp.get_signup`
379+
- Get details of a signup
380+
* - :meth:`~WhatsApp.get_signups`
381+
- List all signups
382+
* - :meth:`~WhatsApp.update_signup`
383+
- Update a signup
384+
368385

369386
Commerce
370387
--------

docs/source/content/types/others.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,14 @@ Others
5757

5858
.. autoclass:: QRCodeImageType()
5959

60+
.. autoclass:: CreatedSignup()
61+
:members:
62+
63+
.. autoclass:: SignupDetails()
64+
:members:
65+
66+
.. autoclass:: SignupStatus()
67+
6068
.. autoclass:: Command()
6169

6270
.. autoclass:: CommerceSettings()

pywa/api.py

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2856,3 +2856,131 @@ def delete_username(
28562856
method="DELETE",
28572857
endpoint=f"/{phone_id}/username",
28582858
)
2859+
2860+
def create_signup(
2861+
self,
2862+
waba_id: str,
2863+
signup_message: str,
2864+
confirmation_message: str,
2865+
privacy_policy_url: str,
2866+
website_url: str | None = None,
2867+
promo_code: str | None = None,
2868+
display_name: str | None = None,
2869+
policy: dict[str, str | bool] | None = None,
2870+
) -> dict:
2871+
"""
2872+
Create a signup deep link.
2873+
2874+
- Read more at `developers.facebook.com <https://developers.facebook.com/documentation/business-messaging/whatsapp/in-app-signup#create-signup>`_.
2875+
2876+
Args:
2877+
waba_id: The ID of the WABA to create a signup for.
2878+
signup_message: The description shown on the pre-consent screen when a WhatsApp user opens the deep link. Supports WhatsApp formatting. Must be 1-300 characters.
2879+
confirmation_message: The message sent to the WhatsApp user immediately after a successful opt-in. Can contain the {{promo_code}} placeholder, which is replaced with the promo_code value in the delivered message. Must be 1-300 characters.
2880+
privacy_policy_url: A link to your privacy policy. Must start with http:// or https://. Immutable after creation.
2881+
website_url: Your business website URL. Must start with https://.
2882+
promo_code: A promotional code value. Must contain only alphanumeric characters (letters and numbers) and be 1-50 characters. Replaces {{promo_code}} in the confirmation message.
2883+
display_name: A business-facing nickname for the signup link. Not shown to WhatsApp users. Must be 1-256 characters.
2884+
policy: The policy object with "tos" and "accepted" fields.
2885+
2886+
Returns:
2887+
A dictionary containing the ID of the created signup.
2888+
"""
2889+
return self._request(
2890+
method="POST",
2891+
endpoint=f"/{waba_id}/signups",
2892+
json=self._filter_none(
2893+
signup_message=signup_message,
2894+
confirmation_message=confirmation_message,
2895+
privacy_policy_url=privacy_policy_url,
2896+
website_url=website_url,
2897+
promo_code=promo_code,
2898+
display_name=display_name,
2899+
policy=policy,
2900+
),
2901+
)
2902+
2903+
def get_signups(
2904+
self,
2905+
waba_id: str,
2906+
fields: tuple[str, ...] | None = None,
2907+
pagination: dict[str, str] | None = None,
2908+
) -> dict:
2909+
"""
2910+
List signup deep links for a WABA.
2911+
2912+
- Read more at `developers.facebook.com <https://developers.facebook.com/documentation/business-messaging/whatsapp/in-app-signup#list-signups>`_.
2913+
2914+
Args:
2915+
waba_id: The ID of the WABA to list signups for.
2916+
fields: Fields to retrieve.
2917+
pagination: Pagination parameters.
2918+
2919+
Returns:
2920+
A dictionary containing the list of signup deep links.
2921+
"""
2922+
return self._request(
2923+
method="GET",
2924+
endpoint=f"/{waba_id}/signups",
2925+
params=self._filter_none(pagination, fields=self._join_fields(fields)),
2926+
)
2927+
2928+
def get_signup(
2929+
self,
2930+
signup_id: str,
2931+
) -> dict:
2932+
"""
2933+
Get a signup deep link.
2934+
2935+
- Read more at `developers.facebook.com <https://developers.facebook.com/documentation/business-messaging/whatsapp/in-app-signup#get-signup-details>`_.
2936+
2937+
Args:
2938+
signup_id: The ID of the signup deep link.
2939+
2940+
Returns:
2941+
A dictionary containing the signup deep link.
2942+
"""
2943+
return self._request(
2944+
method="GET",
2945+
endpoint=f"/signups/{signup_id}",
2946+
)
2947+
2948+
def update_signup(
2949+
self,
2950+
signup_id: str,
2951+
status: str | None = None,
2952+
signup_message: str | None = None,
2953+
confirmation_message: str | None = None,
2954+
website_url: str | None = None,
2955+
promo_code: str | None = None,
2956+
display_name: str | None = None,
2957+
) -> dict:
2958+
"""
2959+
Update a signup deep link.
2960+
2961+
- Read more at `developers.facebook.com <https://developers.facebook.com/documentation/business-messaging/whatsapp/in-app-signup#get-signup-details>`_.
2962+
2963+
Args:
2964+
signup_id: The ID of the signup deep link.
2965+
status: Updated status: ACTIVE or DISABLED.
2966+
signup_message: The description shown on the pre-consent screen when a WhatsApp user opens the deep link. Supports WhatsApp formatting. Must be 1-300 characters.
2967+
confirmation_message: The message sent to the WhatsApp user immediately after a successful opt-in. Can contain the {{promo_code}} placeholder, which is replaced with the promo_code value in the delivered message. Must be 1-300 characters.
2968+
website_url: Your business website URL. Must start with https://.
2969+
promo_code: A promotional code value. Must contain only alphanumeric characters (letters and numbers) and be 1-50 characters. Replaces {{promo_code}} in the confirmation message.
2970+
display_name: A business-facing nickname for the signup link. Not shown to WhatsApp users. Must be 1-256 characters.
2971+
2972+
Returns:
2973+
A dictionary containing the ID of the updated signup.
2974+
"""
2975+
return self._request(
2976+
method="POST",
2977+
endpoint=f"/signups/{signup_id}",
2978+
json=self._filter_none(
2979+
status=status,
2980+
signup_message=signup_message,
2981+
confirmation_message=confirmation_message,
2982+
website_url=website_url,
2983+
promo_code=promo_code,
2984+
display_name=display_name,
2985+
),
2986+
)

0 commit comments

Comments
 (0)