openapi: 3.0.2
info:
  title: 検索API
  version: 1.3.0
servers:
- url: https://risk-analyze.com
tags:
- name: search
  description: 検索
paths:
  /search:
    get:
      tags:
      - search
      summary: 検索
      description: |
        個人国内、個人海外、会社国内、会社海外を検索する。（一括検索用のAPIはない。）

        それぞれの結果は最大200件まで。それ以上の場合は切り捨て。切り捨てられたことの判断はできない。
      parameters:
      - name: name
        in: query
        description: 名称
        required: true
        schema:
          type: string
      - name: birthday
        in: query
        description: 年4桁または年月日8桁（個人検索でのみ使用）
        schema:
          type: string
          pattern: '\d{4}|\d{8}'
      - name: country
        in: query
        description: 国名（会社海外検索でのみ使用）
        schema:
          type: string
      - name: match_type
        in: query
        description: |
          部分一致、完全一致のどちらで検索するか。（会社検索でのみ使用）

          - 0: 部分一致
          - 1: 完全一致
          - 2: あいまい検索

          ※ 値が未設定の場合、部分一致で検索する。
          
          ※ あいまい検索を選択した場合、国内の各情報は代わりに下記の方法で検索する。
          
          - 国内個人情報: 完全一致
          - 国内会社情報: 部分一致
        schema:
          type: integer
          nullable: true
          enum:
            - 0
            - 1
            - 2
      - name: search_types
        in: query
        description: |
          個人検索、会社検索のどちらで検索するか。（複数選択可）

          - 0: 個人検索
          - 1: 会社検索

          ※ 値が未設定の場合、個人、会社の両方で検索する。
        schema:
          type: array
          items:
              type: integer
              nullable: true
              enum:
                - 0
                - 1
      - name: target_resources
        in: query
        description: |
          国内検索、海外検索のどちらで検索するか。（複数選択可）

          - 0: 国内情報
          - 1: 海外情報

          ※ 値が未設定の場合、国内、海外の両方で検索する。
        schema:
          type: array
          items:
              type: integer
              nullable: true
              enum:
                - 0
                - 1
      - name: fuzzy_rate
        in: query
        description: |
          指定一致率以上の結果のみ取得する。50~100の間で指定が可能。未指定時は80。

          ※ あいまい検索を選択した場合にのみ有効。
        schema:
          type: integer
          nullable: true
          default: 80
          minimum: 50
          maximum: 100
      responses:
        200:
          description: 検索成功
          content:
            application/json:
              schema:
                type: object
                properties:
                  search_history_id:
                    description: すべての検索結果のid
                    type: integer
                  search_history_url:
                    description: すべての検索結果のurl
                    type: string
                  customer_domestic:
                    description: 個人国内結果（個人国内検索を行わない場合はレスポンスに含まれない。）
                    type: object
                    properties:
                      search_condition_id:
                        description: 個別の検索結果のid
                        type: integer
                      search_condition_url:
                        description: 個別の検索結果のurl
                        type: string
                      results:
                        type: array
                        items:
                          $ref: "#/components/schemas/Customer"
                  customer_overseas:
                    description: 個人海外結果（個人海外検索を行わない場合はレスポンスに含まれない。）
                    type: object
                    properties:
                      search_condition_id:
                        description: 個別の検索結果のid
                        type: integer
                      search_condition_url:
                        description: 個別の検索結果のurl
                        type: string
                      results:
                        type: array
                        items:
                          $ref: "#/components/schemas/Customer"
                  company_domestic:
                    description: 会社国内結果（会社国内検索を行わない場合はレスポンスに含まれない。）
                    type: object
                    properties:
                      search_condition_id:
                        description: 個別の検索結果のid
                        type: integer
                      search_condition_url:
                        description: 個別の検索結果のurl
                        type: string
                      results:
                        type: array
                        items:
                          $ref: "#/components/schemas/Company"
                  company_overseas:
                    description: 会社海外結果（会社海外検索を行わない場合はレスポンスに含まれない。）
                    type: object
                    properties:
                      search_condition_id:
                        description: 個別の検索結果のid
                        type: integer
                      search_condition_url:
                        description: 個別の検索結果のurl
                        type: string
                      results:
                        type: array
                        items:
                          $ref: "#/components/schemas/Company"
        401:
          description: 認証エラー
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
        422:
          description: リクエストエラー
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
      security:
        - Auth-User-Account: []
        - Auth-Key: []
components:
  schemas:
    Customer:
      type: object
      required:
        - antisocial_group
        - name
      properties:
        antisocial_group:
          type: string
          description: 区分
        name:
          type: string
          description: 氏名
        birthday:
          type: string
          description: 生年月日（yyyy/mm/dd形式）
        address:
          type: string
          description: 住所
        note:
          type: string
          description: 備考
        organization_name:
          type: string
          description: 団体名
        reported_at:
          type: string
          description: 掲載日付（日付フォーマットは統一されていない）
        journal_name:
          type: string
          description: 媒体名
        created_at:
          type: string
          description: 登録日時（ISO 8601形式）
        updated_at:
          type: string
          description: 更新日時（ISO 8601形式）
    Company:
      type: object
      required:
        - antisocial_group
        - name
      properties:
        antisocial_group:
          type: string
          description: 区分
        name:
          type: string
          description: 会社名
        tel:
          type: string
          description: 電話番号
        address:
          type: string
          description: 住所
        note:
          type: string
          description: 備考
        organization_supple:
          type: string
          description: 団体補足
        reported_at:
          type: string
          description:  掲載日付（日付フォーマットは統一されていない）
        journal_name:
          type: string
          description: 媒体名
        created_at:
          type: string
          description: 登録日時（ISO 8601形式）
        updated_at:
          type: string
          description: 更新日時（ISO 8601形式）
    ErrorResponse:
      type: object
      properties:
        message:
          type: string
  securitySchemes:
    Auth-User-Account:
      type: apiKey
      in: header
      name: Auth-User-Account
      description: ログインID（Risk Analyzeサービス画面の「ID」と同義）
    Auth-Key:
      type: apiKey
      in: header
      name: Auth-Key
      description: ログインパスワード（Risk Analyzeサービス画面の「パスワード」と同義）
