/* Options:
Date: 2025-06-12 20:52:45
Version: 8.30
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://api.sanctionssearch.com/v2

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

import 'package:servicestack/servicestack.dart';
import 'dart:typed_data';

// @DataContract
class Authentication implements IConvertible
{
    /**
    * The API User ID provided by us when you signed up to use our API. Can be provided in the request body, or as a header parameter (X-Api-User)
    */
    // @DataMember
    // @ApiMember(Description="The API User ID provided by us when you signed up to use our API. Can be provided in the request body, or as a header parameter (X-Api-User)", IsRequired=true, ParameterType="header, body")
    String? apiUserId;

    /**
    * The API User Key provided by us when you signed up to use our API. Can be provided in the request body, or as a header parameter (X-Api-Key)
    */
    // @DataMember
    // @ApiMember(Description="The API User Key provided by us when you signed up to use our API. Can be provided in the request body, or as a header parameter (X-Api-Key)", IsRequired=true, ParameterType="header, body")
    String? apiUserKey;

    /**
    * The User ID of the user making the request (e.g. a sub user). This is optional but can be used to associate API requests with a specific user, thereby allowing user permissions to be enforced. Can be provided in the body, or as a header parameter (X-User-Id).
    */
    // @DataMember
    // @ApiMember(Description="The User ID of the user making the request (e.g. a sub user). This is optional but can be used to associate API requests with a specific user, thereby allowing user permissions to be enforced. Can be provided in the body, or as a header parameter (X-User-Id).", ParameterType="header, body")
    String? userId;

    Authentication({this.apiUserId,this.apiUserKey,this.userId});
    Authentication.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        apiUserId = json['apiUserId'];
        apiUserKey = json['apiUserKey'];
        userId = json['userId'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'apiUserId': apiUserId,
        'apiUserKey': apiUserKey,
        'userId': userId
    };

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

// @DataContract
class BaseRequest implements IBaseRequest, IConvertible
{
    /**
    * The authentication credentials
    */
    // @DataMember
    // @ApiMember(Description="The authentication credentials", IsRequired=true, ParameterType="header, body")
    Authentication? authentication;

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

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

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

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

abstract class IBaseRequest
{
    Authentication? authentication;
}

class ActivateValidIdRequest implements IConvertible
{
    String? companyName;
    String? companyAddress;
    String? companyNumber;
    String? name;
    String? position;
    String? signature;
    String? dpaNumber;
    String? amlBodyNumber;
    String? purpose;
    int? classificationId;
    bool? agreeToTerms;

    ActivateValidIdRequest({this.companyName,this.companyAddress,this.companyNumber,this.name,this.position,this.signature,this.dpaNumber,this.amlBodyNumber,this.purpose,this.classificationId,this.agreeToTerms});
    ActivateValidIdRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        companyName = json['companyName'];
        companyAddress = json['companyAddress'];
        companyNumber = json['companyNumber'];
        name = json['name'];
        position = json['position'];
        signature = json['signature'];
        dpaNumber = json['dpaNumber'];
        amlBodyNumber = json['amlBodyNumber'];
        purpose = json['purpose'];
        classificationId = json['classificationId'];
        agreeToTerms = json['agreeToTerms'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'companyName': companyName,
        'companyAddress': companyAddress,
        'companyNumber': companyNumber,
        'name': name,
        'position': position,
        'signature': signature,
        'dpaNumber': dpaNumber,
        'amlBodyNumber': amlBodyNumber,
        'purpose': purpose,
        'classificationId': classificationId,
        'agreeToTerms': agreeToTerms
    };

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

class BaseResponse implements IBaseDataResponse, IHasResponseStatus, IConvertible
{
    /**
    * The status of the response
    */
    // @ApiMember(Description="The status of the response")
    ResponseStatus? responseStatus;

    BaseResponse({this.responseStatus});
    BaseResponse.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() => "BaseResponse";
    TypeContext? context = _ctx;
}

class ActivateValidIdData extends BaseResponse implements IConvertible
{
    bool? validIdActivated;
    String? agreementText;

    ActivateValidIdData({this.validIdActivated,this.agreementText});
    ActivateValidIdData.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        validIdActivated = json['validIdActivated'];
        agreementText = json['agreementText'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'validIdActivated': validIdActivated,
        'agreementText': agreementText
    });

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

abstract class IBaseDataResponse
{
    ResponseStatus? responseStatus;
}

abstract class IHasResponseStatus
{
    ResponseStatus? responseStatus;
}

// @DataContract
class ActivateValidIdResponse implements IConvertible
{
    // @DataMember
    ActivateValidIdData? data;

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

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

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

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

// @Route("/validid/activate", "POST")
// @DataContract
class ActivateValidId extends BaseRequest implements IReturn<ActivateValidIdResponse>, IConvertible, IPost
{
    // @DataMember
    ActivateValidIdRequest? request;

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

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

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'request': JsonConverters.toJson(request,'ActivateValidIdRequest',context!)
    });

    createResponse() => ActivateValidIdResponse();
    getResponseTypeName() => "ActivateValidIdResponse";
    getTypeName() => "ActivateValidId";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'api.sanctionssearch.com', types: <String, TypeInfo> {
    'Authentication': TypeInfo(TypeOf.Class, create:() => Authentication()),
    'BaseRequest': TypeInfo(TypeOf.Class, create:() => BaseRequest()),
    'IBaseRequest': TypeInfo(TypeOf.Interface),
    'ActivateValidIdRequest': TypeInfo(TypeOf.Class, create:() => ActivateValidIdRequest()),
    'BaseResponse': TypeInfo(TypeOf.Class, create:() => BaseResponse()),
    'ActivateValidIdData': TypeInfo(TypeOf.Class, create:() => ActivateValidIdData()),
    'IBaseDataResponse': TypeInfo(TypeOf.Interface),
    'IHasResponseStatus': TypeInfo(TypeOf.Interface),
    'ActivateValidIdResponse': TypeInfo(TypeOf.Class, create:() => ActivateValidIdResponse()),
    'ActivateValidId': TypeInfo(TypeOf.Class, create:() => ActivateValidId()),
});