Evo Voice

<back to all web services

ListEndpoints

Lists all endpoints

Requires Authentication
Requires any of the roles:SystemAdministrator, Manager, Customer
The following routes are available for this service:
GET/endpoints
import 'package:servicestack/servicestack.dart';

enum SortOrders
{
    Ascend,
    Descend,
}

abstract class ListRequest<T> implements IGet
{
    /**
    * The page of data to retrieve
    */
    // @ApiMember(Description="The page of data to retrieve")
    int? page;

    /**
    * If you want all objects to be returned. This should be used with care
    */
    // @ApiMember(Description="If you want all objects to be returned. This should be used with care")
    bool? all;

    /**
    * The number per page to retrieve
    */
    // @ApiMember(Description="The number per page to retrieve")
    int? countPerPage;

    /**
    * Specific IDs
    */
    // @ApiMember(Description="Specific IDs")
    List<String>? specificIds;

    /**
    * Specify a sort field
    */
    // @ApiMember(Description="Specify a sort field")
    String? sortField;

    /**
    * Specify a sort order
    */
    // @ApiMember(Description="Specify a sort order")
    SortOrders? sortOrder;

    /**
    * Disables total / page counts - improves performance. Returns only data. If there is no more data, Items will be empty array
    */
    // @ApiMember(Description="Disables total / page counts - improves performance. Returns only data. If there is no more data, Items will be empty array")
    bool? simplifiedPaging;

    ListRequest({this.page,this.all,this.countPerPage,this.specificIds,this.sortField,this.sortOrder,this.simplifiedPaging});
    ListRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        page = json['page'];
        all = json['all'];
        countPerPage = json['countPerPage'];
        specificIds = JsonConverters.fromJson(json['specificIds'],'List<String>',context!);
        sortField = json['sortField'];
        sortOrder = JsonConverters.fromJson(json['sortOrder'],'SortOrders',context!);
        simplifiedPaging = json['simplifiedPaging'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'page': page,
        'all': all,
        'countPerPage': countPerPage,
        'specificIds': JsonConverters.toJson(specificIds,'List<String>',context!),
        'sortField': sortField,
        'sortOrder': JsonConverters.toJson(sortOrder,'SortOrders',context!),
        'simplifiedPaging': simplifiedPaging
    };

    getTypeName() => "ListRequest<$T>";
    TypeContext? context = _ctx;
}

abstract class EntityInfo
{
    /**
    * The ID of the object
    */
    // @ApiMember(Description="The ID of the object")
    String? id;

    /**
    * The date the object was created
    */
    // @ApiMember(Description="The date the object was created")
    String? dateCreated;

    /**
    * The date the object was last modified
    */
    // @ApiMember(Description="The date the object was last modified")
    String? dateLastModified;

    /**
    * The user that created this object
    */
    // @ApiMember(Description="The user that created this object")
    String? createdBy;

    /**
    * The user that last modified this object
    */
    // @ApiMember(Description="The user that last modified this object")
    String? lastModifiedBy;

    EntityInfo({this.id,this.dateCreated,this.dateLastModified,this.createdBy,this.lastModifiedBy});
    EntityInfo.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        id = json['id'];
        dateCreated = json['dateCreated'];
        dateLastModified = json['dateLastModified'];
        createdBy = json['createdBy'];
        lastModifiedBy = json['lastModifiedBy'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'id': id,
        'dateCreated': dateCreated,
        'dateLastModified': dateLastModified,
        'createdBy': createdBy,
        'lastModifiedBy': lastModifiedBy
    };

    getTypeName() => "EntityInfo";
    TypeContext? context = _ctx;
}

class CustomerBreadcrumb implements IConvertible
{
    String? id;
    String? name;

    CustomerBreadcrumb({this.id,this.name});
    CustomerBreadcrumb.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        id = json['id'];
        name = json['name'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'id': id,
        'name': name
    };

    getTypeName() => "CustomerBreadcrumb";
    TypeContext? context = _ctx;
}

enum EndpointTypes
{
    PhoneNumber,
    User,
    FaxNumber,
    EmailAddress,
    Unused_1,
    Unused_2,
    Unused_3,
    Unused_4,
    Unused_5,
    Team,
}

class Value implements IConvertible
{
    bool? boolValue;
    String? stringValue;
    double? numberValue;
    List<Struct>? listValue;
    Struct? structValue;

    Value({this.boolValue,this.stringValue,this.numberValue,this.listValue,this.structValue});
    Value.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        boolValue = json['boolValue'];
        stringValue = json['stringValue'];
        numberValue = JsonConverters.toDouble(json['numberValue']);
        listValue = JsonConverters.fromJson(json['listValue'],'List<Struct>',context!);
        structValue = JsonConverters.fromJson(json['structValue'],'Struct',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'boolValue': boolValue,
        'stringValue': stringValue,
        'numberValue': numberValue,
        'listValue': JsonConverters.toJson(listValue,'List<Struct>',context!),
        'structValue': JsonConverters.toJson(structValue,'Struct',context!)
    };

    getTypeName() => "Value";
    TypeContext? context = _ctx;
}

class Struct extends Map<String,Value?> implements IConvertible
{
    Struct();
    Struct.fromJson(Map<String, dynamic> json) : super.fromJson(json);
    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson();
    getTypeName() => "Struct";
    TypeContext? context = _ctx;
}

enum EndpointFlowSchedules
{
    Always,
    Scheduled,
    Simple,
}

enum SimpleSchedulingRuleTypes
{
    Always,
    CustomerState,
    Time,
}

class ScheduleDay implements IConvertible
{
    int? offset;
    DayOfWeek? dayOfWeek;

    ScheduleDay({this.offset,this.dayOfWeek});
    ScheduleDay.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        offset = json['offset'];
        dayOfWeek = JsonConverters.fromJson(json['dayOfWeek'],'DayOfWeek',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'offset': offset,
        'dayOfWeek': JsonConverters.toJson(dayOfWeek,'DayOfWeek',context!)
    };

    getTypeName() => "ScheduleDay";
    TypeContext? context = _ctx;
}

enum SchedulingRuleFrequency
{
    None,
    Secondly,
    Minutely,
    Hourly,
    Daily,
    Weekly,
    Monthly,
    Yearly,
}

class SchedulingRule implements IConvertible
{
    String? id;
    String? name;
    int? priority;
    String? state;
    String? source;
    String? condition;
    SimpleSchedulingRuleTypes? simpleRuleType;
    String? customerState;
    String? flowId;
    Struct? flowParams;
    bool? isAllDay;
    String? startDate;
    String? startTime;
    String? endTime;
    List<int>? bySetPosition;
    List<int>? byMonth;
    List<int>? byWeekNo;
    List<int>? byYearDay;
    List<int>? byMonthDay;
    List<ScheduleDay>? byDay;
    List<int>? byHour;
    List<int>? byMinute;
    int? interval;
    int? count;
    String? untilDate;
    SchedulingRuleFrequency? frequency;

