Doppel scan API
The scan API from Doppel — 2 operation(s) for scan.
The scan API from Doppel — 2 operation(s) for scan.
openapi: 3.1.0
info:
version: 1.0.0
title: Doppel alerts scan API
description: APIs to interface with Doppel's core system for social engineering defense — Brand Protection alerts, URL scanning, reports, protected assets, and Human Risk Management campaigns.
contact:
name: Doppel API Support
url: https://doppel.readme.io/
servers:
- url: https://api.doppel.com/v1
tags:
- name: scan
paths:
/scan:
post:
description: Submit a URL for analysis to determine if it contains potentially suspicious or malicious content. Doppel will analyze the submitted URL and categorize its suspiciousness on a scale of low, medium, and high. Based on the suspiciousness of the URL, an alert can be created in our system, facilitating further triage actions.
summary: Submit Scan Url
operationId: scan
tags:
- scan
x-google-backend:
address: https://external-api-gateway-725058953679.us-west1.run.app
jwt_audience: https://external-api-gateway-725058953679.us-west1.run.app
path_translation: APPEND_PATH_TO_ADDRESS
deadline: 30
parameters:
- $ref: '#/components/parameters/XOrganizationCodeHeader'
- name: Content-Type
in: header
required: true
description: ''
schema:
type: string
enum:
- application/json
requestBody:
content:
application/json:
schema:
type: object
required:
- url
properties:
url:
type: string
description: URL to scan
format: uri
example: https://example.com
associated_urls:
type: array
description: URLs associated with the main URL
items:
type: string
format: uri
example:
- https://associated1.com
- https://associated2.com
required: true
responses:
'201':
description: Scan for URL created successfully
headers: {}
content:
application/json:
schema:
type: object
properties:
scan_id:
type: string
format: uuid
description: ID of the created scan
'400':
description: Invalid input
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate limit exceeded
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- api_key: []
user_api_key: []
x-google-quota:
metricCosts:
submit-scan-request: 1
/scan/result:
get:
description: Get the suspiciousness result of a scan given the submitted scan's ID.
summary: Get Scan Result
operationId: get_scan_result
tags:
- scan
x-google-backend:
address: https://external-api-gateway-725058953679.us-west1.run.app
jwt_audience: https://external-api-gateway-725058953679.us-west1.run.app
path_translation: APPEND_PATH_TO_ADDRESS
deadline: 30
parameters:
- $ref: '#/components/parameters/XOrganizationCodeHeader'
- name: scan_id
in: query
required: true
description: ID of the scan to retrieve results for
schema:
type: string
format: uuid
responses:
'200':
description: Successfully retrieved scan results
content:
application/json:
schema:
type: object
properties:
status:
type: string
enum:
- PENDING
- COMPLETED
description: Current status of the scan
url:
type: string
description: URL that was submitted to be scanned for suspiciousness
scan_id:
type: string
format: uuid
description: ID of the scan
results:
type: array
description: Array of scan results (empty if status is PENDING)
items:
type: object
properties:
suspiciousness:
type: string
description: Suspiciousness of the scan result
enum:
- low
- medium
- high
- na
category:
type: string
description: Scan Type - what type of scan was performed
enum:
- phishing
scan_data:
type: object
description: Additional data about the scan result
additionalProperties: true
created_at:
type: string
format: date-time
description: Timestamp when the scan result was created
'400':
description: Invalid input
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Scan not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- api_key: []
user_api_key: []
x-google-quota:
metricCosts:
get-scan-result-request: 1
components:
schemas:
ErrorResponse:
title: ErrorResponse
description: Standard error response returned for all non-2xx responses. Contains a single `message` field with a human-readable error description.
type: object
required:
- message
properties:
message:
type: string
description: Human-readable error description.
example: This is an error message
securitySchemes:
api_key:
type: apiKey
name: x-api-key
in: header
description: API key from Doppel Vision API settings. Required for gateway authentication and quota.
user_api_key:
type: apiKey
name: x-user-api-key
in: header
description: User API key from Doppel Vision API settings. Required together with x-api-key for authenticated requests.
x-readme:
parameter-ordering:
- path
- header
- query
- body
- cookie
- form