(* Options:
Date: 2025-07-28 01:07:16
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: GetCompanyLookups.*
//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 GetCompanyLookupsRequest() = 
        ///<summary>
        ///If the searches are being accessed by a sub user, specify their username here to only return searches they have permissions to view
        ///</summary>
        [<ApiMember(Description="If the searches are being accessed by a sub user, specify their username here to only return searches they have permissions to view")>]
        member val SubUserName:String = null with get,set

        member val ListIncompleteSearches:Boolean = new Boolean() with get,set
        member val Page:Int32 = new Int32() with get,set
        member val SortOrder:String = null with get,set
        member val NameSearch:String = null with get,set
        ///<summary>
        ///Filter the results to show only records that require updates due to company changes detected by CompanyLookup monitor
        ///</summary>
        [<ApiMember(Description="Filter the results to show only records that require updates due to company changes detected by CompanyLookup monitor")>]
        member val FilterIsUpdateRequired:Nullable<Boolean> = new Nullable<Boolean>() with get,set

        member val FilterReference:String = null with get,set
        member val FilterDateFrom:Nullable<DateTime> = new Nullable<DateTime>() with get,set
        member val FilterDateTo:Nullable<DateTime> = new Nullable<DateTime>() with get,set
        ///<summary>
        ///If set, will only return searches created by the user
        ///</summary>
        [<ApiMember(Description="If set, will only return searches created by the user")>]
        member val FilterUserName:String = null 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 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 ArrayOfLists() = 
        inherit ResizeArray<String>()

    [<AllowNullLiteral>]
    type CompanyLookupListItem() = 
        member val Id:Int32 = new Int32() with get,set
        member val SearchCriteria:SearchCriteria = null with get,set
        member val SelectedLists:ArrayOfLists = null with get,set
        member val Date:DateTime = new DateTime() with get,set
        member val HasCompanyId:Boolean = new Boolean() with get,set
        member val HasCompanyDetails:Boolean = new Boolean() with get,set
        member val HasStartedSearches:Boolean = new Boolean() with get,set
        member val HasCompletedSearches:Boolean = new Boolean() with get,set
        member val CountNewCompanyChanges:Nullable<Int32> = new Nullable<Int32>() with get,set

    [<AllowNullLiteral>]
    type ArrayOfCompanyLookupListItem() = 
        inherit ResizeArray<CompanyLookupListItem>()

    [<AllowNullLiteral>]
    type GetCompanyLookupsData() = 
        inherit BaseResponse()
        member val TotalRecords:Int32 = new Int32() with get,set
        member val CurrentPageNum:Int32 = new Int32() with get,set
        member val MaxPageNum:Int32 = new Int32() with get,set
        member val CompanyLookupRecords:ArrayOfCompanyLookupListItem = null with get,set

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

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

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

    [<Route("/companylookups/list", "POST")>]
    [<DataContract>]
    [<AllowNullLiteral>]
    type GetCompanyLookups() = 
        inherit BaseRequest()
        interface IReturn<GetCompanyLookupsResponse>
        [<DataMember>]
        member val Request:GetCompanyLookupsRequest = null with get,set