/* Options:
Date: 2025-07-09 06:24:55
Version: 8.30
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://api.sanctionssearch.com/v1

//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: True
//ExportValueTypes: False
IncludeTypes: GetListSearches.*
//ExcludeTypes: 
//AddNamespaces: 
//AddDefaultXmlNamespace: http://schemas.servicestack.net/types
*/

using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using Nugo.SanctionsSearch.Api.ServiceModel.Types;
using Nugo.SanctionsSearch.Api.ServiceModel.Operations.Base;
using Nugo.SanctionsSearch.Api.ServiceModel.Operations;
using Nugo.SanctionsSearch.Models.Api;

namespace Nugo.SanctionsSearch.Api.ServiceModel.Operations
{
    [Route("/searches/list", "POST")]
    [ApiResponse(Description="Your request is successful if the \"<em>Data.ResponseStatus.Message</em>\" field is \"<b>Success</b>\".", StatusCode=200)]
    [DataContract]
    public partial class GetListSearches
        : IReturn<GetListSearchesResponse>, IBaseRequest
    {
        [DataMember]
        public virtual Authentication Authentication { get; set; }

        [DataMember]
        public virtual int Page { get; set; }

        [DataMember]
        public virtual string SortOrder { get; set; }

        [DataMember]
        public virtual string NameSearch { get; set; }
    }

    [DataContract]
    public partial class GetListSearchesData
        : IBaseDataResponse, IHasResponseStatus
    {
        [DataMember]
        public virtual ResponseStatus ResponseStatus { get; set; }

        [DataMember]
        public virtual int TotalSearchRecords { get; set; }

        [DataMember]
        public virtual int CurrentPageNum { get; set; }

        [DataMember]
        public virtual int MaxPageNum { get; set; }

        [DataMember]
        public virtual ArrayOfSearchListItem SearchRecords { get; set; }
    }

    [DataContract]
    public partial class GetListSearchesResponse
    {
        [DataMember]
        public virtual GetListSearchesData Data { get; set; }
    }

}

namespace Nugo.SanctionsSearch.Api.ServiceModel.Operations.Base
{
    public partial class ArrayOfResponseError
        : List<ResponseError>
    {
    }

    public partial interface IBaseDataResponse
    {
        ResponseStatus ResponseStatus { get; set; }
    }

    public partial interface IBaseRequest
    {
        Authentication Authentication { get; set; }
    }

    public partial interface IHasResponseStatus
    {
        ResponseStatus ResponseStatus { get; set; }
    }

    [DataContract]
    public partial class ResponseError
    {
        [DataMember(Order=1)]
        public virtual string ErrorCode { get; set; }

        [DataMember(Order=2)]
        public virtual string FieldName { get; set; }

        [DataMember(Order=3)]
        public virtual string Message { get; set; }
    }

    [DataContract]
    public partial class ResponseStatus
    {
        [DataMember(Order=1)]
        public virtual string ErrorCode { get; set; }

        [DataMember(Order=2)]
        public virtual string Message { get; set; }

        [DataMember(Order=3)]
        public virtual string StackTrace { get; set; }

        [DataMember(Order=4)]
        public virtual ArrayOfResponseError Errors { get; set; }
    }

}

namespace Nugo.SanctionsSearch.Api.ServiceModel.Types
{
    public partial class ArrayOfSearchListItem
        : List<SearchListItem>
    {
    }

    [DataContract]
    public partial class Authentication
        : IAuthentication
    {
        ///<summary>
        ///The API User ID that will authenticate your request
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="The API User ID that will authenticate your request", IsRequired=true)]
        public virtual string ApiUserId { get; set; }

        ///<summary>
        ///The API User Key that will authenticate your request
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="The API User Key that will authenticate your request", IsRequired=true)]
        public virtual string ApiUserKey { get; set; }
    }

    public partial class SearchCriteria
    {
        public virtual string Name { get; set; }
        public virtual string DateOfBirth { get; set; }
        public virtual string CountryOfBirth { get; set; }
        public virtual string Nationality { get; set; }
        public virtual string Address { get; set; }
    }

    public partial class SearchListItem
    {
        public virtual long Id { get; set; }
        public virtual string SearchType { get; set; }
        public virtual DateTime DateSearched { get; set; }
        public virtual DateTime DateUpdated { get; set; }
        public virtual int NumOfResults { get; set; }
        public virtual bool ClientInResults { get; set; }
        public virtual bool ClientNotInResults { get; set; }
        public virtual bool AffectedByUpdate { get; set; }
        public virtual SearchCriteria SearchCriteria { get; set; }
    }

}

namespace Nugo.SanctionsSearch.Models.Api
{
    public partial interface IAuthentication
    {
        string ApiUserId { get; set; }
        string ApiUserKey { get; set; }
        string UserId { get; set; }
    }

}