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

//GlobalNamespace: 
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
IncludeTypes: MobileRegistrationRequest.*
//ExcludeTypes: 
//DefaultImports: package:servicestack/servicestack.dart
*/

import 'package:servicestack/servicestack.dart';

// @DataContract
class BaseRequest implements IConvertible
{
    /**
    * 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")
    String? ApiKey;

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

    BaseRequest({this.ApiKey,this.OAuthToken});
    BaseRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

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

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

// @DataContract
class BaseResponse implements IConvertible
{
    /**
    * 
    */
    // @DataMember
    // @ApiMember(DataType="BaseResponseResult", Description="", Name="Status", ParameterType="body")
    BaseResponseResult? Status;

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

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

    Map<String, dynamic> toJson() => {
        'Status': JsonConverters.toJson(Status,'BaseResponseResult',context!)
    };

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

// @DataContract
class MobileRegistrationResponse extends BaseResponse implements IConvertible
{
    MobileRegistrationResponse();
    MobileRegistrationResponse.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() => "MobileRegistrationResponse";
    TypeContext? context = _ctx;
}

/**
* MobileRegistrationRequires active-e AIMMobile
*/
// @Route("/MobileRegistration", "POST")
// @DataContract
class MobileRegistrationRequest extends BaseRequest implements IReturn<MobileRegistrationResponse>, IConvertible, IPost
{
    // @DataMember
    String? Name;

    // @DataMember
    String? Phone;

    // @DataMember
    String? Company;

    // @DataMember
    String? Address1;

    // @DataMember
    String? Address2;

    // @DataMember
    String? City;

    // @DataMember
    String? State;

    // @DataMember
    String? Email;

    // @DataMember
    String? Zip;

    // @DataMember
    String? Password;

    /**
    * Should be Register or Confirm
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="Should be Register or Confirm", IsRequired=true, Name="Action", ParameterType="query")
    String? Action;

    // @DataMember
    String? PasswordToken;

    // @DataMember
    bool? OptIn1;

    // @DataMember
    bool? OptIn2;

    // @DataMember
    bool? OptIn3;

    MobileRegistrationRequest({this.Name,this.Phone,this.Company,this.Address1,this.Address2,this.City,this.State,this.Email,this.Zip,this.Password,this.Action,this.PasswordToken,this.OptIn1,this.OptIn2,this.OptIn3});
    MobileRegistrationRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Name = json['Name'];
        Phone = json['Phone'];
        Company = json['Company'];
        Address1 = json['Address1'];
        Address2 = json['Address2'];
        City = json['City'];
        State = json['State'];
        Email = json['Email'];
        Zip = json['Zip'];
        Password = json['Password'];
        Action = json['Action'];
        PasswordToken = json['PasswordToken'];
        OptIn1 = json['OptIn1'];
        OptIn2 = json['OptIn2'];
        OptIn3 = json['OptIn3'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Name': Name,
        'Phone': Phone,
        'Company': Company,
        'Address1': Address1,
        'Address2': Address2,
        'City': City,
        'State': State,
        'Email': Email,
        'Zip': Zip,
        'Password': Password,
        'Action': Action,
        'PasswordToken': PasswordToken,
        'OptIn1': OptIn1,
        'OptIn2': OptIn2,
        'OptIn3': OptIn3
    });

    createResponse() => MobileRegistrationResponse();
    getResponseTypeName() => "MobileRegistrationResponse";
    getTypeName() => "MobileRegistrationRequest";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'active_ewebservice.biz', types: <String, TypeInfo> {
    'BaseRequest': TypeInfo(TypeOf.Class, create:() => BaseRequest()),
    'BaseResponse': TypeInfo(TypeOf.Class, create:() => BaseResponse()),
    'BaseResponseResult': TypeInfo(TypeOf.Class, create:() => BaseResponseResult()),
    'MobileRegistrationResponse': TypeInfo(TypeOf.Class, create:() => MobileRegistrationResponse()),
    'MobileRegistrationRequest': TypeInfo(TypeOf.Class, create:() => MobileRegistrationRequest()),
});