@apifreaks/openapi-specs 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +25641 -23026
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +25641 -23025
- package/dist/specs/domain/domain-reputation.yaml +898 -0
- package/dist/specs/domain/domain-typosquatting.yaml +253 -0
- package/package.json +1 -1
- package/specs/domain/domain-reputation.json +1115 -0
- package/specs/domain/domain-typosquatting.json +344 -0
|
@@ -0,0 +1,898 @@
|
|
|
1
|
+
openapi: 3.1.1
|
|
2
|
+
info:
|
|
3
|
+
title: Domain Reputation API - Real-Time Risk Verdict, Trust Score, DGA Detection, and Threat Intelligence for Any Domain
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
description: Assess any domain and get a synthesized risk verdict, a weighted trust score, DGA detection, threat intelligence matches, and a full email deliverability check in one call. Every score carries the evidence behind it, and partial data is called out in errors rather than silently dropped. Built for fraud screening, phishing triage, email vetting, brand protection, and threat intel enrichment.
|
|
6
|
+
contact:
|
|
7
|
+
name: APIFreaks Support
|
|
8
|
+
url: https://apifreaks.com/contact
|
|
9
|
+
email: support@apifreaks.com
|
|
10
|
+
servers:
|
|
11
|
+
- url: https://api.apifreaks.com/v1.0
|
|
12
|
+
description: Domain Reputation API Server
|
|
13
|
+
paths:
|
|
14
|
+
/domain/reputation:
|
|
15
|
+
get:
|
|
16
|
+
tags:
|
|
17
|
+
- Domain APIs
|
|
18
|
+
summary: Get a real-time risk verdict, trust score, and threat intelligence for any domain.
|
|
19
|
+
description: The Domain Reputation API assesses a domain and returns a risk verdict, trust score, DGA detection results, threat intelligence matches, email deliverability analysis, and evidence summary. Partial data is flagged in the errors array rather than silently dropped.
|
|
20
|
+
parameters:
|
|
21
|
+
- name: format
|
|
22
|
+
in: query
|
|
23
|
+
required: false
|
|
24
|
+
schema:
|
|
25
|
+
type: string
|
|
26
|
+
enum:
|
|
27
|
+
- json
|
|
28
|
+
- xml
|
|
29
|
+
default: json
|
|
30
|
+
description: Format of the response.
|
|
31
|
+
- name: domainName
|
|
32
|
+
in: query
|
|
33
|
+
required: true
|
|
34
|
+
schema:
|
|
35
|
+
type: string
|
|
36
|
+
description: The domain name to assess (e.g. example.com). Must contain at least one dot and be at most 253 characters. Automatically lowercased.
|
|
37
|
+
responses:
|
|
38
|
+
'200':
|
|
39
|
+
description: Success
|
|
40
|
+
content:
|
|
41
|
+
application/json:
|
|
42
|
+
schema:
|
|
43
|
+
$ref: '#/components/schemas/DomainReputationResponse'
|
|
44
|
+
examples:
|
|
45
|
+
success:
|
|
46
|
+
summary: Safe domain (apple.com)
|
|
47
|
+
value:
|
|
48
|
+
input:
|
|
49
|
+
domain: apple.com
|
|
50
|
+
assessed_at: '2026-09-08T08:36:23.820181075Z'
|
|
51
|
+
version: 1.0.0
|
|
52
|
+
processing_time_ms: 1739
|
|
53
|
+
risk_category:
|
|
54
|
+
verdict: safe
|
|
55
|
+
confidence: 0.8
|
|
56
|
+
primary_threat: null
|
|
57
|
+
severity: none
|
|
58
|
+
threat_types: []
|
|
59
|
+
sources: []
|
|
60
|
+
pivot_matches: []
|
|
61
|
+
dga_score:
|
|
62
|
+
score: 0
|
|
63
|
+
is_dga: false
|
|
64
|
+
model: deterministic_features_v1
|
|
65
|
+
features:
|
|
66
|
+
domain_length: 5
|
|
67
|
+
vowel_consonant_ratio: 0.6666666666666666
|
|
68
|
+
ngram_perplexity: -8.83
|
|
69
|
+
shannon_entropy: 1.9219280948873623
|
|
70
|
+
digit_letter_ratio: 0
|
|
71
|
+
consonant_streak_max: 3
|
|
72
|
+
tld_in_known_dga_set: false
|
|
73
|
+
interpretation: human_readable
|
|
74
|
+
trust_signals:
|
|
75
|
+
trust_score: 72
|
|
76
|
+
trust_band: high
|
|
77
|
+
signals:
|
|
78
|
+
positive:
|
|
79
|
+
- code: spf_configured
|
|
80
|
+
weight: 5
|
|
81
|
+
polarity: positive
|
|
82
|
+
category: email_security
|
|
83
|
+
evidence: SPF record found
|
|
84
|
+
confidence: 1
|
|
85
|
+
- code: dmarc_present
|
|
86
|
+
weight: 5
|
|
87
|
+
polarity: positive
|
|
88
|
+
category: email_security
|
|
89
|
+
evidence: DMARC record present
|
|
90
|
+
confidence: 1
|
|
91
|
+
- code: established_domain
|
|
92
|
+
weight: 10
|
|
93
|
+
polarity: positive
|
|
94
|
+
category: domain_age
|
|
95
|
+
evidence: Domain age > 2 years
|
|
96
|
+
confidence: 1
|
|
97
|
+
- code: mature_domain
|
|
98
|
+
weight: 5
|
|
99
|
+
polarity: positive
|
|
100
|
+
category: domain_age
|
|
101
|
+
evidence: Domain age > 5 years
|
|
102
|
+
confidence: 1
|
|
103
|
+
- code: paid_ssl
|
|
104
|
+
weight: 5
|
|
105
|
+
polarity: positive
|
|
106
|
+
category: ssl_certificate
|
|
107
|
+
evidence: Uses paid SSL certificate
|
|
108
|
+
confidence: 0.9
|
|
109
|
+
- code: valid_ssl
|
|
110
|
+
weight: 3
|
|
111
|
+
polarity: positive
|
|
112
|
+
category: ssl_certificate
|
|
113
|
+
evidence: Valid SSL certificate
|
|
114
|
+
confidence: 1
|
|
115
|
+
negative:
|
|
116
|
+
- code: privacy_whois
|
|
117
|
+
weight: 1
|
|
118
|
+
polarity: negative
|
|
119
|
+
category: whois_privacy
|
|
120
|
+
evidence: WHOIS information is privacy-protected
|
|
121
|
+
confidence: 0.9
|
|
122
|
+
- code: external_redirect
|
|
123
|
+
weight: 10
|
|
124
|
+
polarity: negative
|
|
125
|
+
category: content_analysis
|
|
126
|
+
evidence: Site redirects visitors to an external domain
|
|
127
|
+
confidence: 0.8
|
|
128
|
+
neutral: []
|
|
129
|
+
indicators:
|
|
130
|
+
is_newly_registered: false
|
|
131
|
+
uses_free_extension: false
|
|
132
|
+
uses_free_ssl: false
|
|
133
|
+
has_privacy_whois: true
|
|
134
|
+
ssl_age_days: 26
|
|
135
|
+
has_dmarc: true
|
|
136
|
+
has_spf: true
|
|
137
|
+
redirects_externally: true
|
|
138
|
+
javascript_obfuscated: false
|
|
139
|
+
domain_age_days: 14446
|
|
140
|
+
registrar: NOM-IQ Ltd dba Com Laude
|
|
141
|
+
email_deliverability:
|
|
142
|
+
score: 95
|
|
143
|
+
grade: excellent
|
|
144
|
+
can_receive_email: true
|
|
145
|
+
authentication:
|
|
146
|
+
spf:
|
|
147
|
+
present: true
|
|
148
|
+
policy: ~all
|
|
149
|
+
record: v=spf1 include:_spf.apple.com include:_spf-txn.apple.com ~all
|
|
150
|
+
dkim:
|
|
151
|
+
found: true
|
|
152
|
+
selectors_found:
|
|
153
|
+
- selector1
|
|
154
|
+
- selector2
|
|
155
|
+
providers_detected: []
|
|
156
|
+
note: Only common selectors are probed; a domain may use a custom selector
|
|
157
|
+
dmarc:
|
|
158
|
+
present: true
|
|
159
|
+
policy: quarantine
|
|
160
|
+
reporting_configured: true
|
|
161
|
+
infrastructure:
|
|
162
|
+
mx_count: 6
|
|
163
|
+
mx_records:
|
|
164
|
+
- mx-in-ma.apple.com.
|
|
165
|
+
- mx-in.g.apple.com.
|
|
166
|
+
- mx-in-rn.apple.com.
|
|
167
|
+
- mx-in-sg.apple.com.
|
|
168
|
+
- mx-in-hfd.apple.com.
|
|
169
|
+
- mx-in-vib.apple.com.
|
|
170
|
+
mx_provider: self_hosted
|
|
171
|
+
null_mx: false
|
|
172
|
+
reputation:
|
|
173
|
+
spam_blacklisted: false
|
|
174
|
+
newly_registered: false
|
|
175
|
+
domain_age_days: 14446
|
|
176
|
+
issues:
|
|
177
|
+
- code: spf_softfail
|
|
178
|
+
severity: low
|
|
179
|
+
message: The SPF policy '~all' only soft-fails unauthorized senders
|
|
180
|
+
recommendation: Move to '-all' once all legitimate sending sources are listed
|
|
181
|
+
intelligence:
|
|
182
|
+
ioc_type: domain
|
|
183
|
+
ioc_value: apple.com
|
|
184
|
+
related_iocs:
|
|
185
|
+
- type: ipv4
|
|
186
|
+
value: 17.253.144.10
|
|
187
|
+
confidence: 0.9
|
|
188
|
+
- type: ipv6
|
|
189
|
+
value: 2620:149:af0:0:0:0:0:10
|
|
190
|
+
confidence: 0.9
|
|
191
|
+
feed_tags:
|
|
192
|
+
- verdict:safe
|
|
193
|
+
- severity:none
|
|
194
|
+
- ns:d.ns.apple.com.
|
|
195
|
+
- ns:b.ns.apple.com.
|
|
196
|
+
- ns:c.ns.apple.com.
|
|
197
|
+
- ns:a.ns.apple.com.
|
|
198
|
+
- mx:mx-in-ma.apple.com.
|
|
199
|
+
- mx:mx-in.g.apple.com.
|
|
200
|
+
- mx:mx-in-rn.apple.com.
|
|
201
|
+
- mx:mx-in-sg.apple.com.
|
|
202
|
+
- mx:mx-in-hfd.apple.com.
|
|
203
|
+
- mx:mx-in-vib.apple.com.
|
|
204
|
+
stix_pattern: '[domain-name:value = ''apple.com'' OR ipv4-addr:value = ''17.253.144.10'' OR ipv6-addr:value = ''2620:149:af0:0:0:0:0:10'']'
|
|
205
|
+
recommended_action: allow
|
|
206
|
+
first_seen: null
|
|
207
|
+
last_seen: null
|
|
208
|
+
evidence_summary:
|
|
209
|
+
why_flagged: []
|
|
210
|
+
errors: []
|
|
211
|
+
partialData:
|
|
212
|
+
summary: Partial data (WHOIS lookup failed)
|
|
213
|
+
value:
|
|
214
|
+
input:
|
|
215
|
+
domain: apifreaks.com
|
|
216
|
+
risk_category:
|
|
217
|
+
verdict: safe
|
|
218
|
+
confidence: 0.7
|
|
219
|
+
severity: none
|
|
220
|
+
trust_signals:
|
|
221
|
+
trust_score: 70
|
|
222
|
+
trust_band: high
|
|
223
|
+
indicators:
|
|
224
|
+
is_newly_registered: null
|
|
225
|
+
has_privacy_whois: null
|
|
226
|
+
domain_age_days: null
|
|
227
|
+
registrar: null
|
|
228
|
+
errors:
|
|
229
|
+
- WHOIS lookup failed
|
|
230
|
+
headers:
|
|
231
|
+
X-AF-Credits-Cost:
|
|
232
|
+
$ref: '#/components/headers/X-AF-Credits-Cost'
|
|
233
|
+
'400':
|
|
234
|
+
description: Bad Request – Invalid or missing domainName parameter
|
|
235
|
+
content:
|
|
236
|
+
application/json:
|
|
237
|
+
schema:
|
|
238
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
239
|
+
examples:
|
|
240
|
+
invalidDomain:
|
|
241
|
+
summary: Invalid domain parameter
|
|
242
|
+
value:
|
|
243
|
+
error: Invalid Domain Exception
|
|
244
|
+
message: Please provide a valid domain name in the "domainName" parameter.
|
|
245
|
+
path: /v1.0/domain/reputation
|
|
246
|
+
status: 400
|
|
247
|
+
timestamp: '2026-09-08T12:00:00.000Z'
|
|
248
|
+
missingDomain:
|
|
249
|
+
summary: Missing domainName parameter
|
|
250
|
+
value:
|
|
251
|
+
error: Invalid Param Exception
|
|
252
|
+
message: Please provide a valid domain name in the "domainName" parameter.
|
|
253
|
+
path: /v1.0/domain/reputation
|
|
254
|
+
status: 400
|
|
255
|
+
timestamp: '2026-09-08T12:00:00.000Z'
|
|
256
|
+
headers:
|
|
257
|
+
X-AF-Credits-Cost:
|
|
258
|
+
$ref: '#/components/headers/X-AF-Credits-Cost'
|
|
259
|
+
'503':
|
|
260
|
+
description: Service Unavailable – The assessment service is temporarily unavailable
|
|
261
|
+
content:
|
|
262
|
+
application/json:
|
|
263
|
+
schema:
|
|
264
|
+
$ref: '#/components/schemas/ErrorResponse'
|
|
265
|
+
examples:
|
|
266
|
+
serviceUnavailable:
|
|
267
|
+
summary: Service Unavailable
|
|
268
|
+
value:
|
|
269
|
+
error: Service Unavailable
|
|
270
|
+
message: 'Service is unavailable. Please try after some time. [For Technical Support email at: support@apifreaks.com]'
|
|
271
|
+
path: /v1.0/domain/reputation
|
|
272
|
+
status: 503
|
|
273
|
+
timestamp: '2026-09-08T12:00:00.000Z'
|
|
274
|
+
headers:
|
|
275
|
+
X-AF-Credits-Cost:
|
|
276
|
+
$ref: '#/components/headers/X-AF-Credits-Cost'
|
|
277
|
+
operationId: getDomainReputation
|
|
278
|
+
components:
|
|
279
|
+
securitySchemes:
|
|
280
|
+
ApiKeyAuthHeader:
|
|
281
|
+
type: apiKey
|
|
282
|
+
in: header
|
|
283
|
+
name: X-apiKey
|
|
284
|
+
description: Pass your API key via the X-apiKey request header.
|
|
285
|
+
ApiKeyAuthQuery:
|
|
286
|
+
type: apiKey
|
|
287
|
+
in: query
|
|
288
|
+
name: apiKey
|
|
289
|
+
description: Pass your API key via the apiKey query parameter.
|
|
290
|
+
schemas:
|
|
291
|
+
DomainReputationResponse:
|
|
292
|
+
type: object
|
|
293
|
+
required:
|
|
294
|
+
- input
|
|
295
|
+
- assessed_at
|
|
296
|
+
- version
|
|
297
|
+
- processing_time_ms
|
|
298
|
+
- risk_category
|
|
299
|
+
- dga_score
|
|
300
|
+
- trust_signals
|
|
301
|
+
- email_deliverability
|
|
302
|
+
- intelligence
|
|
303
|
+
- evidence_summary
|
|
304
|
+
- errors
|
|
305
|
+
properties:
|
|
306
|
+
input:
|
|
307
|
+
type: object
|
|
308
|
+
required:
|
|
309
|
+
- domain
|
|
310
|
+
properties:
|
|
311
|
+
domain:
|
|
312
|
+
type: string
|
|
313
|
+
description: Domain name being analyzed.
|
|
314
|
+
description: Input object containing the analyzed domain.
|
|
315
|
+
assessed_at:
|
|
316
|
+
type: string
|
|
317
|
+
description: Timestamp when the assessment was performed (YYYY-MM-DDTHH:mm:ssZ).
|
|
318
|
+
version:
|
|
319
|
+
type: string
|
|
320
|
+
description: API / response schema version.
|
|
321
|
+
processing_time_ms:
|
|
322
|
+
type: integer
|
|
323
|
+
description: Time taken to process the request, in milliseconds.
|
|
324
|
+
risk_category:
|
|
325
|
+
$ref: '#/components/schemas/RiskCategory'
|
|
326
|
+
dga_score:
|
|
327
|
+
$ref: '#/components/schemas/DgaScore'
|
|
328
|
+
trust_signals:
|
|
329
|
+
$ref: '#/components/schemas/TrustSignals'
|
|
330
|
+
email_deliverability:
|
|
331
|
+
$ref: '#/components/schemas/EmailDeliverability'
|
|
332
|
+
intelligence:
|
|
333
|
+
$ref: '#/components/schemas/Intelligence'
|
|
334
|
+
evidence_summary:
|
|
335
|
+
$ref: '#/components/schemas/EvidenceSummary'
|
|
336
|
+
errors:
|
|
337
|
+
type: array
|
|
338
|
+
items:
|
|
339
|
+
type: string
|
|
340
|
+
description: List of errors encountered during processing, if any (e.g. "WHOIS lookup failed"). An empty array means every signal resolved.
|
|
341
|
+
description: Full domain reputation assessment response.
|
|
342
|
+
RiskCategory:
|
|
343
|
+
type: object
|
|
344
|
+
required:
|
|
345
|
+
- verdict
|
|
346
|
+
- confidence
|
|
347
|
+
- primary_threat
|
|
348
|
+
- severity
|
|
349
|
+
- threat_types
|
|
350
|
+
- sources
|
|
351
|
+
- pivot_matches
|
|
352
|
+
properties:
|
|
353
|
+
verdict:
|
|
354
|
+
type: string
|
|
355
|
+
enum:
|
|
356
|
+
- safe
|
|
357
|
+
- suspicious
|
|
358
|
+
description: Final verdict of the risk assessment.
|
|
359
|
+
confidence:
|
|
360
|
+
type: number
|
|
361
|
+
format: float
|
|
362
|
+
description: Confidence score for the verdict (0-1).
|
|
363
|
+
primary_threat:
|
|
364
|
+
type:
|
|
365
|
+
- string
|
|
366
|
+
- 'null'
|
|
367
|
+
description: Main threat type identified (e.g. phishing). null when no threat was identified.
|
|
368
|
+
severity:
|
|
369
|
+
type: string
|
|
370
|
+
enum:
|
|
371
|
+
- none
|
|
372
|
+
- low
|
|
373
|
+
- medium
|
|
374
|
+
- high
|
|
375
|
+
description: Severity level of the risk.
|
|
376
|
+
threat_types:
|
|
377
|
+
type: array
|
|
378
|
+
items:
|
|
379
|
+
type: string
|
|
380
|
+
description: List of threat types associated with the domain.
|
|
381
|
+
sources:
|
|
382
|
+
type: array
|
|
383
|
+
items:
|
|
384
|
+
$ref: '#/components/schemas/ThreatSource'
|
|
385
|
+
description: Threat intelligence sources that flagged the domain. Empty when nothing flagged it.
|
|
386
|
+
pivot_matches:
|
|
387
|
+
type: array
|
|
388
|
+
items:
|
|
389
|
+
$ref: '#/components/schemas/PivotMatch'
|
|
390
|
+
description: Related pivots (nameserver, email, etc.) linked to known threats.
|
|
391
|
+
description: Overall risk assessment for the domain.
|
|
392
|
+
ThreatSource:
|
|
393
|
+
type: object
|
|
394
|
+
required:
|
|
395
|
+
- source
|
|
396
|
+
- indicator
|
|
397
|
+
- threat_type
|
|
398
|
+
- confidence
|
|
399
|
+
- first_seen
|
|
400
|
+
- last_seen
|
|
401
|
+
properties:
|
|
402
|
+
source:
|
|
403
|
+
type: string
|
|
404
|
+
description: Name of the threat intelligence source (e.g. Spamhaus).
|
|
405
|
+
indicator:
|
|
406
|
+
type: string
|
|
407
|
+
description: Indicator matched by this source.
|
|
408
|
+
threat_type:
|
|
409
|
+
type: string
|
|
410
|
+
description: Threat type reported by this source.
|
|
411
|
+
confidence:
|
|
412
|
+
type: number
|
|
413
|
+
format: float
|
|
414
|
+
description: Confidence score from this source (0-1).
|
|
415
|
+
first_seen:
|
|
416
|
+
type: string
|
|
417
|
+
description: First time this indicator was seen by the source (YYYY-MM-DDTHH:mm:ssZ).
|
|
418
|
+
last_seen:
|
|
419
|
+
type: string
|
|
420
|
+
description: Last time this indicator was seen by the source (YYYY-MM-DDTHH:mm:ssZ).
|
|
421
|
+
description: A threat intelligence source that flagged the domain.
|
|
422
|
+
PivotMatch:
|
|
423
|
+
type: object
|
|
424
|
+
required:
|
|
425
|
+
- pivot
|
|
426
|
+
- pivot_type
|
|
427
|
+
- total_related_threats
|
|
428
|
+
- confidence
|
|
429
|
+
properties:
|
|
430
|
+
pivot:
|
|
431
|
+
type: string
|
|
432
|
+
description: Pivot value (e.g. a nameserver or email address).
|
|
433
|
+
pivot_type:
|
|
434
|
+
type: string
|
|
435
|
+
description: Type of pivot.
|
|
436
|
+
total_related_threats:
|
|
437
|
+
type: integer
|
|
438
|
+
description: Total number of threats related to this pivot.
|
|
439
|
+
confidence:
|
|
440
|
+
type: number
|
|
441
|
+
format: float
|
|
442
|
+
description: Confidence score for the pivot match (0-1).
|
|
443
|
+
description: A related pivot linked to known threats.
|
|
444
|
+
DgaScore:
|
|
445
|
+
type: object
|
|
446
|
+
required:
|
|
447
|
+
- score
|
|
448
|
+
- is_dga
|
|
449
|
+
- model
|
|
450
|
+
- features
|
|
451
|
+
- interpretation
|
|
452
|
+
properties:
|
|
453
|
+
score:
|
|
454
|
+
type: number
|
|
455
|
+
format: float
|
|
456
|
+
description: DGA likelihood score (0-1).
|
|
457
|
+
is_dga:
|
|
458
|
+
type: boolean
|
|
459
|
+
description: Indicates whether the domain is likely DGA-generated.
|
|
460
|
+
model:
|
|
461
|
+
type: string
|
|
462
|
+
description: Model used to compute the DGA score.
|
|
463
|
+
features:
|
|
464
|
+
$ref: '#/components/schemas/DgaFeatures'
|
|
465
|
+
interpretation:
|
|
466
|
+
type: string
|
|
467
|
+
description: Human-readable interpretation of the DGA score.
|
|
468
|
+
description: Domain Generation Algorithm (DGA) detection results.
|
|
469
|
+
DgaFeatures:
|
|
470
|
+
type: object
|
|
471
|
+
required:
|
|
472
|
+
- domain_length
|
|
473
|
+
- vowel_consonant_ratio
|
|
474
|
+
- ngram_perplexity
|
|
475
|
+
- shannon_entropy
|
|
476
|
+
- digit_letter_ratio
|
|
477
|
+
- consonant_streak_max
|
|
478
|
+
- tld_in_known_dga_set
|
|
479
|
+
properties:
|
|
480
|
+
domain_length:
|
|
481
|
+
type: integer
|
|
482
|
+
description: Length of the domain name.
|
|
483
|
+
vowel_consonant_ratio:
|
|
484
|
+
type: number
|
|
485
|
+
format: float
|
|
486
|
+
description: Ratio of vowels to consonants in the domain.
|
|
487
|
+
ngram_perplexity:
|
|
488
|
+
type: number
|
|
489
|
+
format: float
|
|
490
|
+
description: N-gram perplexity score of the domain string.
|
|
491
|
+
shannon_entropy:
|
|
492
|
+
type: number
|
|
493
|
+
format: float
|
|
494
|
+
description: Shannon entropy of the domain string.
|
|
495
|
+
digit_letter_ratio:
|
|
496
|
+
type: number
|
|
497
|
+
format: float
|
|
498
|
+
description: Ratio of digits to letters in the domain.
|
|
499
|
+
consonant_streak_max:
|
|
500
|
+
type: integer
|
|
501
|
+
description: Maximum consecutive consonant streak in the domain.
|
|
502
|
+
tld_in_known_dga_set:
|
|
503
|
+
type: boolean
|
|
504
|
+
description: Indicates if the TLD belongs to a known DGA set.
|
|
505
|
+
description: Underlying lexical / statistical features used in DGA detection.
|
|
506
|
+
TrustSignals:
|
|
507
|
+
type: object
|
|
508
|
+
required:
|
|
509
|
+
- trust_score
|
|
510
|
+
- trust_band
|
|
511
|
+
- signals
|
|
512
|
+
- indicators
|
|
513
|
+
properties:
|
|
514
|
+
trust_score:
|
|
515
|
+
type: integer
|
|
516
|
+
description: Overall trust score (0-100).
|
|
517
|
+
trust_band:
|
|
518
|
+
type: string
|
|
519
|
+
description: Trust score band / category (e.g. low, medium, high).
|
|
520
|
+
signals:
|
|
521
|
+
$ref: '#/components/schemas/TrustScoreSignals'
|
|
522
|
+
indicators:
|
|
523
|
+
$ref: '#/components/schemas/TrustIndicators'
|
|
524
|
+
description: Trust scoring and supporting signals for the domain.
|
|
525
|
+
TrustScoreSignals:
|
|
526
|
+
type: object
|
|
527
|
+
required:
|
|
528
|
+
- positive
|
|
529
|
+
- negative
|
|
530
|
+
- neutral
|
|
531
|
+
properties:
|
|
532
|
+
positive:
|
|
533
|
+
type: array
|
|
534
|
+
items:
|
|
535
|
+
$ref: '#/components/schemas/TrustSignalItem'
|
|
536
|
+
description: Signals that positively affect the trust score.
|
|
537
|
+
negative:
|
|
538
|
+
type: array
|
|
539
|
+
items:
|
|
540
|
+
$ref: '#/components/schemas/TrustSignalItem'
|
|
541
|
+
description: Signals that negatively affect the trust score.
|
|
542
|
+
neutral:
|
|
543
|
+
type: array
|
|
544
|
+
items:
|
|
545
|
+
$ref: '#/components/schemas/TrustSignalItem'
|
|
546
|
+
description: Signals that are neutral to the trust score.
|
|
547
|
+
description: Signals contributing to the trust score.
|
|
548
|
+
TrustSignalItem:
|
|
549
|
+
type: object
|
|
550
|
+
required:
|
|
551
|
+
- code
|
|
552
|
+
- weight
|
|
553
|
+
- polarity
|
|
554
|
+
- category
|
|
555
|
+
- evidence
|
|
556
|
+
- confidence
|
|
557
|
+
properties:
|
|
558
|
+
code:
|
|
559
|
+
type: string
|
|
560
|
+
description: Signal code identifier (e.g. valid_ssl, dmarc_missing).
|
|
561
|
+
weight:
|
|
562
|
+
type: integer
|
|
563
|
+
description: Weight assigned to the signal.
|
|
564
|
+
polarity:
|
|
565
|
+
type: string
|
|
566
|
+
enum:
|
|
567
|
+
- positive
|
|
568
|
+
- negative
|
|
569
|
+
- neutral
|
|
570
|
+
description: Polarity of the signal.
|
|
571
|
+
category:
|
|
572
|
+
type: string
|
|
573
|
+
description: Category the signal belongs to (e.g. ssl_certificate).
|
|
574
|
+
evidence:
|
|
575
|
+
type: string
|
|
576
|
+
description: Evidence supporting the signal.
|
|
577
|
+
confidence:
|
|
578
|
+
type: number
|
|
579
|
+
format: float
|
|
580
|
+
description: Confidence score for the signal (0-1).
|
|
581
|
+
description: A single trust signal contributing to the trust score.
|
|
582
|
+
TrustIndicators:
|
|
583
|
+
type: object
|
|
584
|
+
properties:
|
|
585
|
+
is_newly_registered:
|
|
586
|
+
type:
|
|
587
|
+
- boolean
|
|
588
|
+
- 'null'
|
|
589
|
+
description: Indicates whether the domain was recently registered. null when WHOIS data is unavailable.
|
|
590
|
+
uses_free_extension:
|
|
591
|
+
type: boolean
|
|
592
|
+
description: Indicates whether the domain uses a free TLD extension.
|
|
593
|
+
uses_free_ssl:
|
|
594
|
+
type: boolean
|
|
595
|
+
description: Indicates whether the domain uses a free SSL certificate.
|
|
596
|
+
has_privacy_whois:
|
|
597
|
+
type:
|
|
598
|
+
- boolean
|
|
599
|
+
- 'null'
|
|
600
|
+
description: Indicates whether WHOIS privacy protection is enabled. null when WHOIS data is unavailable.
|
|
601
|
+
ssl_age_days:
|
|
602
|
+
type:
|
|
603
|
+
- integer
|
|
604
|
+
- 'null'
|
|
605
|
+
description: Age of the SSL certificate in days.
|
|
606
|
+
has_dmarc:
|
|
607
|
+
type: boolean
|
|
608
|
+
description: Indicates whether a DMARC record exists.
|
|
609
|
+
has_spf:
|
|
610
|
+
type: boolean
|
|
611
|
+
description: Indicates whether an SPF record exists.
|
|
612
|
+
redirects_externally:
|
|
613
|
+
type: boolean
|
|
614
|
+
description: Indicates whether the domain redirects to an external site.
|
|
615
|
+
javascript_obfuscated:
|
|
616
|
+
type: boolean
|
|
617
|
+
description: Indicates whether obfuscated JavaScript was detected.
|
|
618
|
+
domain_age_days:
|
|
619
|
+
type:
|
|
620
|
+
- integer
|
|
621
|
+
- 'null'
|
|
622
|
+
description: Age of the domain in days. null when WHOIS data is unavailable.
|
|
623
|
+
registrar:
|
|
624
|
+
type:
|
|
625
|
+
- string
|
|
626
|
+
- 'null'
|
|
627
|
+
description: Domain registrar name. null when WHOIS data is unavailable.
|
|
628
|
+
description: Individual trust / risk indicators for the domain.
|
|
629
|
+
EmailDeliverability:
|
|
630
|
+
type: object
|
|
631
|
+
required:
|
|
632
|
+
- score
|
|
633
|
+
- grade
|
|
634
|
+
- can_receive_email
|
|
635
|
+
- authentication
|
|
636
|
+
- infrastructure
|
|
637
|
+
- reputation
|
|
638
|
+
- issues
|
|
639
|
+
properties:
|
|
640
|
+
score:
|
|
641
|
+
type: integer
|
|
642
|
+
description: Overall email deliverability score out of 100.
|
|
643
|
+
grade:
|
|
644
|
+
type: string
|
|
645
|
+
description: Letter / word grade summarizing the deliverability score.
|
|
646
|
+
can_receive_email:
|
|
647
|
+
type: boolean
|
|
648
|
+
description: Indicates whether the domain is configured to receive email.
|
|
649
|
+
authentication:
|
|
650
|
+
$ref: '#/components/schemas/EmailAuthentication'
|
|
651
|
+
infrastructure:
|
|
652
|
+
$ref: '#/components/schemas/EmailInfrastructure'
|
|
653
|
+
reputation:
|
|
654
|
+
$ref: '#/components/schemas/EmailReputation'
|
|
655
|
+
issues:
|
|
656
|
+
type: array
|
|
657
|
+
items:
|
|
658
|
+
$ref: '#/components/schemas/EmailIssue'
|
|
659
|
+
description: List of detected email deliverability issues or misconfigurations.
|
|
660
|
+
description: Assessment of the domain's ability to send and receive email reliably.
|
|
661
|
+
EmailAuthentication:
|
|
662
|
+
type: object
|
|
663
|
+
required:
|
|
664
|
+
- spf
|
|
665
|
+
- dkim
|
|
666
|
+
- dmarc
|
|
667
|
+
properties:
|
|
668
|
+
spf:
|
|
669
|
+
$ref: '#/components/schemas/SpfRecord'
|
|
670
|
+
dkim:
|
|
671
|
+
$ref: '#/components/schemas/DkimRecord'
|
|
672
|
+
dmarc:
|
|
673
|
+
$ref: '#/components/schemas/DmarcRecord'
|
|
674
|
+
description: Email authentication mechanisms configured for the domain.
|
|
675
|
+
SpfRecord:
|
|
676
|
+
type: object
|
|
677
|
+
required:
|
|
678
|
+
- present
|
|
679
|
+
- policy
|
|
680
|
+
- record
|
|
681
|
+
properties:
|
|
682
|
+
present:
|
|
683
|
+
type: boolean
|
|
684
|
+
description: Indicates whether an SPF record was found.
|
|
685
|
+
policy:
|
|
686
|
+
type: string
|
|
687
|
+
description: SPF enforcement policy qualifier found in the record (e.g. ~all, -all).
|
|
688
|
+
record:
|
|
689
|
+
type: string
|
|
690
|
+
description: Raw SPF DNS TXT record string.
|
|
691
|
+
description: Sender Policy Framework configuration.
|
|
692
|
+
DkimRecord:
|
|
693
|
+
type: object
|
|
694
|
+
required:
|
|
695
|
+
- found
|
|
696
|
+
- selectors_found
|
|
697
|
+
- providers_detected
|
|
698
|
+
- note
|
|
699
|
+
properties:
|
|
700
|
+
found:
|
|
701
|
+
type: boolean
|
|
702
|
+
description: Indicates whether a DKIM record was found for any probed selector.
|
|
703
|
+
selectors_found:
|
|
704
|
+
type: array
|
|
705
|
+
items:
|
|
706
|
+
type: string
|
|
707
|
+
description: List of DKIM selectors for which a record was found.
|
|
708
|
+
providers_detected:
|
|
709
|
+
type: array
|
|
710
|
+
items:
|
|
711
|
+
type: string
|
|
712
|
+
description: Email service providers inferred from the matched DKIM selectors.
|
|
713
|
+
note:
|
|
714
|
+
type: string
|
|
715
|
+
description: Clarifying note about the limitations of DKIM selector probing.
|
|
716
|
+
description: DomainKeys Identified Mail configuration.
|
|
717
|
+
DmarcRecord:
|
|
718
|
+
type: object
|
|
719
|
+
required:
|
|
720
|
+
- present
|
|
721
|
+
- policy
|
|
722
|
+
- reporting_configured
|
|
723
|
+
properties:
|
|
724
|
+
present:
|
|
725
|
+
type: boolean
|
|
726
|
+
description: Indicates whether a DMARC record was found.
|
|
727
|
+
policy:
|
|
728
|
+
type: string
|
|
729
|
+
description: DMARC enforcement policy applied to failing messages (e.g. none, quarantine, reject).
|
|
730
|
+
reporting_configured:
|
|
731
|
+
type: boolean
|
|
732
|
+
description: Indicates whether DMARC aggregate / forensic reporting addresses are configured.
|
|
733
|
+
description: Domain-based Message Authentication, Reporting and Conformance configuration.
|
|
734
|
+
EmailInfrastructure:
|
|
735
|
+
type: object
|
|
736
|
+
required:
|
|
737
|
+
- mx_count
|
|
738
|
+
- mx_records
|
|
739
|
+
- mx_provider
|
|
740
|
+
- null_mx
|
|
741
|
+
properties:
|
|
742
|
+
mx_count:
|
|
743
|
+
type: integer
|
|
744
|
+
description: Number of MX records found for the domain.
|
|
745
|
+
mx_records:
|
|
746
|
+
type: array
|
|
747
|
+
items:
|
|
748
|
+
type: string
|
|
749
|
+
description: List of mail exchange server hostnames for the domain.
|
|
750
|
+
mx_provider:
|
|
751
|
+
type: string
|
|
752
|
+
description: Email hosting provider inferred from the MX records.
|
|
753
|
+
null_mx:
|
|
754
|
+
type: boolean
|
|
755
|
+
description: Indicates whether the domain explicitly declines email via a null MX record.
|
|
756
|
+
description: Mail server infrastructure backing the domain.
|
|
757
|
+
EmailReputation:
|
|
758
|
+
type: object
|
|
759
|
+
required:
|
|
760
|
+
- spam_blacklisted
|
|
761
|
+
- newly_registered
|
|
762
|
+
properties:
|
|
763
|
+
spam_blacklisted:
|
|
764
|
+
type: boolean
|
|
765
|
+
description: Indicates whether the domain appears on known spam blacklists.
|
|
766
|
+
newly_registered:
|
|
767
|
+
type: boolean
|
|
768
|
+
description: Indicates whether the domain was registered recently.
|
|
769
|
+
domain_age_days:
|
|
770
|
+
type:
|
|
771
|
+
- integer
|
|
772
|
+
- 'null'
|
|
773
|
+
description: Age of the domain in days since registration.
|
|
774
|
+
description: Reputation and trust signals related to the domain's email sending history.
|
|
775
|
+
EmailIssue:
|
|
776
|
+
type: object
|
|
777
|
+
properties:
|
|
778
|
+
code:
|
|
779
|
+
type: string
|
|
780
|
+
description: Machine-readable code identifying the specific deliverability issue.
|
|
781
|
+
severity:
|
|
782
|
+
type: string
|
|
783
|
+
description: Severity level assigned to the detected issue.
|
|
784
|
+
message:
|
|
785
|
+
type: string
|
|
786
|
+
description: Human-readable explanation of the issue.
|
|
787
|
+
recommendation:
|
|
788
|
+
type: string
|
|
789
|
+
description: Plain-language description of the exact fix to apply.
|
|
790
|
+
description: A detected email deliverability issue or misconfiguration.
|
|
791
|
+
Intelligence:
|
|
792
|
+
type: object
|
|
793
|
+
required:
|
|
794
|
+
- ioc_type
|
|
795
|
+
- ioc_value
|
|
796
|
+
- related_iocs
|
|
797
|
+
- feed_tags
|
|
798
|
+
- stix_pattern
|
|
799
|
+
- recommended_action
|
|
800
|
+
- first_seen
|
|
801
|
+
- last_seen
|
|
802
|
+
properties:
|
|
803
|
+
ioc_type:
|
|
804
|
+
type: string
|
|
805
|
+
description: Type of the indicator of compromise (e.g. domain).
|
|
806
|
+
ioc_value:
|
|
807
|
+
type: string
|
|
808
|
+
description: Value of the indicator of compromise.
|
|
809
|
+
related_iocs:
|
|
810
|
+
type: array
|
|
811
|
+
items:
|
|
812
|
+
$ref: '#/components/schemas/RelatedIoc'
|
|
813
|
+
description: Other IOCs related to this domain.
|
|
814
|
+
feed_tags:
|
|
815
|
+
type: array
|
|
816
|
+
items:
|
|
817
|
+
type: string
|
|
818
|
+
description: Tags associated with this IOC from threat feeds.
|
|
819
|
+
stix_pattern:
|
|
820
|
+
type: string
|
|
821
|
+
description: STIX 2.1 pattern representation of the IOC, ready to wrap into an Indicator object.
|
|
822
|
+
recommended_action:
|
|
823
|
+
type: string
|
|
824
|
+
enum:
|
|
825
|
+
- allow
|
|
826
|
+
- monitor
|
|
827
|
+
- block
|
|
828
|
+
description: Recommended action based on the assessment.
|
|
829
|
+
first_seen:
|
|
830
|
+
type:
|
|
831
|
+
- string
|
|
832
|
+
- 'null'
|
|
833
|
+
description: First time this IOC was observed (YYYY-MM-DDTHH:mm:ssZ). null when never observed on a feed.
|
|
834
|
+
last_seen:
|
|
835
|
+
type:
|
|
836
|
+
- string
|
|
837
|
+
- 'null'
|
|
838
|
+
description: Last time this IOC was observed (YYYY-MM-DDTHH:mm:ssZ). null when never observed on a feed.
|
|
839
|
+
description: Threat intelligence details for the indicator of compromise (IOC).
|
|
840
|
+
RelatedIoc:
|
|
841
|
+
type: object
|
|
842
|
+
required:
|
|
843
|
+
- type
|
|
844
|
+
- value
|
|
845
|
+
- confidence
|
|
846
|
+
properties:
|
|
847
|
+
type:
|
|
848
|
+
type: string
|
|
849
|
+
description: Type of the related IOC (e.g. ipv4, ipv6).
|
|
850
|
+
value:
|
|
851
|
+
type: string
|
|
852
|
+
description: Value of the related IOC.
|
|
853
|
+
confidence:
|
|
854
|
+
type: number
|
|
855
|
+
format: float
|
|
856
|
+
description: Confidence score for the related IOC (0-1).
|
|
857
|
+
description: A related indicator of compromise.
|
|
858
|
+
EvidenceSummary:
|
|
859
|
+
type: object
|
|
860
|
+
required:
|
|
861
|
+
- why_flagged
|
|
862
|
+
properties:
|
|
863
|
+
why_flagged:
|
|
864
|
+
type: array
|
|
865
|
+
items:
|
|
866
|
+
type: string
|
|
867
|
+
description: List of reasons why the domain was flagged. Empty for a clean domain.
|
|
868
|
+
description: Summary of reasons behind the risk assessment.
|
|
869
|
+
ErrorResponse:
|
|
870
|
+
type: object
|
|
871
|
+
description: Standard error envelope returned by the API on failed requests.
|
|
872
|
+
required:
|
|
873
|
+
- message
|
|
874
|
+
properties:
|
|
875
|
+
error:
|
|
876
|
+
type: string
|
|
877
|
+
description: Short error category or exception type.
|
|
878
|
+
message:
|
|
879
|
+
type: string
|
|
880
|
+
description: Human-readable error message describing the failure.
|
|
881
|
+
path:
|
|
882
|
+
type: string
|
|
883
|
+
description: API endpoint path that produced the error.
|
|
884
|
+
status:
|
|
885
|
+
type: integer
|
|
886
|
+
description: HTTP status code returned with the error.
|
|
887
|
+
timestamp:
|
|
888
|
+
type: string
|
|
889
|
+
format: date-time
|
|
890
|
+
description: Timestamp when the error occurred (ISO 8601).
|
|
891
|
+
headers:
|
|
892
|
+
X-AF-Credits-Cost:
|
|
893
|
+
description: Specifies the number of credits consumed by the current request.
|
|
894
|
+
schema:
|
|
895
|
+
type: integer
|
|
896
|
+
security:
|
|
897
|
+
- ApiKeyAuthHeader: []
|
|
898
|
+
- ApiKeyAuthQuery: []
|