openapi: 3.0.2
info:
  title: Solomon API
  description: |
    Solomon APIドキュメント

    本ドキュメントはSwagger Editor (https://editor.swagger.io/) 向けに、OpenAPI形式で記述しております。

    任意のブラウザよりSwagger Editorにアクセス後、

      ヘッダ -> File -> Import file

    の順でクリックし、当該ファイルをアップロードすることでご確認いただけます。

    またRisk Analyzeの本番環境またはトライアル環境のログイン情報をお持ちであれば、Swagger Editor上でリクエスト・レスポンスをお試しいただけます。
  contact:
    email: customer@kycc.co.jp
  version: 1.4.1
servers:
- url: https://risk-analyze.com
  description: 本番環境
tags:
- name: search
  description: データ個別検索
- name: bulkSearch
  description: データ一括検索
paths:
  /customer:
    get:
      tags:
      - search
      summary: 個別顧客検索
      description: |
        リスクデータベース上の、リクエストパラメータの各値に対応する条件に合致する個人を単複数抽出する機能を提供する。

        送信した全パスパラメータに対応した情報が一致する全レコードを全て返す。
      operationId: getCustomer
      parameters:
      - name: name
        in: query
        description: 顧客名
        required: true
        schema:
          type: string
      - name: birthday
        in: query
        description: 年4桁または年月日8桁
        schema:
          type: string
          example: "19420101"
          pattern: '\d{0}|\d{4}|\d{8}'
      - name: target_resources
        in: query
        description: |
          検索対象で、複数選択可。下記の値に応じた検索先は下記の通り。

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

          ※ 値が未設定の場合、国内情報のみを検索する。
        schema:
          type: array
          items:
            type: integer
            nullable: true
            enum:
              - 0
              - 1
      - name: match_type
        in: query
        description: |
          完全一致、あいまい検索のどちらで検索するか。

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

          ※ 値が未設定か上記以外の場合、完全一致で検索する。

          ※ 国内顧客情報の検索は、完全一致のみ有効。あいまい検索を選択した場合、国内情報のみ代わりに完全一致で検索する。
        schema:
          type: integer
          nullable: true
          enum:
            - 1
            - 2
      - 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: array
                items:
                  $ref: "#/components/schemas/Customer"
        401:
          description: 認証失敗
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AuthenticationErrorResponse"
        422:
          description: バリデーションエラー
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ValidationErrorResponse"
      security:
        - Auth-User-Account: []
        - Auth-Key: []
  /company:
    get:
      tags:
      - search
      summary: 個別会社検索
      description: |
        リスクデータベース上の、リクエストパラメータの各値に対応する条件に合致する会社を単複数抽出する機能を提供する。

        送信した全パスパラメータに対応したカラムが部分一致する全レコードを全て返す。
      operationId: getCompany
      parameters:
      - name: name
        in: query
        description: 会社名
        required: true
        schema:
          type: string
      - name: target_resources
        in: query
        description: |
          検索対象で、複数選択可。下記の値に応じた検索先は下記の通り。

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

          ※ 値が未設定の場合、国内情報のみを検索する。
        schema:
          type: array
          items:
            type: integer
            nullable: true
            enum:
              - 0
              - 1
      - 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: 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: array
                items:
                  $ref: "#/components/schemas/Company"
        401:
          description: 認証失敗
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AuthenticationErrorResponse"
        422:
          description: バリデーションエラー
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ValidationErrorResponse"
      security:
        - Auth-User-Account: []
        - Auth-Key: []
  /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/Customer2"
                  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/Customer2"
                  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/Company2"
                  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/Company2"
        401:
          description: 認証エラー
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AuthenticationErrorResponse"
        422:
          description: バリデーションエラー
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ValidationErrorResponse"
      security:
        - Auth-User-Account: []
        - Auth-Key: []
  /rumor:
    post:
      tags:
      - search
      summary: 風評検索
      description: |
        人物名や会社名といったフレーズで自動検索し、風評被害と思しきURLとその抜粋を出力する。
      requestBody:
        content:
          application/json:
            schema:
              type: object
              description: /company/bulkSearch リクエストボディ
              required:
                - query
              properties:
                query:
                  type: string
                  example: "風評太郎"
                  description: 検索フレーズ
                payload_id:
                  type: string
                  example: SOMETHING_IDENTIFIER_12345678
                  description: (Webhook用) リクエストとレスポンスを紐づける、任意の文字列
                payload_url:
                  type: string
                  example: ""
                  description: 処理完了時にリクエストするURL
                send_mail:
                  type: boolean
                  default: true
                  description: （trueまたは未設定時）一括検索完了時、登録されている団体情報のEメールアドレス宛にメールを送信
      responses:
        202:
          description: |
            処理成功

            リクエストの内容に応じて、

            「send_mail == true」または「send_mail未指定」の場合、メールを送信する。

            「payload_urlにURLを指定」の場合、payload_urlで指定したURLにペイロードを送信する。
        x-webhook-response:
          description: |
            payload_urlに送信される、Webhookリクエストボディ

            POSTメソッドで送信する。
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RumorSearchResponse"
        401:
          description: 認証失敗
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AuthenticationErrorResponse"
        422:
          description: バリデーションエラー
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ValidationErrorResponse"
      security:
        - Auth-User-Account: []
        - Auth-Key: []
  /customer/bulkSearch:
    post:
      tags:
      - bulkSearch
      summary: 顧客一括検索
      description: |
        リスクデータベース上の、リクエストパラメータの各値に対応する条件に合致する個人を単複数抽出する機能を提供する。

        送信した全パスパラメータに対応したカラムが部分一致する全レコードを全て返す。
      requestBody:
        content:
          application/json:
            schema:
              type: object
              description: /customer/bulkSearch リクエストボディ
              required:
                - data
              properties:
                payload_id:
                  type: string
                  example: SOMETHING_IDENTIFIER_12345678
                  description: (Webhook用) リクエストとレスポンスを紐づける、任意の文字列
                payload_url:
                  type: string
                  example: ""
                  description: 処理完了時にリクエストするURL
                send_mail:
                  type: boolean
                  default: true
                  description: （trueまたは未設定時）一括検索完了時、登録されている団体情報のEメールアドレス宛にメールを送信
                publish_date_from:
                  type: string
                  example: 20100101
                  description: YYYYMMDD形式で掲載日付の開始日付
                publish_date_to:
                  type: string
                  example: 20201231
                  description: YYYYMMDD形式で掲載日付の終了日付
                target_resources:
                  type: array
                  description: |
                    検索対象で、複数選択可。下記の値に応じた検索先は下記の通り。

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

                    ※ 値が未設定の場合、国内情報のみを検索する。
                  items:
                    type: integer
                    enum:
                    - 0
                    - 1
                match_type:
                  type: integer
                  description: |
                    完全一致、あいまい検索のどちらで検索するか。

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

                    ※ 値が未設定か上記以外の場合、完全一致で検索する。

                    ※ 国内顧客情報の検索は、完全一致のみ有効。あいまい検索を選択した場合、国内情報のみ代わりに完全一致で検索する。
                  items:
                    type: integer
                    nullable: true
                    enum:
                      - 1
                      - 2
                fuzzy_rate:
                  type: integer
                  description: |
                    指定一致率以上の結果のみ取得する。50~100の間で指定が可能。未指定時は80。

                    ※ あいまい検索を選択した場合にのみ有効。
                  nullable: true
                  default: 80
                  minimum: 50
                  maximum: 100
                data:
                  type: array
                  description: 検索条件とその結果
                  items:
                    type: object
                    required:
                      - name
                    properties:
                      payload_id:
                        type: string
                        example: SOMETHING_CHILD_IDENTIFIER_12345678
                        description: (Webhook用) リクエスト側 `.data.[].payload_id` とレスポンス側 `.data.[].condition.payload_id` を紐付ける、任意の文字列
                      name:
                        type: string
                        description: 顧客氏名
                        example: "テスト太郎"
                      birthday:
                        type: string
                        description: 年4桁または年月日8桁
                        example: "19800101"
                        pattern: '\d{0}|\d{4}|\d{8}'
                      note:
                        type: string
                        description: 任意で設定できて検索履歴で確認できるメモ
                        example: "ID-100"
      responses:
        202:
          description: |
            処理成功

            リクエストの内容に応じて、

            「send_mail == true」または「send_mail未指定」の場合、メールを送信する。

            「payload_urlにURLを指定」の場合、payload_urlで指定したURLにペイロードを送信する。
        x-webhook-response:
          description: |
            payload_urlに送信される、Webhookリクエストボディ

            POSTメソッドで送信する。
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BulkCustomerSearchResponse"
        401:
          description: 認証失敗
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AuthenticationErrorResponse"
        422:
          description: バリデーションエラー
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ValidationErrorResponse"
      security:
        - Auth-User-Account: []
        - Auth-Key: []
  /company/bulkSearch:
    post:
      tags:
      - bulkSearch
      summary: 会社一括検索
      description: |
        リスクデータベース上の、リクエストパラメータの各値に対応する条件に合致する会社を単複数抽出する機能を提供する。

        送信した全パスパラメータに対応したカラムが部分一致する全レコードを全て返す。
      requestBody:
        content:
          application/json:
            schema:
              type: object
              description: /company/bulkSearch リクエストボディ
              required:
                - data
              properties:
                payload_id:
                  type: string
                  example: SOMETHING_IDENTIFIER_12345678
                  description: (Webhook用) リクエストとレスポンスを紐づける、任意の文字列
                payload_url:
                  type: string
                  example: ""
                  description: 処理完了時にリクエストするURL
                send_mail:
                  type: boolean
                  default: true
                  description: （trueまたは未設定時）一括検索完了時、登録されている団体情報のEメールアドレス宛にメールを送信
                publish_date_from:
                  type: string
                  example: 20100101
                  description: YYYYMMDD形式で掲載日付の開始日付
                publish_date_to:
                  type: string
                  example: 20201231
                  description: YYYYMMDD形式で掲載日付の終了日付
                target_resources:
                  type: array
                  description: |
                    検索対象で、複数選択可。下記の値に応じた検索先は下記の通り。

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

                    ※ 値が未設定の場合、国内情報のみを検索する。
                  items:
                    type: integer
                    enum:
                    - 0
                    - 1
                match_type:
                  type: integer
                  description: |
                    部分一致、完全一致、あいまい検索のどちらで検索するか。

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

                    ※ 値が未設定か上記以外の場合、部分一致で検索する。

                    ※ 国内会社情報の検索は、部分一致・完全一致のいずれかが有効。あいまい検索を選択した場合、国内情報のみ代わりに部分一致で検索する。
                  items:
                    type: integer
                    nullable: true
                    enum:
                      - 0
                      - 1
                      - 2
                fuzzy_rate:
                  type: integer
                  description: |
                    指定一致率以上の結果のみ取得する。50~100の間で指定が可能。未指定時は80。

                    ※ あいまい検索を選択した場合にのみ有効。
                  nullable: true
                  default: 80
                  minimum: 50
                  maximum: 100
                data:
                  type: array
                  items:
                    type: object
                    required:
                      - name
                    properties:
                      payload_id:
                        type: string
                        example: SOMETHING_CHILD_IDENTIFIER_12345678
                        description: (Webhook用) リクエスト側 `.data.[].payload_id` とレスポンス側 `.data.[].condition.payload_id` を紐付ける、任意の文字列
                      name:
                        type: string
                        description: 会社名
                        example: "テスト会社"
                      note:
                        type: string
                        description: 任意で設定できて検索履歴で確認できるメモ
                        example: "ID-100"
      responses:
        202:
          description: |
            処理成功

            リクエストの内容に応じて、

            「send_mail == true」または「send_mail未指定」の場合、メールを送信する。

            「payload_urlにURLを指定」の場合、payload_urlで指定したURLにペイロードを送信する。
        x-webhook-response:
          description: |
            payload_urlに送信される、Webhookリクエストボディ

            POSTメソッドで送信する。
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BulkCompanySearchResponse"
        401:
          description: 認証失敗
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AuthenticationErrorResponse"
        422:
          description: バリデーションエラー
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ValidationErrorResponse"
      security:
        - Auth-User-Account: []
        - Auth-Key: []
components:
  schemas:
    Customer:
      type: object
      required:
        - antisocial_group
        - name
        - note
      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: 媒体名
        CreatedAt:
          type: string
        UpdatedAt:
          type: string
    Customer2:
      type: object
      required:
        - antisocial_group
        - name
        - note
      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
        updated_at:
          type: string
    Company:
      type: object
      required:
        - antisocial_group
        - name
        - note
      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: 媒体名
        CreatedAt:
          type: string
        UpdatedAt:
          type: string
    Company2:
      type: object
      required:
        - antisocial_group
        - name
        - note
      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
        updated_at:
          type: string
    Rumor:
      type: object
      required:
        - excerpt
        - url
      properties:
        excerpt:
          type: string
          description: 風評に影響されると思われる内容の抜粋
        url:
          type: string
          description: 検索フレーズに応じたURL
    BulkCustomerSearchResponse:
      type: object
      description: /customer/bulkSearch のWebhookで送信するデータ構造
      properties:
        payload_id:
          type: string
          example: SOMETHING_IDENTIFIER_12345678
          description: (Webhook用) リクエストとレスポンスを紐づける、任意の文字列
        search_history_id:
          type: integer
          description: すべての検索結果のID
        data:
          type: array
          description: 検索条件とその結果
          items:
            type: object
            properties:
              condition:
                type: object
                description: 検索条件
                properties:
                  payload_id:
                    type: string
                    example: SOMETHING_CHILD_IDENTIFIER_12345678
                    description: (Webhook用) リクエスト側 `.data.[].payload_id` とレスポンス側 `.data.[].condition.payload_id` を紐付ける、任意の文字列
                  name:
                    type: string
                    description: 顧客氏名
                    example: "テスト太郎"
                  birthday:
                    type: string
                    description: 生年月日
                    example: "19800101"
              results:
                type: array
                description: 検索条件（conditionプロパティ）に合致した情報郡で、ない場合は空配列を返す
                items:
                  $ref: "#/components/schemas/Customer"
    BulkCompanySearchResponse:
      type: object
      description: /company/bulkSearch のWebhookで送信するデータ構造
      properties:
        payload_id:
          type: string
          example: SOMETHING_IDENTIFIER_12345678
          description: (Webhook用) リクエストとレスポンスを紐づける、任意の文字列
        search_history_id:
          type: integer
          description: すべての検索結果のID
        data:
          type: array
          description: 検索条件とその結果
          items:
            type: object
            properties:
              condition:
                type: object
                description: 検索条件
                properties:
                  payload_id:
                    type: string
                    example: SOMETHING_CHILD_IDENTIFIER_12345678
                    description: (Webhook用) リクエスト側 `.data.[].payload_id` とレスポンス側 `.data.[].condition.payload_id` を紐付ける、任意の文字列
                  name:
                    type: string
                    description: 顧客氏名
                    example: "テスト会社"
              results:
                type: array
                description: 検索条件（conditionプロパティ）に合致した情報郡で、ない場合は空配列を返す
                items:
                  $ref: "#/components/schemas/Company"
    RumorSearchResponse:
      type: object
      description: /rumorSearch のWebhookで送信するデータ構造
      properties:
        payload_id:
          type: string
          example: SOMETHING_IDENTIFIER_12345678
          description: (Webhook用) リクエストとレスポンスを紐づける、任意の文字列
        query:
          type: string
          description: 検索フレーズ
          example: "風評太郎"
        results:
          type: array
          description: 検索条件（conditionプロパティ）に合致した情報郡で、ない場合は空配列を返す
          items:
            $ref: "#/components/schemas/Rumor"
    AuthenticationErrorResponse:
      type: object
      properties:
        message:
          type: string
    ValidationErrorResponse:
      type: object
      properties:
        message:
          type: string
        errors:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                description: "(変数名).(エラー内容)"
              message:
                type: string
                description: "エラー内容"
  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サービス画面の「パスワード」と同義）