    SchedulingRule({this.id,this.name,this.priority,this.state,this.source,this.condition,this.simpleRuleType,this.customerState,this.flowId,this.flowParams,this.isAllDay,this.startDate,this.startTime,this.endTime,this.bySetPosition,this.byMonth,this.byWeekNo,this.byYearDay,this.byMonthDay,this.byDay,this.byHour,this.byMinute,this.interval,this.count,this.untilDate,this.frequency});
    SchedulingRule.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        id = json['id'];
        name = json['name'];
        priority = json['priority'];
        state = json['state'];
        source = json['source'];
        condition = json['condition'];
        simpleRuleType = JsonConverters.fromJson(json['simpleRuleType'],'SimpleSchedulingRuleTypes',context!);
        customerState = json['customerState'];
        flowId = json['flowId'];
        flowParams = JsonConverters.fromJson(json['flowParams'],'Struct',context!);
        isAllDay = json['isAllDay'];
        startDate = json['startDate'];
        startTime = json['startTime'];
        endTime = json['endTime'];
        bySetPosition = JsonConverters.fromJson(json['bySetPosition'],'List<int>',context!);
        byMonth = JsonConverters.fromJson(json['byMonth'],'List<int>',context!);
        byWeekNo = JsonConverters.fromJson(json['byWeekNo'],'List<int>',context!);
        byYearDay = JsonConverters.fromJson(json['byYearDay'],'List<int>',context!);
        byMonthDay = JsonConverters.fromJson(json['byMonthDay'],'List<int>',context!);
        byDay = JsonConverters.fromJson(json['byDay'],'List<ScheduleDay>',context!);
        byHour = JsonConverters.fromJson(json['byHour'],'List<int>',context!);
        byMinute = JsonConverters.fromJson(json['byMinute'],'List<int>',context!);
        interval = json['interval'];
        count = json['count'];
        untilDate = json['untilDate'];
        frequency = JsonConverters.fromJson(json['frequency'],'SchedulingRuleFrequency',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'id': id,
        'name': name,
        'priority': priority,
        'state': state,
        'source': source,
        'condition': condition,
        'simpleRuleType': JsonConverters.toJson(simpleRuleType,'SimpleSchedulingRuleTypes',context!),
        'customerState': customerState,
        'flowId': flowId,
        'flowParams': JsonConverters.toJson(flowParams,'Struct',context!),
        'isAllDay': isAllDay,
        'startDate': startDate,
        'startTime': startTime,
        'endTime': endTime,
        'bySetPosition': JsonConverters.toJson(bySetPosition,'List<int>',context!),
        'byMonth': JsonConverters.toJson(byMonth,'List<int>',context!),
        'byWeekNo': JsonConverters.toJson(byWeekNo,'List<int>',context!),
        'byYearDay': JsonConverters.toJson(byYearDay,'List<int>',context!),
        'byMonthDay': JsonConverters.toJson(byMonthDay,'List<int>',context!),
        'byDay': JsonConverters.toJson(byDay,'List<ScheduleDay>',context!),
        'byHour': JsonConverters.toJson(byHour,'List<int>',context!),
        'byMinute': JsonConverters.toJson(byMinute,'List<int>',context!),
        'interval': interval,
        'count': count,
        'untilDate': untilDate,
        'frequency': JsonConverters.toJson(frequency,'SchedulingRuleFrequency',context!)
    };

    getTypeName() => "SchedulingRule";
    TypeContext? context = _ctx;
}

class Schedule implements IConvertible
{
    String? timeZoneId;
    bool? inherit;
    bool? forceClosed;
    List<SchedulingRule>? rules;
    String? defaultState;

    Schedule({this.timeZoneId,this.inherit,this.forceClosed,this.rules,this.defaultState});
    Schedule.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        timeZoneId = json['timeZoneId'];
        inherit = json['inherit'];
        forceClosed = json['forceClosed'];
        rules = JsonConverters.fromJson(json['rules'],'List<SchedulingRule>',context!);
        defaultState = json['defaultState'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'timeZoneId': timeZoneId,
        'inherit': inherit,
        'forceClosed': forceClosed,
        'rules': JsonConverters.toJson(rules,'List<SchedulingRule>',context!),
        'defaultState': defaultState
    };

    getTypeName() => "Schedule";
    TypeContext? context = _ctx;
}

class ScheduledFlow implements IConvertible
{
    String? stateName;
    String? flowId;
    Struct? flowParams;

    ScheduledFlow({this.stateName,this.flowId,this.flowParams});
    ScheduledFlow.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        stateName = json['stateName'];
        flowId = json['flowId'];
        flowParams = JsonConverters.fromJson(json['flowParams'],'Struct',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'stateName': stateName,
        'flowId': flowId,
        'flowParams': JsonConverters.toJson(flowParams,'Struct',context!)
    };

    getTypeName() => "ScheduledFlow";
    TypeContext? context = _ctx;
}

enum TwilioSipRegions
{
    NorthAmericaVirginia,
    NorthAmericaOregon,
    EuropeIreland,
    EuropeFrankfurt,
    AsiaPacificSingapore,
    AsiaPacificTokyo,
    AsiaPacificSydney,
    SouthAmericaSanPaolo,
}

enum AgentStates
{
    Unknown,
    Ready,
    NotReady,
    LoggedOut,
    WrapUp,
    Outgoing,
    Other,
}

enum AgentStateReasons
{
    Unknown,
    SetByUser,
    MissedCall,
    SetBySystem,
}

enum UserModes
{
    SoftPhone,
    Sip,
    Flow,
    DataOnly,
    ThirdParty,
}

enum UserManagerRoles
{
    None,
    Manager,
    VoicemailAndCallHistory,
    Custom,
}

enum DashboardPermissions
{
    ViewFiles,
    ViewNotifications,
    ViewSessions,
    ViewEndpoints,
    ViewReports,
    ViewCustomers,
    ViewFlows,
}

enum UserDataFieldModes
{
    Hidden,
    ReadOnly,
    ReadWrite,
}

enum TagColors
{
    Magenta,
    Red,
    Volcano,
    Orange,
    Gold,
    Lime,
    Green,
    Cyan,
    Blue,
    GeekBlue,
    Purple,
}

class Tag implements IConvertible
{
    String? id;
    String? name;
    TagColors? color;

    Tag({this.id,this.name,this.color});
    Tag.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        id = json['id'];
        name = json['name'];
        color = JsonConverters.fromJson(json['color'],'TagColors',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'id': id,
        'name': name,
        'color': JsonConverters.toJson(color,'TagColors',context!)
    };

    getTypeName() => "Tag";
    TypeContext? context = _ctx;
}

enum ActionUrlHttpMethods
{
    GET,
    POST,
}

class EndpointActionUrl implements IConvertible
{
    String? id;
    String? url;
    ActionUrlHttpMethods? method;

    EndpointActionUrl({this.id,this.url,this.method});
    EndpointActionUrl.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        id = json['id'];
        url = json['url'];
        method = JsonConverters.fromJson(json['method'],'ActionUrlHttpMethods',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'id': id,
        'url': url,
        'method': JsonConverters.toJson(method,'ActionUrlHttpMethods',context!)
    };

    getTypeName() => "EndpointActionUrl";
    TypeContext? context = _ctx;
}

enum CustomerVisibility
{
    None,
    CurrentCustomer,
    CurrentAndChildCustomers,
}

class EndpointContact implements IConvertible
{
    String? id;
    String? displayName;
    String? address;

    EndpointContact({this.id,this.displayName,this.address});
    EndpointContact.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        id = json['id'];
        displayName = json['displayName'];
        address = json['address'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'id': id,
        'displayName': displayName,
        'address': address
    };

    getTypeName() => "EndpointContact";
    TypeContext? context = _ctx;
}

class IntegrationData implements IConvertible
{
    String? thirdPartyId;

    IntegrationData({this.thirdPartyId});
    IntegrationData.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        thirdPartyId = json['thirdPartyId'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'thirdPartyId': thirdPartyId
    };

    getTypeName() => "IntegrationData";
    TypeContext? context = _ctx;
}

class EntityIntegrationData extends Map<String,IntegrationData?> implements IConvertible
{
    EntityIntegrationData();
    EntityIntegrationData.fromJson(Map<String, dynamic> json) : super.fromJson(json);
    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson();
    getTypeName() => "EntityIntegrationData";
    TypeContext? context = _ctx;
}

enum ThirdPartyPhoneSystemTypes
{
    Demo,
    Sip,
}

enum TransportTypes
{
    UDP,
    TLS,
    TCP,
    PERS,
}

enum AudioCodecTypes
{
    PCMU,
    GSM,
    PCMA,
    G722,
    G729,
    ILBC,
    AMR,
    AMRWB,
    SPEEX,
    DTMF,
    SPEEXWB,
    ISACWB,
    ISACSWB,
    OPUS,
    G7221,
    NONE,
}

enum DtmfMethods
{
    RFC2833,
    INFO,
}

class ThirdPartySipAccountSettings implements IConvertible
{
    String? number;
    String? agent;
    String? authName;
    String? userName;
    String? displayName;
    String? password;
    String? userDomain;
    int? registrationExpires;
    TransportTypes? transportType;
    String? localIP;
    int? localPort;
    String? sipServer;
    int? sipServerPort;
    String? outboundServer;
    int? outboundServerPort;
    String? stunServer;
    int? stunPort;
    String? audioPlaybackDeviceName;
    String? audioRecordingDeviceName;
    List<AudioCodecTypes>? audioCodecs;
    DtmfMethods? dtmfMethod;

