""" Options: Date: 2025-10-21 00:09:41 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: AddCompanyLookup.* #ExcludeTypes: #DefaultImports: datetime,decimal,marshmallow.fields:*,servicestack:*,typing:*,dataclasses:dataclass/field,dataclasses_json:dataclass_json/LetterCase/Undefined/config,enum:Enum/IntEnum #DataClass: #DataClassJson: """ import datetime import decimal from marshmallow.fields import * from servicestack import * from typing import * from dataclasses import dataclass, field from dataclasses_json import dataclass_json, LetterCase, Undefined, config from enum import Enum, IntEnum @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Authentication: # @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") api_user_id: Optional[str] = None """ 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) """ # @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") api_user_key: Optional[str] = None """ 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) """ # @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") user_id: Optional[str] = None """ 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). """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BaseRequest(IBaseRequest): # @ApiMember(Description="The authentication credentials", IsRequired=true, ParameterType="header, body") authentication: Optional[Authentication] = None """ The authentication credentials """ class IBaseRequest: authentication: Optional[Authentication] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ArrayOfLists(List[str]): pass @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class LinkedTo: client_id: Optional[int] = None id: Optional[int] = None type: Optional[str] = None subtype: Optional[str] = None status: Optional[str] = None description: Optional[str] = None is_archived: Optional[bool] = None name: Optional[str] = None date: Optional[datetime.datetime] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ArrayOfLinkedTo(List[LinkedTo]): pass @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AddCompanyLookupRequest: # @ApiMember(Description="If the search should be saved against a single Sub User account, specify their username here") sub_user_name: Optional[str] = None """ If the search should be saved against a single Sub User account, specify their username here """ company_lookup_id: Optional[int] = None # @ApiMember(Description="If this CompanyLookup is to update an existing record due to CompanyLookup Monitor changes, set the ID of the existing record here. This is the only field that needs to be set in the request.") monitor_company_lookup_id: Optional[int] = None """ If this CompanyLookup is to update an existing record due to CompanyLookup Monitor changes, set the ID of the existing record here. This is the only field that needs to be set in the request. """ company_registration_number: Optional[str] = None company_name: Optional[str] = None company_address: Optional[str] = None company_country: Optional[str] = None perform_enhanced_search: bool = False selected_lists: Optional[ArrayOfLists] = None # @ApiMember(Description="If the search should be linked to other searches, specify the them here") linked_to: Optional[ArrayOfLinkedTo] = None """ If the search should be linked to other searches, specify the them here """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BaseResponse(IBaseDataResponse, IHasResponseStatus): # @ApiMember(Description="The status of the response") response_status: Optional[ResponseStatus] = None """ The status of the response """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SearchCriteria: name: Optional[str] = None address: Optional[str] = None country: Optional[str] = None date_of_birth: Optional[str] = None nationality: Optional[str] = None reference: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyChangeData: name: Optional[str] = None previous_value: Optional[str] = None new_value: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ArrayOfCompanyChangeData(List[CompanyChangeData]): pass @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyChange: date_of_change: datetime.datetime = datetime.datetime(1, 1, 1) change_event_type: Optional[str] = None is_pending: bool = False company_change_data: Optional[ArrayOfCompanyChangeData] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ArrayOfCompanyChanges(List[CompanyChange]): pass @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyDirectorOrShareholder: id: int = 0 search_type: Optional[str] = None date_searched: datetime.datetime = datetime.datetime(1, 1, 1) date_updated: datetime.datetime = datetime.datetime(1, 1, 1) num_of_results: int = 0 client_in_results: bool = False client_not_in_results: bool = False affected_by_update: bool = False search_criteria: Optional[SearchCriteria] = None is_director: bool = False is_shareholder: bool = False @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SearchSource: list_id: Optional[str] = None list_name: Optional[str] = None list_short_name: Optional[str] = None is_affected_by_list_update: Optional[bool] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SearchListItem: id: int = 0 search_type: Optional[str] = None date_searched: datetime.datetime = datetime.datetime(1, 1, 1) date_updated: datetime.datetime = datetime.datetime(1, 1, 1) date_archived: Optional[datetime.datetime] = None is_archived: bool = False num_of_results: int = 0 client_in_results: bool = False client_not_in_results: bool = False affected_by_update: bool = False search_criteria: Optional[SearchCriteria] = None search_sources: Optional[List[SearchSource]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedLatestAccounts: currency: Optional[str] = None turnover: Optional[Decimal] = None shareholders_equity: Optional[Decimal] = None credit_rating: Optional[int] = None credit_limit: Optional[int] = None credit_rating_description: Optional[str] = None account_ref_day: Optional[int] = None account_ref_month: Optional[int] = None account_next_due_date: Optional[datetime.datetime] = None account_last_made_up_date: Optional[datetime.datetime] = None account_category: Optional[str] = None return_last_made_up_date: Optional[datetime.datetime] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedSummary: name: Optional[str] = None country: Optional[str] = None registration_number: Optional[str] = None date_of_incorporation: Optional[str] = None type_of_incorporation: Optional[str] = None company_status: Optional[str] = None address: Optional[str] = None telephone: Optional[str] = None sic_code: Optional[str] = None sic_description: Optional[str] = None principle_activity: Optional[str] = None latest_accounts: Optional[CompanyLookupEnhancedLatestAccounts] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedAddress: full_address: Optional[str] = None address1: Optional[str] = None address2: Optional[str] = None address3: Optional[str] = None address4: Optional[str] = None post_code: Optional[str] = None telephone: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedWebsite: website: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedAdditionalContact: telephone: Optional[str] = None fax_number: Optional[str] = None email_address: Optional[str] = None web_address: Optional[str] = None twitter: Optional[str] = None facebook: Optional[str] = None google_plus: Optional[str] = None linked_in: Optional[str] = None contact_name: Optional[str] = None business_classification: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedContactInfo: registered_address: Optional[CompanyLookupEnhancedAddress] = None trading_addresses: Optional[List[CompanyLookupEnhancedAddress]] = None websites: Optional[List[CompanyLookupEnhancedWebsite]] = None additional_contact_info: Optional[CompanyLookupEnhancedAdditionalContact] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedSicCode: sic_code2003: Optional[int] = None sic_code2003_description: Optional[str] = None sic_code2007: Optional[int] = None sic_code2007_description: Optional[str] = None status: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedPreviousName: date_changed: Optional[datetime.datetime] = None name: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedShareholder: title: Optional[str] = None forename: Optional[str] = None surname: Optional[str] = None address1: Optional[str] = None address2: Optional[str] = None address3: Optional[str] = None address4: Optional[str] = None address5: Optional[str] = None post_code: Optional[str] = None share_type: Optional[str] = None number: Optional[Decimal] = None value: Optional[Decimal] = None currency: Optional[str] = None shareholder_type: Optional[str] = None share_class: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedShareStructure: issued_share_capital: Optional[Decimal] = None shareholders: Optional[List[CompanyLookupEnhancedShareholder]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedDirector: name: Optional[str] = None address: Optional[str] = None gender: Optional[str] = None appointment_date: Optional[datetime.datetime] = None resignation_date: Optional[datetime.datetime] = None date_of_birth: Optional[datetime.datetime] = None position: Optional[str] = None id_number: Optional[int] = None current_directorships: Optional[int] = None previous_directorships: Optional[int] = None total_directorships: Optional[int] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedDirectors: current_directors: Optional[List[CompanyLookupEnhancedDirector]] = None previous_directors: Optional[List[CompanyLookupEnhancedDirector]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedCompany: country: Optional[str] = None company_name: Optional[str] = None company_number: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedStructure: parent_companies: Optional[List[CompanyLookupEnhancedCompany]] = None subsidiary_companies: Optional[List[CompanyLookupEnhancedCompany]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedCCJ: date: Optional[datetime.datetime] = None court: Optional[str] = None amount: Optional[Decimal] = None case_number: Optional[str] = None status: Optional[str] = None date_paid: Optional[str] = None incoming_record_details: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedCCJs: possible_c_c_js: Optional[List[CompanyLookupEnhancedCCJ]] = None exact_c_c_js: Optional[List[CompanyLookupEnhancedCCJ]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedEvent: date: Optional[datetime.datetime] = None description: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedCommentary: text: Optional[str] = None positive_or_negative: Optional[str] = None priority: Optional[int] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedCreditLimit: date: Optional[datetime.datetime] = None date_order: Optional[int] = None amount: Optional[int] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedCreditRating: date: Optional[datetime.datetime] = None date_order: Optional[int] = None amount: Optional[int] = None short_description: Optional[str] = None description: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedCreditAccount: credit_limit_history: Optional[List[CompanyLookupEnhancedCreditLimit]] = None credit_rating_history: Optional[List[CompanyLookupEnhancedCreditRating]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupFinancialProfit: turnover: Optional[Decimal] = None export: Optional[Decimal] = None cost_of_sales: Optional[Decimal] = None gross_profit: Optional[Decimal] = None wages_and_salaries: Optional[Decimal] = None director_emolument: Optional[Decimal] = None operating_profit: Optional[Decimal] = None depreciation: Optional[Decimal] = None audit_fees: Optional[Decimal] = None interest_payments: Optional[Decimal] = None pretax_profit: Optional[Decimal] = None taxation: Optional[Decimal] = None profit_after_tax: Optional[Decimal] = None dividends_payable: Optional[Decimal] = None retained_profit: Optional[Decimal] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupFinancialBalance: tangible_accounts: Optional[Decimal] = None intangible_assets: Optional[Decimal] = None total_fixed_assets: Optional[Decimal] = None stock: Optional[Decimal] = None trade_debtors: Optional[Decimal] = None cash: Optional[Decimal] = None other_debtors: Optional[Decimal] = None misc_current_assets: Optional[Decimal] = None total_current_assets: Optional[Decimal] = None trade_creditors: Optional[Decimal] = None bank_loans_and_overdrafts: Optional[Decimal] = None other_short_term_finance: Optional[Decimal] = None misc_current_liabilities: Optional[Decimal] = None total_current_liabilities: Optional[Decimal] = None bank_loans_and_overdrafts_and_l_t_l: Optional[Decimal] = None other_long_term_finance: Optional[Decimal] = None total_long_term_finance: Optional[Decimal] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupFinancialCapital: called_up_shared_capital: Optional[Decimal] = None profit_and_loss_account_reserve: Optional[Decimal] = None revaluation_reserve: Optional[Decimal] = None sundry_reserves: Optional[Decimal] = None shareholder_funds: Optional[Decimal] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupFinancialOther: net_worth: Optional[Decimal] = None net_assets: Optional[Decimal] = None working_capital: Optional[Decimal] = None total_assets: Optional[Decimal] = None total_liabilities: Optional[Decimal] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupFinancialCash: net_cash_flow_from_operations: Optional[Decimal] = None net_cash_flow_before_financing: Optional[Decimal] = None net_cash_flow_from_financing: Optional[Decimal] = None increase_in_cash: Optional[Decimal] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupFinancialMisc: contingent_liability: Optional[str] = None capital_employed: Optional[Decimal] = None number_of_employees: Optional[Decimal] = None auditors: Optional[str] = None auditor_comments: Optional[str] = None bankers: Optional[str] = None bank_branch_code: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupFinancialRatios: pre_tax_profit_margin: Optional[Decimal] = None current_ratio: Optional[Decimal] = None sales_networking_capital: Optional[Decimal] = None gearing: Optional[Decimal] = None equity: Optional[Decimal] = None creditor_days: Optional[Decimal] = None debtor_days: Optional[Decimal] = None liquidity_acid_test: Optional[Decimal] = None return_on_capital_employed: Optional[Decimal] = None return_on_net_assets_employed: Optional[Decimal] = None return_on_total_assets_employed: Optional[Decimal] = None current_debt_ratio: Optional[Decimal] = None total_debt_ratio: Optional[Decimal] = None stock_turnover_ratio: Optional[Decimal] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhancedFinancialStatement: year_end_date_order: Optional[int] = None year_end_date: Optional[datetime.datetime] = None summary_number_of_weeks: Optional[int] = None summary_currency: Optional[str] = None summary_consolidated_account: Optional[str] = None profit_and_loss: Optional[CompanyLookupFinancialProfit] = None balance_sheet: Optional[CompanyLookupFinancialBalance] = None capital_and_reserves: Optional[CompanyLookupFinancialCapital] = None other: Optional[CompanyLookupFinancialOther] = None cash: Optional[CompanyLookupFinancialCash] = None misc: Optional[CompanyLookupFinancialMisc] = None ratios: Optional[CompanyLookupFinancialRatios] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupEnhanced: summary: Optional[CompanyLookupEnhancedSummary] = None contact_information: Optional[CompanyLookupEnhancedContactInfo] = None sic_codes: Optional[List[CompanyLookupEnhancedSicCode]] = None previous_names: Optional[List[CompanyLookupEnhancedPreviousName]] = None share_structure: Optional[CompanyLookupEnhancedShareStructure] = None directors: Optional[CompanyLookupEnhancedDirectors] = None group_structure: Optional[CompanyLookupEnhancedStructure] = None county_court_judgements: Optional[CompanyLookupEnhancedCCJs] = None event_history: Optional[List[CompanyLookupEnhancedEvent]] = None commentaries: Optional[List[CompanyLookupEnhancedCommentary]] = None credit_accounts: Optional[CompanyLookupEnhancedCreditAccount] = None financial_statements: Optional[List[CompanyLookupEnhancedFinancialStatement]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CompanyLookupSearchRecord: id: int = 0 search_criteria: Optional[SearchCriteria] = None selected_lists: Optional[ArrayOfLists] = None date: datetime.datetime = datetime.datetime(1, 1, 1) has_company_id: bool = False has_company_details: bool = False has_started_searches: bool = False has_completed_searches: bool = False company_changes: Optional[ArrayOfCompanyChanges] = None company_directors_and_shareholders: Optional[List[CompanyDirectorOrShareholder]] = None company_search_record: Optional[SearchListItem] = None has_enhanced_information: bool = False enhanced_information: Optional[CompanyLookupEnhanced] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AddCompanyLookupData(BaseResponse, IBaseSearchResponse): linked_to: Optional[ArrayOfLinkedTo] = None search_record: Optional[CompanyLookupSearchRecord] = None class IBaseDataResponse: response_status: Optional[ResponseStatus] = None class IHasResponseStatus: response_status: Optional[ResponseStatus] = None class IBaseSearchResponse(IBaseDataResponse): linked_to: Optional[ArrayOfLinkedTo] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AddCompanyLookupResponse: data: Optional[AddCompanyLookupData] = None # @Route("/companylookups/create", "POST") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AddCompanyLookup(BaseRequest, IReturn[AddCompanyLookupResponse]): request: Optional[AddCompanyLookupRequest] = None