/* Options:
Date: 2025-04-08 07:28:37
Version: 6.10
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://staging-api.billiecart.com.au

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

import 'package:servicestack/servicestack.dart';

abstract class PostOperationUnTenanted<TResponse> implements IPost
{
    PostOperationUnTenanted();
    PostOperationUnTenanted.fromJson(Map<String, dynamic> json) : super();
    fromMap(Map<String, dynamic> json) {
        return this;
    }

    Map<String, dynamic> toJson() => {};
    getTypeName() => "PostOperationUnTenanted<$TResponse>";
    TypeContext? context = _ctx;
}

class AcceptGuestInvitationResponse implements IConvertible
{
    ResponseStatus? responseStatus;

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

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

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

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

// @Route("/users/invite/accept", "POST")
class AcceptGuestInvitationRequest extends PostOperationUnTenanted<AcceptGuestInvitationResponse> implements IReturn<AcceptGuestInvitationResponse>, IConvertible
{
    String? token;
    String? password;
    String? firstName;
    String? lastName;
    String? timezone;

    AcceptGuestInvitationRequest({this.token,this.password,this.firstName,this.lastName,this.timezone});
    AcceptGuestInvitationRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        token = json['token'];
        password = json['password'];
        firstName = json['firstName'];
        lastName = json['lastName'];
        timezone = json['timezone'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'token': token,
        'password': password,
        'firstName': firstName,
        'lastName': lastName,
        'timezone': timezone
    });

    createResponse() => AcceptGuestInvitationResponse();
    getResponseTypeName() => "AcceptGuestInvitationResponse";
    getTypeName() => "AcceptGuestInvitationRequest";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'staging_api.billiecart.com.au', types: <String, TypeInfo> {
    'PostOperationUnTenanted<TResponse>': TypeInfo(TypeOf.AbstractClass),
    'AcceptGuestInvitationResponse': TypeInfo(TypeOf.Class, create:() => AcceptGuestInvitationResponse()),
    'AcceptGuestInvitationRequest': TypeInfo(TypeOf.Class, create:() => AcceptGuestInvitationRequest()),
});