    ThirdPartySipAccountSettings({this.number,this.agent,this.authName,this.userName,this.displayName,this.password,this.userDomain,this.registrationExpires,this.transportType,this.localIP,this.localPort,this.sipServer,this.sipServerPort,this.outboundServer,this.outboundServerPort,this.stunServer,this.stunPort,this.audioPlaybackDeviceName,this.audioRecordingDeviceName,this.audioCodecs,this.dtmfMethod});
    ThirdPartySipAccountSettings.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        number = json['number'];
        agent = json['agent'];
        authName = json['authName'];
        userName = json['userName'];
        displayName = json['displayName'];
        password = json['password'];
        userDomain = json['userDomain'];
        registrationExpires = json['registrationExpires'];
        transportType = JsonConverters.fromJson(json['transportType'],'TransportTypes',context!);
        localIP = json['localIP'];
        localPort = json['localPort'];
        sipServer = json['sipServer'];
        sipServerPort = json['sipServerPort'];
        outboundServer = json['outboundServer'];
        outboundServerPort = json['outboundServerPort'];
        stunServer = json['stunServer'];
        stunPort = json['stunPort'];
        audioPlaybackDeviceName = json['audioPlaybackDeviceName'];
        audioRecordingDeviceName = json['audioRecordingDeviceName'];
        audioCodecs = JsonConverters.fromJson(json['audioCodecs'],'List<AudioCodecTypes>',context!);
        dtmfMethod = JsonConverters.fromJson(json['dtmfMethod'],'DtmfMethods',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'number': number,
        'agent': agent,
        'authName': authName,
        'userName': userName,
        'displayName': displayName,
        'password': password,
        'userDomain': userDomain,
        'registrationExpires': registrationExpires,
        'transportType': JsonConverters.toJson(transportType,'TransportTypes',context!),
        'localIP': localIP,
        'localPort': localPort,
        'sipServer': sipServer,
        'sipServerPort': sipServerPort,
        'outboundServer': outboundServer,
        'outboundServerPort': outboundServerPort,
        'stunServer': stunServer,
        'stunPort': stunPort,
        'audioPlaybackDeviceName': audioPlaybackDeviceName,
        'audioRecordingDeviceName': audioRecordingDeviceName,
        'audioCodecs': JsonConverters.toJson(audioCodecs,'List<AudioCodecTypes>',context!),
        'dtmfMethod': JsonConverters.toJson(dtmfMethod,'DtmfMethods',context!)
    };

    getTypeName() => "ThirdPartySipAccountSettings";
    TypeContext? context = _ctx;
}

class ThirdPartySipSettings implements IConvertible
{
    List<ThirdPartySipAccountSettings>? accounts;

    ThirdPartySipSettings({this.accounts});
    ThirdPartySipSettings.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        accounts = JsonConverters.fromJson(json['accounts'],'List<ThirdPartySipAccountSettings>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'accounts': JsonConverters.toJson(accounts,'List<ThirdPartySipAccountSettings>',context!)
    };

    getTypeName() => "ThirdPartySipSettings";
    TypeContext? context = _ctx;
}

class ThirdPartyDemoSettings implements IConvertible
{
    String? extension;

    ThirdPartyDemoSettings({this.extension});
    ThirdPartyDemoSettings.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        extension = json['extension'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'extension': extension
    };

    getTypeName() => "ThirdPartyDemoSettings";
    TypeContext? context = _ctx;
}

class ThirdPartyPhoneSystemSettings implements IConvertible
{
    ThirdPartyPhoneSystemTypes? type;
    ThirdPartySipSettings? sipSettings;
    ThirdPartyDemoSettings? demoSettings;

    ThirdPartyPhoneSystemSettings({this.type,this.sipSettings,this.demoSettings});
    ThirdPartyPhoneSystemSettings.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        type = JsonConverters.fromJson(json['type'],'ThirdPartyPhoneSystemTypes',context!);
        sipSettings = JsonConverters.fromJson(json['sipSettings'],'ThirdPartySipSettings',context!);
        demoSettings = JsonConverters.fromJson(json['demoSettings'],'ThirdPartyDemoSettings',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'type': JsonConverters.toJson(type,'ThirdPartyPhoneSystemTypes',context!),
        'sipSettings': JsonConverters.toJson(sipSettings,'ThirdPartySipSettings',context!),
        'demoSettings': JsonConverters.toJson(demoSettings,'ThirdPartyDemoSettings',context!)
    };

    getTypeName() => "ThirdPartyPhoneSystemSettings";
    TypeContext? context = _ctx;
}

class AppSettings implements IConvertible
{
    bool? enablePhoneNumberManagement;
    bool? enableDeviceManagement;
    bool? enableDialer;
    bool? enableCallHistory;
    bool? showFileNameInMessageCenter;
    String? chakraTheme;
    String? customCss;
    String? pageTitle;
    String? stringMappings;
    String? logoutUrl;
    String? portMyNumberUrl;

    AppSettings({this.enablePhoneNumberManagement,this.enableDeviceManagement,this.enableDialer,this.enableCallHistory,this.showFileNameInMessageCenter,this.chakraTheme,this.customCss,this.pageTitle,this.stringMappings,this.logoutUrl,this.portMyNumberUrl});
    AppSettings.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        enablePhoneNumberManagement = json['enablePhoneNumberManagement'];
        enableDeviceManagement = json['enableDeviceManagement'];
        enableDialer = json['enableDialer'];
        enableCallHistory = json['enableCallHistory'];
        showFileNameInMessageCenter = json['showFileNameInMessageCenter'];
        chakraTheme = json['chakraTheme'];
        customCss = json['customCss'];
        pageTitle = json['pageTitle'];
        stringMappings = json['stringMappings'];
        logoutUrl = json['logoutUrl'];
        portMyNumberUrl = json['portMyNumberUrl'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'enablePhoneNumberManagement': enablePhoneNumberManagement,
        'enableDeviceManagement': enableDeviceManagement,
        'enableDialer': enableDialer,
        'enableCallHistory': enableCallHistory,
        'showFileNameInMessageCenter': showFileNameInMessageCenter,
        'chakraTheme': chakraTheme,
        'customCss': customCss,
        'pageTitle': pageTitle,
        'stringMappings': stringMappings,
        'logoutUrl': logoutUrl,
        'portMyNumberUrl': portMyNumberUrl
    };

    getTypeName() => "AppSettings";
    TypeContext? context = _ctx;
}

class EndpointInfo extends EntityInfo implements IConvertible
{
    /**
    * The account ID this endpoint is associated with
    */
    // @ApiMember(Description="The account ID this endpoint is associated with")
    String? accountId;

    /**
    * The name of the account this endpoint is associated with
    */
    // @ApiMember(Description="The name of the account this endpoint is associated with")
    String? accountName;

    /**
    * The ID of the customer this endpoint is associated with
    */
    // @ApiMember(Description="The ID of the customer this endpoint is associated with")
    String? customerId;

    /**
    * The name of the customer this endpoint is associated with
    */
    // @ApiMember(Description="The name of the customer this endpoint is associated with")
    String? customerName;

    /**
    * The third party reference ID for the endpoint
    */
    // @ApiMember(Description="The third party reference ID for the endpoint")
    String? referenceId;

    /**
    * The breadcrumb to the customer for this endpoint
    */
    // @ApiMember(Description="The breadcrumb to the customer for this endpoint")
    List<CustomerBreadcrumb>? customerBreadcrumb;

    /**
    * The display name of the endpoint
    */
    // @ApiMember(Description="The display name of the endpoint")
    String? displayName;

    /**
    * The type of endpoint
    */
    // @ApiMember(Description="The type of endpoint")
    EndpointTypes? type;

    /**
    * Extra info for this endpoint (typically to show in grid)
    */
    // @ApiMember(Description="Extra info for this endpoint (typically to show in grid)")
    String? extraInformation;

    /**
    * The ID of the flow to use for voice
    */
    // @ApiMember(Description="The ID of the flow to use for voice")
    String? flowId;

    /**
    * The name of the flow to use for voice
    */
    // @ApiMember(Description="The name of the flow to use for voice")
    String? flowName;

    /**
    * The params for the voice flow
    */
    // @ApiMember(Description="The params for the voice flow")
    Struct? flowParams;

    /**
    * Whether to use a single flow always or use scheduled flow system
    */
    // @ApiMember(Description="Whether to use a single flow always or use scheduled flow system")
    EndpointFlowSchedules? flowSchedule;

