CSVインポートAPI


概要

{primary} 実習実施先の基本情報 or 技能実習生の基本情報 or 送出機関のデータのCSVインポートを行います。


アクセス制御

  • 監理団体アカウントのみアクセス可能です。
  • 監理団体アカウントであれば、マスター・管理者・一般ともにアクセス可能です。

I/O情報

エンドポイント

メソッド URI Headers
POST /api/csv/{type} Default

type:インポートするCSVの区分

  • type = 1 :実習実施先 基本情報のCSVインポートを行います。
  • type = 10:技能実習生 基本情報のCSVインポートを行います。
  • type = 20:送出機関のCSVインポートを行います。

ROUTEパラメータ

パラメーター名 内容 特記
type int インポートファイル種類 Enum参照
/api/csv/1

POSTパラメータ

各本ページのデータストアの項目に記載されている値をPOSTします。

  • 実習実施先 基本情報
  • 技能実習生 基本情報(まだ技能実習生のインポート作成していないので、仕様書もまだ古いままです。)
  • 送出機関

レスポンス

成功時
パラメーター名 内容 特記
result boolean CSVインポート結果
errors array 成功のためエラーがないので空配列が返ってきます
data array 空配列が返ってきます
alert array 空配列が返ってきます
{
    "data"   : [],
    "result" : true,
    "errors" : [],
    "alert"  : []
}
失敗時

ステータスコード:200

パラメーター名 内容 特記
result boolean CSVインポート結果
error List 失敗した理由を配列
data array 空配列が返ってきます
alert array 空配列が返ってきます
{
    "data"   : [],
    "result" : false,
    "errors" : {
        "content.0.country" : "送出国は必須項目です。",
        "content.0.name"    : "送出機関名は必須項目です。",
    },
    "alert"  : []
}

{danger} 失敗時は200以外のエラーコードが返却されます。共通ルールのレスポンスをチェック。


データストア

{primary} 実習実施先、技能実習生、送出機関、共通して監理団体IDを登録します。

データストア / 実習実施先

  • companiesテーブル

{warning} IDはNULLかどうかで、新規登録or更新の判別を行います。

所属している監理団体の変更は出来ないので、監理団体IDの変更は出来ません。

作成日時、更新日時、削除日時は自動で更新するためCSVファイルに入力する必要はありません。

   

{danger} 後々CSVの列の並び順変更要望あるかもしれないので下記一覧の並び順は順不同です。

