| Requires any of the roles: | SystemAdministrator, Manager, Customer |
| GET | /alerts |
|---|
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum
class SortOrders(str, Enum):
ASCEND = 'Ascend'
DESCEND = 'Descend'
T = TypeVar('T')
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ListRequest(Generic[T], IReturn[ListResponse[T]], IGet):
# @ApiMember(Description="The page of data to retrieve")
page: int = 0
"""
The page of data to retrieve
"""
# @ApiMember(Description="If you want all objects to be returned. This should be used with care")
all: bool = False
"""
If you want all objects to be returned. This should be used with care
"""
# @ApiMember(Description="The number per page to retrieve")
count_per_page: int = 0
"""
The number per page to retrieve
"""
# @ApiMember(Description="Specific IDs")
specific_ids: Optional[List[str]] = None
"""
Specific IDs
"""
# @ApiMember(Description="Specify a sort field")
sort_field: Optional[str] = None
"""
Specify a sort field
"""
# @ApiMember(Description="Specify a sort order")
sort_order: Optional[SortOrders] = None
"""
Specify a sort order
"""
# @ApiMember(Description="Disables total / page counts - improves performance. Returns only data. If there is no more data, Items will be empty array")
simplified_paging: bool = False
"""
Disables total / page counts - improves performance. Returns only data. If there is no more data, Items will be empty array
"""
@staticmethod
def response_type(): return ListResponse[T]
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class EntityInfo:
# @ApiMember(Description="The ID of the object")
id: Optional[str] = None
"""
The ID of the object
"""
# @ApiMember(Description="The date the object was created")
date_created: Optional[str] = None
"""
The date the object was created
"""
# @ApiMember(Description="The date the object was last modified")
date_last_modified: Optional[str] = None
"""
The date the object was last modified
"""
# @ApiMember(Description="The user that created this object")
created_by: Optional[str] = None
"""
The user that created this object
"""
# @ApiMember(Description="The user that last modified this object")
last_modified_by: Optional[str] = None
"""
The user that last modified this object
"""
class AlertTriggers(str, Enum):
CALL_SPEND = 'CallSpend'
CALL_COUNT = 'CallCount'
class AlertCustomerSelection(str, Enum):
ALL_CUSTOMERS = 'AllCustomers'
EXCLUDE_CUSTOMERS = 'ExcludeCustomers'
INCLUDE_CUSTOMERS = 'IncludeCustomers'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AlertInfo(EntityInfo):
# @ApiMember(Description="The ID of the account associated with this alert")
account_id: Optional[str] = None
"""
The ID of the account associated with this alert
"""
# @ApiMember(Description="The name of the alert")
name: Optional[str] = None
"""
The name of the alert
"""
# @ApiMember(Description="The trigger alert")
trigger: Optional[AlertTriggers] = None
"""
The trigger alert
"""
# @ApiMember(Description="The number of hours for the window over which the alert will trigger")
window_hours: float = 0.0
"""
The number of hours for the window over which the alert will trigger
"""
# @ApiMember(Description="The value at which the alert will trigger")
threshold: float = 0.0
"""
The value at which the alert will trigger
"""
# @ApiMember(Description="The email addresses (one per line) to notify")
notification_email_addresses: Optional[str] = None
"""
The email addresses (one per line) to notify
"""
# @ApiMember(Description="Customer selection for this alert")
customer_selection: Optional[AlertCustomerSelection] = None
"""
Customer selection for this alert
"""
# @ApiMember(Description="The list of customer IDs for the selection model")
customer_ids: Optional[List[str]] = None
"""
The list of customer IDs for the selection model
"""
# @Api(Description="Retrieve alerts")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ListAlerts(ListRequest[AlertInfo]):
"""
Retrieve alerts
"""
# @ApiMember(Description="Filter by accounts")
account_ids: Optional[List[str]] = None
"""
Filter by accounts
"""
# @ApiMember(Description="Filter by name")
name_filter: Optional[str] = None
"""
Filter by name
"""
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BillingItem:
base_cost: float = 0.0
raw_unit_multiplier: float = 0.0
unit_cost: float = 0.0
allowance: int = 0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BillingSettings:
base: Optional[BillingItem] = None
local_numbers: Optional[BillingItem] = None
toll_free_numbers: Optional[BillingItem] = None
inbound_voice_calls: Optional[BillingItem] = None
outbound_voice_calls: Optional[BillingItem] = None
inbound_faxes: Optional[BillingItem] = None
outbound_faxes: Optional[BillingItem] = None
inbound_sms_messages: Optional[BillingItem] = None
outbound_sms_messages: Optional[BillingItem] = None
ai_insights: Optional[BillingItem] = None
ai_live_minutes: Optional[BillingItem] = None
ai_messages: Optional[BillingItem] = None
ai_transcriptions: Optional[BillingItem] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AccountInfo(EntityInfo):
# @ApiMember(Description="The name of this account")
name: Optional[str] = None
"""
The name of this account
"""
# @ApiMember(Description="The ID of this account's parent")
parent_account_id: Optional[str] = None
"""
The ID of this account's parent
"""
# @ApiMember(Description="The twilio account SID")
twilio_account_sid: Optional[str] = None
"""
The twilio account SID
"""
# @ApiMember(Description="The ancestors of this account. Useful for breadcrumbs")
ancestor_ids: Optional[List[str]] = None
"""
The ancestors of this account. Useful for breadcrumbs
"""
# @ApiMember(Description="The max number of phone numbers this account can have")
max_phone_numbers: int = 0
"""
The max number of phone numbers this account can have
"""
# @ApiMember(Description="This account is BYOA")
is_b_y_o_a: bool = False
"""
This account is BYOA
"""
# @ApiMember(Description="TrustHub Profile Sid")
trust_hub_profile_sid: Optional[str] = None
"""
TrustHub Profile Sid
"""
# @ApiMember(Description="The ID of the logo file")
logo_id: Optional[str] = None
"""
The ID of the logo file
"""
# @ApiMember(Description="The URI of the logo file")
logo_uri: Optional[str] = None
"""
The URI of the logo file
"""
# @ApiMember(Description="The billing settings for this account")
billing_settings: Optional[BillingSettings] = None
"""
The billing settings for this account
"""
# @ApiMember(Description="Enable international settings for the account?")
enable_international_settings: bool = False
"""
Enable international settings for the account?
"""
# @ApiMember(Description="The default list of country codes the account can dial when not specified on customer")
default_international_country_codes: Optional[List[str]] = None
"""
The default list of country codes the account can dial when not specified on customer
"""
T = TypeVar('T')
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ListResponse(Generic[T]):
# @ApiMember(Description="The items")
items: Optional[List[AccountInfo]] = None
"""
The items
"""
# @ApiMember(Description="The total number of items")
total_count: int = 0
"""
The total number of items
"""
# @ApiMember(Description="The total number of pages")
total_pages: int = 0
"""
The total number of pages
"""
# @ApiMember(Description="Are there more pages of items? Used with simplified paging")
has_more_pages: bool = False
"""
Are there more pages of items? Used with simplified paging
"""
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /alerts HTTP/1.1 Host: evovoice.io Accept: application/xml
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length
<ListResponseOfAlertInfoLEzmHoIb xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">
<HasMorePages>false</HasMorePages>
<Items xmlns:d2p1="http://schemas.datacontract.org/2004/07/Voice.Api.Alerts">
<d2p1:AlertInfo>
<CreatedBy>String</CreatedBy>
<DateCreated>String</DateCreated>
<DateLastModified>String</DateLastModified>
<Id>String</Id>
<LastModifiedBy>String</LastModifiedBy>
<d2p1:AccountId>String</d2p1:AccountId>
<d2p1:CustomerIds xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d4p1:string>String</d4p1:string>
</d2p1:CustomerIds>
<d2p1:CustomerSelection>AllCustomers</d2p1:CustomerSelection>
<d2p1:Name>String</d2p1:Name>
<d2p1:NotificationEmailAddresses>String</d2p1:NotificationEmailAddresses>
<d2p1:Threshold>0</d2p1:Threshold>
<d2p1:Trigger>CallSpend</d2p1:Trigger>
<d2p1:WindowHours>0</d2p1:WindowHours>
</d2p1:AlertInfo>
</Items>
<TotalCount>0</TotalCount>
<TotalPages>0</TotalPages>
</ListResponseOfAlertInfoLEzmHoIb>