    /**
    * This endpoint's schedule
    */
    // @ApiMember(Description="This endpoint's schedule")
    Schedule? schedule;

    /**
    * The list of scheduled flows when using scheduling
    */
    // @ApiMember(Description="The list of scheduled flows when using scheduling")
    List<ScheduledFlow>? scheduledFlows;

    /**
    * Disable SMS
    */
    // @ApiMember(Description="Disable SMS")
    bool? disableSms;

    /**
    * Set this to true to prevent Evo Voice from overriding the 10DLC / SMS settings for this number
    */
    // @ApiMember(Description="Set this to true to prevent Evo Voice from overriding the 10DLC / SMS settings for this number")
    bool? useExternal10DlcCampaign;

    /**
    * Is this a virtual phone number?
    */
    // @ApiMember(Description="Is this a virtual phone number?")
    bool? isVirtualPhoneNumber;

    /**
    * Is caller ID verified for this virtual number?
    */
    // @ApiMember(Description="Is caller ID verified for this virtual number?")
    bool? isCallerIdVerified;

    /**
    * The verification code for this number
    */
    // @ApiMember(Description="The verification code for this number")
    String? callerIdVerificationCode;

    /**
    * The phone number
    */
    // @ApiMember(Description="The phone number")
    String? phoneNumber;

    /**
    * The Sid of the phone number
    */
    // @ApiMember(Description="The Sid of the phone number")
    String? phoneNumberSid;

    /**
    * The caller ID Name (CNAM) for the phone number
    */
    // @ApiMember(Description="The caller ID Name (CNAM) for the phone number")
    String? callerIdName;

    /**
    * The address SID associated with the phone number
    */
    // @ApiMember(Description="The address SID associated with the phone number")
    String? addressSid;

    /**
    * Do not touch this phone number - for BYOA accounts
    */
    // @ApiMember(Description="Do not touch this phone number - for BYOA accounts")
    bool? doNotTouchPhoneNumber;

    /**
    * Is this number enrolled in a 10DLC messaging service campaign
    */
    // @ApiMember(Description="Is this number enrolled in a 10DLC messaging service campaign")
    bool? isEnrolledIn10DlcService;

    /**
    * Whether we look up caller ID or not
    */
    // @ApiMember(Description="Whether we look up caller ID or not")
    bool? enableCallerIdLookup;

    /**
    * The email address of the user
    */
    // @ApiMember(Description="The email address of the user")
    String? userEmailAddress;

    /**
    * The Twilio Region for the SIP endpoint
    */
    // @ApiMember(Description="The Twilio Region for the SIP endpoint")
    TwilioSipRegions? sipRegion;

    /**
    * The Twilio Sid of the credentials for Sip
    */
    // @ApiMember(Description="The Twilio Sid of the credentials for Sip")
    String? sipCredentialSid;

    /**
    * The Twilio SIP user name
    */
    // @ApiMember(Description="The Twilio SIP user name")
    String? sipUserName;

    /**
    * The Twilio SIP password
    */
    // @ApiMember(Description="The Twilio SIP password")
    String? sipPassword;

    /**
    * The SIP domain
    */
    // @ApiMember(Description="The SIP domain")
    String? sipDomain;

    /**
    * Is emergency calling enabled on this number?
    */
    // @ApiMember(Description="Is emergency calling enabled on this number?")
    bool? enableEmergencyCalling;

    /**
    * The SID of the emergency address for this number
    */
    // @ApiMember(Description="The SID of the emergency address for this number")
    String? emergencyAddressSid;

    /**
    * The ID of the phone number to use for emergency dialing
    */
    // @ApiMember(Description="The ID of the phone number to use for emergency dialing")
    String? emergencyPhoneNumberId;

    /**
    * The current agent state of this user endpoint
    */
    // @ApiMember(Description="The current agent state of this user endpoint")
    AgentStates? agentState;

    /**
    * The current agent state reason of this user endpoint
    */
    // @ApiMember(Description="The current agent state reason of this user endpoint")
    AgentStateReasons? agentStateReason;

    /**
    * The mode for this user
    */
    // @ApiMember(Description="The mode for this user")
    UserModes? userMode;

    /**
    * The ID of the file to use for voicemail greeting
    */
    // @ApiMember(Description="The ID of the file to use for voicemail greeting")
    String? voicemailGreetingId;

    /**
    * The endpoint's data
    */
    // @ApiMember(Description="The endpoint's data")
    Struct? data;

    /**
    * The email address for email endpoints
    */
    // @ApiMember(Description="The email address for email endpoints")
    String? emailAddress;

    /**
    * The first name of the user (for user endpoints)
    */
    // @ApiMember(Description="The first name of the user (for user endpoints)")
    String? userFirstName;

    /**
    * The last name of the user (for user endpoints)
    */
    // @ApiMember(Description="The last name of the user (for user endpoints)")
    String? userLastName;

    /**
    * The URL of an image for this user's avatar
    */
    // @ApiMember(Description="The URL of an image for this user's avatar")
    String? avatarUrl;

    /**
    * Does this user have manager role?
    */
    // @ApiMember(Description="Does this user have manager role?")
    UserManagerRoles? managerRole;

    /**
    * The list of dashboard permissions for when the manager role is custom
    */
    // @ApiMember(Description="The list of dashboard permissions for when the manager role is custom")
    List<DashboardPermissions>? dashboardPermissions;

    /**
    * The type of visibility this user has to their own fields
    */
    // @ApiMember(Description="The type of visibility this user has to their own fields")
    UserDataFieldModes? myFieldPermissions;

    /**
    * The type of visibility this user has to customer fields
    */
    // @ApiMember(Description="The type of visibility this user has to customer fields")
    UserDataFieldModes? customerFieldPermissions;

    /**
    * The type of visibility this user has to other user fields
    */
    // @ApiMember(Description="The type of visibility this user has to other user fields")
    UserDataFieldModes? otherUserFieldPermissions;

    /**
    * The type of visibility this user has to other endpoint fields
    */
    // @ApiMember(Description="The type of visibility this user has to other endpoint fields")
    UserDataFieldModes? otherEndpointFieldPermissions;

    /**
    * The name of this endpoint (for bots etc.)
    */
    // @ApiMember(Description="The name of this endpoint (for bots etc.)")
    String? name;

    /**
    * The list of tags for this endpoint
    */
    // @ApiMember(Description="The list of tags for this endpoint")
    List<Tag>? tags;

    /**
    * The list of action URLs
    */
    // @ApiMember(Description="The list of action URLs")
    List<EndpointActionUrl>? actionUrls;

    /**
    * The list of members in this team
    */
    // @ApiMember(Description="The list of members in this team")
    List<String>? teamMemberIds;

    /**
    * Visibility of this user/team in contact lists
    */
    // @ApiMember(Description="Visibility of this user/team in contact lists")
    CustomerVisibility? contactListVisibility;

    /**
    * The list of contacts personal to this user
    */
    // @ApiMember(Description="The list of contacts personal to this user")
    List<EndpointContact>? contacts;

    /**
    * The documo ID for this number
    */
    // @ApiMember(Description="The documo ID for this number")
    String? documoId;

    /**
    * Integration data for this endpoint
    */
    // @ApiMember(Description="Integration data for this endpoint")
    EntityIntegrationData? integrationData;

    /**
    * Settings for third party phone system
    */
    // @ApiMember(Description="Settings for third party phone system")
    ThirdPartyPhoneSystemSettings? thirdPartyPhoneSystemSettings;

    /**
    * Should this user override the parent customer's app settings
    */
    // @ApiMember(Description="Should this user override the parent customer's app settings")
    bool? overrideAppSettings;

    /**
    * App / Portal settings for this user
    */
    // @ApiMember(Description="App / Portal settings for this user")
    AppSettings? appSettings;