論理名 物理名(フィールド名) バリデーション 備考
ID id unsinged int nullable / (※)ID存在チェック nullの場合は新規登録、存在するIDの場合はそのレコードは更新、存在しないIDの場合はエラーとします。
区分 company_type tinyint required / enum : CompanyTypeの値か?
法人番号 corporate_number char(13) nullable / 「区分:法人」時必須 / 数値のみ /固定桁数:13 「区分:個人」時、DBに明示的にNULLを登録します。
雇用保険適用事業所番号 insurance_office_number char(11) nullable / 「区分:法人」時必須 / 数値のみ /固定桁数:11 「区分:個人」時、DBに明示的にNULLを登録します。
実習実施先名 name varchar(100) nullable / 「区分:法人」時必須 / string / maxlength:100 「区分:個人」時、DBに明示的にNULLを登録します。
実習実施先名のふりがな kana varchar(100) nullable / 「区分:法人」時必須 / string / maxlength:100 「区分:個人」時、DBに明示的にNULLを登録します。
実習実施先名のローマ字 romaji varchar(100) nullable / 「区分:法人」時必須 / string / maxlength:100 「区分:個人」時、DBに明示的にNULLを登録します。
代表者役職 representative_rank varchar(50) nullable / 「区分:法人」時必須 / string / maxlength:50 「区分:個人」時、DBに明示的にNULLを登録します。
代表者氏名(姓) representative_sei varchar(50) required / string / maxlength:50
代表者氏名(名) representative_mei varchar(50) required / string / maxlength:50
代表者氏名(ふりがな・せい) representative_kana_sei varchar(50) required_doc / string / maxlength:50
代表者氏名(ふりがな・めい) representative_kana_mei varchar(50) required_doc / string / maxlength:50
代表者氏名(ローマ字・Surname) representative_family_name varchar(50) required_doc / string / maxlength:50
代表者氏名(ローマ字・Given name) representative_first_name varchar(50) required_doc / string / maxlength:50
郵便区番号 zip1 char required / 数値のみ / 固定桁数:3
町域番号 zip2 char required / 数値のみ / 固定桁数:4
所在地 address varchar(255) required / string / maxlength:255
所在地(ふりがな) address_kana varchar(255) required_doc / string / maxlength:255
所在地(ローマ字) address_romaji varchar(255) required_doc / string / maxlength:255
電話番号 市外局番 phone1 varchar(5) required / 数値のみ / maxlength:5
電話番号 市内局番 phone2 varchar(4) required / 数値のみ / maxlength:4
電話番号 加入者番号 phone3 varchar(4) required / 数値のみ / maxlength:4
FAX番号 市外局番 fax1 varchar(5) nullable / 数値のみ / maxlength:5 / required_with:fax2,fax3 fax2,fax3が入力されている場合は必須
FAX番号 市内局番 fax2 varchar(4) nullable / 数値のみ / maxlength:4 / required_with:fax1,fax3 fax1,fax3が入力されている場合は必須
FAX番号 加入者番号 fax3 varchar(4) nullable / 数値のみ / maxlength:4 / required_with:fax1,fax2 fax1,fax2が入力されている場合は必須
資本金 capital_amount bigint nullable / required_without:no_capital 「資本金なし」の場合必須
資本金なし no_capital boolean nullable / required_without:capital_amount 「資本金」が入力されていない場合は必須
常勤社員人数(合計) employee_number int required_doc / 数値のみ / maxlength:10
常勤社員人数(事務) business_staff_number int required_doc / 数値のみ / maxlength:10
常勤社員人数(現場) field_staff_number int required_doc / 数値のみ / maxlength:10
メールアドレス email varchar nullable / email / maxlength:100
実習生受入経験 acceptance_experience tinyint required / enum : AcceptanceExperienceの値か?
実習実施者届出受理番号 receipt_number char(10) nullable / 「実習生受入経験:なし」以外時必須 / 数値のみ / 固定桁数:10
実習実施者届出受理年月日 receipt_date date nullable / 「実習生受入経験:なし」以外時必須 / 日付形式
労働保険番号 insurance_number char(14) required_doc / 数値のみ / 固定桁数:14
加盟申込書対応日 membership_application_date date nullable / 日付形式
実習生受入申込書対応日 receipt_application_date date nullable / 日付形式

データストア / 技能実習生

  • trainees(技能実習生)テーブル

{warning} IDはNULLかどうかで、新規登録or更新の判別を行います。

新規、編集にかかわらず監理団体の変更はできません。

編集時は所属している実習実施先、所属事業所、送出国の変更は出来ないので、

監理団体、実習実施先(編集時)、所属事業所(編集時)、送出国(編集時)はCSVインポート処理での変更は出来ません。

ステータスに関しては、更新時に変更可能だと削除同等の処理が実現してしまうため、更新時は変更出来ないようにしております。

また、削除理由は管理画面でのみ変更可能のため、CSVインポート処理では変更できません。

作成日時、更新日時、削除日時は自動で更新するためCSVファイルに入力する必要はありません。

   

{danger} 後々CSVの列の並び順変更要望あるかもしれないので下記一覧の並び順は順不同です。

