/* Options:
Date: 2025-10-31 11:30:05
Version: 8.71
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://evovoice.io
//GlobalNamespace: 
//MakePartial: True
//MakeVirtual: True
//MakeInternal: False
//MakeDataContractsExtensible: False
//AddNullableAnnotations: False
//AddReturnMarker: True
//AddDescriptionAsComments: True
//AddDataContractAttributes: False
//AddIndexesToDataMembers: False
//AddGeneratedCodeAttributes: False
//AddResponseStatus: False
//AddImplicitVersion: 
//InitializeCollections: False
//ExportValueTypes: False
IncludeTypes: NewAccount.*
//ExcludeTypes: 
//AddNamespaces: 
//AddDefaultXmlNamespace: http://schemas.servicestack.net/types
*/
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using Voice.Api.Accounts;
using Voice.Api;
namespace Voice.Api
{
    public partial class EntityInfo
    {
        ///
        ///The ID of the object
        ///
        [ApiMember(Description="The ID of the object")]
        public virtual string Id { get; set; }
        ///
        ///The date the object was created
        ///
        [ApiMember(Description="The date the object was created")]
        public virtual string DateCreated { get; set; }
        ///
        ///The date the object was last modified
        ///
        [ApiMember(Description="The date the object was last modified")]
        public virtual string DateLastModified { get; set; }
        ///
        ///The user that created this object
        ///
        [ApiMember(Description="The user that created this object")]
        public virtual string CreatedBy { get; set; }
        ///
        ///The user that last modified this object
        ///
        [ApiMember(Description="The user that last modified this object")]
        public virtual string LastModifiedBy { get; set; }
    }
}
namespace Voice.Api.Accounts
{
    public partial class AccountInfo
        : EntityInfo
    {
        ///
        ///The name of this account
        ///
        [ApiMember(Description="The name of this account")]
        public virtual string Name { get; set; }
        ///
        ///The ID of this account's parent
        ///
        [ApiMember(Description="The ID of this account's parent")]
        public virtual string ParentAccountId { get; set; }
        ///
        ///The twilio account SID
        ///
        [ApiMember(Description="The twilio account SID")]
        public virtual string TwilioAccountSid { get; set; }
        ///
        ///The ancestors of this account. Useful for breadcrumbs
        ///
        [ApiMember(Description="The ancestors of this account. Useful for breadcrumbs")]
        public virtual List AncestorIds { get; set; }
        ///
        ///The max number of phone numbers this account can have
        ///
        [ApiMember(Description="The max number of phone numbers this account can have")]
        public virtual int MaxPhoneNumbers { get; set; }
        ///
        ///This account is BYOA
        ///
        [ApiMember(Description="This account is BYOA")]
        public virtual bool IsBYOA { get; set; }
        ///
        ///TrustHub Profile Sid
        ///
        [ApiMember(Description="TrustHub Profile Sid")]
        public virtual string TrustHubProfileSid { get; set; }
        ///
        ///The ID of the logo file
        ///
        [ApiMember(Description="The ID of the logo file")]
        public virtual string LogoId { get; set; }
        ///
        ///The URI of the logo file
        ///
        [ApiMember(Description="The URI of the logo file")]
        public virtual string LogoUri { get; set; }
        ///
        ///The billing settings for this account
        ///
        [ApiMember(Description="The billing settings for this account")]
        public virtual BillingSettings BillingSettings { get; set; }
    }
    public partial class BillingItem
    {
        public virtual double BaseCost { get; set; }
        public virtual double RawUnitMultiplier { get; set; }
        public virtual double UnitCost { get; set; }
        public virtual int Allowance { get; set; }
    }
    public partial class BillingSettings
    {
        public virtual BillingItem Base { get; set; }
        public virtual BillingItem LocalNumbers { get; set; }
        public virtual BillingItem TollFreeNumbers { get; set; }
        public virtual BillingItem InboundVoiceCalls { get; set; }
        public virtual BillingItem OutboundVoiceCalls { get; set; }
        public virtual BillingItem InboundFaxes { get; set; }
        public virtual BillingItem OutboundFaxes { get; set; }
        public virtual BillingItem InboundSmsMessages { get; set; }
        public virtual BillingItem OutboundSmsMessages { get; set; }
        public virtual BillingItem AIInsights { get; set; }
        public virtual BillingItem AILiveMinutes { get; set; }
        public virtual BillingItem AIMessages { get; set; }
    }
    ///
    ///Creates a new account
    ///
    [Route("/accounts", "POST")]
    [Api(Description="Creates a new account")]
    public partial class NewAccount
        : IReturn, IPost
    {
        ///
        ///The name of the new account
        ///
        [ApiMember(Description="The name of the new account")]
        public virtual string Name { get; set; }
        ///
        ///The Twilio Account SID (for BYOA)
        ///
        [ApiMember(Description="The Twilio Account SID (for BYOA)")]
        public virtual string TwilioAccountSid { get; set; }
        ///
        ///The Twilio Auth Token (for BYOA)
        ///
        [ApiMember(Description="The Twilio Auth Token (for BYOA)")]
        public virtual string TwilioAuthToken { get; set; }
    }
}