1# coding=utf-8
2r"""
3This code was generated by
4\ / _    _  _|   _  _
5 | (_)\/(_)(_|\/| |(/_  v1.0.0
6      /       /
7"""
8
9from twilio.base import deserialize
10from twilio.base import serialize
11from twilio.base import values
12from twilio.base.instance_context import InstanceContext
13from twilio.base.instance_resource import InstanceResource
14from twilio.base.list_resource import ListResource
15from twilio.base.page import Page
16from twilio.rest.preview.hosted_numbers.authorization_document.dependent_hosted_number_order import DependentHostedNumberOrderList
17
18
19class AuthorizationDocumentList(ListResource):
20    """ PLEASE NOTE that this class contains preview products that are subject
21    to change. Use them with caution. If you currently do not have developer
22    preview access, please contact help@twilio.com. """
23
24    def __init__(self, version):
25        """
26        Initialize the AuthorizationDocumentList
27
28        :param Version version: Version that contains the resource
29
30        :returns: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentList
31        :rtype: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentList
32        """
33        super(AuthorizationDocumentList, self).__init__(version)
34
35        # Path Solution
36        self._solution = {}
37        self._uri = '/AuthorizationDocuments'.format(**self._solution)
38
39    def stream(self, email=values.unset, status=values.unset, limit=None,
40               page_size=None):
41        """
42        Streams AuthorizationDocumentInstance records from the API as a generator stream.
43        This operation lazily loads records as efficiently as possible until the limit
44        is reached.
45        The results are returned as a generator, so this operation is memory efficient.
46
47        :param unicode email: Email.
48        :param AuthorizationDocumentInstance.Status status: The Status of this AuthorizationDocument.
49        :param int limit: Upper limit for the number of records to return. stream()
50                          guarantees to never return more than limit.  Default is no limit
51        :param int page_size: Number of records to fetch per request, when not set will use
52                              the default value of 50 records.  If no page_size is defined
53                              but a limit is defined, stream() will attempt to read the
54                              limit with the most efficient page size, i.e. min(limit, 1000)
55
56        :returns: Generator that will yield up to limit results
57        :rtype: list[twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentInstance]
58        """
59        limits = self._version.read_limits(limit, page_size)
60
61        page = self.page(email=email, status=status, page_size=limits['page_size'], )
62
63        return self._version.stream(page, limits['limit'])
64
65    def list(self, email=values.unset, status=values.unset, limit=None,
66             page_size=None):
67        """
68        Lists AuthorizationDocumentInstance records from the API as a list.
69        Unlike stream(), this operation is eager and will load `limit` records into
70        memory before returning.
71
72        :param unicode email: Email.
73        :param AuthorizationDocumentInstance.Status status: The Status of this AuthorizationDocument.
74        :param int limit: Upper limit for the number of records to return. list() guarantees
75                          never to return more than limit.  Default is no limit
76        :param int page_size: Number of records to fetch per request, when not set will use
77                              the default value of 50 records.  If no page_size is defined
78                              but a limit is defined, list() will attempt to read the limit
79                              with the most efficient page size, i.e. min(limit, 1000)
80
81        :returns: Generator that will yield up to limit results
82        :rtype: list[twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentInstance]
83        """
84        return list(self.stream(email=email, status=status, limit=limit, page_size=page_size, ))
85
86    def page(self, email=values.unset, status=values.unset, page_token=values.unset,
87             page_number=values.unset, page_size=values.unset):
88        """
89        Retrieve a single page of AuthorizationDocumentInstance records from the API.
90        Request is executed immediately
91
92        :param unicode email: Email.
93        :param AuthorizationDocumentInstance.Status status: The Status of this AuthorizationDocument.
94        :param str page_token: PageToken provided by the API
95        :param int page_number: Page Number, this value is simply for client state
96        :param int page_size: Number of records to return, defaults to 50
97
98        :returns: Page of AuthorizationDocumentInstance
99        :rtype: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentPage
100        """
101        data = values.of({
102            'Email': email,
103            'Status': status,
104            'PageToken': page_token,
105            'Page': page_number,
106            'PageSize': page_size,
107        })
108
109        response = self._version.page(method='GET', uri=self._uri, params=data, )
110
111        return AuthorizationDocumentPage(self._version, response, self._solution)
112
113    def get_page(self, target_url):
114        """
115        Retrieve a specific page of AuthorizationDocumentInstance records from the API.
116        Request is executed immediately
117
118        :param str target_url: API-generated URL for the requested results page
119
120        :returns: Page of AuthorizationDocumentInstance
121        :rtype: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentPage
122        """
123        response = self._version.domain.twilio.request(
124            'GET',
125            target_url,
126        )
127
128        return AuthorizationDocumentPage(self._version, response, self._solution)
129
130    def create(self, hosted_number_order_sids, address_sid, email, contact_title,
131               contact_phone_number, cc_emails=values.unset):
132        """
133        Create the AuthorizationDocumentInstance
134
135        :param list[unicode] hosted_number_order_sids: A list of HostedNumberOrder sids.
136        :param unicode address_sid: Address sid.
137        :param unicode email: Email.
138        :param unicode contact_title: Title of signee of this Authorization Document.
139        :param unicode contact_phone_number: Authorization Document's signee's phone number.
140        :param list[unicode] cc_emails: A list of emails.
141
142        :returns: The created AuthorizationDocumentInstance
143        :rtype: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentInstance
144        """
145        data = values.of({
146            'HostedNumberOrderSids': serialize.map(hosted_number_order_sids, lambda e: e),
147            'AddressSid': address_sid,
148            'Email': email,
149            'ContactTitle': contact_title,
150            'ContactPhoneNumber': contact_phone_number,
151            'CcEmails': serialize.map(cc_emails, lambda e: e),
152        })
153
154        payload = self._version.create(method='POST', uri=self._uri, data=data, )
155
156        return AuthorizationDocumentInstance(self._version, payload, )
157
158    def get(self, sid):
159        """
160        Constructs a AuthorizationDocumentContext
161
162        :param sid: AuthorizationDocument sid.
163
164        :returns: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentContext
165        :rtype: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentContext
166        """
167        return AuthorizationDocumentContext(self._version, sid=sid, )
168
169    def __call__(self, sid):
170        """
171        Constructs a AuthorizationDocumentContext
172
173        :param sid: AuthorizationDocument sid.
174
175        :returns: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentContext
176        :rtype: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentContext
177        """
178        return AuthorizationDocumentContext(self._version, sid=sid, )
179
180    def __repr__(self):
181        """
182        Provide a friendly representation
183
184        :returns: Machine friendly representation
185        :rtype: str
186        """
187        return '<Twilio.Preview.HostedNumbers.AuthorizationDocumentList>'
188
189
190class AuthorizationDocumentPage(Page):
191    """ PLEASE NOTE that this class contains preview products that are subject
192    to change. Use them with caution. If you currently do not have developer
193    preview access, please contact help@twilio.com. """
194
195    def __init__(self, version, response, solution):
196        """
197        Initialize the AuthorizationDocumentPage
198
199        :param Version version: Version that contains the resource
200        :param Response response: Response from the API
201
202        :returns: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentPage
203        :rtype: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentPage
204        """
205        super(AuthorizationDocumentPage, self).__init__(version, response)
206
207        # Path Solution
208        self._solution = solution
209
210    def get_instance(self, payload):
211        """
212        Build an instance of AuthorizationDocumentInstance
213
214        :param dict payload: Payload response from the API
215
216        :returns: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentInstance
217        :rtype: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentInstance
218        """
219        return AuthorizationDocumentInstance(self._version, payload, )
220
221    def __repr__(self):
222        """
223        Provide a friendly representation
224
225        :returns: Machine friendly representation
226        :rtype: str
227        """
228        return '<Twilio.Preview.HostedNumbers.AuthorizationDocumentPage>'
229
230
231class AuthorizationDocumentContext(InstanceContext):
232    """ PLEASE NOTE that this class contains preview products that are subject
233    to change. Use them with caution. If you currently do not have developer
234    preview access, please contact help@twilio.com. """
235
236    def __init__(self, version, sid):
237        """
238        Initialize the AuthorizationDocumentContext
239
240        :param Version version: Version that contains the resource
241        :param sid: AuthorizationDocument sid.
242
243        :returns: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentContext
244        :rtype: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentContext
245        """
246        super(AuthorizationDocumentContext, self).__init__(version)
247
248        # Path Solution
249        self._solution = {'sid': sid, }
250        self._uri = '/AuthorizationDocuments/{sid}'.format(**self._solution)
251
252        # Dependents
253        self._dependent_hosted_number_orders = None
254
255    def fetch(self):
256        """
257        Fetch the AuthorizationDocumentInstance
258
259        :returns: The fetched AuthorizationDocumentInstance
260        :rtype: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentInstance
261        """
262        payload = self._version.fetch(method='GET', uri=self._uri, )
263
264        return AuthorizationDocumentInstance(self._version, payload, sid=self._solution['sid'], )
265
266    def update(self, hosted_number_order_sids=values.unset,
267               address_sid=values.unset, email=values.unset, cc_emails=values.unset,
268               status=values.unset, contact_title=values.unset,
269               contact_phone_number=values.unset):
270        """
271        Update the AuthorizationDocumentInstance
272
273        :param list[unicode] hosted_number_order_sids: A list of HostedNumberOrder sids.
274        :param unicode address_sid: Address sid.
275        :param unicode email: Email.
276        :param list[unicode] cc_emails: A list of emails.
277        :param AuthorizationDocumentInstance.Status status: The Status of this AuthorizationDocument.
278        :param unicode contact_title: Title of signee of this Authorization Document.
279        :param unicode contact_phone_number: Authorization Document's signee's phone number.
280
281        :returns: The updated AuthorizationDocumentInstance
282        :rtype: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentInstance
283        """
284        data = values.of({
285            'HostedNumberOrderSids': serialize.map(hosted_number_order_sids, lambda e: e),
286            'AddressSid': address_sid,
287            'Email': email,
288            'CcEmails': serialize.map(cc_emails, lambda e: e),
289            'Status': status,
290            'ContactTitle': contact_title,
291            'ContactPhoneNumber': contact_phone_number,
292        })
293
294        payload = self._version.update(method='POST', uri=self._uri, data=data, )
295
296        return AuthorizationDocumentInstance(self._version, payload, sid=self._solution['sid'], )
297
298    @property
299    def dependent_hosted_number_orders(self):
300        """
301        Access the dependent_hosted_number_orders
302
303        :returns: twilio.rest.preview.hosted_numbers.authorization_document.dependent_hosted_number_order.DependentHostedNumberOrderList
304        :rtype: twilio.rest.preview.hosted_numbers.authorization_document.dependent_hosted_number_order.DependentHostedNumberOrderList
305        """
306        if self._dependent_hosted_number_orders is None:
307            self._dependent_hosted_number_orders = DependentHostedNumberOrderList(
308                self._version,
309                signing_document_sid=self._solution['sid'],
310            )
311        return self._dependent_hosted_number_orders
312
313    def __repr__(self):
314        """
315        Provide a friendly representation
316
317        :returns: Machine friendly representation
318        :rtype: str
319        """
320        context = ' '.join('{}={}'.format(k, v) for k, v in self._solution.items())
321        return '<Twilio.Preview.HostedNumbers.AuthorizationDocumentContext {}>'.format(context)
322
323
324class AuthorizationDocumentInstance(InstanceResource):
325    """ PLEASE NOTE that this class contains preview products that are subject
326    to change. Use them with caution. If you currently do not have developer
327    preview access, please contact help@twilio.com. """
328
329    class Status(object):
330        OPENED = "opened"
331        SIGNING = "signing"
332        SIGNED = "signed"
333        CANCELED = "canceled"
334        FAILED = "failed"
335
336    def __init__(self, version, payload, sid=None):
337        """
338        Initialize the AuthorizationDocumentInstance
339
340        :returns: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentInstance
341        :rtype: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentInstance
342        """
343        super(AuthorizationDocumentInstance, self).__init__(version)
344
345        # Marshaled Properties
346        self._properties = {
347            'sid': payload.get('sid'),
348            'address_sid': payload.get('address_sid'),
349            'status': payload.get('status'),
350            'email': payload.get('email'),
351            'cc_emails': payload.get('cc_emails'),
352            'date_created': deserialize.iso8601_datetime(payload.get('date_created')),
353            'date_updated': deserialize.iso8601_datetime(payload.get('date_updated')),
354            'url': payload.get('url'),
355            'links': payload.get('links'),
356        }
357
358        # Context
359        self._context = None
360        self._solution = {'sid': sid or self._properties['sid'], }
361
362    @property
363    def _proxy(self):
364        """
365        Generate an instance context for the instance, the context is capable of
366        performing various actions.  All instance actions are proxied to the context
367
368        :returns: AuthorizationDocumentContext for this AuthorizationDocumentInstance
369        :rtype: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentContext
370        """
371        if self._context is None:
372            self._context = AuthorizationDocumentContext(self._version, sid=self._solution['sid'], )
373        return self._context
374
375    @property
376    def sid(self):
377        """
378        :returns: AuthorizationDocument sid.
379        :rtype: unicode
380        """
381        return self._properties['sid']
382
383    @property
384    def address_sid(self):
385        """
386        :returns: Address sid.
387        :rtype: unicode
388        """
389        return self._properties['address_sid']
390
391    @property
392    def status(self):
393        """
394        :returns: The Status of this AuthorizationDocument.
395        :rtype: AuthorizationDocumentInstance.Status
396        """
397        return self._properties['status']
398
399    @property
400    def email(self):
401        """
402        :returns: Email.
403        :rtype: unicode
404        """
405        return self._properties['email']
406
407    @property
408    def cc_emails(self):
409        """
410        :returns: A list of emails.
411        :rtype: list[unicode]
412        """
413        return self._properties['cc_emails']
414
415    @property
416    def date_created(self):
417        """
418        :returns: The date this AuthorizationDocument was created.
419        :rtype: datetime
420        """
421        return self._properties['date_created']
422
423    @property
424    def date_updated(self):
425        """
426        :returns: The date this AuthorizationDocument was updated.
427        :rtype: datetime
428        """
429        return self._properties['date_updated']
430
431    @property
432    def url(self):
433        """
434        :returns: The url
435        :rtype: unicode
436        """
437        return self._properties['url']
438
439    @property
440    def links(self):
441        """
442        :returns: The links
443        :rtype: unicode
444        """
445        return self._properties['links']
446
447    def fetch(self):
448        """
449        Fetch the AuthorizationDocumentInstance
450
451        :returns: The fetched AuthorizationDocumentInstance
452        :rtype: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentInstance
453        """
454        return self._proxy.fetch()
455
456    def update(self, hosted_number_order_sids=values.unset,
457               address_sid=values.unset, email=values.unset, cc_emails=values.unset,
458               status=values.unset, contact_title=values.unset,
459               contact_phone_number=values.unset):
460        """
461        Update the AuthorizationDocumentInstance
462
463        :param list[unicode] hosted_number_order_sids: A list of HostedNumberOrder sids.
464        :param unicode address_sid: Address sid.
465        :param unicode email: Email.
466        :param list[unicode] cc_emails: A list of emails.
467        :param AuthorizationDocumentInstance.Status status: The Status of this AuthorizationDocument.
468        :param unicode contact_title: Title of signee of this Authorization Document.
469        :param unicode contact_phone_number: Authorization Document's signee's phone number.
470
471        :returns: The updated AuthorizationDocumentInstance
472        :rtype: twilio.rest.preview.hosted_numbers.authorization_document.AuthorizationDocumentInstance
473        """
474        return self._proxy.update(
475            hosted_number_order_sids=hosted_number_order_sids,
476            address_sid=address_sid,
477            email=email,
478            cc_emails=cc_emails,
479            status=status,
480            contact_title=contact_title,
481            contact_phone_number=contact_phone_number,
482        )
483
484    @property
485    def dependent_hosted_number_orders(self):
486        """
487        Access the dependent_hosted_number_orders
488
489        :returns: twilio.rest.preview.hosted_numbers.authorization_document.dependent_hosted_number_order.DependentHostedNumberOrderList
490        :rtype: twilio.rest.preview.hosted_numbers.authorization_document.dependent_hosted_number_order.DependentHostedNumberOrderList
491        """
492        return self._proxy.dependent_hosted_number_orders
493
494    def __repr__(self):
495        """
496        Provide a friendly representation
497
498        :returns: Machine friendly representation
499        :rtype: str
500        """
501        context = ' '.join('{}={}'.format(k, v) for k, v in self._solution.items())
502        return '<Twilio.Preview.HostedNumbers.AuthorizationDocumentInstance {}>'.format(context)
503