searchJobs

Prev Next

Classic/VPC環境で利用できます。

NAVERクラウドプラットフォームコンソールでユーザーが登録した診断リストを検索タイプとジョブの状態といった特定の診断内容でフィルタリング照会して結果を出力します。

リクエスト

リクエスト形式を説明します。リクエスト形式は次の通りです。

メソッド URI
POST /search

リクエストヘッダ

Web Security Checkerで共通して使用されるヘッダの詳細は、Web Security Checkerのリクエストヘッダをご参照ください。

リクエストボディ

リクエストボディの説明は次の通りです。

{
    "searchType": "url",
    "searchKeyword": "http://your-domain",
    "statusCode": null,
    "limit": 10,
    "page": 1
}
フィールド タイプ 必須の有無 説明
searchType String Required 検索タイプ
  • url | memo | 空白
    • url: searchKeywordncloud.comといったドメインまたは URIを入力
    • memo: ジョブ作成時に入力したメモの文字列をsearchKeywordに入力
    • 空白: すべて検索
searchKeyword String Required searchTypeに対応する検索キーワードを指定
statusCode Integer Required ジョブの状態コードで検索
  • null: すべて検索
  • 2: 診断待ち
  • 3: 診断進行中
  • 4: 診断完了
  • 5: 診断失敗
  • 12: URL収集待ち
  • 13: URL収集進行中
  • 14: URL収集完了
  • 15: URL収集失敗
  • 91: 診断キャンセル
  • 92: 停止中
  • 93: ジョブ停止
limit Integer Required リストのページごとの出力項目数
page Integer Required リストのページ番号

リクエスト例

リクエストのサンプルコードは次の通りです。

curl --location --request POST 'https://wsc.apigw.ntruss.com/api/v1/jobs/search'
--header 'x-ncp-apigw-timestamp: {Timestamp}'
--header 'x-ncp-iam-access-key: {Access Key}'
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}'
--header 'Content-Type: application/json'
--data '{"searchType": "url",
"searchKeyword": "http://your-domain",
"statusCode": null,
"limit": 10,
"page": 1}'

レスポンス

レスポンス形式を説明します。

レスポンスボディ

レスポンスボディの説明は次の通りです。

フィールド タイプ 必須の有無 説明
total_cnt Integer - ジョブレコードの総数
total_page_cnt Integer - 最後のページ
current_start_page Integer - 最初のページ番号(単位: 10)
current_end_page Integer - 最後のページ番号(単位: 10)
record_data Array - 診断リスト
record_data[].instanceNo Integer - ジョブの識別番号
record_data[].start_date Date - 診断ジョブの開始時間
record_data[].end_date Date - 診断ジョブの終了時間
record_data[].status String - ジョブの状態
record_data[].progress Integer - 診断の進捗率
record_data[].start_url String - 診断ジョブ対象 URL
record_data[].crawl_cnt Integer - クローリング URL収集数
record_data[].scan_cnt Integer - 脆弱性数
record_data[].memo String - ジョブのメモ
record_data[].result_button String - ジョブの状態
  • report | cancel | terminate | expired | cause
    • report: レポート出力可能な状態
    • cancel: ジョブキャンセル状態
    • terminate: ジョブ停止状態
    • expired: 期限切れ
    • cause: ジョブ進行中にエラー発生
record_data[].result_desc String - ジョブ結果の詳細
  • ジョブエラー時に詳細出力
record_data[].rescan_button String - 再診断可能状態
  • possible | expired | null
    • possible: 再診断が可能
    • expired: 期限切れで再診断不可
    • null: 再診断不可
record_data[].slave_data Array -

レスポンスステータスコード

Web Security Checker APIで共通して使用されるエラーコードの詳細は、Web Security Checkerの共通エラーコードをご参照ください。

レスポンス例

レスポンスのサンプルコードは次の通りです。

  • 照会完了: 照会情報がある場合
{
    "returnCode": "0",
    "returnDesc": "Request Success",
    "returnMessage": "Success",
    "resources": {
        "total_cnt": 1,
        "total_page_cnt": 1,
        "current_start_page": 1,
        "current_end_page": 1,
        "record_data": [
            {
                "instanceNo": "1234567890",
                "start_date": "2024-07-08 13:12:03",
                "end_date": "2024-07-08 13:15:10",
                "status": "診断完了",
                "progress": null,
                "start_url": "http://your-domain",
                "crawl_cnt": "1",
                "scan_cnt": "1",
                "memo": "サンプル",
                "result_button": "report",
                "result_desc": "",
                "rescan_button": "possible",
                "slave_data": null
            }
        ]
    }
}
  • 照会完了: 照会情報がない場合
{
    "returnCode": "0",
    "returnDesc": "Request Success",
    "returnMessage": "Success",
    "resources": {
        "total_cnt": 0,
        "total_page_cnt": 0,
        "current_start_page": 0,
        "current_end_page": 0,
        "record_data": null
    }
}

サンプルコード

make_signature関数でシグネチャーを作成してリクエストヘッドを作成し、入力したリクエストパラメータに応じて特定の状態の診断リストを照会してレスポンスコードが200の場合、結果を出力するサンプルコードは次の通りです。

import sys
import os
import hashlib
import hmac
import base64
import requests
import time
import json

def make_signature(method, uri, timestamp):

    access_key = "{accessKey}"  # access key id (from portal or sub account)
    secret_key = "{secretKey}"  # secret key (from portal or sub account)
    secret_key = bytes(secret_key, 'UTF-8')

    method = method
    uri = uri

    message = method + " " + uri + "\n" + timestamp + "\n" + access_key
    message = bytes(message, 'UTF-8')
    signingKey = base64.b64encode(hmac.new(secret_key, message, digestmod=hashlib.sha256).digest())
    return signingKey

timestamp = str(int(time.time() * 1000))

method = 'POST'
uri = '/api/v1/jobs/search'
payload = {
  "searchType": "url",
  "searchKeyword": "user-domain",
  "statusCode": None,
  "limit": 1,
  "page": 1
}

timestamp = str(int(time.time() * 1000))

signature = make_signature(method, uri, timestamp)

headers = {
    'x-ncp-apigw-signature-v2': signature.decode('utf-8'),
    'x-ncp-apigw-timestamp': timestamp,
    'x-ncp-iam-access-key': '{accessKey}', # access key id (from portal or sub account)
    'Content-Type': 'application/json'
}

response = requests.request(
    method,
    f"https://wsc.apigw.ntruss.com{uri}",
    headers=headers,
    data=json.dumps(payload), # Json format required
)

if response.status_code == 200:
    print(response.text)
参考

サンプルコードは Python3を基に作成しました。Java、Node.jsなど他の言語で作成したサンプルコードは、API Gatewayご利用ガイドのAPIの呼び出しをご参照ください。