{
  "openapi":"3.1.0",
  "info":{"title":"PayorMap API","version":"1.1.0-beta","description":"Read-only dental reimbursement and entity intelligence API. Company-scoped resources enforce organization access, and finance-grade rate/opportunity resources exclude unresolved or conflicted TIN clusters."},
  "servers":[{"url":"https://pmpe2.netlify.app/api/v1"}],
  "components":{"securitySchemes":{"ApiKey":{"type":"apiKey","in":"header","name":"x-api-key"},"Bearer":{"type":"http","scheme":"bearer"}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"}}}}},
  "security":[{"ApiKey":[]},{"Bearer":[]}],
  "paths":{
    "/":{"get":{"security":[],"summary":"API index","responses":{"200":{"description":"API metadata"}}}},
    "/companies":{"get":{"summary":"List companies accessible to the API key organization","responses":{"200":{"description":"Accessible companies"},"401":{"description":"Unauthorized"}}}},
    "/entities":{"get":{"summary":"Search governed dental entity intelligence","description":"Returns TIN, legal entity, market brand, support platform, parent organization, sponsor, provider footprint, identity confidence, cluster quality and finance-grade eligibility.","parameters":[{"name":"company","in":"query","schema":{"type":"string"}},{"name":"parent","in":"query","schema":{"type":"string"}},{"name":"tin","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"production_eligible","in":"query","schema":{"type":"boolean"}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":500}},{"name":"offset","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Entity intelligence rows"},"403":{"description":"Company access denied"}}}},
    "/entities/{tin}":{"get":{"summary":"Resolve one TIN","parameters":[{"name":"tin","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]{9}$"}}],"responses":{"200":{"description":"Governed entity record"},"404":{"description":"Not found or not accessible"}}}},
    "/rates":{"get":{"summary":"Search observed reimbursement summaries","description":"Only finance-grade clean TIN mappings are returned.","parameters":[{"name":"company","in":"query","schema":{"type":"string"}},{"name":"payer","in":"query","schema":{"type":"string"}},{"name":"code","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":1000}},{"name":"offset","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Observed rates"},"403":{"description":"Company access denied"}}}},
    "/benchmarks":{"get":{"summary":"Get payer/CDT benchmark percentiles","parameters":[{"name":"payer","in":"query","schema":{"type":"string"}},{"name":"code","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":1000}}],"responses":{"200":{"description":"Benchmark rows"}}}},
    "/opportunities":{"get":{"summary":"Get modeled reimbursement opportunities","description":"Only finance-grade clean TIN mappings are returned.","parameters":[{"name":"company","in":"query","schema":{"type":"string"}},{"name":"payer","in":"query","schema":{"type":"string"}},{"name":"state","in":"query","schema":{"type":"string"}},{"name":"code","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":500}}],"responses":{"200":{"description":"Modeled opportunities"},"403":{"description":"Company access denied"}}}},
    "/payers":{"get":{"summary":"List payer source and readiness coverage","responses":{"200":{"description":"Payer coverage registry"}}}},
    "/payers/{payer}":{"get":{"summary":"Get payer coverage status","parameters":[{"name":"payer","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Payer coverage"},"404":{"description":"Unknown payer"}}}},
    "/medicaid":{"get":{"summary":"Get published Medicaid dental rates","parameters":[{"name":"state","in":"query","schema":{"type":"string"}},{"name":"code","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":1000}}],"responses":{"200":{"description":"Published Medicaid schedule rows"}}}},
    "/contracts":{"get":{"summary":"List organization contracts","parameters":[{"name":"company","in":"query","schema":{"type":"string"}},{"name":"payer","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Organization contracts"}}}},
    "/contracts/{id}":{"get":{"summary":"Get one organization contract","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Contract"},"404":{"description":"Not found or not accessible"}}}},
    "/contracts/{id}/market-comparison":{"get":{"summary":"Compare contract fee schedule to payer benchmark","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Contract vs market rows"}}}},
    "/methodology":{"get":{"summary":"Get methodology and field definitions","responses":{"200":{"description":"Methodology"}}}}
  }
}