    EndpointInfo({this.accountId,this.accountName,this.customerId,this.customerName,this.referenceId,this.customerBreadcrumb,this.displayName,this.type,this.extraInformation,this.flowId,this.flowName,this.flowParams,this.flowSchedule,this.schedule,this.scheduledFlows,this.disableSms,this.useExternal10DlcCampaign,this.isVirtualPhoneNumber,this.isCallerIdVerified,this.callerIdVerificationCode,this.phoneNumber,this.phoneNumberSid,this.callerIdName,this.addressSid,this.doNotTouchPhoneNumber,this.isEnrolledIn10DlcService,this.enableCallerIdLookup,this.userEmailAddress,this.sipRegion,this.sipCredentialSid,this.sipUserName,this.sipPassword,this.sipDomain,this.enableEmergencyCalling,this.emergencyAddressSid,this.emergencyPhoneNumberId,this.agentState,this.agentStateReason,this.userMode,this.voicemailGreetingId,this.data,this.emailAddress,this.userFirstName,this.userLastName,this.avatarUrl,this.managerRole,this.dashboardPermissions,this.myFieldPermissions,this.customerFieldPermissions,this.otherUserFieldPermissions,this.otherEndpointFieldPermissions,this.name,this.tags,this.actionUrls,this.teamMemberIds,this.contactListVisibility,this.contacts,this.documoId,this.integrationData,this.thirdPartyPhoneSystemSettings,this.overrideAppSettings,this.appSettings});
    EndpointInfo.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        accountId = json['accountId'];
        accountName = json['accountName'];
        customerId = json['customerId'];
        customerName = json['customerName'];
        referenceId = json['referenceId'];
        customerBreadcrumb = JsonConverters.fromJson(json['customerBreadcrumb'],'List<CustomerBreadcrumb>',context!);
        displayName = json['displayName'];
        type = JsonConverters.fromJson(json['type'],'EndpointTypes',context!);
        extraInformation = json['extraInformation'];
        flowId = json['flowId'];
        flowName = json['flowName'];
        flowParams = JsonConverters.fromJson(json['flowParams'],'Struct',context!);
        flowSchedule = JsonConverters.fromJson(json['flowSchedule'],'EndpointFlowSchedules',context!);
        schedule = JsonConverters.fromJson(json['schedule'],'Schedule',context!);
        scheduledFlows = JsonConverters.fromJson(json['scheduledFlows'],'List<ScheduledFlow>',context!);
        disableSms = json['disableSms'];
        useExternal10DlcCampaign = json['useExternal10DlcCampaign'];
        isVirtualPhoneNumber = json['isVirtualPhoneNumber'];
        isCallerIdVerified = json['isCallerIdVerified'];
        callerIdVerificationCode = json['callerIdVerificationCode'];
        phoneNumber = json['phoneNumber'];
        phoneNumberSid = json['phoneNumberSid'];
        callerIdName = json['callerIdName'];
        addressSid = json['addressSid'];
        doNotTouchPhoneNumber = json['doNotTouchPhoneNumber'];
        isEnrolledIn10DlcService = json['isEnrolledIn10DlcService'];
        enableCallerIdLookup = json['enableCallerIdLookup'];
        userEmailAddress = json['userEmailAddress'];
        sipRegion = JsonConverters.fromJson(json['sipRegion'],'TwilioSipRegions',context!);
        sipCredentialSid = json['sipCredentialSid'];
        sipUserName = json['sipUserName'];
        sipPassword = json['sipPassword'];
        sipDomain = json['sipDomain'];
        enableEmergencyCalling = json['enableEmergencyCalling'];
        emergencyAddressSid = json['emergencyAddressSid'];
        emergencyPhoneNumberId = json['emergencyPhoneNumberId'];
        agentState = JsonConverters.fromJson(json['agentState'],'AgentStates',context!);
        agentStateReason = JsonConverters.fromJson(json['agentStateReason'],'AgentStateReasons',context!);
        userMode = JsonConverters.fromJson(json['userMode'],'UserModes',context!);
        voicemailGreetingId = json['voicemailGreetingId'];
        data = JsonConverters.fromJson(json['data'],'Struct',context!);
        emailAddress = json['emailAddress'];
        userFirstName = json['userFirstName'];
        userLastName = json['userLastName'];
        avatarUrl = json['avatarUrl'];
        managerRole = JsonConverters.fromJson(json['managerRole'],'UserManagerRoles',context!);
        dashboardPermissions = JsonConverters.fromJson(json['dashboardPermissions'],'List<DashboardPermissions>',context!);
        myFieldPermissions = JsonConverters.fromJson(json['myFieldPermissions'],'UserDataFieldModes',context!);
        customerFieldPermissions = JsonConverters.fromJson(json['customerFieldPermissions'],'UserDataFieldModes',context!);
        otherUserFieldPermissions = JsonConverters.fromJson(json['otherUserFieldPermissions'],'UserDataFieldModes',context!);
        otherEndpointFieldPermissions = JsonConverters.fromJson(json['otherEndpointFieldPermissions'],'UserDataFieldModes',context!);
        name = json['name'];
        tags = JsonConverters.fromJson(json['tags'],'List<Tag>',context!);
        actionUrls = JsonConverters.fromJson(json['actionUrls'],'List<EndpointActionUrl>',context!);
        teamMemberIds = JsonConverters.fromJson(json['teamMemberIds'],'List<String>',context!);
        contactListVisibility = JsonConverters.fromJson(json['contactListVisibility'],'CustomerVisibility',context!);
        contacts = JsonConverters.fromJson(json['contacts'],'List<EndpointContact>',context!);
        documoId = json['documoId'];
        integrationData = JsonConverters.fromJson(json['integrationData'],'EntityIntegrationData',context!);
        thirdPartyPhoneSystemSettings = JsonConverters.fromJson(json['thirdPartyPhoneSystemSettings'],'ThirdPartyPhoneSystemSettings',context!);
        overrideAppSettings = json['overrideAppSettings'];
        appSettings = JsonConverters.fromJson(json['appSettings'],'AppSettings',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'accountId': accountId,
        'accountName': accountName,
        'customerId': customerId,
        'customerName': customerName,
        'referenceId': referenceId,
        'customerBreadcrumb': JsonConverters.toJson(customerBreadcrumb,'List<CustomerBreadcrumb>',context!),
        'displayName': displayName,
        'type': JsonConverters.toJson(type,'EndpointTypes',context!),
        'extraInformation': extraInformation,
        'flowId': flowId,
        'flowName': flowName,
        'flowParams': JsonConverters.toJson(flowParams,'Struct',context!),
        'flowSchedule': JsonConverters.toJson(flowSchedule,'EndpointFlowSchedules',context!),
        'schedule': JsonConverters.toJson(schedule,'Schedule',context!),
        'scheduledFlows': JsonConverters.toJson(scheduledFlows,'List<ScheduledFlow>',context!),
        'disableSms': disableSms,
        'useExternal10DlcCampaign': useExternal10DlcCampaign,
        'isVirtualPhoneNumber': isVirtualPhoneNumber,
        'isCallerIdVerified': isCallerIdVerified,
        'callerIdVerificationCode': callerIdVerificationCode,
        'phoneNumber': phoneNumber,
        'phoneNumberSid': phoneNumberSid,
        'callerIdName': callerIdName,
        'addressSid': addressSid,
        'doNotTouchPhoneNumber': doNotTouchPhoneNumber,
        'isEnrolledIn10DlcService': isEnrolledIn10DlcService,
        'enableCallerIdLookup': enableCallerIdLookup,
        'userEmailAddress': userEmailAddress,
        'sipRegion': JsonConverters.toJson(sipRegion,'TwilioSipRegions',context!),
        'sipCredentialSid': sipCredentialSid,
        'sipUserName': sipUserName,
        'sipPassword': sipPassword,
        'sipDomain': sipDomain,
        'enableEmergencyCalling': enableEmergencyCalling,
        'emergencyAddressSid': emergencyAddressSid,
        'emergencyPhoneNumberId': emergencyPhoneNumberId,
        'agentState': JsonConverters.toJson(agentState,'AgentStates',context!),
        'agentStateReason': JsonConverters.toJson(agentStateReason,'AgentStateReasons',context!),
        'userMode': JsonConverters.toJson(userMode,'UserModes',context!),
        'voicemailGreetingId': voicemailGreetingId,
        'data': JsonConverters.toJson(data,'Struct',context!),
        'emailAddress': emailAddress,
        'userFirstName': userFirstName,
        'userLastName': userLastName,
        'avatarUrl': avatarUrl,
        'managerRole': JsonConverters.toJson(managerRole,'UserManagerRoles',context!),
        'dashboardPermissions': JsonConverters.toJson(dashboardPermissions,'List<DashboardPermissions>',context!),
        'myFieldPermissions': JsonConverters.toJson(myFieldPermissions,'UserDataFieldModes',context!),
        'customerFieldPermissions': JsonConverters.toJson(customerFieldPermissions,'UserDataFieldModes',context!),
        'otherUserFieldPermissions': JsonConverters.toJson(otherUserFieldPermissions,'UserDataFieldModes',context!),
        'otherEndpointFieldPermissions': JsonConverters.toJson(otherEndpointFieldPermissions,'UserDataFieldModes',context!),
        'name': name,
        'tags': JsonConverters.toJson(tags,'List<Tag>',context!),
        'actionUrls': JsonConverters.toJson(actionUrls,'List<EndpointActionUrl>',context!),
        'teamMemberIds': JsonConverters.toJson(teamMemberIds,'List<String>',context!),
        'contactListVisibility': JsonConverters.toJson(contactListVisibility,'CustomerVisibility',context!),
        'contacts': JsonConverters.toJson(contacts,'List<EndpointContact>',context!),
        'documoId': documoId,
        'integrationData': JsonConverters.toJson(integrationData,'EntityIntegrationData',context!),
        'thirdPartyPhoneSystemSettings': JsonConverters.toJson(thirdPartyPhoneSystemSettings,'ThirdPartyPhoneSystemSettings',context!),
        'overrideAppSettings': overrideAppSettings,
        'appSettings': JsonConverters.toJson(appSettings,'AppSettings',context!)
    });

    getTypeName() => "EndpointInfo";
    TypeContext? context = _ctx;
}

