Skip to content

Commit 045f6bc

Browse files
aditya-gupta-plivoKapil Patwa
andauthored
Python SDK development for tollfree verification (#250)
* Python SDK development for tollfree verification * Adding _ in list API params * Correcting the error response of list API in error case * Adding another filter toll_free_sms_verification_order_status * Review changes * Change of variable name * Adding UTC and fixtures * Resolving failing UTC * Renaming fixture files * Renaming function names in UTCs * Resolving bugs in UTCs * version update --------- Co-authored-by: Kapil Patwa <[email protected]>
1 parent 489edb8 commit 045f6bc

13 files changed

+320
-3
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Change Log
22

3+
## [4.45.0](https://github.com/plivo/plivo-python/tree/v4.45.0) (2023-11-03)
4+
**Feature - TollFree Verification API Support**
5+
- API support for Create, Update, Get, Delete and List Tollfree Verification.
6+
- Added New Param `toll_free_sms_verification_id` and `toll_free_sms_verification_order_status `in to the response of the [list all numbers API], [list single number API]
7+
- Added `toll_free_sms_verification_order_status` filter to AccountPhoneNumber - list all my numbers API.
8+
39
## [4.44.0](https://github.com/plivo/plivo-python/tree/v4.44.0) (2023-10-18)
410
**Feature - Fixes for Campaign services list API meta data**
511
- Fixed Meta data response for campaign, brand and profile list

plivo/base.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,42 @@ def __str__(self):
151151
def __repr__(self):
152152
return str([object for object in self.objects])
153153

154+
class ListTollfreeVerificationResponseObject(ResponseObject):
155+
def __init__(self, client, dct):
156+
super(ListTollfreeVerificationResponseObject, self).__init__(dct)
157+
self.error = dct.get('error', None)
158+
self.objects = dct.get('objects', [])
159+
self.meta = dct.get('meta', None)
160+
self.apiID = dct.get('api_id', None)
161+
162+
def __iter__(self):
163+
if self.objects is not None:
164+
return self.objects.__iter__()
165+
else:
166+
return iter([])
167+
168+
def __len__(self):
169+
if self.objects is not None:
170+
return len(self.objects)
171+
else:
172+
return 0 # Return 0 for error case
173+
174+
def __str__(self):
175+
if self.objects is not None:
176+
response_dict = {'api_id': self.apiID, 'meta': self.meta, 'objects': self.objects}
177+
return pprint.pformat(response_dict)
178+
else:
179+
return str(self.error) # Display error message for error case
180+
181+
def __repr__(self):
182+
if self.objects is not None:
183+
response_dict = {'api_id': self.apiID, 'meta': self.meta, 'objects': [session for session in self.objects]}
184+
return str(response_dict)
185+
else:
186+
return str(self.error) # Display error message for error case
187+
188+
def has_error(self):
189+
return self.error is not None
154190

155191
class PlivoResource(ResponseObject):
156192
"""The Plivo resource object

plivo/resources/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,4 @@
2121
from .profile import Profile
2222
from .multipartycall import MultiPartyCalls, MultiPartyCall, MultiPartyCallParticipant
2323
from .verify import Sessions
24+
from .tollfree_verification import TollfreeVerifications

plivo/resources/numbers.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ def list(self,
9090
renewal_date__gte=None,
9191
renewal_date__gt=None,
9292
cnam_lookup=None,
93+
toll_free_sms_verification_order_status=None,
9394
limit=20,
9495
offset=0):
9596
return self.client.request(
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
from ..utils.validators import *
2+
3+
from ..base import PlivoResource, PlivoResourceInterface, ListTollfreeVerificationResponseObject
4+
from ..exceptions import *
5+
from ..utils import *
6+
7+
8+
class TollfreeVerification(PlivoResource):
9+
_name = 'TollfreeVerification'
10+
_identifier_string = 'uuid'
11+
12+
def delete(self):
13+
return self.client.tollfree_verification.delete(tollfree_verification_uuid=self.uuid)
14+
15+
def update(self,
16+
profile_uuid=None,
17+
usecase=None,
18+
usecase_summary=None,
19+
message_sample=None,
20+
optin_image_url=None,
21+
volume=None,
22+
additional_information=None,
23+
extra_data=None,
24+
optin_type=None,
25+
callback_url=None,
26+
callback_method=None):
27+
return self.client.tollfree_verification.update(self.uuid, profile_uuid=profile_uuid, usecase=usecase,
28+
usecase_summary=usecase_summary, message_sample=message_sample,
29+
optin_image_url=optin_image_url, volume=volume,
30+
additional_information=additional_information,
31+
extra_data=extra_data, optin_type=optin_type,
32+
callback_url=callback_url, callback_method=callback_method)
33+
34+
class TollfreeVerifications(PlivoResourceInterface):
35+
def __init__(self, client):
36+
self._resource_type = TollfreeVerification
37+
super(TollfreeVerifications, self).__init__(client)
38+
39+
def create(self,
40+
profile_uuid=None,
41+
usecase=None,
42+
usecase_summary=None,
43+
message_sample=None,
44+
optin_image_url=None,
45+
volume=None,
46+
number=None,
47+
additional_information=None,
48+
extra_data=None,
49+
optin_type=None,
50+
callback_url=None,
51+
callback_method=None):
52+
return self.client.request(
53+
'POST', ('TollfreeVerification',), to_param_dict(self.create, locals()))
54+
55+
def get(self, tollfree_verification_uuid=None):
56+
return self.client.request(
57+
'GET', ('TollfreeVerification', tollfree_verification_uuid), response_type=TollfreeVerification)
58+
59+
def list(self,
60+
number=None,
61+
status=None,
62+
profile_uuid=None,
63+
created__gt=None,
64+
created__gte=None,
65+
created__lt=None,
66+
created__lte=None,
67+
usecase=None,
68+
limit=20,
69+
offset=0):
70+
return self.client.request(
71+
'GET', ('TollfreeVerification',), to_param_dict(self.list, locals()),
72+
objects_type=TollfreeVerification, response_type=ListTollfreeVerificationResponseObject, )
73+
74+
def update(self, tollfree_verification_uuid=None,
75+
profile_uuid=None,
76+
usecase=None,
77+
usecase_summary=None,
78+
message_sample=None,
79+
optin_image_url=None,
80+
volume=None,
81+
additional_information=None,
82+
extra_data=None,
83+
optin_type=None,
84+
callback_url=None,
85+
callback_method=None):
86+
return self.client.request(
87+
'POST', ('TollfreeVerification', tollfree_verification_uuid), to_param_dict(self.update, locals()))
88+
89+
def delete(self, tollfree_verification_uuid=None):
90+
return self.client.request('DELETE', ('TollfreeVerification', tollfree_verification_uuid))

plivo/rest/client.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
from plivo.resources import (Accounts, Addresses, Applications, Calls, Token,
1515
Conferences, Endpoints, Identities,
1616
Messages, Powerpacks, Media, Lookup, Brand, Campaign, Profile,
17-
Numbers, Pricings, Recordings, Subaccounts, CallFeedback, MultiPartyCalls, Sessions)
17+
Numbers, Pricings, Recordings, Subaccounts, CallFeedback, MultiPartyCalls, Sessions,
18+
TollfreeVerifications)
1819
from plivo.resources.live_calls import LiveCalls
1920
from plivo.resources.maskingsession import MaskingSessions
2021
from plivo.resources.verify_callerid import VerifyCallerids
@@ -101,6 +102,7 @@ def __init__(self, auth_id=None, auth_token=None, proxies=None, timeout=5):
101102
self.messages = Messages(self)
102103
self.lookup = Lookup(self)
103104
self.numbers = Numbers(self)
105+
self.tollfree_verification = TollfreeVerifications(self)
104106
self.powerpacks = Powerpacks(self)
105107
self.brand = Brand(self)
106108
self.campaign = Campaign(self)

plivo/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# -*- coding: utf-8 -*-
2-
__version__ = '4.44.0'
2+
__version__ = '4.45.0'

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
setup(
1212
name='plivo',
13-
version='4.44.0',
13+
version='4.45.0',
1414
description='A Python SDK to make voice calls & send SMS using Plivo and to generate Plivo XML',
1515
long_description=long_description,
1616
url='https://github.com/plivo/plivo-python',
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"api_id": "5a9fcb68-582d-11e1-86da-6ff39efcb949",
3+
"message": "Tollfree verification request for 18339404937 submitted succesfully",
4+
"uuid": "f19c4773-4ae6-4b75-92ea-9cf3ea4227d6"
5+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"api_id": "4e1f954c-baf3-11ec-bafe-0242ac110003",
3+
"additional_information": "",
4+
"callback_method": "POST",
5+
"callback_url": "http://plivobin-prod-usw1.plivops.com/1e4jvpt1",
6+
"created": "2023-10-12T15:28:10.216507Z",
7+
"extra_data": "",
8+
"message_sample": "1.Your Plivo verification code is xxxx. 2.Dear <customer name>, you have signed up on Plivo successfully.",
9+
"number": "18449605287",
10+
"optin_image_url": "https://www.plivo.com",
11+
"optin_type": "MOBILE_QR_CODE",
12+
"profile_uuid": "0ead82e0-fc80-4dc3-888b-7778932cf134",
13+
"error_message": "Demo Testing Sanity",
14+
"status": "REJECTED",
15+
"last_modified": "2023-10-13T08:24:26.619565Z",
16+
"usecase": "2FA",
17+
"usecase_summary": "1.We send 2FA codes to customers when they signup. 2.Dear <customer name>, you have signed up on Plivo successfully.",
18+
"uuid": "312b3119-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
19+
"volume": "100"
20+
}

0 commit comments

Comments
 (0)