use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct HojinInfoResponse<T> {
pub errors: Option<Vec<ApiError>>,
#[serde(rename = "hojin-infos")]
pub hojin_infos: Option<Vec<T>>,
pub id: Option<String>,
pub message: Option<String>,
}
impl<T> HojinInfoResponse<T> {
pub fn into_hojin_infos(self) -> Vec<T> {
self.hojin_infos.unwrap_or_default()
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct UpdateInfoResponse<T> {
pub errors: Option<Vec<ApiError>>,
#[serde(rename = "hojin-infos")]
pub hojin_infos: Option<Vec<T>>,
pub id: Option<String>,
pub message: Option<String>,
#[serde(rename = "pageNumber")]
pub page_number: Option<String>,
#[serde(rename = "totalCount")]
pub total_count: Option<String>,
#[serde(rename = "totalPage")]
pub total_page: Option<String>,
}
impl<T> UpdateInfoResponse<T> {
pub fn into_hojin_infos(self) -> Vec<T> {
self.hojin_infos.unwrap_or_default()
}
}
pub type SearchResponse = HojinInfoResponse<HojinInfoSearch>;
pub type HojinResponse = HojinInfoResponse<HojinInfo>;
pub type HojinChildResponse = HojinInfoResponse<HojinInfoForChild>;
pub type UpdateInfoHojinResponse = UpdateInfoResponse<HojinInfo>;
pub type UpdateInfoChildResponse = UpdateInfoResponse<HojinInfoForChild>;
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct ApiError {
pub item: Option<String>,
pub message: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct HojinInfoSearch {
pub corporate_number: Option<String>,
pub location: Option<String>,
#[serde(rename = "meta-data")]
pub meta_data: Option<ChildMetadata>,
pub name: Option<String>,
pub name_en: Option<String>,
pub number_of_activity: Option<String>,
pub postal_code: Option<String>,
pub status: Option<String>,
pub update_date: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct HojinInfo {
pub aggregated_year: Option<String>,
pub business_items: Option<Vec<String>>,
pub business_summary: Option<String>,
pub capital_stock: Option<i64>,
pub certification: Option<Vec<CertificationInfo>>,
pub close_cause: Option<String>,
pub close_date: Option<String>,
pub commendation: Option<Vec<CommendationInfo>>,
pub company_size_female: Option<i64>,
pub company_size_male: Option<i64>,
pub company_url: Option<String>,
pub corporate_number: Option<String>,
#[serde(rename = "corporation-info")]
pub corporation_info: Option<Vec<CorporationInfo>>,
pub date_of_establishment: Option<String>,
pub employee_number: Option<i64>,
pub finance: Option<Finance>,
pub founding_year: Option<i32>,
pub industry: Option<Vec<String>>,
pub kana: Option<String>,
pub kind: Option<String>,
pub location: Option<String>,
#[serde(rename = "meta-data")]
pub meta_data: Option<Metadata>,
pub name: Option<String>,
pub name_en: Option<String>,
pub patent: Option<Vec<PatentInfo>>,
pub postal_code: Option<String>,
pub process: Option<String>,
pub procurement: Option<Vec<ProcurementInfo>>,
pub qualification_grade: Option<String>,
pub representative_name: Option<String>,
pub status: Option<String>,
pub subsidy: Option<Vec<SubsidyInfo>>,
pub update_date: Option<String>,
pub workplace_info: Option<WorkplaceInfo>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct HojinInfoForChild {
pub certification: Option<Vec<CertificationInfo>>,
pub commendation: Option<Vec<CommendationInfo>>,
pub corporate_number: Option<String>,
#[serde(rename = "corporation-info")]
pub corporation_info: Option<Vec<CorporationInfo>>,
pub finance: Option<Finance>,
pub location: Option<String>,
pub name: Option<String>,
pub patent: Option<Vec<PatentInfo>>,
pub procurement: Option<Vec<ProcurementInfo>>,
pub subsidy: Option<Vec<SubsidyInfo>>,
pub workplace_info: Option<WorkplaceInfo>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct CertificationInfo {
pub category: Option<String>,
pub date_of_approval: Option<String>,
pub government_departments: Option<String>,
#[serde(rename = "meta-data")]
pub meta_data: Option<ChildMetadata>,
pub target: Option<String>,
pub title: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct CommendationInfo {
pub category: Option<String>,
pub date_of_commendation: Option<String>,
pub government_departments: Option<String>,
#[serde(rename = "meta-data")]
pub meta_data: Option<ChildMetadata>,
pub note: Option<String>,
pub target: Option<String>,
pub title: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct CorporationInfo {
pub corporation_location: Option<String>,
pub corporation_location_furigana: Option<String>,
pub corporation_name: Option<String>,
pub corporation_name_furigana: Option<String>,
pub insured_number: Option<String>,
pub loss_date: Option<String>,
#[serde(rename = "meta-data")]
pub meta_data: Option<ChildMetadata>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct Finance {
pub accounting_standards: Option<String>,
pub fiscal_year_cover_page: Option<String>,
pub major_shareholders: Option<Vec<MajorShareholder>>,
pub management_index: Option<Vec<ManagementIndex>>,
#[serde(rename = "meta-data")]
pub meta_data: Option<ChildMetadata>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct PatentInfo {
pub application_date: Option<String>,
pub classifications: Option<Vec<HashMap<String, String>>>,
#[serde(rename = "meta-data")]
pub meta_data: Option<ChildMetadata>,
pub patent_type: Option<String>,
pub registration_number: Option<String>,
pub title: Option<String>,
pub url: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct ProcurementInfo {
pub amount: Option<i64>,
pub date_of_order: Option<String>,
pub government_departments: Option<String>,
#[serde(rename = "meta-data")]
pub meta_data: Option<ChildMetadata>,
pub note: Option<String>,
pub title: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct SubsidyInfo {
pub amount: Option<String>,
pub date_of_approval: Option<String>,
pub government_departments: Option<String>,
#[serde(rename = "meta-data")]
pub meta_data: Option<ChildMetadata>,
pub target: Option<String>,
pub title: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct WorkplaceInfo {
pub base_infos: Option<WorkplaceBaseInfos>,
pub compatibility_of_childcare_and_work: Option<CompatibilityOfChildcareAndWork>,
#[serde(rename = "meta-data")]
pub meta_data: Option<ChildMetadata>,
pub women_activity_infos: Option<WomenActivityInfos>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct WorkplaceBaseInfos {
pub average_age: Option<f64>,
pub average_continuous_service_years: Option<f64>,
#[serde(rename = "average_continuous_service_years_Female")]
pub average_continuous_service_years_female: Option<f64>,
#[serde(rename = "average_continuous_service_years_Male")]
pub average_continuous_service_years_male: Option<f64>,
pub average_continuous_service_years_type: Option<String>,
pub month_average_predetermined_overtime_hours: Option<f64>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct CompatibilityOfChildcareAndWork {
pub maternity_leave_acquisition_num: Option<i64>,
pub number_of_maternity_leave: Option<i64>,
pub number_of_paternity_leave: Option<i64>,
pub paternity_leave_acquisition_num: Option<i64>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct WomenActivityInfos {
pub female_share_of_manager: Option<i64>,
pub female_share_of_officers: Option<i64>,
pub female_workers_proportion: Option<f64>,
pub female_workers_proportion_type: Option<String>,
pub gender_total_of_manager: Option<i64>,
pub gender_total_of_officers: Option<i64>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct MajorShareholder {
pub name_major_shareholders: Option<String>,
pub shareholding_ratio: Option<f64>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct ManagementIndex {
pub capital_stock_summary_of_business_results: Option<i64>,
pub capital_stock_summary_of_business_results_unit_ref: Option<String>,
pub gross_operating_revenue_summary_of_business_results: Option<i64>,
pub gross_operating_revenue_summary_of_business_results_unit_ref: Option<String>,
pub net_assets_summary_of_business_results: Option<i64>,
pub net_assets_summary_of_business_results_unit_ref: Option<String>,
pub net_income_loss_summary_of_business_results: Option<i64>,
pub net_income_loss_summary_of_business_results_unit_ref: Option<String>,
pub net_premiums_written_summary_of_business_results_ins: Option<i64>,
pub net_premiums_written_summary_of_business_results_ins_unit_ref: Option<String>,
pub net_sales_summary_of_business_results: Option<i64>,
pub net_sales_summary_of_business_results_unit_ref: Option<String>,
pub number_of_employees: Option<i64>,
pub number_of_employees_unit_ref: Option<String>,
pub operating_revenue1_summary_of_business_results: Option<i64>,
pub operating_revenue1_summary_of_business_results_unit_ref: Option<String>,
pub operating_revenue2_summary_of_business_results: Option<i64>,
pub operating_revenue2_summary_of_business_results_unit_ref: Option<String>,
pub ordinary_income_loss_summary_of_business_results: Option<i64>,
pub ordinary_income_loss_summary_of_business_results_unit_ref: Option<String>,
pub ordinary_income_summary_of_business_results: Option<i64>,
pub ordinary_income_summary_of_business_results_unit_ref: Option<String>,
pub period: Option<String>,
pub total_assets_summary_of_business_results: Option<i64>,
pub total_assets_summary_of_business_results_unit_ref: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct Metadata {
pub data_quality: Option<MetadataFields>,
pub import_frequency: Option<MetadataFields>,
pub key_field: Option<String>,
pub last_acquisition_date: Option<MetadataFields>,
pub last_update_date: Option<MetadataFields>,
pub source: Option<MetadataFields>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct MetadataFields {
pub aggregated_year: Option<String>,
pub business_items: Option<String>,
pub business_summary: Option<String>,
pub capital_stock: Option<String>,
pub close_cause: Option<String>,
pub close_date: Option<String>,
pub company_size_female: Option<String>,
pub company_size_male: Option<String>,
pub company_url: Option<String>,
pub corporate_number: Option<String>,
pub date_of_establishment: Option<String>,
pub employee_number: Option<String>,
pub founding_year: Option<String>,
pub industry: Option<String>,
pub kana: Option<String>,
pub kind: Option<String>,
pub location: Option<String>,
pub name: Option<String>,
pub name_en: Option<String>,
pub postal_code: Option<String>,
pub process: Option<String>,
pub qualification_grade: Option<String>,
pub representative_name: Option<String>,
pub status: Option<String>,
pub update_date: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct ChildMetadata {
pub data_quality: Option<String>,
pub import_frequency: Option<String>,
pub key_field: Option<String>,
pub last_acquisition_date: Option<String>,
pub last_update_date: Option<String>,
pub source: Option<String>,
}