論理名 物理名(フィールド名) バリデーション 備考
ID id unsinged int nullable / (※)ID存在チェック nullの場合は新規登録、存在するIDの場合はそのレコードは更新、存在しないIDの場合はエラーとします。
実習実施先企業ID company_id unsinged int nullable / 実習ステータスが「実習中」時必須 / (※)ID存在チェック
所属先事業所ID company_ofice_id unsinged int nullable / 実習ステータスが「実習中」時必須 / (※)ID存在チェック
実習生ステータス status tinyint required / enum : TraineeStatusの値か?
送出国 country tinyint nullable / 実習ステータスが「実習中」時必須 / enum : Countryの値か?
送出機関ID sending_agency_id unsinged int nullable / 実習ステータスが「実習中」時必須 / (※)ID存在チェック
実習生氏名 ローマ字 romaji varchar(50) required / string / maxlength:50
実習生氏名 フリガナ kana varchar(50) required_doc / string / maxlength:50
実習生氏名 漢字 kanji varchar(50) required_doc / string / maxlength:50
国籍 nationality tinyint required / enum : Countryの値か?
出身地 birthplace varchar(100) required_doc / string / maxlength:100
母国語 native_language varchar(20) required_doc / string / maxlength:50
現住所 current_address varchar(255) required_doc / string / maxlength:50
TEL 市外局番 phone1 varchar(5) required_doc / 数値のみ / maxlength:5
TEL 市内局番 phone2 varchar(4) required_doc / 数値のみ / maxlength:4
TEL 加入者番号 phone3 varchar(4) required_doc / 数値のみ / maxlength:4
性別 sex tinyint required / enum : Sexの値か?
生年月日 birthday date required_doc / 日付形式:Y/m/d
パスポート番号 passport_number varchar(30) required_doc / string / maxlength:30
パスポート 有効期限 passport_expiration_date date required_doc / 日付形式:Y/m/d
在留カード番号 residence_card_number varchar(12) required_doc / 桁数固定:12
入国日 entry_date date nullable / 実習ステータスが「実習中」時必須 / 日付形式:Y/m/d
認定番号 certification_number char(10) nullable / 実習ステータスが「実習中」時必須 / string / 固定桁数:10
修得等をしようとする技能等に係る職歴 カテゴリー (1) job_category1 tinyint required_doc / 数値のみ / required_with:job_occupation1,experience_years1,job_*2,experience_years2 / カテゴリー・職種・年が(1)と(2)で同じ場合はエラー
修得等をしようとする技能等に係る職歴 職種 (1) job_occupation1 tinyint nullable / 数値のみ / required_with:job_category1,experience_years1,job_*2,experience_years2
修得等をしようとする技能等に係る職歴 経験年数 (1) experience_years1 tinyint nullable / 数値のみ / required_with:job_category1,job_occupation1,job_*2,experience_years2
修得等をしようとする技能等に係る職歴 カテゴリー (2) job_category2 tinyint nullable / 数値のみ / required_with:job_occupation2,experience_years2
修得等をしようとする技能等に係る職歴 職種 (2) job_occupation2 tinyint nullable / 数値のみ / required_with:job_category2,experience_years2
修得等をしようとする技能等に係る職歴 経験年数 (2) experience_years2 tinyint nullable / 数値のみ / required_with:job_category2,job_occupation2
母国語以外の語学力 日本語 japanese varchar required_doc / string / maxlength:50
母国語以外の語学力 英語 english varchar required_doc / string / maxlength:50
母国語以外の語学力 その他 other_language varchar required_doc / string / maxlength:50
訪日経験 有無 visit_experience tinyint required / enum : IsOrIsntの値か?
訪日期間 開始 visit_from date nullable / 「訪日経験:有」時必須 / 日付形式:Y/m/d / 訪日期間 終了より前の日付
訪日期間 終了 visit_until date nullable / 「訪日経験:有」時必須 / 日付形式:Y/m/d / 訪日期間 開始より後の日付
外国人建設・造船就労者受入事業で就労(有無) visit_experience_check1 boolean required / enum : IsOrIsntの値か? / 第2号技能実習終了後の帰国期間 開始・終了、建設・造船就労終了後の帰国期間 開始・終了が入力されていない場合はエラー
第2号技能実習終了後の帰国期間 開始 no2_return_from date nullable / 日付形式:Y/m/d / 第2号技能実習終了後の帰国期間 終了より前の日付
第2号技能実習終了後の帰国期間 終了 no2_return_until date nullable / 日付形式:Y/m/d / 本日より前の日付
建設・造船就労終了後の帰国期間 開始 construction_return_from date nullable / 日付形式:Y/m/d / 建設・造船就労終了後の帰国期間 終了より前の日付
建設・造船就労終了後の帰国期間 終了 construction_return_until date nullable / 日付形式:Y/m/d / 本日より前の日付
EPA に基づく看護・介護候補事業で就労(有無) visit_experience_check2 boolean required / enum : IsOrIsntの値か?
活動終了後の帰国期間 開始 activity_return_from date nullable / 「EPA に基づく看護・介護候補事業で就労(有無):有」時必須 / 日付形式:Y/m/d
活動終了後の帰国期間 終了 activity_return_until date nullable / 「EPA に基づく看護・介護候補事業で就労(有無):有」時必須 / 日付形式:Y/m/d
技能実習生経験 有無 trainee_experience tinyint required / enum : IsOrIsntの値か?
実習期間 開始 training_from date nullable / 「技能実習生経験 有無:有」時必須 / 日付形式:Y/m/d
実習期間 終了 training_until date nullable / 「技能実習生経験 有無:有」時必須 / 日付形式:Y/m/d
技能実習経験及びその区分 trainee_class_experience tinyint nullable / 「技能実習生経験 有無:有」時必須 / enum : TraineeClassの値か?
技能実習生経験 区分 trainee_class tinyint nullable / 実習ステータスが「実習中」時必須 / enum : TraineeClassの値か?
在留資格不交付の有無 non_granted tinyint required / enum : IsOrIsntの値か?
在留資格不交付の理由 non_granted_reason varchar(100) nullable / 「在留資格不交付の有無:有」時必須 / string / maxlength:100
職務内容や責任の程度 duties text required_doc / string / maxlength:100
その他 remarks text nullable / string
  • trainee_background(実習生 学歴・職歴)テーブル

