/* Options:
Date: 2025-05-31 11:56:51
Version: 8.40
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://active-ewebservice.biz/aeservices30/api

//GlobalNamespace: 
//MakePropertiesOptional: False
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
IncludeTypes: UpdateCcRequest.*
//ExcludeTypes: 
//DefaultImports: 
*/


export interface IReturn<T>
{
    createResponse(): T;
}

// @DataContract
export class BaseRequest
{
    /** @description This is your AIM API Key provided by Tri-Tech */
    // @DataMember
    // @ApiMember(DataType="string", Description="This is your AIM API Key provided by Tri-Tech", IsRequired=true, Name="ApiKey", ParameterType="header")
    public ApiKey: string;

    // @DataMember
    // @ApiMember(DataType="string", Name="OAuthToken", ParameterType="header")
    public OAuthToken: string;

    public constructor(init?: Partial<BaseRequest>) { (Object as any).assign(this, init); }
}

// @DataContract
export class BaseSecureRequest extends BaseRequest
{
    /** @description  */
    // @DataMember
    // @ApiMember(DataType="string", Description="", Name="Token", ParameterType="Header")
    public Token: string;

    /** @description  */
    // @DataMember
    // @ApiMember(DataType="string", Description="", Name="DeviceId", ParameterType="Header")
    public DeviceId: string;

    /** @description  */
    // @DataMember
    // @ApiMember(DataType="string", Description="", IsRequired=true, Name="AppId", ParameterType="Header")
    public AppId: string;

    public constructor(init?: Partial<BaseSecureRequest>) { super(init); (Object as any).assign(this, init); }
}

// @DataContract
export class BaseResponse
{
    /** @description  */
    // @DataMember
    // @ApiMember(DataType="BaseResponseResult", Description="", Name="Status", ParameterType="body")
    public Status: BaseResponseResult;

    public constructor(init?: Partial<BaseResponse>) { (Object as any).assign(this, init); }
}

// @DataContract
export class UpdateCcResponse extends BaseResponse
{
    // @DataMember
    public Topic: string;

    // @DataMember
    public ErrorDetails: string;

    public constructor(init?: Partial<UpdateCcResponse>) { super(init); (Object as any).assign(this, init); }
}

/** @description UpdateCCRequires active-e Customer Service. */
// @Route("/UpdateCC", "POST, GET")
// @DataContract
export class UpdateCcRequest extends BaseSecureRequest implements IReturn<UpdateCcResponse>
{
    // @DataMember
    public CardToken: string;

    // @DataMember
    public LastFour: string;

    // @DataMember
    public ExpirationMonth: number;

    // @DataMember
    public ExpirationYear: number;

    // @DataMember
    public CardExpiration: string;

    // @DataMember
    public CardType: string;

    // @DataMember
    public AcctType: string;

    // @DataMember
    public Gateway: string;

    // @DataMember
    public TokenPk: string;

    // @DataMember
    public WebRef: string;

    // @DataMember
    public NickName: string;

    // @DataMember
    public Acct?: number;

    // @DataMember
    public MakePrimaryCard: boolean;

    // @DataMember
    public IsTempToken: boolean;

    // @DataMember
    public EnableAutoPay: boolean;

    public constructor(init?: Partial<UpdateCcRequest>) { super(init); (Object as any).assign(this, init); }
    public getTypeName() { return 'UpdateCcRequest'; }
    public getMethod() { return 'POST'; }
    public createResponse() { return new UpdateCcResponse(); }
}