{
  "openapi": "3.1.0",
  "info": {
    "title": "Dark Web Exposure API",
    "version": "0.0.2",
    "description": "Check password and identifier exposure, browse breach data, and use k-anonymity password-range lookups.",
    "x-pricing-model": "payg",
    "x-free-tier-calls": 0,
    "x-docs-url": "",
    "x-dakidarts-contract-status": "published",
    "x-dakidarts-execution-status": "source-only"
  },
  "servers": [
    {
      "url": "https://api.dakidarts.com/dark-web-exposure",
      "description": "Dakidarts direct gateway"
    }
  ],
  "tags": [
    {
      "name": "Operations",
      "description": "Operations endpoints sourced from the Dark Web Exposure API implementation."
    },
    {
      "name": "Cryptography",
      "description": "Cryptography endpoints sourced from the Dark Web Exposure API implementation."
    },
    {
      "name": "Batch operations",
      "description": "Batch operations endpoints sourced from the Dark Web Exposure API implementation."
    },
    {
      "name": "Passwords",
      "description": "Passwords endpoints sourced from the Dark Web Exposure API implementation."
    },
    {
      "name": "Analysis",
      "description": "Analysis endpoints sourced from the Dark Web Exposure API implementation."
    },
    {
      "name": "Breaches",
      "description": "Breaches endpoints sourced from the Dark Web Exposure API implementation."
    },
    {
      "name": "Pastes",
      "description": "Pastes endpoints sourced from the Dark Web Exposure API implementation."
    },
    {
      "name": "Data Classes",
      "description": "Data Classes endpoints sourced from the Dark Web Exposure API implementation."
    },
    {
      "name": "Stats",
      "description": "Stats endpoints sourced from the Dark Web Exposure API implementation."
    }
  ],
  "paths": {
    "/status": {
      "get": {
        "summary": "Health",
        "description": "Health check + service info. No parameters.",
        "operationId": "dark-web-exposure_get_status",
        "tags": [
          "Operations"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "example": {
                    "ok": true,
                    "time": "2026-08-09T07:23:06.000900",
                    "cache": {
                      "hash_prefixes": 87,
                      "catalog_entries": 14,
                      "password_hashes": 4091,
                      "scanned_identifiers": 312
                    },
                    "service": "Dark Web Exposure API",
                    "version": "0.0.2",
                    "uptime_seconds": 1234,
                    "hibp_key_configured": true
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Client error"
          },
          "5XX": {
            "description": "Upstream or gateway error"
          },
          "503": {
            "description": "No live upstream is configured. Sample responses are preview-only."
          }
        },
        "x-dakidarts-execution-status": "source-only",
        "x-dakidarts-source-contract": true,
        "x-dakidarts-sample-response": {
          "ok": true,
          "time": "2026-08-09T07:23:06.000900",
          "cache": {
            "hash_prefixes": 87,
            "catalog_entries": 14,
            "password_hashes": 4091,
            "scanned_identifiers": 312
          },
          "service": "Dark Web Exposure API",
          "version": "0.0.2",
          "uptime_seconds": 1234,
          "hibp_key_configured": true
        }
      }
    },
    "/password": {
      "get": {
        "summary": "Check Password",
        "description": "Breach count for a single password (or pre-computed SHA-1). Cached 90 days.",
        "operationId": "dark-web-exposure_get_password",
        "tags": [
          "Cryptography"
        ],
        "parameters": [
          {
            "name": "password",
            "in": "query",
            "required": false,
            "description": "The plaintext password to check",
            "schema": {
              "type": "string"
            },
            "x-required-group": "conditional"
          },
          {
            "name": "sha1_hash",
            "in": "query",
            "required": false,
            "description": "40-hex uppercase/lowercase SHA-1",
            "schema": {
              "type": "string"
            },
            "x-required-group": "conditional"
          },
          {
            "name": "include_hash",
            "in": "query",
            "required": false,
            "description": "Also return the uppercase SHA-1",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "4XX": {
            "description": "Client error"
          },
          "5XX": {
            "description": "Upstream or gateway error"
          },
          "503": {
            "description": "No live upstream is configured. Sample responses are preview-only."
          }
        },
        "x-dakidarts-execution-status": "source-only",
        "x-dakidarts-source-contract": true
      },
      "post": {
        "summary": "Check Password",
        "description": "Breach count for a single password (or pre-computed SHA-1). Cached 90 days.",
        "operationId": "dark-web-exposure_post_password",
        "tags": [
          "Cryptography"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "example": {
                    "ok": true,
                    "cached": false,
                    "breached": true,
                    "sha1_hash": "B8DFB080BC33FB564249E34252BF143D88FC018F",
                    "checked_at": "2026-08-09T07:23:10.235727",
                    "breach_count": 33
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Client error"
          },
          "5XX": {
            "description": "Upstream or gateway error"
          },
          "503": {
            "description": "No live upstream is configured. Sample responses are preview-only."
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "password": {
                    "type": "string",
                    "x-required-group": "conditional"
                  },
                  "sha1_hash": {
                    "type": "string",
                    "x-required-group": "conditional"
                  },
                  "include_hash": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "x-required-groups": {
          "conditional": [
            "password",
            "sha1_hash"
          ]
        },
        "x-dakidarts-execution-status": "source-only",
        "x-dakidarts-source-contract": true,
        "x-dakidarts-sample-response": {
          "ok": true,
          "cached": false,
          "breached": true,
          "sha1_hash": "B8DFB080BC33FB564249E34252BF143D88FC018F",
          "checked_at": "2026-08-09T07:23:10.235727",
          "breach_count": 33
        }
      }
    },
    "/passwords/batch": {
      "post": {
        "summary": "Check Passwords Batch",
        "description": "Breach counts for up to **100** passwords in one request. Uses k-anonymity: passwords are grouped by SHA-1 prefix, each unique prefix is fetched from HIBP once, and counts are resolved locally \u2014 the full hash never leaves your server.",
        "operationId": "dark-web-exposure_post_passwords_batch",
        "tags": [
          "Batch operations"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "example": {
                    "ok": true,
                    "total": 3,
                    "results": [
                      {
                        "index": 0,
                        "breached": true,
                        "sha1_hash": "5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8",
                        "breach_count": 52372427
                      },
                      {
                        "index": 1,
                        "breached": true,
                        "sha1_hash": "B8DFB080BC33FB564249E34252BF143D88FC018F",
                        "breach_count": 33
                      },
                      {
                        "index": 2,
                        "breached": false,
                        "sha1_hash": "1E14F1610264EE9A05F26E0B59D2BC9732DEE8B9",
                        "breach_count": 0
                      }
                    ],
                    "upstream_calls": 2
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Client error"
          },
          "5XX": {
            "description": "Upstream or gateway error"
          },
          "503": {
            "description": "No live upstream is configured. Sample responses are preview-only."
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "passwords": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "include_hashes": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "passwords"
                ]
              }
            }
          }
        },
        "x-dakidarts-execution-status": "source-only",
        "x-dakidarts-source-contract": true,
        "x-dakidarts-sample-response": {
          "ok": true,
          "total": 3,
          "results": [
            {
              "index": 0,
              "breached": true,
              "sha1_hash": "5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8",
              "breach_count": 52372427
            },
            {
              "index": 1,
              "breached": true,
              "sha1_hash": "B8DFB080BC33FB564249E34252BF143D88FC018F",
              "breach_count": 33
            },
            {
              "index": 2,
              "breached": false,
              "sha1_hash": "1E14F1610264EE9A05F26E0B59D2BC9732DEE8B9",
              "breach_count": 0
            }
          ],
          "upstream_calls": 2
        }
      }
    },
    "/passwords/range": {
      "get": {
        "summary": "Password Range",
        "description": "k-anonymity search: given a 5-character SHA-1 prefix, returns every matching hash suffix and its breach count. Enables clients to check passwords **without sending them** or their full hash.",
        "operationId": "dark-web-exposure_get_passwords_range",
        "tags": [
          "Passwords"
        ],
        "parameters": [
          {
            "name": "prefix",
            "in": "query",
            "required": false,
            "description": "5 hex chars, e.g. `B8DFB`",
            "schema": {
              "type": "string"
            },
            "x-required-group": "prefix-or-hash"
          },
          {
            "name": "hash",
            "in": "query",
            "required": false,
            "description": "40-hex SHA-1; the first 5 chars are used",
            "schema": {
              "type": "string"
            },
            "x-required-group": "prefix-or-hash"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "example": {
                    "ok": true,
                    "cached": true,
                    "prefix": "B8DFB",
                    "suffixes": {
                      "0026A114E9A357BFB0D38916287208E2B81": 46,
                      "00878CA72A19BDAED187D554A45B5C46011": 8
                    },
                    "suffix_count": 1957
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Client error"
          },
          "5XX": {
            "description": "Upstream or gateway error"
          },
          "503": {
            "description": "No live upstream is configured. Sample responses are preview-only."
          }
        },
        "x-dakidarts-execution-status": "source-only",
        "x-dakidarts-source-contract": true,
        "x-dakidarts-sample-response": {
          "ok": true,
          "cached": true,
          "prefix": "B8DFB",
          "suffixes": {
            "0026A114E9A357BFB0D38916287208E2B81": 46,
            "00878CA72A19BDAED187D554A45B5C46011": 8
          },
          "suffix_count": 1957
        }
      }
    },
    "/scan": {
      "get": {
        "summary": "Scan",
        "description": "Breach scan for an **email**, **username**, or **domain**. Cached 90 days per identifier. Legacy params `email`/`username`/`domain` are also accepted in the POST body for backward compatibility.",
        "operationId": "dark-web-exposure_get_scan",
        "tags": [
          "Analysis"
        ],
        "parameters": [
          {
            "name": "identifier",
            "in": "query",
            "required": true,
            "description": "email, username, or domain",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include_hashes",
            "in": "query",
            "required": false,
            "description": "Return `password_hash`/`hash_alg` fields",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "include_pastes",
            "in": "query",
            "required": false,
            "description": "Also return pastebin exposure (email/username only)",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "X-HIBP-API-Key",
            "in": "header",
            "required": false,
            "description": "Optional Have I Been Pwned API key for premium breach/paste access.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hibp_api_key",
            "in": "query",
            "required": false,
            "description": "Optional Have I Been Pwned API key supplied as a query parameter.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "4XX": {
            "description": "Client error"
          },
          "5XX": {
            "description": "Upstream or gateway error"
          },
          "503": {
            "description": "No live upstream is configured. Sample responses are preview-only."
          }
        },
        "x-dakidarts-execution-status": "source-only",
        "x-dakidarts-source-contract": true
      },
      "post": {
        "summary": "Scan",
        "description": "Breach scan for an **email**, **username**, or **domain**. Cached 90 days per identifier. Legacy params `email`/`username`/`domain` are also accepted in the POST body for backward compatibility.",
        "operationId": "dark-web-exposure_post_scan",
        "tags": [
          "Analysis"
        ],
        "parameters": [
          {
            "name": "X-HIBP-API-Key",
            "in": "header",
            "required": false,
            "description": "Optional Have I Been Pwned API key for premium breach/paste access.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hibp_api_key",
            "in": "query",
            "required": false,
            "description": "Compatibility fallback for the Have I Been Pwned key; prefer the X-HIBP-API-Key header to avoid exposing credentials in URLs.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "example": {
                    "ok": true,
                    "input": {
                      "type": "domain",
                      "value": "adobe.com"
                    },
                    "cached": false,
                    "pastes": null,
                    "sources": [
                      "Adobe",
                      "Adobe Creative Cloud"
                    ],
                    "findings": [
                      {
                        "name": "Adobe",
                        "title": "Adobe",
                        "domain": "adobe.com",
                        "last_seen": "2013-10-04T00:00:00Z",
                        "pwn_count": 152445165,
                        "added_date": "2013-10-04T00:00:00Z",
                        "first_seen": "2013-10-04",
                        "is_malware": false,
                        "is_retired": false,
                        "description": "In October 2013, 153 million Adobe accounts...",
                        "is_verified": true,
                        "data_classes": [
                          "Email addresses",
                          "Password hints",
                          "Passwords"
                        ],
                        "is_sensitive": false,
                        "is_spam_list": false,
                        "is_fabricated": false
                      }
                    ],
                    "checked_at": "2026-08-09T07:30:00.000000",
                    "breach_count": 5,
                    "breach_status": "exposed"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Client error"
          },
          "5XX": {
            "description": "Upstream or gateway error"
          },
          "503": {
            "description": "No live upstream is configured. Sample responses are preview-only."
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "identifier": {
                    "type": "string",
                    "x-required-group": "scan-identifier"
                  },
                  "include_hashes": {
                    "type": "boolean"
                  },
                  "include_pastes": {
                    "type": "boolean"
                  },
                  "email": {
                    "type": "string",
                    "x-required-group": "scan-identifier"
                  },
                  "username": {
                    "type": "string",
                    "x-required-group": "scan-identifier"
                  },
                  "domain": {
                    "type": "string",
                    "x-required-group": "scan-identifier"
                  }
                },
                "example": {
                  "identifier": "adobe.com",
                  "include_pastes": false
                }
              }
            }
          }
        },
        "x-required-groups": {
          "scan-identifier": [
            "identifier",
            "email",
            "username",
            "domain"
          ]
        },
        "x-dakidarts-execution-status": "source-only",
        "x-dakidarts-source-contract": true,
        "x-dakidarts-sample-response": {
          "ok": true,
          "input": {
            "type": "domain",
            "value": "adobe.com"
          },
          "cached": false,
          "pastes": null,
          "sources": [
            "Adobe",
            "Adobe Creative Cloud"
          ],
          "findings": [
            {
              "name": "Adobe",
              "title": "Adobe",
              "domain": "adobe.com",
              "last_seen": "2013-10-04T00:00:00Z",
              "pwn_count": 152445165,
              "added_date": "2013-10-04T00:00:00Z",
              "first_seen": "2013-10-04",
              "is_malware": false,
              "is_retired": false,
              "description": "In October 2013, 153 million Adobe accounts...",
              "is_verified": true,
              "data_classes": [
                "Email addresses",
                "Password hints",
                "Passwords"
              ],
              "is_sensitive": false,
              "is_spam_list": false,
              "is_fabricated": false
            }
          ],
          "checked_at": "2026-08-09T07:30:00.000000",
          "breach_count": 5,
          "breach_status": "exposed"
        }
      }
    },
    "/scan/batch": {
      "post": {
        "summary": "Scan Batch",
        "description": "Breach scans for up to **25** identifiers in one request. Results are returned per-identifier; one bad identifier does not fail the batch \u2014 it gets an `error` entry. Uncached identifiers are throttled at `SCAN_THROTTLE` (default 1.5 s, HIBP's rate limit), so a fully-uncached batch takes ~38 s max.",
        "operationId": "dark-web-exposure_post_scan_batch",
        "tags": [
          "Batch operations"
        ],
        "parameters": [
          {
            "name": "X-HIBP-API-Key",
            "in": "header",
            "required": false,
            "description": "Optional Have I Been Pwned API key for premium breach/paste access.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hibp_api_key",
            "in": "query",
            "required": false,
            "description": "Compatibility fallback for the Have I Been Pwned key; prefer the X-HIBP-API-Key header to avoid exposing credentials in URLs.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "4XX": {
            "description": "Client error"
          },
          "5XX": {
            "description": "Upstream or gateway error"
          },
          "503": {
            "description": "No live upstream is configured. Sample responses are preview-only."
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "identifiers": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "include_hashes": {
                    "type": "boolean"
                  },
                  "include_pastes": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "identifiers"
                ]
              }
            }
          }
        },
        "x-dakidarts-execution-status": "source-only",
        "x-dakidarts-source-contract": true
      }
    },
    "/breaches": {
      "get": {
        "summary": "List Breaches",
        "description": "Full breach catalog. Optional `?domain=` filter limits results to breaches involving that domain. Cached 1 day (per domain value).",
        "operationId": "dark-web-exposure_get_breaches",
        "tags": [
          "Breaches"
        ],
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": false,
            "description": "Domain name to search for matching breach records.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "4XX": {
            "description": "Client error"
          },
          "5XX": {
            "description": "Upstream or gateway error"
          },
          "503": {
            "description": "No live upstream is configured. Sample responses are preview-only."
          }
        },
        "x-dakidarts-execution-status": "source-only",
        "x-dakidarts-source-contract": true
      }
    },
    "/breaches/latest": {
      "get": {
        "summary": "Latest Breaches",
        "description": "The most recently *added* breaches (sorted by HIBP `AddedDate`, newest first). Shares the same 1-day catalog cache as `/breaches`, so it costs nothing extra after a catalog fetch.",
        "operationId": "dark-web-exposure_get_breaches_latest",
        "tags": [
          "Breaches"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "1\u201350, default 10",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "4XX": {
            "description": "Client error"
          },
          "5XX": {
            "description": "Upstream or gateway error"
          },
          "503": {
            "description": "No live upstream is configured. Sample responses are preview-only."
          }
        },
        "x-dakidarts-execution-status": "source-only",
        "x-dakidarts-source-contract": true
      }
    },
    "/breaches/{breach_name}": {
      "get": {
        "summary": "Single Breach",
        "description": "Details for a single named breach. Cached 1 day.",
        "operationId": "dark-web-exposure_get_breaches_{breach_name}",
        "tags": [
          "Breaches"
        ],
        "parameters": [
          {
            "name": "breach_name",
            "in": "path",
            "required": true,
            "description": "Breach name supplied in the URL path.",
            "schema": {
              "type": "string",
              "example": "ExampleBreach"
            },
            "example": "ExampleBreach"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "4XX": {
            "description": "Client error"
          },
          "5XX": {
            "description": "Upstream or gateway error"
          },
          "503": {
            "description": "No live upstream is configured. Sample responses are preview-only."
          }
        },
        "x-dakidarts-execution-status": "source-only",
        "x-dakidarts-source-contract": true
      }
    },
    "/pastes/{account}": {
      "get": {
        "summary": "Account Pastes",
        "description": "Pastebin exposure for an email address or username. Requires `HIBP_API_KEY`. Cached 1 day.",
        "operationId": "dark-web-exposure_get_pastes_{account}",
        "tags": [
          "Pastes"
        ],
        "parameters": [
          {
            "name": "X-HIBP-API-Key",
            "in": "header",
            "required": false,
            "description": "Required for this endpoint; send the HIBP key using this header or the compatibility query parameter.",
            "schema": {
              "type": "string"
            },
            "x-required-group": "hibp-api-key"
          },
          {
            "name": "hibp_api_key",
            "in": "query",
            "required": false,
            "description": "Required for this endpoint; send the HIBP key using this header or the compatibility query parameter.",
            "schema": {
              "type": "string"
            },
            "x-required-group": "hibp-api-key"
          },
          {
            "name": "account",
            "in": "path",
            "required": true,
            "description": "Email address or account identifier to search for pastes.",
            "schema": {
              "type": "string",
              "example": "dev@example.com"
            },
            "example": "dev@example.com"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "example": {
                    "ok": true,
                    "count": 2,
                    "cached": false,
                    "pastes": [
                      {
                        "Id": "abcdef1234",
                        "Date": "2023-01-15T00:00:00Z",
                        "Title": "dumps",
                        "Source": "Pastebin",
                        "EmailCount": 34
                      }
                    ],
                    "account": "alice@example.com"
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Client error"
          },
          "5XX": {
            "description": "Upstream or gateway error"
          },
          "503": {
            "description": "No live upstream is configured. Sample responses are preview-only."
          }
        },
        "x-dakidarts-execution-status": "source-only",
        "x-dakidarts-source-contract": true,
        "x-dakidarts-sample-response": {
          "ok": true,
          "count": 2,
          "cached": false,
          "pastes": [
            {
              "Id": "abcdef1234",
              "Date": "2023-01-15T00:00:00Z",
              "Title": "dumps",
              "Source": "Pastebin",
              "EmailCount": 34
            }
          ],
          "account": "alice@example.com"
        }
      }
    },
    "/data_classes": {
      "get": {
        "summary": "Data Classes",
        "description": "The fixed list of data classes HIBP uses (e.g. `Email addresses`, `Passwords`, `Dates of birth`). Cached 30 days. Useful for building filters in client apps.",
        "operationId": "dark-web-exposure_get_data_classes",
        "tags": [
          "Data Classes"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "4XX": {
            "description": "Client error"
          },
          "5XX": {
            "description": "Upstream or gateway error"
          },
          "503": {
            "description": "No live upstream is configured. Sample responses are preview-only."
          }
        },
        "x-dakidarts-execution-status": "source-only",
        "x-dakidarts-source-contract": true
      }
    },
    "/stats": {
      "get": {
        "summary": "Stats",
        "description": "Server-side usage analytics: per-endpoint request counters, cache sizes, uptime. Useful to watch from your own monitoring (RapidAPI's dashboard shows its own numbers).",
        "operationId": "dark-web-exposure_get_stats",
        "tags": [
          "Stats"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "example": {
                    "ok": true,
                    "cache_entries": {
                      "catalog": 14,
                      "breaches": 312,
                      "passwords": 4091,
                      "password_ranges": 87
                    },
                    "endpoint_usage": [
                      {
                        "hits": 8200,
                        "endpoint": "/password",
                        "last_hit": "2026-08-09T07:30:00.000000"
                      },
                      {
                        "hits": 3121,
                        "endpoint": "/passwords/batch",
                        "last_hit": "2026-08-09T07:29:00.000000"
                      }
                    ],
                    "total_requests": 15403,
                    "uptime_seconds": 86400
                  }
                }
              }
            }
          },
          "4XX": {
            "description": "Client error"
          },
          "5XX": {
            "description": "Upstream or gateway error"
          },
          "503": {
            "description": "No live upstream is configured. Sample responses are preview-only."
          }
        },
        "x-dakidarts-execution-status": "source-only",
        "x-dakidarts-source-contract": true,
        "x-dakidarts-sample-response": {
          "ok": true,
          "cache_entries": {
            "catalog": 14,
            "breaches": 312,
            "passwords": 4091,
            "password_ranges": 87
          },
          "endpoint_usage": [
            {
              "hits": 8200,
              "endpoint": "/password",
              "last_hit": "2026-08-09T07:30:00.000000"
            },
            {
              "hits": 3121,
              "endpoint": "/passwords/batch",
              "last_hit": "2026-08-09T07:29:00.000000"
            }
          ],
          "total_requests": 15403,
          "uptime_seconds": 86400
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key"
      }
    }
  },
  "security": [
    {
      "ApiKeyAuth": []
    }
  ]
}