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

//GlobalNamespace: 
//MakeDataContractsExtensible: False
//AddReturnMarker: True
//AddDescriptionAsComments: True
//AddDataContractAttributes: False
//AddIndexesToDataMembers: False
//AddGeneratedCodeAttributes: False
//AddResponseStatus: False
//AddImplicitVersion: 
//ExportValueTypes: False
IncludeTypes: GetSearch.*
//ExcludeTypes: 
//InitializeCollections: True
//AddNamespaces: 
*)

namespace SanctionsSearch.Api2.ServiceModel.Operations.Base

open System
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations

    [<DataContract>]
    [<AllowNullLiteral>]
    type Authentication() = 
        ///<summary>
        ///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)
        ///</summary>
        [<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")>]
        member val ApiUserId:String = null with get,set

        ///<summary>
        ///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)
        ///</summary>
        [<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")>]
        member val ApiUserKey:String = null with get,set

        ///<summary>
        ///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).
        ///</summary>
        [<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")>]
        member val UserId:String = null with get,set

    [<DataContract>]
    [<AllowNullLiteral>]
    type BaseRequest() = 
        ///<summary>
        ///The authentication credentials
        ///</summary>
        [<DataMember>]
        [<ApiMember(Description="The authentication credentials", IsRequired=true, ParameterType="header, body")>]
        member val Authentication:Authentication = null with get,set

    [<AllowNullLiteral>]
    type IBaseRequest = 
        abstract Authentication:Authentication with get,set

    [<AllowNullLiteral>]
    type GetSearchRequest() = 
        ///<summary>
        ///If the search is being accessed by a sub user, specify their username here to validate they have permissions to view it
        ///</summary>
        [<ApiMember(Description="If the search is being accessed by a sub user, specify their username here to validate they have permissions to view it")>]
        member val SubUserName:String = null with get,set

        ///<summary>
        ///If set to true, the response will exclude resolved search results, it will only include unresolved results
        ///</summary>
        [<ApiMember(Description="If set to true, the response will exclude resolved search results, it will only include unresolved results")>]
        member val OnlyShowUnresolvedResults:Boolean = new Boolean() with get,set

        member val Id:Int64 = new Int64() with get,set

    [<DataContract>]
    [<AllowNullLiteral>]
    type ResponseError() = 
        [<DataMember(Order=1)>]
        member val ErrorCode:String = null with get,set

        [<DataMember(Order=2)>]
        member val FieldName:String = null with get,set

        [<DataMember(Order=3)>]
        member val Message:String = null with get,set

        [<DataMember(Order=4)>]
        member val Meta:Dictionary<String, String> = new Dictionary<String, String>() with get,set

    [<AllowNullLiteral>]
    type ArrayOfResponseError() = 
        inherit ResizeArray<ResponseError>()

    [<DataContract>]
    [<AllowNullLiteral>]
    type ResponseStatus() = 
        [<DataMember(Order=1)>]
        member val ErrorCode:String = null with get,set

        [<DataMember(Order=2)>]
        member val Message:String = null with get,set

        [<DataMember(Order=3)>]
        member val StackTrace:String = null with get,set

        [<DataMember(Order=4)>]
        member val Errors:ArrayOfResponseError = null with get,set

        [<DataMember(Order=5)>]
        member val Meta:Dictionary<String, String> = new Dictionary<String, String>() with get,set

    [<AllowNullLiteral>]
    type BaseResponse() = 
        ///<summary>
        ///The status of the response
        ///</summary>
        [<ApiMember(Description="The status of the response")>]
        member val ResponseStatus:ResponseStatus = null with get,set

    [<AllowNullLiteral>]
    type LinkedTo() = 
        member val ClientId:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val Id:Nullable<Int64> = new Nullable<Int64>() with get,set
        member val Type:String = null with get,set
        member val Subtype:String = null with get,set
        member val Status:String = null with get,set
        member val Description:String = null with get,set
        member val IsArchived:Nullable<Boolean> = new Nullable<Boolean>() with get,set
        member val Name:String = null with get,set
        member val Date:Nullable<DateTime> = new Nullable<DateTime>() with get,set

    [<AllowNullLiteral>]
    type ArrayOfLinkedTo() = 
        inherit ResizeArray<LinkedTo>()

    [<AllowNullLiteral>]
    type SearchCriteria() = 
        member val Name:String = null with get,set
        member val Address:String = null with get,set
        member val Country:String = null with get,set
        member val DateOfBirth:String = null with get,set
        member val Nationality:String = null with get,set
        member val Reference:String = null with get,set

    [<AllowNullLiteral>]
    type SearchResultEuAddress() = 
        member val Street:String = null with get,set
        member val City:String = null with get,set
        member val Country:String = null with get,set
        member val PostCode:String = null with get,set
        member val Other:String = null with get,set

    [<AllowNullLiteral>]
    type SearchResultEuBirth() = 
        member val Date:String = null with get,set
        member val Place:String = null with get,set
        member val Country:String = null with get,set

    [<AllowNullLiteral>]
    type SearchResultOfacEuCitizenship() = 
        member val Country:String = null with get,set

    [<AllowNullLiteral>]
    type SearchResultEuName() = 
        member val FullName:String = null with get,set
        member val Gender:String = null with get,set

    [<AllowNullLiteral>]
    type SearchResultEuPassport() = 
        member val Number:String = null with get,set
        member val Country:String = null with get,set

    [<AllowNullLiteral>]
    type SearchResultEu() = 
        member val ResultStrength:Int32 = new Int32() with get,set
        member val ResultSimilarity:Decimal = new Decimal() with get,set
        member val ResultResolved:Boolean = new Boolean() with get,set
        member val ResultType:String = null with get,set
        member val DateUpdated:DateTime = new DateTime() with get,set
        member val Addresses:ResizeArray<SearchResultEuAddress> = new ResizeArray<SearchResultEuAddress>() with get,set
        member val Births:ResizeArray<SearchResultEuBirth> = new ResizeArray<SearchResultEuBirth>() with get,set
        member val Citizenships:ResizeArray<SearchResultOfacEuCitizenship> = new ResizeArray<SearchResultOfacEuCitizenship>() with get,set
        member val Names:ResizeArray<SearchResultEuName> = new ResizeArray<SearchResultEuName>() with get,set
        member val Passports:ResizeArray<SearchResultEuPassport> = new ResizeArray<SearchResultEuPassport>() with get,set

    [<AllowNullLiteral>]
    type SearchResultHmTreasury() = 
        member val ResultStrength:Int32 = new Int32() with get,set
        member val ResultSimilarity:Decimal = new Decimal() with get,set
        member val ResultResolved:Boolean = new Boolean() with get,set
        member val ResultType:String = null with get,set
        member val DateListed:DateTime = new DateTime() with get,set
        member val DateUpdated:DateTime = new DateTime() with get,set
        member val Name1:String = null with get,set
        member val Name2:String = null with get,set
        member val Name3:String = null with get,set
        member val Name4:String = null with get,set
        member val Name5:String = null with get,set
        member val Name6:String = null with get,set
        member val DateOfBirth:String = null with get,set
        member val CountryOfBirth:String = null with get,set
        member val Nationality:String = null with get,set
        member val Address1:String = null with get,set
        member val Address2:String = null with get,set
        member val Address3:String = null with get,set
        member val Address4:String = null with get,set
        member val Address5:String = null with get,set
        member val Address6:String = null with get,set
        member val PostCode:String = null with get,set
        member val Country:String = null with get,set

    [<AllowNullLiteral>]
    type SearchResultOfacAddress() = 
        member val Address1:String = null with get,set
        member val Address2:String = null with get,set
        member val Address3:String = null with get,set
        member val City:String = null with get,set
        member val State:String = null with get,set
        member val PostCode:String = null with get,set
        member val Country:String = null with get,set

    [<AllowNullLiteral>]
    type SearchResultOfacAka() = 
        member val FirstName:String = null with get,set
        member val LastName:String = null with get,set
        member val Type:String = null with get,set
        member val Strength:String = null with get,set

    [<AllowNullLiteral>]
    type SearchResultOfacDateOfBirth() = 
        member val DateOfBirth:String = null with get,set

    [<AllowNullLiteral>]
    type SearchResultOfacNationality() = 
        member val Country:String = null with get,set

    [<AllowNullLiteral>]
    type SearchResultOfacPlaceOfBirth() = 
        member val PlaceOfBirth:String = null with get,set

    [<AllowNullLiteral>]
    type SearchResultOfac() = 
        member val ResultStrength:Int32 = new Int32() with get,set
        member val ResultSimilarity:Decimal = new Decimal() with get,set
        member val ResultResolved:Boolean = new Boolean() with get,set
        member val ResultType:String = null with get,set
        member val DateUpdated:DateTime = new DateTime() with get,set
        member val FirstName:String = null with get,set
        member val LastName:String = null with get,set
        member val Addresses:ResizeArray<SearchResultOfacAddress> = new ResizeArray<SearchResultOfacAddress>() with get,set
        member val Akas:ResizeArray<SearchResultOfacAka> = new ResizeArray<SearchResultOfacAka>() with get,set
        member val DateOfBirths:ResizeArray<SearchResultOfacDateOfBirth> = new ResizeArray<SearchResultOfacDateOfBirth>() with get,set
        member val Nationalities:ResizeArray<SearchResultOfacNationality> = new ResizeArray<SearchResultOfacNationality>() with get,set
        member val PlaceOfBirths:ResizeArray<SearchResultOfacPlaceOfBirth> = new ResizeArray<SearchResultOfacPlaceOfBirth>() with get,set

    [<AllowNullLiteral>]
    type SearchResultDfat() = 
        member val ResultStrength:Int32 = new Int32() with get,set
        member val ResultSimilarity:Decimal = new Decimal() with get,set
        member val ResultResolved:Boolean = new Boolean() with get,set
        member val ResultType:String = null with get,set
        member val DateUpdated:DateTime = new DateTime() with get,set
        member val FullName:String = null with get,set
        member val Address:String = null with get,set
        member val DateOfBirth:String = null with get,set
        member val PlaceOfBirth:String = null with get,set
        member val Nationality:String = null with get,set

    [<AllowNullLiteral>]
    type SearchResultOsfi() = 
        member val ResultStrength:Int32 = new Int32() with get,set
        member val ResultSimilarity:Decimal = new Decimal() with get,set
        member val ResultResolved:Boolean = new Boolean() with get,set
        member val ResultType:String = null with get,set
        member val DateUpdated:DateTime = new DateTime() with get,set
        member val FullName:String = null with get,set
        member val Address:String = null with get,set
        member val DateOfBirth:String = null with get,set
        member val PlaceOfBirth:String = null with get,set
        member val Nationality:String = null with get,set

    [<AllowNullLiteral>]
    type SearchResultCanadianJustice() = 
        member val ResultStrength:Int32 = new Int32() with get,set
        member val ResultSimilarity:Decimal = new Decimal() with get,set
        member val ResultResolved:Boolean = new Boolean() with get,set
        member val ResultType:String = null with get,set
        member val DateUpdated:DateTime = new DateTime() with get,set
        member val Name:String = null with get,set
        member val DateOfBirth:String = null with get,set
        member val Country:String = null with get,set
        member val RefId:Int32 = new Int32() with get,set

    [<AllowNullLiteral>]
    type SearchResultCanadianSema() = 
        member val ResultStrength:Int32 = new Int32() with get,set
        member val ResultSimilarity:Decimal = new Decimal() with get,set
        member val ResultResolved:Boolean = new Boolean() with get,set
        member val ResultType:String = null with get,set
        member val DateUpdated:DateTime = new DateTime() with get,set
        member val Name:String = null with get,set
        member val DateOfBirth:String = null with get,set
        member val Country:String = null with get,set
        member val Schedule:String = null with get,set
        member val Item:String = null with get,set

    [<AllowNullLiteral>]
    type SearchResultAddress() = 
        member val SearchResultAddressId:Int64 = new Int64() with get,set
        member val Type:String = null with get,set
        member val Address1:String = null with get,set
        member val Address2:String = null with get,set
        member val Address3:String = null with get,set
        member val City:String = null with get,set
        member val County:String = null with get,set
        member val PostCode:String = null with get,set
        member val Country:String = null with get,set

    [<AllowNullLiteral>]
    type SearchResultDateOfBirth() = 
        member val SearchResultDateOfBirthId:Int64 = new Int64() with get,set
        member val DateOfBirth:String = null with get,set
        member val Year:Nullable<Int16> = new Nullable<Int16>() with get,set
        member val Month:Nullable<Byte> = new Nullable<Byte>() with get,set
        member val Day:Nullable<Byte> = new Nullable<Byte>() with get,set
        member val Type:String = null with get,set

    [<AllowNullLiteral>]
    type SearchResultName() = 
        member val SearchResultNameId:Int64 = new Int64() with get,set
        member val Type:String = null with get,set
        member val Title:String = null with get,set
        member val FullName:String = null with get,set
        member val ResultSimilarity:Decimal = new Decimal() with get,set

    [<AllowNullLiteral>]
    type SearchResultNationality() = 
        member val SearchResultNationalityId:Int64 = new Int64() with get,set
        member val Nationality:String = null with get,set

    [<AllowNullLiteral>]
    type SearchResultPlaceOfBirth() = 
        member val SearchResultPlaceOfBirthId:Int64 = new Int64() with get,set
        member val PlaceOfBirth:String = null with get,set
        member val CountryOfBirth:String = null with get,set

    [<AllowNullLiteral>]
    type SearchResultRemark() = 
        member val SearchResultRemarkId:Int64 = new Int64() with get,set
        member val Name:String = null with get,set
        member val Description:String = null with get,set

    [<AllowNullLiteral>]
    type SearchResultEntry() = 
        member val SearchResultId:Int64 = new Int64() with get,set
        member val ResultStrength:Int32 = new Int32() with get,set
        member val ResultSimilarity:Decimal = new Decimal() with get,set
        member val ResultResolved:Boolean = new Boolean() with get,set
        member val ResultType:String = null with get,set
        member val DateUpdated:Nullable<DateTime> = new Nullable<DateTime>() with get,set
        member val SanctionsListId:String = null with get,set
        member val SanctionsListName:String = null with get,set
        member val Addresses:ResizeArray<SearchResultAddress> = new ResizeArray<SearchResultAddress>() with get,set
        member val DatesOfBirth:ResizeArray<SearchResultDateOfBirth> = new ResizeArray<SearchResultDateOfBirth>() with get,set
        member val Names:ResizeArray<SearchResultName> = new ResizeArray<SearchResultName>() with get,set
        member val Nationalities:ResizeArray<SearchResultNationality> = new ResizeArray<SearchResultNationality>() with get,set
        member val PlacesOfBirth:ResizeArray<SearchResultPlaceOfBirth> = new ResizeArray<SearchResultPlaceOfBirth>() with get,set
        member val Remarks:ResizeArray<SearchResultRemark> = new ResizeArray<SearchResultRemark>() with get,set

    [<AllowNullLiteral>]
    type SearchResults() = 
        member val EuResults:ResizeArray<SearchResultEu> = new ResizeArray<SearchResultEu>() with get,set
        member val HMTResults:ResizeArray<SearchResultHmTreasury> = new ResizeArray<SearchResultHmTreasury>() with get,set
        member val HMTUkraineResults:ResizeArray<SearchResultHmTreasury> = new ResizeArray<SearchResultHmTreasury>() with get,set
        member val OfacResults:ResizeArray<SearchResultOfac> = new ResizeArray<SearchResultOfac>() with get,set
        member val OfacConsolidatedResults:ResizeArray<SearchResultOfac> = new ResizeArray<SearchResultOfac>() with get,set
        member val DfatResults:ResizeArray<SearchResultDfat> = new ResizeArray<SearchResultDfat>() with get,set
        member val OsfiResults:ResizeArray<SearchResultOsfi> = new ResizeArray<SearchResultOsfi>() with get,set
        member val CanadianJusticeResults:ResizeArray<SearchResultCanadianJustice> = new ResizeArray<SearchResultCanadianJustice>() with get,set
        member val CanadianSemaResults:ResizeArray<SearchResultCanadianSema> = new ResizeArray<SearchResultCanadianSema>() with get,set
        member val SwissSecoResults:ResizeArray<SearchResultEntry> = new ResizeArray<SearchResultEntry>() with get,set

    [<AllowNullLiteral>]
    type SearchSource() = 
        member val ListId:String = null with get,set
        member val ListName:String = null with get,set
        member val ListShortName:String = null with get,set
        member val IsAffectedByListUpdate:Nullable<Boolean> = new Nullable<Boolean>() with get,set

    [<AllowNullLiteral>]
    type ArrayOfSearchResultEntries() = 
        inherit ResizeArray<SearchResultEntry>()

    [<AllowNullLiteral>]
    type SearchRecord() = 
        member val Id:Int64 = new Int64() with get,set
        member val SearchType:String = null with get,set
        member val DateSearched:DateTime = new DateTime() with get,set
        member val DateUpdated:DateTime = new DateTime() with get,set
        member val DateArchived:Nullable<DateTime> = new Nullable<DateTime>() with get,set
        member val IsArchived:Boolean = new Boolean() with get,set
        member val NumOfResults:Int32 = new Int32() with get,set
        member val ClientInResults:Boolean = new Boolean() with get,set
        member val ClientNotInResults:Boolean = new Boolean() with get,set
        member val AffectedByUpdate:Boolean = new Boolean() with get,set
        member val SearchCriteria:SearchCriteria = null with get,set
        member val SearchResults:SearchResults = null with get,set
        member val SearchSources:ResizeArray<SearchSource> = new ResizeArray<SearchSource>() with get,set
        member val ListSearchResults:ArrayOfSearchResultEntries = null with get,set

    [<AllowNullLiteral>]
    type GetSearchData() = 
        inherit BaseResponse()
        member val LinkedTo:ArrayOfLinkedTo = null with get,set
        member val SearchRecord:SearchRecord = null with get,set

    [<AllowNullLiteral>]
    type IBaseDataResponse = 
        abstract ResponseStatus:ResponseStatus with get,set

    [<AllowNullLiteral>]
    type IHasResponseStatus = 
        abstract ResponseStatus:ResponseStatus with get,set

    [<AllowNullLiteral>]
    type IBaseSearchResponse = 
        abstract LinkedTo:ArrayOfLinkedTo with get,set

    [<DataContract>]
    [<AllowNullLiteral>]
    type GetSearchResponse() = 
        [<DataMember>]
        member val Data:GetSearchData = null with get,set

    [<Route("/sanctions/get", "POST")>]
    [<DataContract>]
    [<AllowNullLiteral>]
    type GetSearch() = 
        inherit BaseRequest()
        interface IReturn<GetSearchResponse>
        [<DataMember>]
        member val Request:GetSearchRequest = null with get,set