Evo Voice

<back to all web services

ListCustomers

Retrieve customers

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

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;
}

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 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 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 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;
}

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 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 CustomerInfo extends EntityInfo implements IConvertible
{
    /**
    * The ID of the account associated with this customer
    */
    // @ApiMember(Description="The ID of the account associated with this customer")
    String? accountId;

    /**
    * The parent customer ID for this customer
    */
    // @ApiMember(Description="The parent customer ID for this customer")
    String? parentCustomerId;

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

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

    /**
    * Is this customer staging or production?
    */
    // @ApiMember(Description="Is this customer staging or production?")
    bool? isStaging;

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

    /**
    * The reference ID for this company
    */
    // @ApiMember(Description="The reference ID for this company")
    String? referenceId;

    /**
    * This customer's data values
    */
    // @ApiMember(Description="This customer's data values")
    Struct? data;

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

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

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

    /**
    * Override this customer's billing settings? Otherwise inherits from parent
    */
    // @ApiMember(Description="Override this customer's billing settings? Otherwise inherits from parent")
    bool? overrideBillingSettings;

    /**
    * Billing settings for this customer
    */
    // @ApiMember(Description="Billing settings for this customer")
    BillingSettings? billingSettings;

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

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

    CustomerInfo({this.accountId,this.parentCustomerId,this.breadcrumb,this.accountName,this.isStaging,this.name,this.referenceId,this.data,this.tags,this.schedule,this.integrationData,this.overrideBillingSettings,this.billingSettings,this.overrideAppSettings,this.appSettings});
    CustomerInfo.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        accountId = json['accountId'];
        parentCustomerId = json['parentCustomerId'];
        breadcrumb = JsonConverters.fromJson(json['breadcrumb'],'List<CustomerBreadcrumb>',context!);
        accountName = json['accountName'];
        isStaging = json['isStaging'];
        name = json['name'];
        referenceId = json['referenceId'];
        data = JsonConverters.fromJson(json['data'],'Struct',context!);
        tags = JsonConverters.fromJson(json['tags'],'List<Tag>',context!);
        schedule = JsonConverters.fromJson(json['schedule'],'Schedule',context!);
        integrationData = JsonConverters.fromJson(json['integrationData'],'EntityIntegrationData',context!);
        overrideBillingSettings = json['overrideBillingSettings'];
        billingSettings = JsonConverters.fromJson(json['billingSettings'],'BillingSettings',context!);
        overrideAppSettings = json['overrideAppSettings'];
        appSettings = JsonConverters.fromJson(json['appSettings'],'AppSettings',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'accountId': accountId,
        'parentCustomerId': parentCustomerId,
        'breadcrumb': JsonConverters.toJson(breadcrumb,'List<CustomerBreadcrumb>',context!),
        'accountName': accountName,
        'isStaging': isStaging,
        'name': name,
        'referenceId': referenceId,
        'data': JsonConverters.toJson(data,'Struct',context!),
        'tags': JsonConverters.toJson(tags,'List<Tag>',context!),
        'schedule': JsonConverters.toJson(schedule,'Schedule',context!),
        'integrationData': JsonConverters.toJson(integrationData,'EntityIntegrationData',context!),
        'overrideBillingSettings': overrideBillingSettings,
        'billingSettings': JsonConverters.toJson(billingSettings,'BillingSettings',context!),
        'overrideAppSettings': overrideAppSettings,
        'appSettings': JsonConverters.toJson(appSettings,'AppSettings',context!)
    });

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

/**
* Retrieve customers
*/
// @Api(Description="Retrieve customers")
class ListCustomers extends ListRequest<CustomerInfo> implements IConvertible
{
    /**
    * Filter by accounts
    */
    // @ApiMember(Description="Filter by accounts")
    List<String>? accountIds;

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

    /**
    * The IDs of the parent customers you want to filter by
    */
    // @ApiMember(Description="The IDs of the parent customers you want to filter by")
    List<String>? parentCustomerIds;

