{
  "schemaVersion": 2,
  "retrievedAt": "2026-10-18T07:39:40.780Z",
  "sources": [
    {
      "name": "OpenDiveMap",
      "url": "https://opendivemap.com/",
      "license": "ODbL-1.0",
      "licenseUrl": "https://opendivemap.com/about",
      "retrievedAt": "2026-10-17T21:13:57+00:00",
      "sourceRecordCount": 3123,
      "downloadedRecordCount": 3123,
      "retainedRecordCount": 3119,
      "excludedRecordCount": 4,
      "fullSnapshot": true,
      "notes": [
        "All documented API pages downloaded; unique source IDs and numberMatched reconciled. Four obvious test/placeholder or contradictory records withheld from the displayed catalogue. Source-provided depth, environment, entry and topology retained. Descriptions and photos excluded."
      ],
      "catalogueRecordCount": 3119
    },
    {
      "name": "OpenStreetMap",
      "url": "https://www.openstreetmap.org/",
      "license": "ODbL-1.0",
      "licenseUrl": "https://www.openstreetmap.org/copyright",
      "retrievedAt": "2026-10-17T21:14:21.959+00:00",
      "sourceRecordCount": 4921,
      "downloadedRecordCount": 4921,
      "retainedRecordCount": 4011,
      "excludedRecordCount": 910,
      "fullSnapshot": false,
      "notes": [
        "One worldwide Overpass query for explicit dive spots and scuba-diving sport tags. This is a complete response to the recorded query, not a complete inventory of world dive sites.",
        "910 services and sports facilities without explicit dive-spot tags excluded.",
        "Area features use source-object centres rather than verified entry points. Country and region are populated only when source tags supply them."
      ],
      "catalogueRecordCount": 4011
    }
  ],
  "openDiveMapAcquisition": {
    "source": "OpenDiveMap",
    "url": "https://opendivemap.com/",
    "api": "https://api.opendivemap.com/v1/sites",
    "retrievedAt": "2026-10-17T21:13:57+00:00",
    "sourceRecordCount": 3123,
    "downloadedRecordCount": 3123,
    "fullApiSnapshot": true,
    "license": "ODbL-1.0",
    "licenseEvidence": "https://opendivemap.com/about",
    "pages": [
      {
        "url": "https://api.opendivemap.com/v1/sites?limit=1000",
        "file": "opendivemap-page-0.json",
        "count": 1000,
        "sha256": "08f0eb51d2b7ea5929fc78a9142b45632cb363fa3b0fb56b876f089caf77a63d"
      },
      {
        "url": "https://api.opendivemap.com/v1/sites?limit=1000&offset=1000",
        "file": "opendivemap-page-1.json",
        "count": 1000,
        "sha256": "a6a9e3a269c1949325d81afe597647b492f8e369f15c0d108917c9476ac66a96"
      },
      {
        "url": "https://api.opendivemap.com/v1/sites?limit=1000&offset=2000",
        "file": "opendivemap-page-2.json",
        "count": 1000,
        "sha256": "037cbd84e7017c606cc75e8f899ba4e1ef7eb6d77dfa684e6549fb926f977b4e"
      },
      {
        "url": "https://api.opendivemap.com/v1/sites?limit=1000&offset=3000",
        "file": "opendivemap-page-3.json",
        "count": 123,
        "sha256": "92963ab1ad6ddb008520f845a612b5bc2191d74c993dc05d5f7969107c74a2b2"
      }
    ],
    "quarantinedRecords": [
      {
        "id": "10bkvu",
        "reason": "Single-letter placeholder; country and coordinate disagree"
      },
      {
        "id": "70qrs4",
        "reason": "Placeholder-like name without supporting source"
      },
      {
        "id": "w84d58",
        "reason": "Country and coordinate disagree; inland point marked as ocean"
      },
      {
        "id": "c2fj0s",
        "reason": "Explicit test record"
      }
    ]
  },
  "openStreetMapAcquisition": {
    "endpoint": "https://overpass-api.de/api/interpreter",
    "query": "[out:json][timeout:180];\n(\n  nwr[\"scuba_diving:divespot\"=\"yes\"];\n  nwr[\"sport\"~\"(^|;)scuba_diving(;|$)\"];\n  nwr[\"sport:scuba_diving\"=\"yes\"];\n);\nout center tags;\n",
    "sourceTimestamp": "2026-10-17T21:12:51Z",
    "rawFeatureCount": 4921,
    "retainedCount": 4011,
    "excludedCount": 910,
    "sha256": "6b365f526e0856201bbef382ec4692a1f747efc310e51ab7df13d622699f128f",
    "normalizedSnapshotSha256": "84966007ec3ffc61ce3bcde60a8091362b153d72bcfe8e51035775c7f60ce932"
  },
  "deduplication": {
    "thresholdMeters": 100,
    "exactNormalizedNames": true,
    "inputRecordCount": 7130,
    "outputRecordCount": 7103,
    "mergedRecordCount": 27
  }
}
