{"openapi":"3.1.0","info":{"title":"GovCon API","description":"\n## Federal Contracts API for Developers\n\nClean JSON access to federal procurement data: contract opportunities,\nFPDS prime contracts, SAM Award Notices, subawards, the SAM entity registry,\ndebarment exclusions, and contracting-officer contacts.\n\n### What's covered\n- **Contract opportunities** (SAM.gov notices, daily refresh)\n- **Contracts** (FPDS prime contract transactions; every base award and modification for types A/B/C/D; FY2025+ coverage)\n- **SAM Award Notices** (the SAM-noticed slice; backward-compatible surface for integrations that depend on it)\n- **Subawards** (FFATA Section 2 reports, FY2025+)\n- **SAM entity registry** (~873K registered firms by UEI or CAGE; registration\n  status, expiration, NAICS, business-type certifications)\n- **Exclusions** (debarred / suspended entities)\n- **Companies** (Pro: combined SAM profile + award history)\n- **Vendor Risk** (Pro: 7-signal screening per UEI)\n\nEvery response includes a top-level `_sources` array naming the data sources composed in that response.\n\n### Authentication\nAll endpoints (except public demo) require Bearer token authentication:\n```\nAuthorization: Bearer your_api_key_here\n```\n\n### Plans\n- **Free Trial**: 100 req/day, 14 days, no credit card\n- **Developer ($19/mo)**: 1000 req/hr, all opportunities + contracts + awards + exclusions\n  filters + SAM entity lookup (UEI, CAGE, name search) + CSV exports\n- **Pro ($39/mo)**: everything Developer + Companies API + multi-filter\n  entity search + SAM expiration radar + Vendor Risk + Subawards + dense subaward enrichment on `/contracts/{piid}`\n\nUse `/api/v1/status` and `/api/v1/me` endpoints for current data and plan details.\n\n### 📚 Documentation\n- **This page**: Interactive API reference for developers\n- **[Comprehensive Guide](/api-guide)**: Business documentation with worked examples and use cases\n    ","contact":{"name":"GovCon API Support","url":"https://govconapi.com/"},"license":{"name":"API Terms of Service","url":"https://govconapi.com/terms"},"version":"1.0.0"},"paths":{"/api/v1/awards/search":{"get":{"tags":["Awards"],"summary":"Search Federal Contract Awards","description":"Search awarded contracts by awardee name, UEI, agency, NAICS, amount range, and date range. All filters available on all plans. Free plan: max 100 results. Paid plan: max 1000 results.","operationId":"api_search_awards_api_v1_awards_search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"awardee_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Awardee company name (partial match, case-insensitive)","title":"Awardee Name"},"description":"Awardee company name (partial match, case-insensitive)"},{"name":"uei","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exact UEI match","title":"Uei"},"description":"Exact UEI match"},{"name":"naics","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"NAICS code","title":"Naics"},"description":"NAICS code"},{"name":"agency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Awarding agency (partial match)","title":"Agency"},"description":"Awarding agency (partial match)"},{"name":"amount_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Minimum award amount","title":"Amount Min"},"description":"Minimum award amount"},{"name":"amount_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Maximum award amount","title":"Amount Max"},"description":"Maximum award amount"},{"name":"awarded_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Awards on or after this date (YYYY-MM-DD)","title":"Awarded After"},"description":"Awards on or after this date (YYYY-MM-DD)"},{"name":"awarded_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Awards on or before this date (YYYY-MM-DD)","title":"Awarded Before"},"description":"Awards on or before this date (YYYY-MM-DD)"},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Awardee state code (2-letter, e.g. CA)","title":"State"},"description":"Awardee state code (2-letter, e.g. CA)"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sort field: award_amount, award_date, awardee_name","title":"Sort By"},"description":"Sort field: award_amount, award_date, awardee_name"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sort order: asc or desc","default":"desc","title":"Sort Order"},"description":"Sort order: asc or desc"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Results per page","default":20,"title":"Limit"},"description":"Results per page"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Pagination offset","default":0,"title":"Offset"},"description":"Pagination offset"},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated response fields to return. `notice_id` always included. Example: `fields=notice_id,awardee_name,award_amount,award_date`.","title":"Fields"},"description":"Comma-separated response fields to return. `notice_id` always included. Example: `fields=notice_id,awardee_name,award_amount,award_date`."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/awards/{award_number}":{"get":{"tags":["Awards"],"summary":"Get Award by Contract Number","description":"Get a single award record by award/contract number. Returns the most recent record if multiple exist.","operationId":"api_get_award_api_v1_awards__award_number__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"award_number","in":"path","required":true,"schema":{"type":"string","title":"Award Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/opportunities/delta":{"get":{"tags":["Delta Sync"],"summary":"Delta Sync","description":"Get all opportunities added or modified since a given timestamp. Use this to keep your local database in sync without re-pulling everything.","operationId":"api_delta_sync_api_v1_opportunities_delta_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"since","in":"query","required":true,"schema":{"type":"string","description":"ISO 8601 timestamp (e.g. 2026-04-05T06:00:00Z). Returns records where last_seen >= this value.","title":"Since"},"description":"ISO 8601 timestamp (e.g. 2026-04-05T06:00:00Z). Returns records where last_seen >= this value."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Results per page","default":1000,"title":"Limit"},"description":"Results per page"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Pagination offset","default":0,"title":"Offset"},"description":"Pagination offset"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/companies/search":{"get":{"tags":["Companies (Pro)"],"summary":"Search awarded companies across SAM Award Notices + FPDS prime contracts (firms with 1+ federal award; for all registered firms use /entities/search)","description":"Case-insensitive substring (ILIKE) match against awardee names across BOTH\nSAM Award Notices and FPDS prime contract transactions.\n\nScope as of 2026-06-05: ~101,234 distinct UEIs across SAM Award Notice winners\n+ FPDS prime contractors. Many federal contractors don't appear in the SAM\nAward Notice slice (FPDS coverage is broader); the search now spans both so a\ncontractor like Picogrid ($18M+ FPDS, 0 SAM Award Notices) surfaces by name.\n\nExisting fields keep their meaning — `total_awards` / `total_value` /\n`last_award_date` describe SAM Award Notice activity only. New `fpds_*`\nfields surface FPDS prime contract activity independently. Results are\nranked by the combined value (Award Notice + FPDS) so the biggest federal\ncontractor for the name surfaces first regardless of which source it lives in.\n\nOptional `naics` and `agency` filters narrow the candidate set to companies\nthat have WON awards under that NAICS / from that agency (distinct from\nFederal Contractor Search, which filters by SAM registration data —\n\"registered for NAICS X\" vs \"won awards under NAICS X\").","operationId":"search_companies_api_v1_companies_search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":250},{"type":"null"}],"description":"Name substring match. UEIs are exact 12-char identifiers — for direct UEI lookup use GET /api/v1/companies/{uei}.","title":"Q"},"description":"Name substring match. UEIs are exact 12-char identifiers — for direct UEI lookup use GET /api/v1/companies/{uei}."},{"name":"naics","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":6},{"type":"null"}],"description":"6-digit NAICS code. Filters to companies that have won at least one award under this NAICS.","title":"Naics"},"description":"6-digit NAICS code. Filters to companies that have won at least one award under this NAICS."},{"name":"agency","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Agency top-level name (e.g. 'DEPT OF DEFENSE'). Filters to companies that have won at least one award from this agency. Matches the top-level of SAM's dotted agency path.","title":"Agency"},"description":"Agency top-level name (e.g. 'DEPT OF DEFENSE'). Filters to companies that have won at least one award from this agency. Matches the top-level of SAM's dotted agency path."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated response fields. `uei` always included. Example: `fields=uei,name,total_value,fpds_obligated_total`.","title":"Fields"},"description":"Comma-separated response fields. `uei` always included. Example: `fields=uei,name,total_value,fpds_obligated_total`."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/companies/{uei}":{"get":{"tags":["Companies (Pro)"],"summary":"Company profile with aggregated stats","description":"Aggregate profile for a single UEI.\n\nCombines two sources:\n  - **SAM entity registration** (legal name, DBA, address, NAICS, PSC,\n    business-type certifications, registration dates, CAGE codes)\n  - **Award history** (totals, top NAICS/agencies, activity windows)\n\n**Scope of the award totals:** `total_awards`, `total_value`, and\n`avg_value` count **SAM Award Notices only** (the SAM-noticed slice,\nroughly 10-30% of federal obligations). They are NOT the company's total\nfederal contract value: a contractor active only in FPDS shows\n`total_value: 0` here by design. For the fuller federal prime-contract\nobligation figure read `fpds_obligated_total` (Pro), returned alongside.\nThe two are kept separate rather than summed because the sources overlap\nat the award level (most SAM Award Notices also have an FPDS record) and\nSAM `award_amount` carries occasional garbage values; pick the denominator\nthat fits your question.\n\nReturns 200 if either source has the UEI. Returns 404 only when the UEI\nis unknown to both. Award fields default to 0/empty when the company is\nSAM-registered but has never won a contract (the common case for SMBs\nin the SAM directory of ~880K registered entities).","operationId":"get_company_profile_api_v1_companies__uei__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"uei","in":"path","required":true,"schema":{"type":"string","title":"Uei"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/companies/{uei}/awards":{"get":{"tags":["Companies (Pro)"],"summary":"Award history for a UEI (paginated)","description":"Full paginated award history. sort=date (default, desc) | amount (desc).\nAlso accepts sort_by=award_date|award_amount + sort_order=asc|desc.","operationId":"get_company_awards_api_v1_companies__uei__awards_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"uei","in":"path","required":true,"schema":{"type":"string","title":"Uei"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","pattern":"^(date|amount)$","default":"date","title":"Sort"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sort field: award_date or award_amount (alias for sort)","title":"Sort By"},"description":"Sort field: award_date or award_amount (alias for sort)"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sort order: asc or desc (used with sort_by)","default":"desc","title":"Sort Order"},"description":"Sort order: asc or desc (used with sort_by)"},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated response fields. `notice_id` always included.","title":"Fields"},"description":"Comma-separated response fields. `notice_id` always included."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/companies/{uei}/peers":{"get":{"tags":["Companies (Pro)"],"summary":"Similar companies by NAICS + agency overlap","description":"Find similar awardees based on overlap of NAICS codes and agencies.\n\nScoring: count NAICS overlap + count agency overlap (each weighted by\ntheir award frequency at the target UEI). Not a true Jaccard; closer\nto 'weighted match count'.\n\nThis is the slowest endpoint. Expect 200-1500ms on prod data.","operationId":"get_company_peers_api_v1_companies__uei__peers_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"uei","in":"path","required":true,"schema":{"type":"string","title":"Uei"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/vendor-risk/{uei}":{"get":{"tags":["Vendor Risk (Pro)"],"summary":"Vendor risk report for a UEI","description":"Return all seven risk signals for a single UEI.\n\nAlways returns 200 with the full signal shape, even for clean vendors.\nNever returns a risk score; callers interpret the signals themselves.","operationId":"get_vendor_risk_api_v1_vendor_risk__uei__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"uei","in":"path","required":true,"schema":{"type":"string","title":"Uei"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/vendor-risk/bulk":{"post":{"tags":["Vendor Risk (Pro)"],"summary":"Bulk vendor risk screening (up to 100 UEIs)","description":"Return risk reports for each supplied UEI. Not-found UEIs come back\nwith status='not_found' rather than failing the whole request — stale\nUEIs in vendor lists are normal.","operationId":"bulk_vendor_risk_api_v1_vendor_risk_bulk_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/identifiers/{identifier}":{"get":{"tags":["Identifiers"],"summary":"Resolve DUNS ↔ UEI","description":"Free reverse lookup between legacy DUNS (9 digits, or 13-digit DUNS+4) and current UEI (12 alphanumeric). Accepts either side; returns both plus the entity name and FFATA evidence count.\n\n**Coverage truth.** The crosswalk is built from FFATA Section 2 subaward filings since FY2025, where both identifiers co-exist on the same record. A 404 here means *not in the FFATA-derived crosswalk* (about 24K firms indexed), not *not in SAM*. The official SAM DUNS↔UEI translator is admin-gated and not publicly available.","operationId":"api_identifier_lookup_api_v1_identifiers__identifier__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}}],"responses":{"200":{"description":"Pair found. Returns DUNS, UEI, entity name, evidence count, last seen.","content":{"application/json":{"schema":{}}}},"404":{"description":"Identifier not in the FFATA-derived crosswalk."},"422":{"description":"Identifier shape invalid (not 9-digit DUNS, not 12-char UEI)."},"429":{"description":"Rate limit exceeded."}}}},"/api/v1/entities/search":{"get":{"tags":["Entities"],"summary":"Search SAM entities (q = Developer; filters = Pro)","description":"Filter-based entity search.\n\n**Developer tier**: pass `q` only (name substring, trigram-indexed).\n\n**Pro**: combine `q` with `naics` / `state` / `business_type` /\n`active_only` filters. The DSBS replacement.\n\nAt least one of `q` / `naics` / `state` / `business_type` / `active_only`\nmust be provided. NAICS values omit the Y/N small-business suffix (we\nmatch either flag).\n\n`business_type` accepts SAM 2-3 char codes like `8W` (WOSB), `QF`\n(SDVOSB), `27` (Self-Cert SDB), `2X` (For Profit), etc. An unknown code\nreturns 400 listing every valid code. Note: SBA-certified codes\n(A6, XX, JT, A4) are valid but appear ~zero times in the Public V2 SAM extract.","operationId":"search_entities_api_v1_entities_search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":250},{"type":"null"}],"description":"Name substring (Developer tier)","title":"Q"},"description":"Name substring (Developer tier)"},{"name":"naics","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"description":"NAICS code, no Y/N suffix (Pro)","title":"Naics"},"description":"NAICS code, no Y/N suffix (Pro)"},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":2},{"type":"null"}],"description":"2-letter US state (Pro)","title":"State"},"description":"2-letter US state (Pro)"},{"name":"business_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":3},{"type":"null"}],"description":"SAM business-type code (Pro), e.g. 8W (WOSB), QF (SDVOSB), 27 (self-cert SDB). An unknown code returns 400 with the full valid list.","title":"Business Type"},"description":"SAM business-type code (Pro), e.g. 8W (WOSB), QF (SDVOSB), 27 (self-cert SDB). An unknown code returns 400 with the full valid list."},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","description":"Only Active registrations (Pro)","default":false,"title":"Active Only"},"description":"Only Active registrations (Pro)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated response fields. `uei` always included. Example: `fields=uei,legal_business_name,primary_naics`.","title":"Fields"},"description":"Comma-separated response fields. `uei` always included. Example: `fields=uei,legal_business_name,primary_naics`."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/entities/expiring":{"get":{"tags":["Entities"],"summary":"Registrations expiring within N days (Pro)","description":"Active SAM registrations expiring within `within_days` days.\n\nPro. Renewal-radar use case: customers monitor a state, a NAICS\ncohort, or the full population for entities that need to renew. Past-due\nexpirations are excluded (status would already be 'E').\n\nSorted by expiration_date ascending (most urgent first). Result includes\n`days_until_expiration` for direct rendering.","operationId":"expiring_entities_api_v1_entities_expiring_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"within_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"Days from today to look ahead","default":60,"title":"Within Days"},"description":"Days from today to look ahead"},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":2},{"type":"null"}],"title":"State"}},{"name":"naics","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Naics"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/entities/by-cage/{cage_code}":{"get":{"tags":["Entities"],"summary":"SAM entity lookup by CAGE code (Developer tier)","description":"SAM-registered entity by Commercial and Government Entity (CAGE) code.\n\nCAGE is the DoD/DLA-issued 5-character identifier used by contracting\nofficers and legacy procurement systems. Each CAGE code is assigned to\none entity by DLA. Large entities (USPS, financial institutions) can\nhave multiple CAGE codes per UEI; this endpoint returns the entity\nthat owns the CAGE you queried.\n\nResponse is the same shape as `/entities/{uei}` plus a `queried_cage`\nfield echoing the input. Developer tier (matches `/entities/{uei}` —\nboth are alternate-identifier lookups for the same underlying record).","operationId":"get_entity_by_cage_api_v1_entities_by_cage__cage_code__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"cage_code","in":"path","required":true,"schema":{"type":"string","title":"Cage Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/entities/{uei}":{"get":{"tags":["Entities"],"summary":"SAM entity lookup by UEI (Developer tier)","description":"Single SAM-registered entity by UEI.\n\nReturns registration block (status, dates, expiring_soon flag) and entity\nblock (legal name, DBA, address, NAICS/PSC, business-type certifications,\ndecoded labels, CAGE codes).\n\nAvailable on Developer tier (any active API key). For award-history merge\non top of this data, Pro subscribers should use `/companies/{uei}`.","operationId":"get_entity_api_v1_entities__uei__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"uei","in":"path","required":true,"schema":{"type":"string","title":"Uei"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/subawards/search":{"get":{"tags":["Subawards"],"summary":"Search FFATA subawards by prime/sub UEI, contract PIID, agency, NAICS, or keywords","description":"Filter-based subaward search with the standard envelope + window block.\n\nPer conventions §1.1, §3.5, §4.2, §5, §6.1, §9.3.","operationId":"search_subawards_api_v1_subawards_search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"prime_uei","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":12,"maxLength":12},{"type":"null"}],"title":"Prime Uei"}},{"name":"sub_uei","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":12,"maxLength":12},{"type":"null"}],"title":"Sub Uei"}},{"name":"piid","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Piid"}},{"name":"agency","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"Awarding agency name substring (case-insensitive)","title":"Agency"},"description":"Awarding agency name substring (case-insensitive)"},{"name":"naics","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exactly 6 digits","title":"Naics"},"description":"Exactly 6 digits"},{"name":"sub_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":3,"maxLength":200},{"type":"null"}],"description":"Sub-vendor name substring (case-insensitive)","title":"Sub Name"},"description":"Sub-vendor name substring (case-insensitive)"},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD","title":"Date From"},"description":"YYYY-MM-DD"},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD","title":"Date To"},"description":"YYYY-MM-DD"},{"name":"amount_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount Min"}},{"name":"amount_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount Max"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":250,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fields"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/subawards/{subaward_sam_report_id}":{"get":{"tags":["Subawards"],"summary":"Single FFATA report by SAM report ID (UUID)","description":"Single-record lookup. Returns flat object per §1.2. NOT windowed (§4.4).","operationId":"get_subaward_detail_api_v1_subawards__subaward_sam_report_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"subaward_sam_report_id","in":"path","required":true,"schema":{"type":"string","title":"Subaward Sam Report Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/companies/{uei}/subawards":{"get":{"tags":["Subawards"],"summary":"Subawards paid by this prime (UEI). Reverse lookup over /subawards/search.","description":"What subs has this prime paid? Indexed on prime_awardee_uei.","operationId":"get_company_subawards_api_v1_companies__uei__subawards_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"uei","in":"path","required":true,"schema":{"type":"string","title":"Uei"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":250,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fields"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/companies/{uei}/prime-relationships":{"get":{"tags":["Subawards"],"summary":"Primes that have paid this UEI as a sub-vendor. Reverse lookup by subawardee_uei.","description":"What primes have paid this sub? Indexed on subawardee_uei.","operationId":"get_company_prime_relationships_api_v1_companies__uei__prime_relationships_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"uei","in":"path","required":true,"schema":{"type":"string","title":"Uei"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":250,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fields"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/contracts/search":{"get":{"tags":["Contracts"],"summary":"Search FPDS prime contract transactions by UEI, PIID, agency, NAICS","description":"Per conventions §1.1, §3.5, §4.2, §5, §6.1, §9.3 and ARCHITECTURE.md §4.1.","operationId":"search_contracts_api_v1_contracts_search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"uei","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":12,"maxLength":12},{"type":"null"}],"description":"Recipient UEI (exact)","title":"Uei"},"description":"Recipient UEI (exact)"},{"name":"parent_uei","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":12,"maxLength":12},{"type":"null"}],"description":"Recipient parent UEI (corporate roll-up)","title":"Parent Uei"},"description":"Recipient parent UEI (corporate roll-up)"},{"name":"piid","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"description":"Award PIID (exact)","title":"Piid"},"description":"Award PIID (exact)"},{"name":"parent_piid","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"description":"Parent award PIID (vehicle/IDV)","title":"Parent Piid"},"description":"Parent award PIID (vehicle/IDV)"},{"name":"agency","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"Awarding agency name substring (case-insensitive)","title":"Agency"},"description":"Awarding agency name substring (case-insensitive)"},{"name":"naics","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"NAICS, exactly 6 digits","title":"Naics"},"description":"NAICS, exactly 6 digits"},{"name":"award_type_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":1},{"type":"null"}],"description":"FPDS award type: A, B, C, or D","title":"Award Type Code"},"description":"FPDS award type: A, B, C, or D"},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD (action_date)","title":"Date From"},"description":"YYYY-MM-DD (action_date)"},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD (action_date)","title":"Date To"},"description":"YYYY-MM-DD (action_date)"},{"name":"amount_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"federal_action_obligation min","title":"Amount Min"},"description":"federal_action_obligation min"},{"name":"amount_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"federal_action_obligation max","title":"Amount Max"},"description":"federal_action_obligation max"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":250,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lean | expanded | full | comma-list of columns","title":"Fields"},"description":"lean | expanded | full | comma-list of columns"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/contracts/{piid}":{"get":{"tags":["Contracts"],"summary":"Single contract by PIID — latest action + roll-up + optional subaward enrichment","description":"Returns the LATEST transaction row for this PIID plus a roll-up of\nobligation/value totals across every transaction (mods included).\n\nDetail-style response per ARCHITECTURE.md §4.2 — singular `contract` key\nat top level; `subaward_rollup` enrichment as a sibling, NOT nested.\nPro-gated subaward enrichment via contacts_access per §8.4 (Free tier\nsees the contract record but no subaward block).","operationId":"get_contract_detail_api_v1_contracts__piid__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"piid","in":"path","required":true,"schema":{"type":"string","title":"Piid"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lean | expanded | full | comma-list of columns","title":"Fields"},"description":"lean | expanded | full | comma-list of columns"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/contracts/{piid}/modifications":{"get":{"tags":["Contracts"],"summary":"Full transaction history for a PIID — every modification row, oldest to newest","description":"Returns every transaction row for the given PIID, oldest action first.\n\nModification trail use case: amendments, options exercised, partial\nterminations. Each row is a single FPDS action; mods stack on the\noriginal award. NOT windowed by date — when the customer asks for one\nPIID's full history, they get the full history (per conventions §4.4).","operationId":"get_contract_modifications_api_v1_contracts__piid__modifications_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"piid","in":"path","required":true,"schema":{"type":"string","title":"Piid"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lean | expanded | full | comma-list of columns","title":"Fields"},"description":"lean | expanded | full | comma-list of columns"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/contracts/{piid}/vehicle":{"get":{"tags":["Contracts"],"summary":"The contract vehicle this order was placed against (IDIQ, GWAC, FSS, BPA)","description":"Resolve an order to its parent vehicle.\n\nMost federal services work is not bought as a standalone contract: it is a task\norder placed against a vehicle you must already hold. 6.18M of our contract rows\ncarry a `parent_award_id_piid`, so for those the actionable question is not \"who\nwon this\" but \"what would I have needed to hold to bid at all\".\n\nThree outcomes, deliberately distinguished, because collapsing them into one 404\nwould tell the customer nothing:\n  `standalone`   - the order has no parent; it was competed on its own.\n  `resolved`     - we hold the parent vehicle; it is returned.\n  `not_in_corpus`- the order names a parent we do not carry. Honest, not a 404:\n                   the order exists, the vehicle is simply outside our coverage.","operationId":"get_contract_vehicle_api_v1_contracts__piid__vehicle_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"piid","in":"path","required":true,"schema":{"type":"string","title":"Piid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pricing/benchmark":{"get":{"tags":["Pricing"],"summary":"Comparable-award price benchmark for a NAICS, segmented by contract pricing type","description":"Percentile distribution of comparable contract value, by pricing type.\n\nPer conventions §1.2 (aggregate → flat object), §3.5, §3.7, §6.1, §8.2, §9.1.","operationId":"pricing_benchmark_api_v1_pricing_benchmark_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"naics","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"NAICS, exactly 6 digits (required)","title":"Naics"},"description":"NAICS, exactly 6 digits (required)"},{"name":"set_aside","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"description":"Set-aside code, exact (e.g. 8A, 8AN, SBA, SDVOSBC, WOSB, HZC, NONE)","title":"Set Aside"},"description":"Set-aside code, exact (e.g. 8A, 8AN, SBA, SDVOSBC, WOSB, HZC, NONE)"},{"name":"psc","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"description":"Product/Service Code, 1-4 alphanumeric, exact (finer scope than NAICS, e.g. DA01, R425)","title":"Psc"},"description":"Product/Service Code, 1-4 alphanumeric, exact (finer scope than NAICS, e.g. DA01, R425)"},{"name":"pricing_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"description":"Pin one contract pricing type (e.g. 'FIRM FIXED PRICE', 'TIME AND MATERIALS')","title":"Pricing Type"},"description":"Pin one contract pricing type (e.g. 'FIRM FIXED PRICE', 'TIME AND MATERIALS')"},{"name":"agency","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"description":"Buying agency: name / acronym / CGAC code (e.g. 'Navy', 'Department of Defense', '1700'). Narrows the comparable set to that agency.","title":"Agency"},"description":"Buying agency: name / acronym / CGAC code (e.g. 'Navy', 'Department of Defense', '1700'). Narrows the comparable set to that agency."},{"name":"value_basis","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"current (default) | potential | obligated","title":"Value Basis"},"description":"current (default) | potential | obligated"},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD (action_date lower bound)","title":"Date From"},"description":"YYYY-MM-DD (action_date lower bound)"},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD (action_date upper bound)","title":"Date To"},"description":"YYYY-MM-DD (action_date upper bound)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pricing/position":{"get":{"tags":["Pricing"],"summary":"Where does YOUR value sit: percentile rank + the real comparable contracts nearest it","description":"Rank YOUR value against the comparable set + return the nearest real contracts.\n\nSame comparable-set filters as /benchmark (shared `_resolve_filters`), plus the\ncaller's own `value`. Returns the percentile rank, the comparable distribution\ninline (so the call is self-contained), and the `sample_limit` contracts closest\nto `value` so the position can be judged justified by eye.","operationId":"pricing_position_api_v1_pricing_position_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"naics","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"NAICS, exactly 6 digits (required)","title":"Naics"},"description":"NAICS, exactly 6 digits (required)"},{"name":"value","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YOUR contract/bid value in dollars, e.g. 2200000 or $2,200,000 (required)","title":"Value"},"description":"YOUR contract/bid value in dollars, e.g. 2200000 or $2,200,000 (required)"},{"name":"set_aside","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"description":"Set-aside code, exact (e.g. 8A, 8AN, SBA, SDVOSBC, WOSB, HZC, NONE)","title":"Set Aside"},"description":"Set-aside code, exact (e.g. 8A, 8AN, SBA, SDVOSBC, WOSB, HZC, NONE)"},{"name":"psc","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"description":"Product/Service Code, 1-4 alphanumeric, exact (the scope lever, e.g. DA01, R425)","title":"Psc"},"description":"Product/Service Code, 1-4 alphanumeric, exact (the scope lever, e.g. DA01, R425)"},{"name":"pricing_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"description":"Pin one contract pricing type (recommended for an apples-to-apples position)","title":"Pricing Type"},"description":"Pin one contract pricing type (recommended for an apples-to-apples position)"},{"name":"agency","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"description":"Buying agency: name / acronym / CGAC code (e.g. 'Navy', 'Department of Defense', '1700'). Narrows the comparable set to that agency.","title":"Agency"},"description":"Buying agency: name / acronym / CGAC code (e.g. 'Navy', 'Department of Defense', '1700'). Narrows the comparable set to that agency."},{"name":"value_basis","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"current (default) | potential | obligated (your value is read on this basis)","title":"Value Basis"},"description":"current (default) | potential | obligated (your value is read on this basis)"},{"name":"sample_limit","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":0,"description":"How many comparable contracts to return (nearest to your value)","default":10,"title":"Sample Limit"},"description":"How many comparable contracts to return (nearest to your value)"},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD (action_date lower bound)","title":"Date From"},"description":"YYYY-MM-DD (action_date lower bound)"},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD (action_date upper bound)","title":"Date To"},"description":"YYYY-MM-DD (action_date upper bound)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pricing/labor-rates":{"get":{"tags":["Pricing"],"summary":"Awarded labor-rate (should-cost) benchmark for a labor category, from GSA CALC","description":"Awarded ceiling-rate distribution + comparable rates for a labor category.\n\nPer conventions §1.2 (aggregate -> flat object), §3.5, §3.7, §6.1, §8.2, §9.1.","operationId":"labor_rates_benchmark_api_v1_pricing_labor_rates_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"labor_category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Labor category to benchmark (required)","title":"Labor Category"},"description":"Labor category to benchmark (required)"},{"name":"match","in":"query","required":false,"schema":{"type":"string","description":"labor_category match: contains (default) | exact","default":"contains","title":"Match"},"description":"labor_category match: contains (default) | exact"},{"name":"education_level","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":48},{"type":"null"}],"description":"HS | AA | BA | MA | PHD | OTHER","title":"Education Level"},"description":"HS | AA | BA | MA | PHD | OTHER"},{"name":"min_experience","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":60,"minimum":0},{"type":"null"}],"description":"min years experience floor","title":"Min Experience"},"description":"min years experience floor"},{"name":"max_experience","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":60,"minimum":0},{"type":"null"}],"description":"min years experience ceiling","title":"Max Experience"},"description":"min years experience ceiling"},{"name":"naics","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"6-digit NAICS (via the SIN bridge)","title":"Naics"},"description":"6-digit NAICS (via the SIN bridge)"},{"name":"vendor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"description":"Vendor name (substring; competitor / self rate-card lookup)","title":"Vendor"},"description":"Vendor name (substring; competitor / self rate-card lookup)"},{"name":"worksite","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"description":"Customer | Contractor | Virtual","title":"Worksite"},"description":"Customer | Contractor | Virtual"},{"name":"business_size","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":24},{"type":"null"}],"description":"S (small business) | O (other than small)","title":"Business Size"},"description":"S (small business) | O (other than small)"},{"name":"security_clearance","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":24},{"type":"null"}],"description":"Yes | No","title":"Security Clearance"},"description":"Yes | No"},{"name":"value_basis","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"current (default) | next_year | second_year","title":"Value Basis"},"description":"current (default) | next_year | second_year"},{"name":"sample_limit","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":0,"description":"how many comparable rates to return","default":10,"title":"Sample Limit"},"description":"how many comparable rates to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/vehicles/search":{"get":{"tags":["Vehicles"],"summary":"Search contract vehicles (IDIQ, GWAC, FSS, BPA, BOA) by holder, agency, NAICS, or type","description":"One row per VEHICLE (latest transaction), not per transaction. See the\nmodule docstring for why the grain differs from /contracts/search.","operationId":"search_vehicles_api_v1_vehicles_search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"uei","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":12,"maxLength":12},{"type":"null"}],"description":"Vehicle holder UEI (exact)","title":"Uei"},"description":"Vehicle holder UEI (exact)"},{"name":"parent_uei","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":12,"maxLength":12},{"type":"null"}],"description":"Holder parent UEI (corporate roll-up)","title":"Parent Uei"},"description":"Holder parent UEI (corporate roll-up)"},{"name":"piid","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"description":"Vehicle PIID (exact)","title":"Piid"},"description":"Vehicle PIID (exact)"},{"name":"agency","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"Awarding agency name, acronym, or code","title":"Agency"},"description":"Awarding agency name, acronym, or code"},{"name":"naics","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"NAICS, exactly 6 digits","title":"Naics"},"description":"NAICS, exactly 6 digits"},{"name":"idv_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":8},{"type":"null"}],"description":"IDC, FSS, BPA, GWAC, or BOA","title":"Idv Type"},"description":"IDC, FSS, BPA, GWAC, or BOA"},{"name":"active_only","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Only vehicles whose period of performance has not ended","title":"Active Only"},"description":"Only vehicles whose period of performance has not ended"},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD (action_date). Not floored: see the window block","title":"Date From"},"description":"YYYY-MM-DD (action_date). Not floored: see the window block"},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD (action_date)","title":"Date To"},"description":"YYYY-MM-DD (action_date)"},{"name":"ceiling_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Vehicle ceiling min (potential_total_value_of_award)","title":"Ceiling Min"},"description":"Vehicle ceiling min (potential_total_value_of_award)"},{"name":"ceiling_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Vehicle ceiling max (potential_total_value_of_award)","title":"Ceiling Max"},"description":"Vehicle ceiling max (potential_total_value_of_award)"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":250,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lean | expanded | full | comma-list of columns","title":"Fields"},"description":"lean | expanded | full | comma-list of columns"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/vehicles/{piid}":{"get":{"tags":["Vehicles"],"summary":"Single contract vehicle — ceiling, period, and what has been ordered through it","description":"Latest transaction for the vehicle, plus two roll-ups.\n\nDetail shape per §1.2: singular `vehicle` key with the roll-ups as SIBLINGS,\nnot nested inside it.\n\n`orders_rollup` is the block that makes this endpoint worth calling: the\nvehicle's own transactions carry the CEILING, but the money moves on the orders\nplaced against it, which live in the contracts table. A vehicle without its\norders is a stub.","operationId":"get_vehicle_detail_api_v1_vehicles__piid__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"piid","in":"path","required":true,"schema":{"type":"string","title":"Piid"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"lean | expanded | full | comma-list of columns","title":"Fields"},"description":"lean | expanded | full | comma-list of columns"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/vehicles/{piid}/holders":{"get":{"tags":["Vehicles"],"summary":"Pro: who holds this vehicle, and who is actually earning through it","description":"The \"can I even compete for this work\" answer.\n\nReturns two distinct populations, because conflating them would mislead:\n`awardees` hold the vehicle; `earners` have actually been paid through it. A\nfirm can hold a vehicle for years and earn nothing on it.","operationId":"get_vehicle_holders_api_v1_vehicles__piid__holders_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"piid","in":"path","required":true,"schema":{"type":"string","title":"Piid"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":250,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wage-determinations/search":{"get":{"tags":["Wage Determinations"],"summary":"Search wage determinations","description":"Filter Davis-Bacon (DBA), Service Contract Act (SCA), and CBA\ndeterminations. Common patterns:\n\n- All active DBA WDs in Cook County, IL:\n  `?type=DBA&state=IL&county=Cook&active_only=true`\n- Track revisions since a date:\n  `?date_from=2026-04-01&active_only=true`\n- Look up by number:\n  `?wd_number=AK2026`\n\nReturns at most 100 records per page. Pagination via `limit` + `offset`.","operationId":"wd_search_api_v1_wage_determinations_search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"DBA | SCA | CBA","title":"Type"},"description":"DBA | SCA | CBA"},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":2},{"type":"null"}],"description":"2-letter US state code","title":"State"},"description":"2-letter US state code"},{"name":"county","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"description":"County name substring (e.g. 'Cook')","title":"County"},"description":"County name substring (e.g. 'Cook')"},{"name":"wd_number","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"description":"WD number substring (e.g. 'AK2026', '1994-2371')","title":"Wd Number"},"description":"WD number substring (e.g. 'AK2026', '1994-2371')"},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","description":"Only currently-effective WDs","default":false,"title":"Active Only"},"description":"Only currently-effective WDs"},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO YYYY-MM-DD; modified on/after this date","title":"Date From"},"description":"ISO YYYY-MM-DD; modified on/after this date"},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO YYYY-MM-DD; modified on/before this date","title":"Date To"},"description":"ISO YYYY-MM-DD; modified on/before this date"},{"name":"construction_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"DBA only: Building | Heavy | Highway | Residential","title":"Construction Type"},"description":"DBA only: Building | Heavy | Highway | Residential"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"modified_date | publish_date | wd_number | revision_number","title":"Sort By"},"description":"modified_date | publish_date | wd_number | revision_number"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"asc | desc (default desc)","title":"Sort Order"},"description":"asc | desc (default desc)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-list of response fields to return","title":"Fields"},"description":"Comma-list of response fields to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wage-determinations/by-location":{"get":{"tags":["Wage Determinations"],"summary":"WDs applicable in a state/county","description":"The compliance shortcut: 'I'm bidding a contract in this state/county,\nwhich wage determinations apply?' Returns all currently-active DBA, SCA,\nand CBA records that include the requested jurisdiction.\n\nStatewide DBAs (location with no county) are included regardless of the\n`county` filter, since they apply everywhere in the state. No date filter,\nso no window block: this endpoint answers \"what is in force here now\".","operationId":"wd_by_location_api_v1_wage_determinations_by_location_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"state","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":2,"description":"2-letter US state code","title":"State"},"description":"2-letter US state code"},{"name":"county","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"description":"County name (optional; omit for statewide)","title":"County"},"description":"County name (optional; omit for statewide)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-list of response fields to return","title":"Fields"},"description":"Comma-list of response fields to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wage-determinations/rates":{"get":{"tags":["Wage Determinations"],"summary":"Query prevailing-wage rates by occupation","description":"Query prevailing-wage rates ACROSS wage determinations, by occupation. The\nlisting endpoints answer \"which WDs apply here\"; this answers \"what does a given\ntrade actually pay\". Each row is one classification's hourly base wage plus\nfringe, tied to the WD it came from.\n\nPatterns:\n- Electrician rates in WDs covering California:\n  `?classification=Electrician&state=CA&active_only=true`\n- One SCA occupation code:\n  `?occupation_code=23210`\n- Every rate line on one WD:\n  `?wd_number=AK20260001`\n\nDBA rows carry a `rate_group` (survey/union code) and a per-classification fringe;\nSCA rows carry an `occupation_code` and the document-level Health & Welfare fringe.","operationId":"wd_rates_api_v1_wage_determinations_rates_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"classification","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"description":"Trade/occupation name substring (e.g. 'Electrician')","title":"Classification"},"description":"Trade/occupation name substring (e.g. 'Electrician')"},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"DBA | SCA (CBAs have no rate table)","title":"Type"},"description":"DBA | SCA (CBAs have no rate table)"},{"name":"occupation_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"description":"SCA 5-digit occupation code (e.g. 23210)","title":"Occupation Code"},"description":"SCA 5-digit occupation code (e.g. 23210)"},{"name":"wd_number","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"description":"Exact WD number (e.g. 'AK20260001')","title":"Wd Number"},"description":"Exact WD number (e.g. 'AK20260001')"},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":2},{"type":"null"}],"description":"2-letter US state code (via the WD's jurisdictions)","title":"State"},"description":"2-letter US state code (via the WD's jurisdictions)"},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","description":"Only rates on currently-effective WDs","default":false,"title":"Active Only"},"description":"Only rates on currently-effective WDs"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"base_rate | classification | wd_number","title":"Sort By"},"description":"base_rate | classification | wd_number"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"asc | desc (default desc)","title":"Sort Order"},"description":"asc | desc (default desc)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-list of response fields to return","title":"Fields"},"description":"Comma-list of response fields to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wage-determinations/rate-summary":{"get":{"tags":["Wage Determinations"],"summary":"Prevailing-wage floor for one occupation (distribution)","description":"The labor-cost FLOOR for one occupation, aggregated across wage determinations:\nbase hourly percentiles + the Health & Welfare fringe + how many WDs set it. The\n`/rates` listing gives the individual county rate lines; this gives their\ndistribution in one call, what a services bidder needs to price loaded labor,\nwhich on an SCA contract drives the bid far more than the award value.\n\nProvide `occupation_code` (exact, preferred) or `classification` (substring). The\nbinding rate on a given contract is the county-of-performance floor; this is the\nnational distribution. Free on every plan.","operationId":"wd_rate_summary_api_v1_wage_determinations_rate_summary_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"occupation_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"description":"SCA 5-digit occupation code, e.g. 11150 (Janitor), 27101 (Guard). The precise key.","title":"Occupation Code"},"description":"SCA 5-digit occupation code, e.g. 11150 (Janitor), 27101 (Guard). The precise key."},{"name":"classification","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"description":"Trade/occupation name substring, e.g. 'Guard'. Used when no occupation_code is given.","title":"Classification"},"description":"Trade/occupation name substring, e.g. 'Guard'. Used when no occupation_code is given."},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"SCA | DBA (default SCA). CBAs have no rate table.","default":"SCA","title":"Type"},"description":"SCA | DBA (default SCA). CBAs have no rate table."},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":2},{"type":"null"}],"description":"2-letter state code: scope to WDs covering that state (via the WD's jurisdictions).","title":"State"},"description":"2-letter state code: scope to WDs covering that state (via the WD's jurisdictions)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wage-determinations/{wd_id}":{"get":{"tags":["Wage Determinations"],"summary":"Get a single wage determination","description":"Lookup by sgs `wd_id` (the internal ID, e.g. '43309') or by the\nhuman-readable WD number (e.g. 'AK20260001'). Returns the canonical record\nwith full location array, a `rates[]` block (for DBA/SCA: each classification's\nhourly wage + fringe), and (for CBAs) the `cba` detail block: contractor name,\nunion, effective dates, services covered.\n\nFlat detail response (§1.2): the record at the top level, no pagination. The\n`rates` and `cba` enrichment blocks sit alongside the record fields (like the\nexisting `cba` block), so their presence/absence is explicit.","operationId":"wd_get_api_v1_wage_determinations__wd_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"wd_id","in":"path","required":true,"schema":{"type":"string","title":"Wd Id"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-list of response fields to return","title":"Fields"},"description":"Comma-list of response fields to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/forecasts/search":{"get":{"tags":["Forecasts"],"summary":"Search procurement forecasts","operationId":"search_forecasts_api_v1_forecasts_search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"fco | dhs | hhs","title":"Source"},"description":"fco | dhs | hhs"},{"name":"agency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Agency name (partial match)","title":"Agency"},"description":"Agency name (partial match)"},{"name":"naics","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"NAICS code (prefix match, e.g. 5415)","title":"Naics"},"description":"NAICS code (prefix match, e.g. 5415)"},{"name":"set_aside","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Set-aside program (8(a), WOSB, HUBZone, SDVOSB, SB)","title":"Set Aside"},"description":"Set-aside program (8(a), WOSB, HUBZone, SDVOSB, SB)"},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Place-of-performance state (2-letter)","title":"State"},"description":"Place-of-performance state (2-letter)"},{"name":"est_award_fy","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Estimated award fiscal year","title":"Est Award Fy"},"description":"Estimated award fiscal year"},{"name":"est_award_quarter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Estimated award quarter (1-4)","title":"Est Award Quarter"},"description":"Estimated award quarter (1-4)"},{"name":"amount_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Min estimated value (USD)","title":"Amount Min"},"description":"Min estimated value (USD)"},{"name":"amount_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Max estimated value (USD)","title":"Amount Max"},"description":"Max estimated value (USD)"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Lifecycle status (FCO only), e.g. 'Acquisition Planning'","title":"Status"},"description":"Lifecycle status (FCO only), e.g. 'Acquisition Planning'"},{"name":"is_recompete","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Only forecasts that name a current incumbent","title":"Is Recompete"},"description":"Only forecasts that name a current incumbent"},{"name":"keywords","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full-text search over title + description","title":"Keywords"},"description":"Full-text search over title + description"},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","description":"Default true: upcoming, not-yet-awarded forecasts only","default":true,"title":"Active Only"},"description":"Default true: upcoming, not-yet-awarded forecasts only"},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated response fields to return","title":"Fields"},"description":"Comma-separated response fields to return"},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"est_award_fy | est_solicitation_date | value_high | agency | last_updated_date","title":"Sort By"},"description":"est_award_fy | est_solicitation_date | value_high | agency | last_updated_date"},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"desc","title":"Sort Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/psc/search":{"get":{"tags":["Reference"],"summary":"Search Product & Service Codes","description":"Search the federal Product & Service Code (PSC) catalog by code prefix or name/description text (`keywords`). Each code carries its official name and description, whether it is a Service or a Product, its category-management hierarchy (category / subcategory / parent group), whether it is currently active, and how many prime awards we hold use it (results are ordered active-first, then most-used). Authoritative structure from the GSA PSC Manual; free on any plan. With no filters it returns the full catalog, paginated. Pass `active_only=true` to hide retired codes.","operationId":"psc_search_api_v1_psc_search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"keywords","in":"query","required":false,"schema":{"type":"string","description":"Code prefix or name/description substring (case-insensitive)","title":"Keywords"},"description":"Code prefix or name/description substring (case-insensitive)"},{"name":"category","in":"query","required":false,"schema":{"type":"string","description":"Category-management Level 1 (e.g. 'Professional Services')","title":"Category"},"description":"Category-management Level 1 (e.g. 'Professional Services')"},{"name":"psc_type","in":"query","required":false,"schema":{"type":"string","description":"'Service' or 'Product'","title":"Psc Type"},"description":"'Service' or 'Product'"},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","description":"Exclude retired codes","default":false,"title":"Active Only"},"description":"Exclude retired codes"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/psc/{code}":{"get":{"tags":["Reference"],"summary":"Get one Product & Service Code","description":"Resolve a Product & Service Code to its official name, description, category-management hierarchy, active/retired status, and prime-award usage count. Free on any plan.","operationId":"psc_detail_api_v1_psc__code__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Code found.","content":{"application/json":{"schema":{}}}},"400":{"description":"Code is not 1-4 alphanumeric characters."},"404":{"description":"Well-formed code not present in the GSA PSC catalog."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/spending/{cut}":{"get":{"tags":["spending"],"summary":"Spending Rollup","description":"One precomputed federal-spending rollup, obligation-ranked. `cut` is one of\n`by-agency`, `by-psc`, `by-set-aside`. Trailing 12 months over FPDS prime awards. Free.\n\n`by-set-aside` reports only dollars EXPLICITLY coded to each set-aside program (a floor);\nthe ~93% of federal dollars that carry no set-aside code are excluded, not shown as\n\"not set aside\" (most are orders inheriting a parent's set-aside).","operationId":"spending_rollup_api_v1_spending__cut__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"cut","in":"path","required":true,"schema":{"type":"string","title":"Cut"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/contacts/lookup":{"get":{"tags":["Contacts (Pro)"],"summary":"Look Up Contracting Officer Contact Info","description":"Resolver lookup for a contracting officer.\n\nTwo query modes:\n- **By name** (`name=X`, optional `agency=Y` and `state=ST`). Returns up to 5 substring matches.\n- **By email** (`email=foo@bar.gov`). Exact match, single record. Useful for CRM-enrichment workflows where the email is on file and the customer wants the current name / agency / phone for that address.\n\nOne of `name` or `email` is required.\n\n**This is a resolver, not a directory.** It is not possible to list or paginate contacts via this endpoint. To browse the full directory, search by NAICS or agency, view award history, or see colleague graphs and AI dossiers, use the web app at https://contacts.govconapi.com (included with Pro).\n\n**Auth:** Pro tier ($39/mo). Returns 402 on Developer-only keys.","operationId":"lookup_contact_api_v1_contacts_lookup_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2},{"type":"null"}],"description":"Name (or partial name) of the contracting officer. Required unless `email` is provided.","title":"Name"},"description":"Name (or partial name) of the contracting officer. Required unless `email` is provided."},{"name":"agency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional agency substring for disambiguation (e.g. 'Air Force', 'DLA'). Used only with `name`.","title":"Agency"},"description":"Optional agency substring for disambiguation (e.g. 'Air Force', 'DLA'). Used only with `name`."},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional 2-letter state/territory code (e.g. 'CA', 'DC'). Used only with `name`.","title":"State"},"description":"Optional 2-letter state/territory code (e.g. 'CA', 'DC'). Used only with `name`."},{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exact email address for reverse lookup. Returns one record. Mutually exclusive with `name` (if both, `email` wins).","title":"Email"},"description":"Exact email address for reverse lookup. Returns one record. Mutually exclusive with `name` (if both, `email` wins)."}],"responses":{"200":{"description":"Up to 5 contacts matching the query.","content":{"application/json":{"schema":{}}}},"402":{"description":"Caller's plan does not include contacts_access. Upgrade to Pro."},"404":{"description":"No matching contacts."},"422":{"description":"Required parameter missing or invalid."},"429":{"description":"Rate limit exceeded."},"503":{"description":"Contacts data store temporarily unavailable. Retry."}}}},"/api/v1/federal-hierarchy/":{"get":{"tags":["Federal Hierarchy"],"summary":"List Federal Organizations","description":"Search and filter the SAM Federal Hierarchy (~907 federal departments, agencies, and offices). All filters are optional. Free tier — available to any authenticated API key.","operationId":"list_orgs_api_v1_federal_hierarchy__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by type: DEPARTMENT or AGENCY (case-insensitive)","title":"Type"},"description":"Filter by type: DEPARTMENT or AGENCY (case-insensitive)"},{"name":"cgac","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by Treasury account code (e.g. 097 for DoD)","title":"Cgac"},"description":"Filter by Treasury account code (e.g. 097 for DoD)"},{"name":"parent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by parent organization_id","title":"Parent Id"},"description":"Filter by parent organization_id"},{"name":"hierarchy_level","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"Filter by depth (1 = root department)","title":"Hierarchy Level"},"description":"Filter by depth (1 = root department)"},{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter by active status (default: true)","default":true,"title":"Is Active"},"description":"Filter by active status (default: true)"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2},{"type":"null"}],"description":"Match on canonical_name, short_name, or alternative_names (case-insensitive)","title":"Search"},"description":"Match on canonical_name, short_name, or alternative_names (case-insensitive)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Results per page (default 50, max 1000)","default":50,"title":"Limit"},"description":"Results per page (default 50, max 1000)"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Pagination offset","default":0,"title":"Offset"},"description":"Pagination offset"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/federal-hierarchy/{organization_id}":{"get":{"tags":["Federal Hierarchy"],"summary":"Federal Organization Detail","description":"Lookup a single federal organization by `organization_id`. Response includes the full record plus inline `parent`, `children`, and `ancestors` for traversal in one call.","operationId":"get_org_api_v1_federal_hierarchy__organization_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/federal-hierarchy/{organization_id}/children":{"get":{"tags":["Federal Hierarchy"],"summary":"Immediate Children","description":"Return immediate child organizations of `organization_id`.","operationId":"get_children_api_v1_federal_hierarchy__organization_id__children_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/federal-hierarchy/{organization_id}/ancestors":{"get":{"tags":["Federal Hierarchy"],"summary":"Ancestor Chain","description":"Return the chain of ancestors (root → immediate parent) for `organization_id`. Empty array if the organization is a root department.","operationId":"get_ancestors_api_v1_federal_hierarchy__organization_id__ancestors_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/exclusions/search":{"get":{"tags":["Exclusions"],"summary":"Search Excluded Entities","description":"Search SAM.gov exclusions database for debarred entities. Search by name, UEI, CAGE code, agency, or location.","operationId":"api_search_exclusions_api_v1_exclusions_search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"entity_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Entity or person name (partial match)","title":"Entity Name"},"description":"Entity or person name (partial match)"},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Alias for entity_name (accepted for backwards compatibility)","title":"Name"},"description":"Alias for entity_name (accepted for backwards compatibility)"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Alias for entity_name. Same name-search param as /entities/search and /companies/search, so a screening script can reuse it across endpoints.","title":"Q"},"description":"Alias for entity_name. Same name-search param as /entities/search and /companies/search, so a screening script can reuse it across endpoints."},{"name":"uei_sam","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"UEI SAM identifier","title":"Uei Sam"},"description":"UEI SAM identifier"},{"name":"uei","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Alias for uei_sam (the canonical name on every other endpoint)","title":"Uei"},"description":"Alias for uei_sam (the canonical name on every other endpoint)"},{"name":"cage_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"CAGE code. Note: only ~0.3% of exclusion records carry one, so an empty result here means the field is absent, not that the entity is clear.","title":"Cage Code"},"description":"CAGE code. Note: only ~0.3% of exclusion records carry one, so an empty result here means the field is absent, not that the entity is clear."},{"name":"excluding_agency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Excluding agency code or name substring (e.g., 'DOD', or 'DEFENSE LOGISTICS')","title":"Excluding Agency"},"description":"Excluding agency code or name substring (e.g., 'DOD', or 'DEFENSE LOGISTICS')"},{"name":"classification_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Classification: Individual, Firm, Vessel, Special Entity Designation. Case-insensitive; an unknown value returns 400 with the valid list.","title":"Classification Type"},"description":"Classification: Individual, Firm, Vessel, Special Entity Designation. Case-insensitive; an unknown value returns 400 with the valid list."},{"name":"exclusion_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Type: Prohibition/Restriction, Ineligible (Proceedings Completed), Ineligible (Proceedings Pending), Voluntary Exclusion. Case-insensitive; an unknown value returns 400 with the valid list. SAM stores both 'Proceedings Complete' and 'Proceedings Completed'; either input matches both.","title":"Exclusion Type"},"description":"Type: Prohibition/Restriction, Ineligible (Proceedings Completed), Ineligible (Proceedings Pending), Voluntary Exclusion. Case-insensitive; an unknown value returns 400 with the valid list. SAM stores both 'Proceedings Complete' and 'Proceedings Completed'; either input matches both."},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"State/province code","title":"State"},"description":"State/province code"},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Country code. Unreliable for the sanctioned (OFAC) slice, where SAM codes many foreign entities as US or as the non-ISO bucket XUN, so a country filter can return a false-negative subset. Do not rely on it for sanctions screening.","title":"Country"},"description":"Country code. Unreliable for the sanctioned (OFAC) slice, where SAM codes many foreign entities as US or as the non-ISO bucket XUN, so a country filter can return a false-negative subset. Do not rely on it for sanctions screening."},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","description":"Only show currently active exclusions","default":true,"title":"Active Only"},"description":"Only show currently active exclusions"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Results per page","default":20,"title":"Limit"},"description":"Results per page"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Pagination offset","default":0,"title":"Offset"},"description":"Pagination offset"},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated response fields to return. `uei_sam` always included. Example: `fields=entity_name,uei_sam,excluding_agency_code,activate_date`. Omit to return all fields (default).","title":"Fields"},"description":"Comma-separated response fields to return. `uei_sam` always included. Example: `fields=entity_name,uei_sam,excluding_agency_code,activate_date`. Omit to return all fields (default)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/exclusions/{uei_sam}":{"get":{"tags":["Exclusions"],"summary":"Check UEI Against Exclusions List","description":"Vendor-risk screening lookup: pass a UEI SAM and find out whether that entity is on the current SAM exclusions list.\n\n**This is a current-state list, not a history.** It is refreshed as a full replace of what SAM publishes today, so an exclusion that has already been terminated is absent entirely rather than returned as expired. A 404 means 'not on the list now', not 'never excluded'.\n\n**Response semantics**\n- `200` — entity IS on the exclusions list. Body contains the full record.\n- `404` — UEI is **not** on the exclusions list. This is the expected answer for the vast majority of legitimate vendors and means the entity is clean.\n\n**Coverage caveat:** roughly 73% of SAM exclusions are individuals or small entities without a UEI. A 404 here means *no UEI-keyed exclusion*; to also screen against name-based debarments (e.g. principals, officers, individuals), pair this lookup with `/api/v1/exclusions/search?entity_name=...`.","operationId":"api_get_exclusion_api_v1_exclusions__uei_sam__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"uei_sam","in":"path","required":true,"schema":{"type":"string","title":"Uei Sam"}}],"responses":{"200":{"description":"Entity is on the exclusions list. Full record returned.","content":{"application/json":{"schema":{}}}},"404":{"description":"No UEI-keyed exclusion found. Entity is clean by UEI; screen names separately for full coverage."},"429":{"description":"Rate limit exceeded."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/demo/samples":{"get":{"summary":"Demo Samples","description":"Real responses from each major endpoint, one per tab, cached 6h.","operationId":"demo_samples_demo_samples_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/partners/search":{"get":{"tags":["Partners"],"summary":"Find teaming/partner firms with real past performance by NAICS + agency + state + set-aside (Pro)","description":"Factual partner-finder. Composes prime_awards past performance + entities\n(POCs, firmographics, registration). Ranked by gross obligated $ (recency\ntiebreak). No scores.","operationId":"search_partners_api_v1_partners_search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"naics","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":6},{"type":"null"}],"description":"NAICS code (exact)","title":"Naics"},"description":"NAICS code (exact)"},{"name":"agency","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"description":"Agency name/acronym, crosswalk-resolved (e.g. Army, Navy, USACE)","title":"Agency"},"description":"Agency name/acronym, crosswalk-resolved (e.g. Army, Navy, USACE)"},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":2},{"type":"null"}],"description":"Place-of-performance state (2-letter)","title":"State"},"description":"Place-of-performance state (2-letter)"},{"name":"set_aside","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"description":"sdvosb | vosb | wosb | woman_owned | hubzone | 8a | sdb | minority_owned","title":"Set Aside"},"description":"sdvosb | vosb | wosb | woman_owned | hubzone | 8a | sdb | minority_owned"},{"name":"psc","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"description":"Product/Service Code (exact)","title":"Psc"},"description":"Product/Service Code (exact)"},{"name":"keywords","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"description":"Match in the award description","title":"Keywords"},"description":"Match in the award description"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/recompetes":{"get":{"tags":["Recompetes"],"summary":"List Recompetes","operationId":"list_recompetes_api_v1_recompetes_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"naics","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"NAICS, exactly 6 digits","title":"Naics"},"description":"NAICS, exactly 6 digits"},{"name":"agency","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"Awarding agency name substring","title":"Agency"},"description":"Awarding agency name substring"},{"name":"set_aside","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Set-aside type substring","title":"Set Aside"},"description":"Set-aside type substring"},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":2},{"type":"null"}],"description":"Place-of-performance state code","title":"State"},"description":"Place-of-performance state code"},{"name":"amount_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Min current contract value (USD)","title":"Amount Min"},"description":"Min current contract value (USD)"},{"name":"amount_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Max current contract value (USD)","title":"Amount Max"},"description":"Max current contract value (USD)"},{"name":"ends_after_months","in":"query","required":false,"schema":{"type":"integer","maximum":60,"minimum":0,"description":"Window floor: exclude contracts ending sooner than N months (set ~6 to skip the too-late-to-influence band)","default":0,"title":"Ends After Months"},"description":"Window floor: exclude contracts ending sooner than N months (set ~6 to skip the too-late-to-influence band)"},{"name":"ends_within_months","in":"query","required":false,"schema":{"type":"integer","maximum":60,"minimum":1,"description":"Window ceiling: contracts ending within N months","default":18,"title":"Ends Within Months"},"description":"Window ceiling: contracts ending within N months"},{"name":"date_anchor","in":"query","required":false,"schema":{"type":"string","description":"Which date the window applies to: current_end (next decision point) | potential_end (guaranteed recompete, all options used)","default":"current_end","title":"Date Anchor"},"description":"Which date the window applies to: current_end (next decision point) | potential_end (guaranteed recompete, all options used)"},{"name":"options_exhausted_only","in":"query","required":false,"schema":{"type":"boolean","description":"If true, only contracts whose options are ~exhausted (the high-confidence 'must recompete, not renew' subset)","default":false,"title":"Options Exhausted Only"},"description":"If true, only contracts whose options are ~exhausted (the high-confidence 'must recompete, not renew' subset)"},{"name":"options_window_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":0,"description":"Options counted ~exhausted when potential_end is within N days of current_end (used only with options_exhausted_only)","default":90,"title":"Options Window Days"},"description":"Options counted ~exhausted when potential_end is within N days of current_end (used only with options_exhausted_only)"},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","description":"ends_soonest | value | mod_churn | de_obligated","default":"ends_soonest","title":"Sort By"},"description":"ends_soonest | value | mod_churn | de_obligated"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"early_signal_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"Early-signal feed lookback window, in days (how far back to pull live notices)","default":180,"title":"Early Signal Days"},"description":"Early-signal feed lookback window, in days (how far back to pull live notices)"},{"name":"early_signal_types","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated early-signal notice types (aliases): sources_sought, rfi, presolicitation, special_notice, industry_day, solicitation, rfp, combined, justification, award_notice","default":"sources_sought,presolicitation,special_notice","title":"Early Signal Types"},"description":"Comma-separated early-signal notice types (aliases): sources_sought, rfi, presolicitation, special_notice, industry_day, solicitation, rfp, combined, justification, award_notice"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/naics":{"get":{"tags":["Market Intelligence"],"summary":"Discover NAICS codes by current federal spending + small-business set-aside leverage (free)","operationId":"find_naics_codes_api_v1_naics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sector","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":2},{"type":"null"}],"description":"2-digit NAICS sector prefix.","title":"Sector"},"description":"2-digit NAICS sector prefix."},{"name":"prefix","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":6},{"type":"null"}],"description":"Any-length NAICS prefix.","title":"Prefix"},"description":"Any-length NAICS prefix."},{"name":"min_market","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"Minimum FY25+ obligated dollars.","title":"Min Market"},"description":"Minimum FY25+ obligated dollars."},{"name":"max_competitors","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Maximum distinct winning firms.","title":"Max Competitors"},"description":"Maximum distinct winning firms."},{"name":"set_aside_family","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Only codes with obligations in this set-aside family (total_small_business, 8a, sdvosb, wosb, hubzone, veteran, native).","title":"Set Aside Family"},"description":"Only codes with obligations in this set-aside family (total_small_business, 8a, sdvosb, wosb, hubzone, veteran, native)."},{"name":"keywords","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Match the NAICS description text.","title":"Keywords"},"description":"Match the NAICS description text."},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","description":"market | competitors | setaside_pct","default":"market","title":"Sort By"},"description":"market | competitors | setaside_pct"},{"name":"sort_order","in":"query","required":false,"schema":{"type":"string","description":"asc | desc","default":"desc","title":"Sort Order"},"description":"asc | desc"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/naics/leaderboard/{board}":{"get":{"tags":["Market Intelligence"],"summary":"Market Pulse leaderboard (free): ranked NAICS markets by size / competition / set-aside leverage","operationId":"get_leaderboard_api_v1_naics_leaderboard__board__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"board","in":"path","required":true,"schema":{"type":"string","title":"Board"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/naics/{code}":{"get":{"tags":["Market Intelligence"],"summary":"Federal market profile for a NAICS code (free): spending, competition, set-aside leverage, top buyers + incumbents","operationId":"get_naics_market_api_v1_naics__code__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/naics/{code}/positioning":{"get":{"tags":["Market Intelligence"],"summary":"How this market is described + its set-aside makeup + who solicits it (free): the language to put in your SAM/DSBS profile and capability statement so contracting officers find you","description":"The solicitation side of a NAICS market (last 24 months of SAM opportunities): the phrase\nvocabulary contracting officers use, the set-aside makeup (share of notices), and the top soliciting\nagencies. Pair with GET /api/v1/naics/{code} for the award side (spending, incumbents, competition).","operationId":"get_naics_positioning_api_v1_naics__code__positioning_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/naics/{code}/simplified-acquisition":{"get":{"tags":["Market Intelligence"],"summary":"Award-value breakdown for a NAICS (free): counts of micro / simplified-acquisition / above-SAT awards, and the offices making simplified-acquisition-band awards with distinct-firm and set-aside counts. Factual, never scored.","description":"The award-value bands for a NAICS over the last 12 months of FPDS prime awards (FAR Part 13 context:\nbuys at/below the $350k Simplified Acquisition Threshold use streamlined procedures, and the $15k-$350k\nband is reserved for small business under the FAR 19.502-2(a) Rule of Two). Returns the per-band award\ncounts and, for the simplified-acquisition band, the offices by award count with the number of distinct\nfirms that won and the set-aside share. Facts only; the reader interprets. Pair with /positioning (the\nlanguage) and /naics/{code} (the whole-market picture).","operationId":"get_naics_simplified_acquisition_api_v1_naics__code__simplified_acquisition_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/naics/{code}/competition":{"get":{"tags":["Market Intelligence"],"summary":"How contested is this NAICS market? (free) Four facts a would-be competitor needs: competition (offers per award + single-bidder share), geography (where the work is), trend (award volume by quarter), and accessibility (share of recent winners holding only one or two awards). Whole-market, over FPDS prime awards. Factual, never scored.","description":"How contested a NAICS market is, over FPDS prime awards (whole market, deduped to award). Four blocks\na would-be competitor needs and which live nowhere else in the API: competition (offers received +\nsingle-bidder share), geography (top place-of-performance states), trend (award volume by quarter), and\naccessibility (the share of the last year's winners holding only one or two awards in the NAICS , the\nlong tail that shows the market is not locked up by incumbents). competition/geography/accessibility read\nthe trailing 12 months; trend runs the full FY2025+ record. Facts only; the reader interprets. Distinct\nfrom /naics/{code} (size + concentration), /simplified-acquisition (the small-buy value bands), and\n/positioning (the language).","operationId":"get_naics_competition_api_v1_naics__code__competition_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/company-contact/{uei}":{"get":{"tags":["Company Contacts"],"summary":"Resolve a vendor's real decision-maker contact (Pro), SAM registration agents filtered out","operationId":"get_company_contact_api_v1_company_contact__uei__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"uei","in":"path","required":true,"schema":{"type":"string","title":"Uei"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/opportunities/search":{"get":{"tags":["Search"],"summary":"Search Contract Opportunities","description":"Search federal contract opportunities. All filters available on every plan. Developer plan adds CSV export, larger page size (1,000 vs 100), and 1,000/hour rate limit.","operationId":"api_search_opportunities_api_v1_opportunities_search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"naics","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Naics"}},{"name":"psc","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Psc"}},{"name":"psc_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Psc Type"}},{"name":"agency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agency"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"posted_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Posted After"}},{"name":"due_before","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Due Before"}},{"name":"due_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Due After"}},{"name":"keywords","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full-text search across title, agency name, and contract description. Also matches solicitation number.","title":"Keywords"},"description":"Full-text search across title, agency name, and contract description. Also matches solicitation number."},{"name":"set_aside","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Set Aside"}},{"name":"notice_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notice Type"}},{"name":"solicitation_number","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exact solicitation number (e.g., USCA25Q0053)","title":"Solicitation Number"},"description":"Exact solicitation number (e.g., USCA25Q0053)"},{"name":"value_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value Min"}},{"name":"value_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value Max"}},{"name":"location","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort By"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"desc","title":"Sort Order"}},{"name":"naics_multiple","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Naics Multiple"}},{"name":"has_attachments","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Attachments"}},{"name":"content","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full-text search INSIDE the solicitation's attached documents (PDF, Word, Excel, PowerPoint, and scanned pages via OCR), not just the title and description. Finds requirements that appear only in the documents (award method, clearance level, period of performance, incumbent, compliance bars like FedRAMP or CMMC). Supports quoted phrases, e.g. content=\"lowest price technically acceptable\". Pro plan.","title":"Content"},"description":"Full-text search INSIDE the solicitation's attached documents (PDF, Word, Excel, PowerPoint, and scanned pages via OCR), not just the title and description. Finds requirements that appear only in the documents (award method, clearance level, period of performance, incumbent, compliance bars like FedRAMP or CMMC). Supports quoted phrases, e.g. content=\"lowest price technically acceptable\". Pro plan."},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","description":"Convenience filter, computed by us from `archive_date_detailed`. When true, returns only notices whose archive date is in the future (i.e. currently open). This is NOT a SAM source field — the stored `active` column is always 'Yes' by design (we never archive). Equivalent to filtering `archive_date_detailed > CURRENT_DATE` yourself.","default":false,"title":"Active Only"},"description":"Convenience filter, computed by us from `archive_date_detailed`. When true, returns only notices whose archive date is in the future (i.e. currently open). This is NOT a SAM source field — the stored `active` column is always 'Yes' by design (we never archive). Equivalent to filtering `archive_date_detailed > CURRENT_DATE` yourself."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Results per page (1-1000, plan-capped further). Use Query so 0/negative reject at validator instead of returning empty data.","default":20,"title":"Limit"},"description":"Results per page (1-1000, plan-capped further). Use Query so 0/negative reject at validator instead of returning empty data."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Pagination offset","default":0,"title":"Offset"},"description":"Pagination offset"},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"json","title":"Format"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated list of response fields to return. Reduces payload size when you only need a few columns. Example: `fields=notice_id,title,naics,posted_date`. `notice_id` is always included. Omit to return all 59 fields per record (default).","title":"Fields"},"description":"Comma-separated list of response fields to return. Reduces payload size when you only need a few columns. Example: `fields=notice_id,title,naics,posted_date`. `notice_id` is always included. Omit to return all 59 fields per record (default)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agency-crosswalk":{"get":{"summary":"Get Agency Crosswalk","description":"Public endpoint - returns agency name standardization mappings (pre-built by weekly cron).\n\nEach row is enriched with the matched `federal_hierarchy` entry (organization_id, cgac, type)\nwhen the canonical_agency resolves to a SAM Federal Hierarchy org. ~99% match rate.\nUse organization_id to call GET /api/v1/federal-hierarchy/{id} for structured data.","operationId":"get_agency_crosswalk_api_agency_crosswalk_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/opportunities/{notice_id}":{"get":{"tags":["Search"],"summary":"Get Single Opportunity","description":"Retrieve detailed information for a specific contract opportunity","operationId":"api_get_opportunity_api_v1_opportunities__notice_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"notice_id","in":"path","required":true,"schema":{"type":"string","title":"Notice Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/opportunities/{notice_id}/attachments":{"get":{"tags":["Search"],"summary":"Get Opportunity Attachments","description":"Retrieve attachments for a specific contract opportunity. Returns direct SAM.gov download URLs plus a parallel `files` array with each file's filename, size, and type.","operationId":"api_get_attachments_api_v1_opportunities__notice_id__attachments_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"notice_id","in":"path","required":true,"schema":{"type":"string","title":"Notice Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stats":{"get":{"tags":["Public"],"summary":"Database Statistics (deprecated — use /api/v1/status)","description":"DEPRECATED: superseded by /api/v1/status, which covers all data sources with public + authenticated tiers. Kept for backward compatibility and returns the same shape as before. Please migrate.","operationId":"api_get_stats_api_v1_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"deprecated":true,"security":[{"HTTPBearer":[]}]}},"/api/v1/status":{"get":{"tags":["Public"],"summary":"Data status: per-source row counts + freshness","description":"Consolidated, always-consistent view of every data source: how much we hold and how current it is. Public response is rounded totals + freshness; send a valid API key for exact counts + density.","operationId":"api_data_status_api_v1_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/me":{"get":{"tags":["Management"],"summary":"Current User Info","description":"Get current user's plan and account information","operationId":"get_current_user_info_api_v1_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/keys":{"post":{"tags":["Management"],"summary":"Create API Key","description":"Create or regenerate API key. New users get free trial, existing users keep current plan.","operationId":"create_new_api_key_api_v1_keys_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/favicon.ico":{"get":{"summary":"Favicon Ico","description":"Serve favicon.ico (redirect to SVG)","operationId":"favicon_ico_favicon_ico_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Health","description":"Health check endpoint.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/export.csv":{"get":{"summary":"Export Csv","description":"Export opportunities as CSV. Max 1000 records. Subset of /opportunities/search filters.","operationId":"export_csv_export_csv_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"keywords","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Keywords"}},{"name":"naics","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Naics"}},{"name":"naics_multiple","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Naics Multiple"}},{"name":"agency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agency"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"set_aside","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Set Aside"}},{"name":"notice_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notice Type"}},{"name":"solicitation_number","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Solicitation Number"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/checkout":{"post":{"summary":"Create Checkout Session","description":"Create Stripe checkout session for Developer plan subscription","operationId":"create_checkout_session_api_v1_checkout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/sitemap.xml":{"get":{"summary":"Sitemap","description":"Generate XML sitemap for search engines including daily snapshots","operationId":"sitemap_sitemap_xml_get","responses":{"200":{"description":"Successful Response"}}}},"/robots.txt":{"get":{"summary":"Robots","description":"Generate robots.txt for search engine crawlers","operationId":"robots_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"BulkRequest":{"properties":{"ueis":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Ueis","description":"1-100 UEIs to screen in one request"}},"type":"object","required":["ueis"],"title":"BulkRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}},"tags":[{"name":"Search","description":"Search and filter federal contract opportunities"},{"name":"Contracts","description":"FPDS prime contract transactions (every base award and modification for types A/B/C/D). Coverage: FY2025+. Subaward enrichment on the detail endpoint joins through the prime contract layer at ~88% density."},{"name":"Awards","description":"SAM Award Notice search and detail (the SAM-noticed slice of contract awards)."},{"name":"Subawards","description":"FFATA Section 2 subaward records (Pro). Map any prime contractor's supply chain or any sub-vendor's federal revenue."},{"name":"Management","description":"API key and user account management"},{"name":"Public","description":"Public endpoints requiring no authentication"}]}