{warning} 学歴は最大3つまで、職歴は最大5つまで登録可。

CSVの仕様上学歴は最大3学歴まで、職歴は最大5職歴までを1行で入力します。

作成日時、更新日時、削除日時は自動で更新するためCSVファイルに入力する必要はありません。

traineesテーブルとはレコード数1対1で作成します。

   

{danger} 後々CSVの列の並び順変更要望あるかもしれないので下記一覧の並び順は順不同です。

論理名 物理名 フィールド名 バリデーション 備考
学歴:期間 開始_1 education_backgrounds education_period_from1 json required_doc / 学歴1行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
学歴:期間 終了_1 education_backgrounds education_period_until1 json required_doc / 学歴1行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
学歴:学校名_1 education_backgrounds education_school_name1 json required_doc / 学歴1行目のいずれか入力されている場合必須 / string / maxlength:100
学歴:期間 開始_2 education_backgrounds education_period_from2 json required_doc / 学歴2行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
学歴:期間 終了_2 education_backgrounds education_period_until2 json required_doc / 学歴2行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
学歴:学校名_2 education_backgrounds education_school_name2 json required_doc / 学歴2行目のいずれか入力されている場合必須 / string / maxlength:100
学歴:期間 開始_3 education_backgrounds education_period_from3 json required_doc / 学歴3行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
学歴:期間 終了_3 education_backgrounds education_period_until3 json required_doc / 学歴3行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
学歴:学校名_3 education_backgrounds education_school_name3 json required_doc / 学歴3行目のいずれか入力されている場合必須 / string / maxlength:100
職歴:期間 開始_1 employment_histories employment_period_from1 json required_doc / 職歴1行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
職歴:期間 終了_1 employment_histories employment_period_until1 json required_doc / 職歴1行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
職歴:就職先名_1 employment_histories employment_company_name1 json required_doc / 職歴1行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
職歴:就職先名(職歴)_1 employment_histories employment_employment_history1 json required_doc / 職歴1行目のいずれか入力されている場合必須 / string / maxlength:50
職歴:期間 開始_2 employment_histories employment_period_from2 json required_doc / 職歴2行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
職歴:期間 終了_2 employment_histories employment_period_until2 json required_doc / 職歴2行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
職歴:就職先名_2 employment_histories employment_company_name2 json required_doc / 職歴2行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
職歴:就職先名(職歴)_2 employment_histories employment_employment_history2 json required_doc / 職歴2行目のいずれか入力されている場合必須 / string / maxlength:50
職歴:期間 開始_3 employment_histories employment_period_from3 json required_doc / 職歴3行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
職歴:期間 終了_3 employment_histories employment_period_until3 json required_doc / 職歴3行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
職歴:就職先名_3 employment_histories employment_company_name3 json required_doc / 職歴3行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
職歴:就職先名(職歴)_3 employment_histories employment_employment_history3 json required_doc / 職歴3行目のいずれか入力されている場合必須 / string / maxlength:50
職歴:期間 開始_4 employment_histories employment_period_from4 json required_doc / 職歴4行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
職歴:期間 終了_4 employment_histories employment_period_until4 json required_doc / 職歴4行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
職歴:就職先名_4 employment_histories employment_company_name4 json required_doc / 職歴4行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
職歴:就職先名(職歴)_4 employment_histories employment_employment_history4 json required_doc / 職歴4行目のいずれか入力されている場合必須 / string / maxlength:50
職歴:期間 開始_5 employment_histories employment_period_from5 json required_doc / 職歴5行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
職歴:期間 終了_5 employment_histories employment_period_until5 json required_doc / 職歴5行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
職歴:就職先名_5 employment_histories employment_company_name5 json required_doc / 職歴5行目のいずれか入力されている場合必須 / 日付形式:Y/m/d
職歴:就職先名(職歴)_5 employment_histories employment_employment_history5 json required_doc / 職歴5行目のいずれか入力されている場合必須 / string / maxlength:50

