@apifreaks/openapi-specs 0.3.2 → 0.4.1

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.
@@ -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: []