    /**
    * 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 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;

    ListCustomers({this.accountIds,this.nameFilter,this.parentCustomerIds,this.shallowParent,this.tagIds});
    ListCustomers.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        accountIds = JsonConverters.fromJson(json['accountIds'],'List<String>',context!);
        nameFilter = json['nameFilter'];
        parentCustomerIds = JsonConverters.fromJson(json['parentCustomerIds'],'List<String>',context!);
        shallowParent = json['shallowParent'];
        tagIds = JsonConverters.fromJson(json['tagIds'],'List<String>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'accountIds': JsonConverters.toJson(accountIds,'List<String>',context!),
        'nameFilter': nameFilter,
        'parentCustomerIds': JsonConverters.toJson(parentCustomerIds,'List<String>',context!),
        'shallowParent': shallowParent,
        'tagIds': JsonConverters.toJson(tagIds,'List<String>',context!)
    });

    getTypeName() => "ListCustomers";
    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()),
    'Value': TypeInfo(TypeOf.Class, create:() => Value()),
    'List<Struct>': TypeInfo(TypeOf.Class, create:() => <Struct>[]),
    'Struct': TypeInfo(TypeOf.Class, create:() => Struct()),
    'TagColors': TypeInfo(TypeOf.Enum, enumValues:TagColors.values),
    'Tag': TypeInfo(TypeOf.Class, create:() => Tag()),
    '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>[]),
    'IntegrationData': TypeInfo(TypeOf.Class, create:() => IntegrationData()),
    'EntityIntegrationData': TypeInfo(TypeOf.Class, create:() => EntityIntegrationData()),
    'BillingItem': TypeInfo(TypeOf.Class, create:() => BillingItem()),
    'BillingSettings': TypeInfo(TypeOf.Class, create:() => BillingSettings()),
    'AppSettings': TypeInfo(TypeOf.Class, create:() => AppSettings()),
    'CustomerInfo': TypeInfo(TypeOf.Class, create:() => CustomerInfo()),
    'List<CustomerBreadcrumb>': TypeInfo(TypeOf.Class, create:() => <CustomerBreadcrumb>[]),
    'List<Tag>': TypeInfo(TypeOf.Class, create:() => <Tag>[]),
    'ListCustomers': TypeInfo(TypeOf.Class, create:() => ListCustomers()),
    'AccountInfo': TypeInfo(TypeOf.Class, create:() => AccountInfo()),
    'ListResponse<AccountInfo>': TypeInfo(TypeOf.Class, create:() => ListResponse<AccountInfo>()),
});

Dart ListCustomers DTOs

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

HTTP + XML

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

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

<ListResponseOfCustomerInfoznfKbIMc 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.Customers">
    <d2p1:CustomerInfo>
      <CreatedBy>String</CreatedBy>
      <DateCreated>String</DateCreated>
      <DateLastModified>String</DateLastModified>
      <Id>String</Id>
      <LastModifiedBy>String</LastModifiedBy>
      <d2p1:AccountId>String</d2p1:AccountId>
      <d2p1:AccountName>String</d2p1:AccountName>
      <d2p1:AppSettings>
        <d2p1:ChakraTheme>String</d2p1:ChakraTheme>
        <d2p1:CustomCss>String</d2p1:CustomCss>
        <d2p1:EnableCallHistory>false</d2p1:EnableCallHistory>
        <d2p1:EnableDeviceManagement>false</d2p1:EnableDeviceManagement>
        <d2p1:EnableDialer>false</d2p1:EnableDialer>
        <d2p1:EnablePhoneNumberManagement>false</d2p1:EnablePhoneNumberManagement>
        <d2p1:LogoutUrl>String</d2p1:LogoutUrl>
        <d2p1:PageTitle>String</d2p1:PageTitle>
        <d2p1:PortMyNumberUrl>String</d2p1:PortMyNumberUrl>
        <d2p1:ShowFileNameInMessageCenter>false</d2p1:ShowFileNameInMessageCenter>
        <d2p1:StringMappings>String</d2p1:StringMappings>
      </d2p1:AppSettings>
      <d2p1:BillingSettings xmlns:d4p1="http://schemas.datacontract.org/2004/07/Voice.Api.Accounts">
        <d4p1:Base>
          <d4p1:Allowance>0</d4p1:Allowance>
          <d4p1:BaseCost>0</d4p1:BaseCost>
          <d4p1:RawUnitMultiplier>0</d4p1:RawUnitMultiplier>
          <d4p1:UnitCost>0</d4p1:UnitCost>
        </d4p1:Base>
        <d4p1:InboundFaxes>
          <d4p1:Allowance>0</d4p1:Allowance>
          <d4p1:BaseCost>0</d4p1:BaseCost>
          <d4p1:RawUnitMultiplier>0</d4p1:RawUnitMultiplier>
          <d4p1:UnitCost>0</d4p1:UnitCost>
        </d4p1:InboundFaxes>
        <d4p1:InboundSmsMessages>
          <d4p1:Allowance>0</d4p1:Allowance>
          <d4p1:BaseCost>0</d4p1:BaseCost>
          <d4p1:RawUnitMultiplier>0</d4p1:RawUnitMultiplier>
          <d4p1:UnitCost>0</d4p1:UnitCost>
        </d4p1:InboundSmsMessages>
        <d4p1:InboundVoiceCalls>
          <d4p1:Allowance>0</d4p1:Allowance>
          <d4p1:BaseCost>0</d4p1:BaseCost>
          <d4p1:RawUnitMultiplier>0</d4p1:RawUnitMultiplier>
          <d4p1:UnitCost>0</d4p1:UnitCost>
        </d4p1:InboundVoiceCalls>
        <d4p1:LocalNumbers>
          <d4p1:Allowance>0</d4p1:Allowance>
          <d4p1:BaseCost>0</d4p1:BaseCost>
          <d4p1:RawUnitMultiplier>0</d4p1:RawUnitMultiplier>
          <d4p1:UnitCost>0</d4p1:UnitCost>
        </d4p1:LocalNumbers>
        <d4p1:OutboundFaxes>
          <d4p1:Allowance>0</d4p1:Allowance>
          <d4p1:BaseCost>0</d4p1:BaseCost>
          <d4p1:RawUnitMultiplier>0</d4p1:RawUnitMultiplier>
          <d4p1:UnitCost>0</d4p1:UnitCost>
        </d4p1:OutboundFaxes>
        <d4p1:OutboundSmsMessages>
          <d4p1:Allowance>0</d4p1:Allowance>
          <d4p1:BaseCost>0</d4p1:BaseCost>
          <d4p1:RawUnitMultiplier>0</d4p1:RawUnitMultiplier>
          <d4p1:UnitCost>0</d4p1:UnitCost>
        </d4p1:OutboundSmsMessages>
        <d4p1:OutboundVoiceCalls>
          <d4p1:Allowance>0</d4p1:Allowance>
          <d4p1:BaseCost>0</d4p1:BaseCost>
          <d4p1:RawUnitMultiplier>0</d4p1:RawUnitMultiplier>
          <d4p1:UnitCost>0</d4p1:UnitCost>
        </d4p1:OutboundVoiceCalls>
        <d4p1:TollFreeNumbers>
          <d4p1:Allowance>0</d4p1:Allowance>
          <d4p1:BaseCost>0</d4p1:BaseCost>
          <d4p1:RawUnitMultiplier>0</d4p1:RawUnitMultiplier>
          <d4p1:UnitCost>0</d4p1:UnitCost>
        </d4p1:TollFreeNumbers>
      </d2p1:BillingSettings>
      <d2p1:Breadcrumb>
        <d2p1:CustomerBreadcrumb>
          <d2p1:Id>String</d2p1:Id>
          <d2p1:Name>String</d2p1:Name>
        </d2p1:CustomerBreadcrumb>
      </d2p1:Breadcrumb>
      <d2p1:Data xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
        <d4p1:KeyValueOfstringValue8Ahp2kgT>
          <d4p1:Key>String</d4p1:Key>
          <d4p1:Value xmlns:d6p1="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">
            <d6p1:BoolValue>false</d6p1:BoolValue>
            <d6p1:ListValue>
              <d4p1:ArrayOfKeyValueOfstringValue8Ahp2kgT>
                <d4p1:KeyValueOfstringValue8Ahp2kgT>
                  <d4p1:Key>String</d4p1:Key>
                  <d4p1:Value>
                    <d6p1:BoolValue>false</d6p1:BoolValue>
                    <d6p1:ListValue>
                      <d4p1:ArrayOfKeyValueOfstringValue8Ahp2kgT>
                        <d4p1:KeyValueOfstringValue8Ahp2kgT>
                          <d4p1:Key>String</d4p1:Key>
                          <d4p1:Value>
                            <d6p1:BoolValue>false</d6p1:BoolValue>
                            <d6p1:ListValue>
                              <d4p1:ArrayOfKeyValueOfstringValue8Ahp2kgT i:nil="true" />
                            </d6p1:ListValue>
                            <d6p1:NumberValue>0</d6p1:NumberValue>
                            <d6p1:StringValue>String</d6p1:StringValue>
                            <d6p1:StructValue i:nil="true" />
                          </d4p1:Value>
                        </d4p1:KeyValueOfstringValue8Ahp2kgT>
                      </d4p1:ArrayOfKeyValueOfstringValue8Ahp2kgT>
                    </d6p1:ListValue>
                    <d6p1:NumberValue>0</d6p1:NumberValue>
                    <d6p1:StringValue>String</d6p1:StringValue>
                    <d6p1:StructValue>
                      <d4p1:KeyValueOfstringValue8Ahp2kgT>
                        <d4p1:Key>String</d4p1:Key>
                        <d4p1:Value>
                          <d6p1:BoolValue>false</d6p1:BoolValue>
                          <d6p1:ListValue>
                            <d4p1:ArrayOfKeyValueOfstringValue8Ahp2kgT i:nil="true" />
                          </d6p1:ListValue>
                          <d6p1:NumberValue>0</d6p1:NumberValue>
                          <d6p1:StringValue>String</d6p1:StringValue>
                          <d6p1:StructValue i:nil="true" />
                        </d4p1:Value>
                      </d4p1:KeyValueOfstringValue8Ahp2kgT>
                    </d6p1:StructValue>
                  </d4p1:Value>
                </d4p1:KeyValueOfstringValue8Ahp2kgT>
              </d4p1:ArrayOfKeyValueOfstringValue8Ahp2kgT>
            </d6p1:ListValue>
            <d6p1:NumberValue>0</d6p1:NumberValue>
            <d6p1:StringValue>String</d6p1:StringValue>
            <d6p1:StructValue>
              <d4p1:KeyValueOfstringValue8Ahp2kgT>
                <d4p1:Key>String</d4p1:Key>
                <d4p1:Value>
                  <d6p1:BoolValue>false</d6p1:BoolValue>
                  <d6p1:ListValue>
                    <d4p1:ArrayOfKeyValueOfstringValue8Ahp2kgT>
                      <d4p1:KeyValueOfstringValue8Ahp2kgT>
                        <d4p1:Key>String</d4p1:Key>
                        <d4p1:Value>
                          <d6p1:BoolValue>false</d6p1:BoolValue>
                          <d6p1:ListValue>
                            <d4p1:ArrayOfKeyValueOfstringValue8Ahp2kgT i:nil="true" />
                          </d6p1:ListValue>
                          <d6p1:NumberValue>0</d6p1:NumberValue>
                          <d6p1:StringValue>String</d6p1:StringValue>
                          <d6p1:StructValue i:nil="true" />
                        </d4p1:Value>
                      </d4p1:KeyValueOfstringValue8Ahp2kgT>
                    </d4p1:ArrayOfKeyValueOfstringValue8Ahp2kgT>
                  </d6p1:ListValue>
                  <d6p1:NumberValue>0</d6p1:NumberValue>
                  <d6p1:StringValue>String</d6p1:StringValue>
                  <d6p1:StructValue>
                    <d4p1:KeyValueOfstringValue8Ahp2kgT>
                      <d4p1:Key>String</d4p1:Key>
                      <d4p1:Value>
                        <d6p1:BoolValue>false</d6p1:BoolValue>
                        <d6p1:ListValue>
                          <d4p1:ArrayOfKeyValueOfstringValue8Ahp2kgT i:nil="true" />
                        </d6p1:ListValue>
                        <d6p1:NumberValue>0</d6p1:NumberValue>
                        <d6p1:StringValue>String</d6p1:StringValue>
                        <d6p1:StructValue i:nil="true" />
                      </d4p1:Value>
                    </d4p1:KeyValueOfstringValue8Ahp2kgT>
                  </d6p1:StructValue>
                </d4p1:Value>
              </d4p1:KeyValueOfstringValue8Ahp2kgT>
            </d6p1:StructValue>
          </d4p1:Value>
        </d4p1:KeyValueOfstringValue8Ahp2kgT>
      </d2p1:Data>
      <d2p1:IntegrationData xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
        <d4p1:KeyValueOfstringIntegrationDataY_SkqLnhh>
          <d4p1:Key>String</d4p1:Key>
          <d4p1:Value xmlns:d6p1="http://schemas.datacontract.org/2004/07/Voice.Api.Integrations">
            <d6p1:ThirdPartyId>String</d6p1:ThirdPartyId>
          </d4p1:Value>
        </d4p1:KeyValueOfstringIntegrationDataY_SkqLnhh>
      </d2p1:IntegrationData>
      <d2p1:IsStaging>false</d2p1:IsStaging>
      <d2p1:Name>String</d2p1:Name>
      <d2p1:OverrideAppSettings>false</d2p1:OverrideAppSettings>
      <d2p1:OverrideBillingSettings>false</d2p1:OverrideBillingSettings>
      <d2p1:ParentCustomerId>String</d2p1:ParentCustomerId>
      <d2p1:ReferenceId>String</d2p1:ReferenceId>
      <d2p1:Schedule xmlns:d4p1="http://schemas.datacontract.org/2004/07/Voice.Api.Scheduling">
        <d4p1:DefaultState>String</d4p1:DefaultState>
        <d4p1:ForceClosed>false</d4p1:ForceClosed>
        <d4p1:Inherit>false</d4p1:Inherit>
        <d4p1:Rules>
          <d4p1:SchedulingRule>
            <d4p1:ByDay>
              <d4p1:ScheduleDay>
                <d4p1:DayOfWeek>Sunday</d4p1:DayOfWeek>
                <d4p1:Offset>0</d4p1:Offset>
              </d4p1:ScheduleDay>
            </d4p1:ByDay>
            <d4p1:ByHour xmlns:d7p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
              <d7p1:int>0</d7p1:int>
            </d4p1:ByHour>
            <d4p1:ByMinute xmlns:d7p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
              <d7p1:int>0</d7p1:int>
            </d4p1:ByMinute>
            <d4p1:ByMonth xmlns:d7p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
              <d7p1:int>0</d7p1:int>
            </d4p1:ByMonth>
            <d4p1:ByMonthDay xmlns:d7p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
              <d7p1:int>0</d7p1:int>
            </d4p1:ByMonthDay>
            <d4p1:BySetPosition xmlns:d7p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
              <d7p1:int>0</d7p1:int>
            </d4p1:BySetPosition>
            <d4p1:ByWeekNo xmlns:d7p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
              <d7p1:int>0</d7p1:int>
            </d4p1:ByWeekNo>
            <d4p1:ByYearDay xmlns:d7p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
              <d7p1:int>0</d7p1:int>
            </d4p1:ByYearDay>
            <d4p1:Condition>String</d4p1:Condition>
            <d4p1:Count>0</d4p1:Count>
            <d4p1:CustomerState>String</d4p1:CustomerState>
            <d4p1:EndTime>String</d4p1:EndTime>
            <d4p1:FlowId>String</d4p1:FlowId>
            <d4p1:FlowParams xmlns:d7p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
              <d7p1:KeyValueOfstringValue8Ahp2kgT>
                <d7p1:Key>String</d7p1:Key>
                <d7p1:Value xmlns:d9p1="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data">
                  <d9p1:BoolValue>false</d9p1:BoolValue>
                  <d9p1:ListValue>
                    <d7p1:ArrayOfKeyValueOfstringValue8Ahp2kgT>
                      <d7p1:KeyValueOfstringValue8Ahp2kgT>
                        <d7p1:Key>String</d7p1:Key>
                        <d7p1:Value>
                          <d9p1:BoolValue>false</d9p1:BoolValue>
                          <d9p1:ListValue>
                            <d7p1:ArrayOfKeyValueOfstringValue8Ahp2kgT>
                              <d7p1:KeyValueOfstringValue8Ahp2kgT>
                                <d7p1:Key>String</d7p1:Key>
                                <d7p1:Value>
                                  <d9p1:BoolValue>false</d9p1:BoolValue>
                                  <d9p1:ListValue>
                                    <d7p1:ArrayOfKeyValueOfstringValue8Ahp2kgT i:nil="true" />
                                  </d9p1:ListValue>
                                  <d9p1:NumberValue>0</d9p1:NumberValue>
                                  <d9p1:StringValue>String</d9p1:StringValue>
                                  <d9p1:StructValue i:nil="true" />
                                </d7p1:Value>
                              </d7p1:KeyValueOfstringValue8Ahp2kgT>
                            </d7p1:ArrayOfKeyValueOfstringValue8Ahp2kgT>
                          </d9p1:ListValue>
                          <d9p1:NumberValue>0</d9p1:NumberValue>
                          <d9p1:StringValue>String</d9p1:StringValue>
                          <d9p1:StructValue>
                            <d7p1:KeyValueOfstringValue8Ahp2kgT>
                              <d7p1:Key>String</d7p1:Key>
                              <d7p1:Value>
                                <d9p1:BoolValue>false</d9p1:BoolValue>
                                <d9p1:ListValue>
                                  <d7p1:ArrayOfKeyValueOfstringValue8Ahp2kgT i:nil="true" />
                                </d9p1:ListValue>
                                <d9p1:NumberValue>0</d9p1:NumberValue>
                                <d9p1:StringValue>String</d9p1:StringValue>
                                <d9p1:StructValue i:nil="true" />
                              </d7p1:Value>
                            </d7p1:KeyValueOfstringValue8Ahp2kgT>
                          </d9p1:StructValue>
                        </d7p1:Value>
                      </d7p1:KeyValueOfstringValue8Ahp2kgT>
                    </d7p1:ArrayOfKeyValueOfstringValue8Ahp2kgT>
                  </d9p1:ListValue>
                  <d9p1:NumberValue>0</d9p1:NumberValue>
                  <d9p1:StringValue>String</d9p1:StringValue>
                  <d9p1:StructValue>
                    <d7p1:KeyValueOfstringValue8Ahp2kgT>
                      <d7p1:Key>String</d7p1:Key>
                      <d7p1:Value>
                        <d9p1:BoolValue>false</d9p1:BoolValue>
                        <d9p1:ListValue>
                          <d7p1:ArrayOfKeyValueOfstringValue8Ahp2kgT>
                            <d7p1:KeyValueOfstringValue8Ahp2kgT>
                              <d7p1:Key>String</d7p1:Key>
                              <d7p1:Value>
                                <d9p1:BoolValue>false</d9p1:BoolValue>
                                <d9p1:ListValue>
                                  <d7p1:ArrayOfKeyValueOfstringValue8Ahp2kgT i:nil="true" />
                                </d9p1:ListValue>
                                <d9p1:NumberValue>0</d9p1:NumberValue>
                                <d9p1:StringValue>String</d9p1:StringValue>
                                <d9p1:StructValue i:nil="true" />
                              </d7p1:Value>
                            </d7p1:KeyValueOfstringValue8Ahp2kgT>
                          </d7p1:ArrayOfKeyValueOfstringValue8Ahp2kgT>
                        </d9p1:ListValue>
                        <d9p1:NumberValue>0</d9p1:NumberValue>
                        <d9p1:StringValue>String</d9p1:StringValue>
                        <d9p1:StructValue>
                          <d7p1:KeyValueOfstringValue8Ahp2kgT>
                            <d7p1:Key>String</d7p1:Key>
                            <d7p1:Value>
                              <d9p1:BoolValue>false</d9p1:BoolValue>
                              <d9p1:ListValue>
                                <d7p1:ArrayOfKeyValueOfstringValue8Ahp2kgT i:nil="true" />
                              </d9p1:ListValue>
                              <d9p1:NumberValue>0</d9p1:NumberValue>
                              <d9p1:StringValue>String</d9p1:StringValue>
                              <d9p1:StructValue i:nil="true" />
                            </d7p1:Value>
                          </d7p1:KeyValueOfstringValue8Ahp2kgT>
                        </d9p1:StructValue>
                      </d7p1:Value>
                    </d7p1:KeyValueOfstringValue8Ahp2kgT>
                  </d9p1:StructValue>
                </d7p1:Value>
              </d7p1:KeyValueOfstringValue8Ahp2kgT>
            </d4p1:FlowParams>
            <d4p1:Frequency>None</d4p1:Frequency>
            <d4p1:Id>String</d4p1:Id>
            <d4p1:Interval>0</d4p1:Interval>
            <d4p1:IsAllDay>false</d4p1:IsAllDay>
            <d4p1:Name>String</d4p1:Name>
            <d4p1:Priority>0</d4p1:Priority>
            <d4p1:SimpleRuleType>Always</d4p1:SimpleRuleType>
            <d4p1:Source>String</d4p1:Source>
            <d4p1:StartDate>String</d4p1:StartDate>
            <d4p1:StartTime>String</d4p1:StartTime>
            <d4p1:State>String</d4p1:State>
            <d4p1:UntilDate>String</d4p1:UntilDate>
          </d4p1:SchedulingRule>
        </d4p1:Rules>
        <d4p1:TimeZoneId>String</d4p1:TimeZoneId>
      </d2p1:Schedule>
      <d2p1:Tags xmlns:d4p1="http://schemas.datacontract.org/2004/07/Voice.Api.Settings">
        <d4p1:Tag>
          <d4p1:Color>Magenta</d4p1:Color>
          <d4p1:Id>String</d4p1:Id>
          <d4p1:Name>String</d4p1:Name>
        </d4p1:Tag>
      </d2p1:Tags>
    </d2p1:CustomerInfo>
  </Items>
  <TotalCount>0</TotalCount>
  <TotalPages>0</TotalPages>
</ListResponseOfCustomerInfoznfKbIMc>