/**
* Lists all endpoints
*/
// @Api(Description="Lists all endpoints")
class ListEndpoints extends ListRequest<EndpointInfo> implements IConvertible
{
    /**
    * The IDs of the account whose endpoints you want to retrieve
    */
    // @ApiMember(Description="The IDs of the account whose endpoints you want to retrieve")
    List<String>? accountIds;

    /**
    * The IDs of the customers whose endpoints you want to retrieve
    */
    // @ApiMember(Description="The IDs of the customers whose endpoints you want to retrieve")
    List<String>? customerIds;

    /**
    * The third party IDs of endpoints you want to retrieve
    */
    // @ApiMember(Description="The third party IDs of endpoints you want to retrieve")
    List<String>? referenceIds;

    /**
    * If you want a shall parent customer filter (e.g. no deep children)
    */
    // @ApiMember(Description="If you want a shall parent customer filter (e.g. no deep children)")
    bool? shallowParent;

    /**
    * The IDs of the flows whose endpoints you want to retrieve
    */
    // @ApiMember(Description="The IDs of the flows whose endpoints you want to retrieve")
    List<String>? flowIds;

    /**
    * The state where the specified flow IDs should be
    */
    // @ApiMember(Description="The state where the specified flow IDs should be")
    String? flowState;

    /**
    * The list of tag IDs to filter by (must contain all)
    */
    // @ApiMember(Description="The list of tag IDs to filter by (must contain all)")
    List<String>? tagIds;

    /**
    * Filter by name
    */
    // @ApiMember(Description="Filter by name")
    String? nameFilter;

    /**
    * Filter by phone number
    */
    // @ApiMember(Description="Filter by phone number")
    String? phoneNumberFilter;

    /**
    * Filter by type
    */
    // @ApiMember(Description="Filter by type")
    EndpointTypes? type;

    /**
    * Filter by types
    */
    // @ApiMember(Description="Filter by types")
    List<EndpointTypes>? types;

    /**
    * Filter by user mode
    */
    // @ApiMember(Description="Filter by user mode")
    UserModes? userMode;

    /**
    * Filters for any endpoint data fields. Format for each entry should be 'FieldName=Value'. We do not support numeric or boolean currently
    */
    // @ApiMember(Description="Filters for any endpoint data fields. Format for each entry should be 'FieldName=Value'. We do not support numeric or boolean currently")
    List<String>? dataFilters;

    /**
    * Filter by SIP user name
    */
    // @ApiMember(Description="Filter by SIP user name")
    String? sipUserName;

    /**
    * Filter by flow parameters (this must be a JSON struct)
    */
    // @ApiMember(Description="Filter by flow parameters (this must be a JSON struct)")
    String? flowParametersFilter;

    ListEndpoints({this.accountIds,this.customerIds,this.referenceIds,this.shallowParent,this.flowIds,this.flowState,this.tagIds,this.nameFilter,this.phoneNumberFilter,this.type,this.types,this.userMode,this.dataFilters,this.sipUserName,this.flowParametersFilter});
    ListEndpoints.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        accountIds = JsonConverters.fromJson(json['accountIds'],'List<String>',context!);
        customerIds = JsonConverters.fromJson(json['customerIds'],'List<String>',context!);
        referenceIds = JsonConverters.fromJson(json['referenceIds'],'List<String>',context!);
        shallowParent = json['shallowParent'];
        flowIds = JsonConverters.fromJson(json['flowIds'],'List<String>',context!);
        flowState = json['flowState'];
        tagIds = JsonConverters.fromJson(json['tagIds'],'List<String>',context!);
        nameFilter = json['nameFilter'];
        phoneNumberFilter = json['phoneNumberFilter'];
        type = JsonConverters.fromJson(json['type'],'EndpointTypes',context!);
        types = JsonConverters.fromJson(json['types'],'List<EndpointTypes>',context!);
        userMode = JsonConverters.fromJson(json['userMode'],'UserModes',context!);
        dataFilters = JsonConverters.fromJson(json['dataFilters'],'List<String>',context!);
        sipUserName = json['sipUserName'];
        flowParametersFilter = json['flowParametersFilter'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'accountIds': JsonConverters.toJson(accountIds,'List<String>',context!),
        'customerIds': JsonConverters.toJson(customerIds,'List<String>',context!),
        'referenceIds': JsonConverters.toJson(referenceIds,'List<String>',context!),
        'shallowParent': shallowParent,
        'flowIds': JsonConverters.toJson(flowIds,'List<String>',context!),
        'flowState': flowState,
        'tagIds': JsonConverters.toJson(tagIds,'List<String>',context!),
        'nameFilter': nameFilter,
        'phoneNumberFilter': phoneNumberFilter,
        'type': JsonConverters.toJson(type,'EndpointTypes',context!),
        'types': JsonConverters.toJson(types,'List<EndpointTypes>',context!),
        'userMode': JsonConverters.toJson(userMode,'UserModes',context!),
        'dataFilters': JsonConverters.toJson(dataFilters,'List<String>',context!),
        'sipUserName': sipUserName,
        'flowParametersFilter': flowParametersFilter
    });

    getTypeName() => "ListEndpoints";
    TypeContext? context = _ctx;
}

class BillingItem implements IConvertible
{
    double? baseCost;
    double? rawUnitMultiplier;
    double? unitCost;
    int? allowance;

    BillingItem({this.baseCost,this.rawUnitMultiplier,this.unitCost,this.allowance});
    BillingItem.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        baseCost = JsonConverters.toDouble(json['baseCost']);
        rawUnitMultiplier = JsonConverters.toDouble(json['rawUnitMultiplier']);
        unitCost = JsonConverters.toDouble(json['unitCost']);
        allowance = json['allowance'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'baseCost': baseCost,
        'rawUnitMultiplier': rawUnitMultiplier,
        'unitCost': unitCost,
        'allowance': allowance
    };

    getTypeName() => "BillingItem";
    TypeContext? context = _ctx;
}

class BillingSettings implements IConvertible
{
    BillingItem? base;
    BillingItem? localNumbers;
    BillingItem? tollFreeNumbers;
    BillingItem? inboundVoiceCalls;
    BillingItem? outboundVoiceCalls;
    BillingItem? inboundFaxes;
    BillingItem? outboundFaxes;
    BillingItem? inboundSmsMessages;
    BillingItem? outboundSmsMessages;

