""" Options: Date: 2024-11-10 19:49:51 Version: 6.40 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: https://evovoice.io #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: PatchIntegration.* #ExcludeTypes: #DefaultImports: datetime,decimal,marshmallow.fields:*,servicestack:*,typing:*,dataclasses:dataclass/field,dataclasses_json:dataclass_json/LetterCase/Undefined/config,enum:Enum/IntEnum #DataClass: #DataClassJson: """ 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 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Struct(Dict[str,Value]): pass @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Value: bool_value: Optional[bool] = None string_value: Optional[str] = None number_value: Optional[float] = None list_value: Optional[List[Struct]] = None struct_value: Optional[Struct] = None class UserDataFieldModes(str, Enum): HIDDEN = 'Hidden' READ_ONLY = 'ReadOnly' READ_WRITE = 'ReadWrite' class ValueTypes(str, Enum): NOT_SPECIFIED = 'NotSpecified' STRING = 'String' BOOLEAN = 'Boolean' NUMBER = 'Number' LIST = 'List' STRUCT = 'Struct' TRANSITION = 'Transition' CUSTOM = 'Custom' DATE = 'Date' AUDIO_FILE = 'AudioFile' TIME_ZONE_ID = 'TimeZoneId' PHONE_NUMBER = 'PhoneNumber' USER = 'User' ENDPOINT = 'Endpoint' TIME = 'Time' FILE = 'File' FAX_NUMBER = 'FaxNumber' EMAIL_ACCOUNT = 'EmailAccount' CUSTOMER = 'Customer' FLOW = 'Flow' TEAM = 'Team' FLOW_REFERENCE = 'FlowReference' INTEGRATION = 'Integration' ASSISTANT = 'Assistant' class IntegrationTypes(str, Enum): HOSTED_SUITE = 'HostedSuite' OFFICE_RND = 'OfficeRnd' ZOHO = 'Zoho' @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 """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CustomerBreadcrumb: id: Optional[str] = None name: Optional[str] = None class IntegrationStatuses(str, Enum): NOT_CONFIGURED = 'NotConfigured' ERROR = 'Error' OK = 'OK' class UIHints(str, Enum): NONE = 'None' LARGE_TEXT = 'LargeText' INLINE_FORM = 'InlineForm' PASSWORD = 'Password' INLINE_STRUCT = 'InlineStruct' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class DataType: type_name: Optional[str] = None fields: Optional[List[DataField]] = None class DataFieldUniqueness(str, Enum): NOT_UNIQUE = 'NotUnique' UNIQUE = 'Unique' UNIQUE_TO_CUSTOMER = 'UniqueToCustomer' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class DataField: id: Optional[str] = None name: Optional[str] = None type: Optional[ValueTypes] = None ui_hint: Optional[UIHints] = None ui_tab: Optional[str] = None is_async: bool = False disable_binding: bool = False struct_type: Optional[DataType] = None list_type: Optional[DataType] = None description: Optional[str] = None possible_values: Optional[List[str]] = None is_output: bool = False custom_field_values_url: Optional[str] = None default_value: Optional[Value] = None transition_name_format: Optional[str] = None uniqueness: Optional[DataFieldUniqueness] = None voice_only: bool = False conditional_visibility_field: Optional[str] = None conditional_visibility_value: Optional[str] = None no_eval_template: bool = False user_mode: Optional[UserDataFieldModes] = None any_value_type: bool = False class IntegrationFeatures(str, Enum): CRM_SYNC = 'CrmSync' O_AUTH2 = 'OAuth2' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class IntegrationInfo(EntityInfo): # @ApiMember(Description="The ID of the account associated with this integration") account_id: Optional[str] = None """ The ID of the account associated with this integration """ # @ApiMember(Description="The ID of the customer this integration is associated with") customer_id: Optional[str] = None """ The ID of the customer this integration is associated with """ # @ApiMember(Description="The name of the customer this integration is associated with") customer_name: Optional[str] = None """ The name of the customer this integration is associated with """ # @ApiMember(Description="The date the integration was sync'd last") date_last_sync: Optional[str] = None """ The date the integration was sync'd last """ # @ApiMember(Description="The breadcrumb to the customer for this integration") customer_breadcrumb: Optional[List[CustomerBreadcrumb]] = None """ The breadcrumb to the customer for this integration """ # @ApiMember(Description="The name of the integration (e.g. HostedSuite Dallas)") name: Optional[str] = None """ The name of the integration (e.g. HostedSuite Dallas) """ # @ApiMember(Description="Automatically create new customers / users when sync'ing with CRM?") automatically_create_customers: bool = False """ Automatically create new customers / users when sync'ing with CRM? """ # @ApiMember(Description="The type of integration") type: Optional[IntegrationTypes] = None """ The type of integration """ # @ApiMember(Description="The status of the integration") status: Optional[IntegrationStatuses] = None """ The status of the integration """ # @ApiMember(Description="The status of the integration") status_message: Optional[str] = None """ The status of the integration """ # @ApiMember(Description="The settings type for this integration") settings_data_type: Optional[DataType] = None """ The settings type for this integration """ # @ApiMember(Description="The settings for this integration") settings: Optional[Struct] = None """ The settings for this integration """ # @ApiMember(Description="The features supported by this integration") features: Optional[List[IntegrationFeatures]] = None """ The features supported by this integration """ # @ApiMember(Description="Is this integration authorized (OAuth)?") is_authorized: bool = False """ Is this integration authorized (OAuth)? """ # @Route("/integrations/{integrationId}", "PATCH") # @Api(Description="Update a specific integration") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class PatchIntegration(IReturn[IntegrationInfo], IPatch): """ Update a specific integration """ # @ApiMember(Description="The ID of the integration you want to update") integration_id: Optional[str] = None """ The ID of the integration you want to update """ # @ApiMember(Description="The name for the integration") name: Optional[str] = None """ The name for the integration """ # @ApiMember(Description="The parent customer for this integration") customer_id: Optional[str] = None """ The parent customer for this integration """ # @ApiMember(Description="Automatically create new customers / users when sync'ing with CRM?") automatically_create_customers: Optional[bool] = None """ Automatically create new customers / users when sync'ing with CRM? """ # @ApiMember(Description="Settings values for this integration") settings: Optional[Struct] = None """ Settings values for this integration """