- 印刷する
- PDF
cancelJob
- 印刷する
- PDF
Classic/VPC環境で利用できます。
NAVERクラウドプラットフォームコンソールでユーザーが登録した診断を開始する前にキャンセルします。
リクエスト
リクエスト形式を説明します。リクエスト形式は次の通りです。
メソッド | URI |
---|---|
PATCH | /{instanceId}/cancel |
リクエストヘッダ
Web Security Checkerで共通して使用されるヘッダの詳細は、Web Security Checkerのリクエストヘッダをご参照ください。
リクエストパスパラメータ
パラメータの説明は次の通りです。
フィールド | タイプ | 必須の有無 | 説明 |
---|---|---|---|
InstanceId | Integer | Required | 診断の識別番号
|
リクエスト例
リクエストのサンプルコードは次の通りです。
curl --location --request PATCH 'https://wsc.apigw.ntruss.com/api/v1/jobs/{instanceId}/cancel'
--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'
レスポンス
レスポンス形式を説明します。
レスポンスステータスコード
Web Security Checker APIで共通して使用されるエラーコードの詳細は、Web Security Checkerの共通エラーコードをご参照ください。
レスポンス例
レスポンスのサンプルコードは次の通りです。
- 診断ジョブキャンセル完了
{
"returnCode": "0",
"returnDesc": "Request Success",
"returnMessage": "Success",
"resources": null
}
- 診断ジョブキャンセルエラー: 無効な
InstanceId
を入力した場合
{
"error": {
"errorCode": 901,
"message": "API Call Fail"
}
}
サンプルコード
診断をキャンセルするには、診断検索 APIと診断キャンセル APIが必要です。診断検索 APIを通じて予約(Pending)状態の診断の中からジョブをキャンセルする診断のinstanceNo
値を抽出し、この値を利用してキャンセル APIを呼び出します。
診断の検索とinstanceNo
の確認方法、その APIのサンプルコードの詳細は、getJobsまたはsearchJobsをご参照ください。
診断検索 API(searchJobs)で検索したサンプルコードは次の通りです。
- 検索タイプ:
url
- キーワード:
target-domain.com
# リクエスト例
$ python jobSearch.py "url target-domain.com"
# レスポンス例
{
"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-31 00:00:00",
"end_date": "",
"status": "予約",
"progress": null,
"start_url": "http://target-domain.com",
"crawl_cnt": "",
"scan_cnt": "",
"memo": "Wsc Sample",
"result_button": "cancel",
"result_desc": "",
"rescan_button": "",
"slave_data": null
}
]
}
}
make_signature関数でシグネチャーを作成してリクエストヘッドを作成し、入力したリクエストパラメータに応じて診断する前にキャンセルしてレスポンスコードが200の場合、結果を出力するサンプルコードは次の通りです。
import sys
import os
import hashlib
import hmac
import base64
import requests
import time
import json
from pprint import pprint
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
method = 'PATCH'
instanceId = "{instanceId}" # instance id (from api)
uri = f'/api/v1/jobs/{instanceId}/cancel'
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
)
if response.status_code == 200:
pprint(json.loads(response.text))
else:
pprint(json.loads(response.text))
サンプルコードは Python3を基に作成しました。Java、Node.jsなど他の言語で作成したサンプルコードは、API Gatewayご利用ガイドのAPIの呼び出しをご参照ください。