{"openapi":"3.0.3","info":{"title":"Fingerprint Detection Platform API","description":"Browser fingerprinting education and analysis platform. Part of the PlatPhorm News network.","version":"1.0.0","contact":{"name":"PlatPhorm News","url":"https://platphormnews.com"},"license":{"name":"MIT","url":"https://opensource.org/licenses/MIT"}},"servers":[{"url":"https://fingerprint.platphormnews.com","description":"Production"}],"tags":[{"name":"Health","description":"Service health and status"},{"name":"Fingerprint","description":"Fingerprint collection and analysis"},{"name":"Analysis","description":"Detection and analysis endpoints"},{"name":"Stats","description":"Platform statistics"},{"name":"Integration","description":"Network integrations"}],"paths":{"/api/health":{"get":{"tags":["Health"],"summary":"Health check","description":"Returns service health status and component checks","responses":{"200":{"description":"Service is healthy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}},"503":{"description":"Service is unhealthy"}}}},"/api/v1/fingerprint":{"post":{"tags":["Fingerprint"],"summary":"Submit fingerprint data","description":"Submit collected browser fingerprint for analysis and storage","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FingerprintSubmission"}}}},"responses":{"200":{"description":"Fingerprint processed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FingerprintResponse"}}}},"400":{"description":"Invalid fingerprint data"}}},"get":{"tags":["Fingerprint"],"summary":"List recent fingerprints","description":"Get paginated list of recent fingerprints","parameters":[{"name":"page","in":"query","schema":{"type":"integer","default":1}},{"name":"limit","in":"query","schema":{"type":"integer","default":20,"maximum":100}}],"responses":{"200":{"description":"List of fingerprints","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FingerprintListResponse"}}}}}}},"/api/v1/fingerprint/{id}":{"get":{"tags":["Fingerprint"],"summary":"Get fingerprint by ID","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Fingerprint details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FingerprintResponse"}}}},"404":{"description":"Fingerprint not found"}}}},"/api/v1/analysis/headless":{"post":{"tags":["Analysis"],"summary":"Headless browser detection","description":"Analyze fingerprint data for headless browser indicators","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisRequest"}}}},"responses":{"200":{"description":"Headless detection results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HeadlessAnalysis"}}}}}}},"/api/v1/stats/overview":{"get":{"tags":["Stats"],"summary":"Platform statistics overview","description":"Get aggregated platform statistics","responses":{"200":{"description":"Statistics overview","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsOverview"}}}}}}},"/api/v1/integrations/atlas":{"get":{"tags":["Integration"],"summary":"Atlas correlation","description":"Get threat correlations from Atlas platform","parameters":[{"name":"fingerprint_id","in":"query","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Atlas correlation data"}}}},"/api/webhooks":{"post":{"tags":["Integration"],"summary":"Webhook endpoint","description":"Receive signed webhook events","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookPayload"}}}},"responses":{"200":{"description":"Webhook processed"},"401":{"description":"Invalid signature"}}}},"/api/events":{"get":{"tags":["Integration"],"summary":"Event outbox","description":"Get pending events for external processing","responses":{"200":{"description":"List of pending events"}}}}},"components":{"schemas":{"HealthResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"status":{"type":"string","enum":["healthy","degraded","unhealthy"]},"checks":{"type":"object"},"uptime":{"type":"number"},"timestamp":{"type":"string","format":"date-time"}}},"timestamp":{"type":"string","format":"date-time"},"requestId":{"type":"string","format":"uuid"}}},"FingerprintSubmission":{"type":"object","required":["visitorHash","components"],"properties":{"visitorHash":{"type":"string"},"fuzzyHash":{"type":"string"},"confidenceScore":{"type":"number"},"components":{"type":"array","items":{"$ref":"#/components/schemas/Component"}},"isHeadless":{"type":"boolean"},"headlessConfidence":{"type":"number"},"isBot":{"type":"boolean"},"hasLies":{"type":"boolean"},"lieCount":{"type":"integer"},"resistanceMode":{"type":"string"},"deviceType":{"type":"string"},"osFamily":{"type":"string"},"browserFamily":{"type":"string"},"browserVersion":{"type":"string"},"gpuVendor":{"type":"string"},"gpuRenderer":{"type":"string"}}},"Component":{"type":"object","properties":{"type":{"type":"string"},"hash":{"type":"string"},"data":{"type":"object"},"confidence":{"type":"number"}}},"FingerprintResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/Fingerprint"},"timestamp":{"type":"string","format":"date-time"},"requestId":{"type":"string","format":"uuid"}}},"Fingerprint":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"visitorHash":{"type":"string"},"confidenceScore":{"type":"number"},"isHeadless":{"type":"boolean"},"isBot":{"type":"boolean"},"browserFamily":{"type":"string"},"deviceType":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}}},"FingerprintListResponse":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Fingerprint"}},"pagination":{"type":"object","properties":{"page":{"type":"integer"},"pageSize":{"type":"integer"},"total":{"type":"integer"},"hasMore":{"type":"boolean"}}}}},"AnalysisRequest":{"type":"object","properties":{"fingerprintId":{"type":"string","format":"uuid"},"fingerprintData":{"type":"object"}}},"HeadlessAnalysis":{"type":"object","properties":{"isHeadless":{"type":"boolean"},"confidence":{"type":"number"},"indicators":{"type":"object"},"details":{"type":"array","items":{"type":"string"}}}},"StatsOverview":{"type":"object","properties":{"totalFingerprints":{"type":"integer"},"uniqueVisitors":{"type":"integer"},"headlessDetected":{"type":"integer"},"botsDetected":{"type":"integer"},"browserDistribution":{"type":"object"},"deviceDistribution":{"type":"object"}}},"WebhookPayload":{"type":"object","required":["event","timestamp","signature","data"],"properties":{"event":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"signature":{"type":"string"},"data":{"type":"object"}}}}}}