    BillingSettings({this.base,this.localNumbers,this.tollFreeNumbers,this.inboundVoiceCalls,this.outboundVoiceCalls,this.inboundFaxes,this.outboundFaxes,this.inboundSmsMessages,this.outboundSmsMessages});
    BillingSettings.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        base = JsonConverters.fromJson(json['base'],'BillingItem',context!);
        localNumbers = JsonConverters.fromJson(json['localNumbers'],'BillingItem',context!);
        tollFreeNumbers = JsonConverters.fromJson(json['tollFreeNumbers'],'BillingItem',context!);
        inboundVoiceCalls = JsonConverters.fromJson(json['inboundVoiceCalls'],'BillingItem',context!);
        outboundVoiceCalls = JsonConverters.fromJson(json['outboundVoiceCalls'],'BillingItem',context!);
        inboundFaxes = JsonConverters.fromJson(json['inboundFaxes'],'BillingItem',context!);
        outboundFaxes = JsonConverters.fromJson(json['outboundFaxes'],'BillingItem',context!);
        inboundSmsMessages = JsonConverters.fromJson(json['inboundSmsMessages'],'BillingItem',context!);
        outboundSmsMessages = JsonConverters.fromJson(json['outboundSmsMessages'],'BillingItem',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'base': JsonConverters.toJson(base,'BillingItem',context!),
        'localNumbers': JsonConverters.toJson(localNumbers,'BillingItem',context!),
        'tollFreeNumbers': JsonConverters.toJson(tollFreeNumbers,'BillingItem',context!),
        'inboundVoiceCalls': JsonConverters.toJson(inboundVoiceCalls,'BillingItem',context!),
        'outboundVoiceCalls': JsonConverters.toJson(outboundVoiceCalls,'BillingItem',context!),
        'inboundFaxes': JsonConverters.toJson(inboundFaxes,'BillingItem',context!),
        'outboundFaxes': JsonConverters.toJson(outboundFaxes,'BillingItem',context!),
        'inboundSmsMessages': JsonConverters.toJson(inboundSmsMessages,'BillingItem',context!),
        'outboundSmsMessages': JsonConverters.toJson(outboundSmsMessages,'BillingItem',context!)
    };

    getTypeName() => "BillingSettings";
    TypeContext? context = _ctx;
}

class AccountInfo extends EntityInfo implements IConvertible
{
    /**
    * The name of this account
    */
    // @ApiMember(Description="The name of this account")
    String? name;

    /**
    * The ID of this account's parent
    */
    // @ApiMember(Description="The ID of this account's parent")
    String? parentAccountId;

    /**
    * The twilio account SID
    */
    // @ApiMember(Description="The twilio account SID")
    String? twilioAccountSid;

    /**
    * The ancestors of this account. Useful for breadcrumbs
    */
    // @ApiMember(Description="The ancestors of this account. Useful for breadcrumbs")
    List<String>? ancestorIds;

    /**
    * The max number of phone numbers this account can have
    */
    // @ApiMember(Description="The max number of phone numbers this account can have")
    int? maxPhoneNumbers;

    /**
    * This account is BYOA
    */
    // @ApiMember(Description="This account is BYOA")
    bool? isBYOA;

    /**
    * TrustHub Profile Sid
    */
    // @ApiMember(Description="TrustHub Profile Sid")
    String? trustHubProfileSid;

    /**
    * The ID of the logo file
    */
    // @ApiMember(Description="The ID of the logo file")
    String? logoId;

    /**
    * The URI of the logo file
    */
    // @ApiMember(Description="The URI of the logo file")
    String? logoUri;

    /**
    * The billing settings for this account
    */
    // @ApiMember(Description="The billing settings for this account")
    BillingSettings? billingSettings;

    AccountInfo({this.name,this.parentAccountId,this.twilioAccountSid,this.ancestorIds,this.maxPhoneNumbers,this.isBYOA,this.trustHubProfileSid,this.logoId,this.logoUri,this.billingSettings});
    AccountInfo.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        name = json['name'];
        parentAccountId = json['parentAccountId'];
        twilioAccountSid = json['twilioAccountSid'];
        ancestorIds = JsonConverters.fromJson(json['ancestorIds'],'List<String>',context!);
        maxPhoneNumbers = json['maxPhoneNumbers'];
        isBYOA = json['isBYOA'];
        trustHubProfileSid = json['trustHubProfileSid'];
        logoId = json['logoId'];
        logoUri = json['logoUri'];
        billingSettings = JsonConverters.fromJson(json['billingSettings'],'BillingSettings',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'name': name,
        'parentAccountId': parentAccountId,
        'twilioAccountSid': twilioAccountSid,
        'ancestorIds': JsonConverters.toJson(ancestorIds,'List<String>',context!),
        'maxPhoneNumbers': maxPhoneNumbers,
        'isBYOA': isBYOA,
        'trustHubProfileSid': trustHubProfileSid,
        'logoId': logoId,
        'logoUri': logoUri,
        'billingSettings': JsonConverters.toJson(billingSettings,'BillingSettings',context!)
    });

    getTypeName() => "AccountInfo";
    TypeContext? context = _ctx;
}

class ListResponse<AccountInfo> implements IConvertible
{
    /**
    * The items
    */
    // @ApiMember(Description="The items")
    List<AccountInfo>? items;

    /**
    * The total number of items
    */
    // @ApiMember(Description="The total number of items")
    int? totalCount;

    /**
    * The total number of pages
    */
    // @ApiMember(Description="The total number of pages")
    int? totalPages;

    /**
    * Are there more pages of items? Used with simplified paging
    */
    // @ApiMember(Description="Are there more pages of items? Used with simplified paging")
    bool? hasMorePages;

    ListResponse({this.items,this.totalCount,this.totalPages,this.hasMorePages});
    ListResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        items = JsonConverters.fromJson(json['items'],'List<${runtimeGenericTypeDefs(this,[0]).join(",")}>',context!);
        totalCount = json['totalCount'];
        totalPages = json['totalPages'];
        hasMorePages = json['hasMorePages'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'items': JsonConverters.toJson(items,'List<AccountInfo>',context!),
        'totalCount': totalCount,
        'totalPages': totalPages,
        'hasMorePages': hasMorePages
    };