データストア / 送出機関

  • sending_agencies(送出機関)テーブル

{warning} IDはNULLかどうかで、新規登録or更新の判別を行います。 新規、編集にかかわらず監理団体の変更はできません。 監理団体ID(organization_id)は、sessionデータから取得するので、インポートするCSVには記述不要です。 作成日時、更新日時、削除日時は自動で登録するためインポートするCSVには記述不要です。

   

{danger} 後々CSVの列の並び順変更要望あるかもしれないので下記一覧の並び順は順不同です。

論理名 物理名(フィールド名) バリデーション 備考
ID id integer(10) nullable / (※)ID存在チェック nullの場合は新規登録、存在するIDの場合はそのレコードは更新、存在しないIDの場合はエラーとします。
送出国 country tinyint(4) required / enum:CountryのIDか
送出機関名 name varchar(100) required / string / maxlength:100
略称 abbreviated_name varchar(100) required_doc / string / maxlength:100
所在地 address varchar(255) required_doc / string / maxlength:255
責任者氏名 supervisor_name varchar(50) required_doc / string / maxlength:50
責任者役職 supervisor_rank varchar(50) required_doc / string / maxlength:50
送出機関番号 sending_agency_number char(9) required_doc / string / size:9
整理番号 reference_number char(4) required_doc / string / size:4


(※)ID存在チェックについて


POST値にNULLではない「id」の値が存在するが下記のSQLにて取得できない場合は、下記の理由により不正な値としてエラーにします。

  • そもそもsending_agenciesテーブル内に存在しないIDのため不正
  • sending_agenciesテーブルに存在するが、organization_idが自身の監理団体IDと異なるため、別の契約者のデータを更新しようとしているので不正
select *
  from sending_agencies
 where id = {POST値の'id'}
   and organization_id = {ログインsession内の'organization_id'}
   and deleted_at is null

注意事項

  • 技能実習生の登録時、新規登録時と更新時で登録するカラムが変わるので注意。
  • 技能実習生の学歴、職歴の登録時、更新の場合は対象レコードを一度deleteとした後にinsertします。