    getTypeName() => "ListResponse<$AccountInfo>";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'evovoice.io', types: <String, TypeInfo> {
    'SortOrders': TypeInfo(TypeOf.Enum, enumValues:SortOrders.values),
    'ListRequest<T>': TypeInfo(TypeOf.AbstractClass),
    'EntityInfo': TypeInfo(TypeOf.AbstractClass),
    'CustomerBreadcrumb': TypeInfo(TypeOf.Class, create:() => CustomerBreadcrumb()),
    'EndpointTypes': TypeInfo(TypeOf.Enum, enumValues:EndpointTypes.values),
    'Value': TypeInfo(TypeOf.Class, create:() => Value()),
    'List<Struct>': TypeInfo(TypeOf.Class, create:() => <Struct>[]),
    'Struct': TypeInfo(TypeOf.Class, create:() => Struct()),
    'EndpointFlowSchedules': TypeInfo(TypeOf.Enum, enumValues:EndpointFlowSchedules.values),
    'SimpleSchedulingRuleTypes': TypeInfo(TypeOf.Enum, enumValues:SimpleSchedulingRuleTypes.values),
    'ScheduleDay': TypeInfo(TypeOf.Class, create:() => ScheduleDay()),
    'DayOfWeek': TypeInfo(TypeOf.Class, create:() => DayOfWeek()),
    'SchedulingRuleFrequency': TypeInfo(TypeOf.Enum, enumValues:SchedulingRuleFrequency.values),
    'SchedulingRule': TypeInfo(TypeOf.Class, create:() => SchedulingRule()),
    'List<ScheduleDay>': TypeInfo(TypeOf.Class, create:() => <ScheduleDay>[]),
    'Schedule': TypeInfo(TypeOf.Class, create:() => Schedule()),
    'List<SchedulingRule>': TypeInfo(TypeOf.Class, create:() => <SchedulingRule>[]),
    'ScheduledFlow': TypeInfo(TypeOf.Class, create:() => ScheduledFlow()),
    'TwilioSipRegions': TypeInfo(TypeOf.Enum, enumValues:TwilioSipRegions.values),
    'AgentStates': TypeInfo(TypeOf.Enum, enumValues:AgentStates.values),
    'AgentStateReasons': TypeInfo(TypeOf.Enum, enumValues:AgentStateReasons.values),
    'UserModes': TypeInfo(TypeOf.Enum, enumValues:UserModes.values),
    'UserManagerRoles': TypeInfo(TypeOf.Enum, enumValues:UserManagerRoles.values),
    'DashboardPermissions': TypeInfo(TypeOf.Enum, enumValues:DashboardPermissions.values),
    'UserDataFieldModes': TypeInfo(TypeOf.Enum, enumValues:UserDataFieldModes.values),
    'TagColors': TypeInfo(TypeOf.Enum, enumValues:TagColors.values),
    'Tag': TypeInfo(TypeOf.Class, create:() => Tag()),
    'ActionUrlHttpMethods': TypeInfo(TypeOf.Enum, enumValues:ActionUrlHttpMethods.values),
    'EndpointActionUrl': TypeInfo(TypeOf.Class, create:() => EndpointActionUrl()),
    'CustomerVisibility': TypeInfo(TypeOf.Enum, enumValues:CustomerVisibility.values),
    'EndpointContact': TypeInfo(TypeOf.Class, create:() => EndpointContact()),
    'IntegrationData': TypeInfo(TypeOf.Class, create:() => IntegrationData()),
    'EntityIntegrationData': TypeInfo(TypeOf.Class, create:() => EntityIntegrationData()),
    'ThirdPartyPhoneSystemTypes': TypeInfo(TypeOf.Enum, enumValues:ThirdPartyPhoneSystemTypes.values),
    'TransportTypes': TypeInfo(TypeOf.Enum, enumValues:TransportTypes.values),
    'AudioCodecTypes': TypeInfo(TypeOf.Enum, enumValues:AudioCodecTypes.values),
    'DtmfMethods': TypeInfo(TypeOf.Enum, enumValues:DtmfMethods.values),
    'ThirdPartySipAccountSettings': TypeInfo(TypeOf.Class, create:() => ThirdPartySipAccountSettings()),
    'List<AudioCodecTypes>': TypeInfo(TypeOf.Class, create:() => <AudioCodecTypes>[]),
    'ThirdPartySipSettings': TypeInfo(TypeOf.Class, create:() => ThirdPartySipSettings()),
    'List<ThirdPartySipAccountSettings>': TypeInfo(TypeOf.Class, create:() => <ThirdPartySipAccountSettings>[]),
    'ThirdPartyDemoSettings': TypeInfo(TypeOf.Class, create:() => ThirdPartyDemoSettings()),
    'ThirdPartyPhoneSystemSettings': TypeInfo(TypeOf.Class, create:() => ThirdPartyPhoneSystemSettings()),
    'AppSettings': TypeInfo(TypeOf.Class, create:() => AppSettings()),
    'EndpointInfo': TypeInfo(TypeOf.Class, create:() => EndpointInfo()),
    'List<CustomerBreadcrumb>': TypeInfo(TypeOf.Class, create:() => <CustomerBreadcrumb>[]),
    'List<ScheduledFlow>': TypeInfo(TypeOf.Class, create:() => <ScheduledFlow>[]),
    'List<DashboardPermissions>': TypeInfo(TypeOf.Class, create:() => <DashboardPermissions>[]),
    'List<Tag>': TypeInfo(TypeOf.Class, create:() => <Tag>[]),
    'List<EndpointActionUrl>': TypeInfo(TypeOf.Class, create:() => <EndpointActionUrl>[]),
    'List<EndpointContact>': TypeInfo(TypeOf.Class, create:() => <EndpointContact>[]),
    'ListEndpoints': TypeInfo(TypeOf.Class, create:() => ListEndpoints()),
    'List<EndpointTypes>': TypeInfo(TypeOf.Class, create:() => <EndpointTypes>[]),
    'BillingItem': TypeInfo(TypeOf.Class, create:() => BillingItem()),
    'BillingSettings': TypeInfo(TypeOf.Class, create:() => BillingSettings()),
    'AccountInfo': TypeInfo(TypeOf.Class, create:() => AccountInfo()),
    'ListResponse<AccountInfo>': TypeInfo(TypeOf.Class, create:() => ListResponse<AccountInfo>()),
});

Dart ListEndpoints DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json

To embed the response in a jsonp callback, append ?callback=myCallback

HTTP + JSON

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

GET /endpoints HTTP/1.1 
Host: evovoice.io 
Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{"items":[{"accountId":"String","accountName":"String","customerId":"String","customerName":"String","referenceId":"String","customerBreadcrumb":[{"id":"String","name":"String"}],"displayName":"String","type":"PhoneNumber","extraInformation":"String","flowId":"String","flowName":"String","flowParams":{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[null]}}],"structValue":{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[null]}}}}],"structValue":{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[null]}}],"structValue":{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[null]}}}}}},"flowSchedule":"Always","schedule":{"timeZoneId":"String","inherit":false,"forceClosed":false,"rules":[{"id":"String","name":"String","priority":0,"state":"String","source":"String","condition":"String","simpleRuleType":"Always","customerState":"String","flowId":"String","flowParams":{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[null]}}],"structValue":{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[null]}}}}],"structValue":{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[null]}}],"structValue":{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[null]}}}}}},"isAllDay":false,"startDate":"String","startTime":"String","endTime":"String","bySetPosition":[0],"byMonth":[0],"byWeekNo":[0],"byYearDay":[0],"byMonthDay":[0],"byDay":[{"offset":0,"dayOfWeek":"Sunday"}],"byHour":[0],"byMinute":[0],"interval":0,"count":0,"untilDate":"String","frequency":"None"}],"defaultState":"String"},"scheduledFlows":[{"stateName":"String","flowId":"String","flowParams":{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[null]}}],"structValue":{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[null]}}}}],"structValue":{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[null]}}],"structValue":{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[null]}}}}}}}],"disableSms":false,"useExternal10DlcCampaign":false,"isVirtualPhoneNumber":false,"isCallerIdVerified":false,"callerIdVerificationCode":"String","phoneNumber":"String","phoneNumberSid":"String","callerIdName":"String","addressSid":"String","doNotTouchPhoneNumber":false,"isEnrolledIn10DlcService":false,"enableCallerIdLookup":false,"userEmailAddress":"String","sipRegion":"NorthAmericaVirginia","sipCredentialSid":"String","sipUserName":"String","sipPassword":"String","sipDomain":"String","enableEmergencyCalling":false,"emergencyAddressSid":"String","emergencyPhoneNumberId":"String","agentState":"Unknown","agentStateReason":"Unknown","userMode":"SoftPhone","voicemailGreetingId":"String","data":{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[null]}}],"structValue":{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[null]}}}}],"structValue":{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[null]}}],"structValue":{"String":{"boolValue":false,"stringValue":"String","numberValue":0,"listValue":[null]}}}}}},"emailAddress":"String","userFirstName":"String","userLastName":"String","avatarUrl":"String","managerRole":"None","dashboardPermissions":["ViewFiles"],"myFieldPermissions":"Hidden","customerFieldPermissions":"Hidden","otherUserFieldPermissions":"Hidden","otherEndpointFieldPermissions":"Hidden","name":"String","tags":[{"id":"String","name":"String","color":"Magenta"}],"actionUrls":[{"id":"String","url":"String","method":"GET"}],"teamMemberIds":["String"],"contactListVisibility":"None","contacts":[{"id":"String","displayName":"String","address":"String"}],"documoId":"String","integrationData":{"String":{"thirdPartyId":"String"}},"thirdPartyPhoneSystemSettings":{"type":"Demo","sipSettings":{"accounts":[{"number":"String","agent":"String","authName":"String","userName":"String","displayName":"String","password":"String","userDomain":"String","registrationExpires":0,"transportType":"UDP","localIP":"String","localPort":0,"sipServer":"String","sipServerPort":0,"outboundServer":"String","outboundServerPort":0,"stunServer":"String","stunPort":0,"audioPlaybackDeviceName":"String","audioRecordingDeviceName":"String","audioCodecs":["PCMU"],"dtmfMethod":"RFC2833"}]},"demoSettings":{"extension":"String"}},"overrideAppSettings":false,"appSettings":{"enablePhoneNumberManagement":false,"enableDeviceManagement":false,"enableDialer":false,"enableCallHistory":false,"showFileNameInMessageCenter":false,"chakraTheme":"String","customCss":"String","pageTitle":"String","stringMappings":"String","logoutUrl":"String","portMyNumberUrl":"String"},"id":"String","dateCreated":"String","dateLastModified":"String","createdBy":"String","lastModifiedBy":"String"}],"totalCount":0,"totalPages":0,"hasMorePages":false}