{"openapi":"3.1.0","info":{"title":"Praxy Jobs API (v1)","version":"1.0.0","x-response-schema-version":"1.0","description":"Source-verified jobs API from 50,000+ company career sites, fetched directly\nfrom native ATS endpoints. Every job carries the source platform, tenant slug, and\nnative endpoint URL so you can verify it at the source.\n\n**Surfaces**\n- `/v1/jobs/preview`, `/v1/stats`, and `/v1/data-quality/current` — public proof and preview surfaces\n- `/v1/jobs/*`, `/v1/companies/*`, and `/v1/feed/*` — paid keyed data API (never-duplicate incremental feed semantics)\n- `/mcp` — open MCP server (streamable HTTP): tools `search_jobs`, `get_job`, `jobs_at_company`, `newest_jobs`, `job_market_stats`\n\n**Conventions**\n- Field naming: bare name = source-of-truth from the ATS; `*_derived` = normalized by us; `ai_*` = LLM-extracted (probabilistic); `org_*` = organization context.\n- All ranges: `_gte` inclusive lower, `_lt` exclusive upper.\n- All timestamps UTC ISO-8601.\n- Errors: RFC 9457 `application/problem+json`.\n- Pagination: opaque `cursor` that PRESERVES the requested sort order (no ordering surprises).\n- Decorated rate-limited operations carry rate headers; quota headers appear only on applicable feed surfaces.\n- Every response carries `X-Praxy-Schema-Version: 1.0`; incompatible schemas use a new URL version or explicit negotiation, never an in-place `/v1` change.\n"},"servers":[{"url":"https://jobs.praxy.me"}],"tags":[{"name":"Jobs"},{"name":"Companies"},{"name":"Feed","description":"Bulk ingestion. `active` → new listings by time window (never-duplicate when polled at window cadence), `expired` → closures with timestamps and reasons, `modified` → field-level changes."},{"name":"Destinations","description":"Scale-plan, account-owned outbound delivery configuration and redacted run reports."},{"name":"Datasets","description":"Scale-plan catalog of verified dated Parquet snapshots with short-lived signed downloads."},{"name":"Billing"},{"name":"Account"},{"name":"Sitemaps"},{"name":"Stats"},{"name":"Analytics","description":"Evidence-backed market signals from first-seen postings and exact closure-run provenance. Duration metrics are posting-lifecycle proxies, never confirmed hires."},{"name":"Keys"}],"security":[{"apiKey":[]},{}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Active user key issued via POST /v1/keys, or a separately provisioned service key. Invalid keys used for keyed responses return RFC-9457 401 problem responses."}},"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed in the current window for your tier."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix seconds until the window resets."},"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds to wait before retrying a rate-limited request."},"X-Quota-Jobs-Remaining":{"schema":{"type":"integer"},"description":"Job rows remaining in your billing period (feed endpoints only; candidate endpoints are unmetered)."},"X-Quota-Renews-At":{"schema":{"type":"string","format":"date-time"},"description":"When the current period's quotas renew (UTC)."},"X-Praxy-Schema-Version":{"schema":{"type":"string","const":"1.0"},"description":"Stable response-schema version for `/v1`."},"X-Result-Cap":{"schema":{"type":"string","enum":["none"]},"description":"Present for approved service accounts whose cursor walk has no total-result cap."}},"parameters":{"limit":{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":1000,"default":100}},"cursor":{"name":"cursor","in":"query","description":"Opaque continuation token from the previous response's `next_cursor`; callers\nmust not construct or modify it.\nPreserves the requested sort order — unlike other job APIs, using a cursor\nnever changes how results are ordered.\nSearch and active-feed continuations fail with `409` when the backing\nPostgreSQL snapshot has advanced; restart from the first page rather than\naccepting a silently drifting result set.\nNew search, company-browse, and active-feed tokens are position-based.\nCompany browsing therefore does not repeat or skip an existing row merely\nbecause another row was inserted ahead of the cursor. Search and active-feed\ntokens additionally bind the PostgreSQL snapshot, so they return the same\ncount boundary or fail closed; they never continue across concurrent writes.\nActive-feed tokens also retain their initial rolling time boundary and require\nthe same `time_frame` on continuation. Legacy v1 offset tokens remain accepted\nfor compatibility, but do not provide the concurrent-insert guarantee.\n","schema":{"type":"string"}},"time_frame":{"name":"time_frame","in":"query","description":"Time window over `first_seen`. Poll at window cadence for never-duplicate\ningestion (`1h` hourly, `24h` daily). `31d` for backfills.\n","schema":{"type":"string","enum":["1h","6h","24h","7d","31d"],"default":"24h"}},"actor_run_id":{"name":"X-Apify-Actor-Run-Id","in":"header","description":"Non-secret Apify Actor run ID used for unique-run attribution.","schema":{"type":"string","minLength":1,"maxLength":256}}},"schemas":{"Problem":{"type":"object","description":"RFC 9457 problem+json.","required":["type","title","status"],"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"instance":{"type":"string"}}},"FamilyFilter":{"type":"string","description":"Canonical Praxy career-taxonomy code; display labels are invalid.","enum":["administration","business_operations","data_ai_analytics","design_research","engineering","finance_risk","general_professional","go_to_market","legal_policy","people_talent","product_strategy","unknown"]},"CountryFilter":{"type":"string","description":"Uppercase ISO 3166-1 alpha-2 code; XK is accepted for corpus Kosovo records.","enum":["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW"]},"SourceFilter":{"type":"string","description":"Canonical native ATS platform slug.","enum":["acquiretm","adp","ashby","avature","bamboohr","breezy","bullhorn","comeet","cornerstone","darwinbox","dayforce","deel","dover","eightfold","engageats","eploy","freshteam","gem","gohire","greenhouse","hibob","hirebridge","icims","jazzhr","jobvite","join","jsonld_careers","keka","kula","lever","manatal","oraclecloud","paycom","paycor","paylocity","peoplehr","personio","phenom","pinpoint","pyjamahr","recruitcrm","recruitee","rippling","smartrecruiters","successfactors","taleo","teamtailor","trakstar","ukg_ultipro","workable","workday","zohorecruit","zwayam"]},"EmploymentTypeFilter":{"type":"string","enum":["FULL_TIME","PART_TIME","CONTRACTOR","TEMPORARY","INTERN","VOLUNTEER","PER_DIEM","OTHER"]},"AiWorkArrangementFilter":{"type":"string","description":"Deterministically normalized work arrangement.","enum":["remote","hybrid","on_site","unknown"]},"ExperienceLevelFilter":{"type":"string","description":"Normalized experience level; `unknown` selects rows without a derived level.","enum":["entry","mid","senior","executive","unknown"]},"SalaryPeriodFilter":{"type":"string","description":"Normalized salary period.","enum":["HOUR","DAY","WEEK","MONTH","YEAR"]},"SourceRef":{"type":"object","description":"Verifiability block — present on EVERY job. Call the source yourself.","required":["source","source_slug","source_endpoint","directory_verified_at"],"properties":{"source":{"type":"string","description":"ATS platform, e.g. `greenhouse`, `workday`, `keka`."},"source_slug":{"type":"string","description":"Employer tenant identifier on the source ATS."},"source_endpoint":{"type":"string","format":"uri","description":"The native public endpoint we fetched this job from."},"directory_verified_at":{"type":"string","format":"date-time","description":"When our directory last validated this board live."}}},"StructuredLocation":{"type":"object","additionalProperties":false,"required":["city","country","country_code","lat","lng"],"properties":{"city":{"type":["string","null"],"description":"Canonical GeoNames city spelling where resolved."},"country":{"type":["string","null"],"description":"Canonical country identifier; currently the ISO alpha-2 code."},"country_code":{"type":["string","null"],"pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 code."},"lat":{"type":["number","null"],"minimum":-90,"maximum":90},"lng":{"type":["number","null"],"minimum":-180,"maximum":180}}},"EnrichmentProvenanceEntry":{"type":"object","additionalProperties":false,"required":["value","source","confidence","as_of"],"properties":{"value":{},"source":{"type":"string","description":"Deterministic parser, offline reference, or explicitly labeled synthesized source."},"confidence":{"type":"number","minimum":0,"maximum":1},"as_of":{"type":"string","format":"date-time"},"model":{"type":"string","description":"Model identifier for synthesized fields only."},"prompt_schema_version":{"type":"string","description":"Versioned prompt and output-schema contract."},"generated_at":{"type":"string","format":"date-time"}}},"Job":{"type":"object","required":["job_key","title","organization","url","status","first_seen","last_seen","source","source_slug","has_salary"],"properties":{"job_key":{"type":"string","description":"Stable key: sha1(platform:tenant:external_id)."},"external_id":{"type":"string"},"title":{"type":"string"},"title_clean":{"type":"string","description":"Derived: req-IDs and location suffixes stripped."},"organization":{"type":"string"},"company_key":{"type":"string","description":"Join key into /v1/companies."},"url":{"type":"string","format":"uri","description":"Canonical apply URL on the source ATS. Never an aggregator redirect."},"status":{"type":"string","enum":["open","closed"]},"closed_at":{"type":"string","format":"date-time","description":"Set within hours of the job leaving the source board."},"close_reason":{"type":"string","enum":["removed_from_board","board_dead","expired_by_source"]},"first_seen":{"type":"string","format":"date-time"},"last_seen":{"type":"string","format":"date-time"},"date_posted":{"type":"string","format":"date-time","description":"Source-of-truth posting date where the ATS provides it (~61% of jobs)."},"locations":{"type":"array","items":{"type":"object","additionalProperties":true},"description":"Source-of-truth location objects as provided by the ATS."},"locations_derived":{"type":"array","items":{"$ref":"#/components/schemas/StructuredLocation"},"description":"Deterministically normalized locations. Unresolved fields remain null; coordinates are never fabricated."},"cities_derived":{"type":"array","items":{"type":"string"}},"regions_derived":{"type":"array","items":{"type":"string"}},"countries_derived":{"type":"array","items":{"type":"string","description":"ISO 3166-1 alpha-2"}},"remote_derived":{"type":"boolean"},"visa_sponsorship_derived":{"type":["boolean","null"],"description":"Explicit deterministic evidence only; null means unknown."},"security_clearance_derived":{"type":["boolean","null"],"description":"Explicit deterministic evidence only; null means unknown."},"summary_derived":{"type":["string","null"],"description":"Fail-closed synthesized summary; never replaces source description text."},"responsibilities_derived":{"type":["array","null"],"items":{"type":"string"}},"qualifications_must_have_derived":{"type":["array","null"],"items":{"type":"string"}},"qualifications_preferred_derived":{"type":["array","null"],"items":{"type":"string"}},"education_derived":{"type":["array","null"],"items":{"type":"string"}},"certifications_derived":{"type":["array","null"],"items":{"type":"string"}},"enrichment_provenance":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/EnrichmentProvenanceEntry"}},"employment_type":{"type":"array","items":{"type":"string","enum":["FULL_TIME","PART_TIME","CONTRACTOR","TEMPORARY","INTERN","VOLUNTEER","PER_DIEM","OTHER"]}},"department":{"type":"string"},"salary":{"type":"string","description":"Source-of-truth salary text where provided."},"salary_min_derived":{"type":"number"},"salary_max_derived":{"type":"number"},"salary_currency_derived":{"type":"string"},"salary_period_derived":{"type":"string","enum":["HOUR","DAY","WEEK","MONTH","YEAR"]},"has_salary":{"type":"boolean"},"salary_derived":{"type":"object","required":["currency"],"properties":{"min":{"type":"number","exclusiveMinimum":0},"max":{"type":"number","exclusiveMinimum":0},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"period":{"type":"string","enum":["HOUR","DAY","WEEK","MONTH","YEAR"]}}},"taxonomy":{"type":"object","properties":{"family":{"type":"string"},"subfamily":{"type":"string"},"skill_clusters":{"type":"array","items":{"type":"string"}}},"description":"Deterministic Praxy career taxonomy (not LLM-guessed)."},"language_derived":{"type":"string","description":"ISO 639-1"},"description_snippet":{"type":"string","description":"First ~400 chars. Always present when the source provides a description."},"description_text":{"type":"string","description":"Full text. Keyed callers only."},"duplicate_group_id":{"type":"string","description":"Jobs sharing this ID are near-duplicates (same role cross-posted or\nlocation-split). Use `exclude_duplicates=true` to get one per group.\n"},"source":{"type":"string"},"source_slug":{"type":"string"},"source_endpoint":{"type":"string","format":"uri"},"directory_verified_at":{"type":"string","format":"date-time"}}},"JobPage":{"type":"object","required":["results","total_estimate"],"properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/Job"}},"next_cursor":{"type":"string","description":"Absent on the last page."},"total_estimate":{"type":"integer","minimum":0,"description":"Exact count of all matching jobs after filters and before pagination, in the same repeatable-read snapshot as this page."}}},"SourceCoverage":{"type":"object","additionalProperties":false,"required":["open_jobs","description_fill_rate","date_posted_fill_rate","salary_fill_rate"],"properties":{"open_jobs":{"type":"integer","minimum":0},"description_fill_rate":{"type":"number","minimum":0,"maximum":1},"date_posted_fill_rate":{"type":"number","minimum":0,"maximum":1},"salary_fill_rate":{"type":"number","minimum":0,"maximum":1},"last_sweep_at":{"type":"string","format":"date-time"}}},"StatsResponse":{"type":"object","required":["jobs_total","open_jobs","companies","sources","countries","families","source_coverage","enrichment_coverage","freshness"],"properties":{"jobs_total":{"type":"integer","minimum":0},"open_jobs":{"type":"integer","minimum":0},"companies":{"type":"integer","minimum":0},"sources":{"type":"object","additionalProperties":{"type":"integer","minimum":0}},"countries":{"type":"object","additionalProperties":{"type":"integer","minimum":0}},"families":{"type":"object","additionalProperties":{"type":"integer","minimum":0}},"source_coverage":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/SourceCoverage"}},"enrichment_coverage":{"type":"object","additionalProperties":{"type":"number","minimum":0,"maximum":1}},"freshness":{"type":"object","additionalProperties":true},"generated_at":{"type":"string","format":"date-time"},"company_ats_goal_a":{"type":"object","additionalProperties":true}}},"AnalyticsPeriod":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time","description":"Exclusive upper bound."}}},"AnalyticsWindow":{"type":"object","additionalProperties":false,"required":["start","end","days"],"properties":{"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time","description":"Exclusive upper bound."},"days":{"type":"integer","minimum":1,"maximum":365}}},"PostingVelocitySeries":{"type":"object","additionalProperties":false,"required":["period_start","postings_opened"],"properties":{"period_start":{"type":"string","format":"date-time"},"postings_opened":{"type":"integer","minimum":0}}},"PostingVelocityEvidence":{"type":"object","additionalProperties":false,"required":["metric","source","is_estimate","archive_included","history_floor","history_model"],"properties":{"metric":{"type":"string","const":"first_seen"},"source":{"type":"string"},"is_estimate":{"type":"boolean","const":false},"archive_included":{"type":"boolean","const":true},"history_floor":{"type":["string","null"],"format":"date-time"},"history_model":{"type":"string"}}},"CompanyPostingVelocityResponse":{"type":"object","additionalProperties":false,"required":["schema_version","company_key","company_name","generated_at","window","previous_window","postings_opened","previous_postings_opened","absolute_change","percent_change","percent_change_status","postings_per_day","series","evidence"],"properties":{"schema_version":{"type":"integer","const":1},"company_key":{"type":"string"},"company_name":{"type":"string"},"generated_at":{"type":"string","format":"date-time"},"window":{"$ref":"#/components/schemas/AnalyticsWindow"},"previous_window":{"$ref":"#/components/schemas/AnalyticsWindow"},"postings_opened":{"type":"integer","minimum":0},"previous_postings_opened":{"type":"integer","minimum":0},"absolute_change":{"type":"integer"},"percent_change":{"type":["number","null"]},"percent_change_status":{"type":"string","enum":["measured","no_previous_baseline"]},"postings_per_day":{"type":"number","minimum":0},"series":{"type":"array","items":{"$ref":"#/components/schemas/PostingVelocitySeries"}},"evidence":{"$ref":"#/components/schemas/PostingVelocityEvidence"}}},"AnalyticsMethodology":{"type":"object","additionalProperties":false,"required":["duration","closure_reasons","closure_audit_required","closure_episode_history_required","actual_hire_confirmed","interpretation"],"properties":{"duration":{"type":"string","const":"closed_at - first_seen"},"closure_reasons":{"type":"array","minItems":2,"maxItems":2,"uniqueItems":true,"items":{"type":"string","enum":["removed_from_board","expired_by_source"]}},"closure_audit_required":{"type":"boolean","const":true},"closure_episode_history_required":{"type":"boolean","const":true},"actual_hire_confirmed":{"type":"boolean","const":false},"interpretation":{"type":"string"}}},"TimeToFillDistribution":{"type":"object","additionalProperties":false,"required":["p25","p50","p75","p90"],"properties":{"p25":{"type":"number","minimum":0},"p50":{"type":"number","minimum":0},"p75":{"type":"number","minimum":0},"p90":{"type":"number","minimum":0}}},"TimeToFillEvidence":{"type":"object","additionalProperties":false,"required":["source","closure_history_floor","latest_closure_at","archive_included","closure_coverage_status","legacy_unresolved_closures"],"properties":{"source":{"type":"string"},"closure_history_floor":{"type":["string","null"],"format":"date-time"},"latest_closure_at":{"type":["string","null"],"format":"date-time"},"archive_included":{"type":"boolean","const":true},"closure_coverage_status":{"type":"string","enum":["complete","partial_legacy_evidence"]},"legacy_unresolved_closures":{"type":"integer","minimum":0}}},"TimeToFillAnalyticsResponse":{"type":"object","additionalProperties":false,"required":["schema_version","status","metric","generated_at","period","filters","sample_size","minimum_sample_size","invalid_duration_count","legacy_unresolved_closures","time_to_fill_estimate_days","distribution_days","evidence","methodology"],"properties":{"schema_version":{"type":"integer","const":1},"status":{"type":"string","enum":["measured","insufficient_data"]},"metric":{"type":"string","const":"time_to_fill_proxy"},"generated_at":{"type":"string","format":"date-time"},"period":{"$ref":"#/components/schemas/AnalyticsPeriod"},"filters":{"type":"object","additionalProperties":{"type":"string"}},"sample_size":{"type":"integer","minimum":0},"minimum_sample_size":{"type":"integer","minimum":1},"invalid_duration_count":{"type":"integer","minimum":0},"legacy_unresolved_closures":{"type":"integer","minimum":0},"time_to_fill_estimate_days":{"type":["number","null"],"minimum":0},"distribution_days":{"oneOf":[{"$ref":"#/components/schemas/TimeToFillDistribution"},{"type":"null"}]},"evidence":{"$ref":"#/components/schemas/TimeToFillEvidence"},"methodology":{"$ref":"#/components/schemas/AnalyticsMethodology"}}},"StateOfHiringSummary":{"type":"object","additionalProperties":false,"required":["postings_opened","evidence_backed_closures","time_to_fill_sample_size","time_to_fill_estimate_days","legacy_unresolved_closures"],"properties":{"postings_opened":{"type":"integer","minimum":0},"evidence_backed_closures":{"type":"integer","minimum":0},"time_to_fill_sample_size":{"type":"integer","minimum":0},"time_to_fill_estimate_days":{"type":["number","null"],"minimum":0},"legacy_unresolved_closures":{"type":"integer","minimum":0}}},"StateOfHiringDimensionRow":{"type":"object","additionalProperties":false,"required":["value","postings_opened","evidence_backed_closures","time_to_fill_sample_size","time_to_fill_estimate_days","time_to_fill_status"],"properties":{"value":{"type":"string","minLength":1},"postings_opened":{"type":"integer","minimum":0},"evidence_backed_closures":{"type":"integer","minimum":0},"time_to_fill_sample_size":{"type":"integer","minimum":0},"time_to_fill_estimate_days":{"type":["number","null"],"minimum":0},"time_to_fill_status":{"type":"string","enum":["measured","insufficient_data"]}}},"StateOfHiringDimensions":{"type":"object","additionalProperties":false,"required":["ats","country","family"],"properties":{"ats":{"type":"array","items":{"$ref":"#/components/schemas/StateOfHiringDimensionRow"}},"country":{"type":"array","items":{"$ref":"#/components/schemas/StateOfHiringDimensionRow"}},"family":{"type":"array","items":{"$ref":"#/components/schemas/StateOfHiringDimensionRow"}}}},"StateOfHiringCoverage":{"type":"object","additionalProperties":false,"required":["minimum_time_to_fill_sample_size","closure_history_floor","latest_closure_at","archived_expired_included","scope","closure_coverage_status","legacy_unresolved_closures","history_model"],"properties":{"minimum_time_to_fill_sample_size":{"type":"integer","minimum":1},"closure_history_floor":{"type":["string","null"],"format":"date-time"},"latest_closure_at":{"type":["string","null"],"format":"date-time"},"archived_expired_included":{"type":"boolean","const":true},"scope":{"type":"string"},"closure_coverage_status":{"type":"string","enum":["complete","partial_legacy_evidence"]},"legacy_unresolved_closures":{"type":"integer","minimum":0},"history_model":{"type":"string"}}},"StateOfHiringResponse":{"type":"object","additionalProperties":false,"required":["schema_version","status","quarter","period_status","period","quarter_bounds","generated_at","summary","dimensions","coverage","methodology"],"properties":{"schema_version":{"type":"integer","const":1},"status":{"type":"string","enum":["measured","insufficient_closure_data"]},"quarter":{"type":"string","pattern":"^[0-9]{4}-Q[1-4]$"},"period_status":{"type":"string","enum":["partial","complete"]},"period":{"$ref":"#/components/schemas/AnalyticsPeriod"},"quarter_bounds":{"$ref":"#/components/schemas/AnalyticsPeriod"},"generated_at":{"type":"string","format":"date-time"},"summary":{"$ref":"#/components/schemas/StateOfHiringSummary"},"dimensions":{"$ref":"#/components/schemas/StateOfHiringDimensions"},"coverage":{"$ref":"#/components/schemas/StateOfHiringCoverage"},"methodology":{"$ref":"#/components/schemas/AnalyticsMethodology"}}},"DataQualityArtifact":{"type":"object","required":["updated_at"],"properties":{"updated_at":{"type":"string","format":"date-time"}},"additionalProperties":true},"FacetBucket":{"type":"object","additionalProperties":false,"required":["value","count"],"properties":{"value":{"type":"string"},"count":{"type":"integer","minimum":0}}},"SearchFacets":{"type":"object","additionalProperties":false,"properties":{"source":{"type":"array","items":{"$ref":"#/components/schemas/FacetBucket"}},"work_arrangement":{"type":"array","items":{"$ref":"#/components/schemas/FacetBucket"}},"experience_level":{"type":"array","items":{"$ref":"#/components/schemas/FacetBucket"}},"employment_type":{"type":"array","items":{"$ref":"#/components/schemas/FacetBucket"}},"country":{"type":"array","items":{"$ref":"#/components/schemas/FacetBucket"}}}},"JobSearchPage":{"type":"object","required":["results","total_estimate"],"properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/Job"}},"next_cursor":{"type":"string","description":"Absent on the last page."},"total_estimate":{"type":"integer","minimum":0},"facets":{"$ref":"#/components/schemas/SearchFacets"}}},"JobSearchRequest":{"type":"object","additionalProperties":false,"properties":{"query":{"type":"string","maxLength":500,"description":"Bounded boolean expression supporting AND, OR, NOT, parentheses, quoted phrases, and suffix `*` prefix matching."},"semantic_query":{"type":"string","minLength":1,"maxLength":500,"description":"Growth/Scale-only query-time embedding search over open jobs, hybrid-ranked by vector relevance and recency. Cannot be combined with facets or cursor pagination; limit is capped at 100."},"q":{"type":"string","maxLength":500,"description":"Indexed English full-text search over title, company, and full description."},"title":{"type":"string","maxLength":500,"description":"Existing symbolic title grammar; `!` binds first, then `&`, then `|`."},"family":{"type":"array","maxItems":10,"uniqueItems":true,"items":{"$ref":"#/components/schemas/FamilyFilter"}},"skill_cluster":{"type":"array","maxItems":10,"uniqueItems":true,"items":{"type":"string","maxLength":500}},"country":{"type":"array","maxItems":10,"uniqueItems":true,"items":{"$ref":"#/components/schemas/CountryFilter"}},"city":{"type":"string","maxLength":500},"source":{"type":"array","maxItems":10,"uniqueItems":true,"items":{"$ref":"#/components/schemas/SourceFilter"}},"experience_level":{"type":"array","maxItems":5,"uniqueItems":true,"items":{"$ref":"#/components/schemas/ExperienceLevelFilter"}},"posted_since":{"type":"string","format":"date-time","description":"Inclusive lower bound on the source posting timestamp."},"posted_before":{"type":"string","format":"date-time","description":"Exclusive upper bound on the source posting timestamp."},"has_salary":{"type":"boolean"},"visa_sponsorship":{"type":"boolean"},"security_clearance":{"type":"boolean"},"salary_min_gte":{"type":"number","minimum":0,"description":"Require the stored salary minimum to be at least this value; no currency conversion is applied."},"salary_max_lte":{"type":"number","minimum":0,"description":"Require the stored salary maximum to be at most this value; no currency conversion is applied."},"salary_currency":{"type":"string","maxLength":3,"pattern":"^[A-Z]{3}$","description":"Three-letter uppercase salary currency code."},"salary_period":{"$ref":"#/components/schemas/SalaryPeriodFilter"},"employment_type":{"type":"array","maxItems":10,"uniqueItems":true,"items":{"$ref":"#/components/schemas/EmploymentTypeFilter"}},"ai_work_arrangement":{"$ref":"#/components/schemas/AiWorkArrangementFilter"},"language":{"type":"string","maxLength":500},"company":{"type":"string","maxLength":500},"company_domain":{"type":"string","maxLength":253,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)+\\.?$","description":"Canonical employer hostname; shared ATS, aggregator, IP, and localhost domains are rejected."},"remote":{"type":"string","enum":["only","exclude"]},"status":{"type":"string","enum":["open","closed","all"],"default":"open","description":"semantic_query requires open."},"exclude_duplicates":{"type":"boolean","default":false},"include_description":{"type":"boolean","default":false},"facets":{"type":"array","maxItems":5,"uniqueItems":true,"description":"Not supported when semantic_query is present.","items":{"type":"string","enum":["source","work_arrangement","experience_level","employment_type","country"]}},"limit":{"type":"integer","minimum":1,"maximum":1000,"default":100,"description":"Maximum 100 when semantic_query is present; otherwise 1000."},"cursor":{"type":"string","maxLength":2048,"description":"Opaque POST cursor bound to the original filters, boolean query, and requested facets. Not supported when semantic_query is present."}}},"Company":{"type":"object","required":["company_key","name","platforms"],"properties":{"company_key":{"type":"string"},"name":{"type":"string"},"domain":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)+$","description":"Canonical employer-controlled domain; shared ATS hosts and opaque slugs are never returned."},"logo_url":{"type":"string","format":"uri","description":"Deterministic favicon URL derived only from the canonical employer domain."},"identity_provenance":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/EnrichmentProvenanceEntry"}},"country":{"type":"string"},"platforms":{"type":"array","items":{"$ref":"#/components/schemas/SourceRef"},"description":"All validated boards for this company — slugs and endpoints included, free."},"open_jobs":{"type":"integer"},"hiring_velocity":{"type":"object","properties":{"opened_last_30d":{"type":"integer"},"closed_last_30d":{"type":"integer"},"median_days_to_close":{"type":"number"}},"description":"Derived from sweep history. Unique to this API."},"h1b_sponsor_evidence":{"$ref":"#/components/schemas/CompanyH1BSponsorEvidence","description":"Historical positive evidence from the latest eligible completed audit run. Omitted when no unambiguous positive evidence is available; omission does not mean the company will not sponsor."},"company_profile":{"$ref":"#/components/schemas/CompanyProfile","description":"Present on GET /v1/companies/{company_key}; Tier A fields are deterministic corpus-derived data with per-field provenance."}}},"CompanyH1BSponsorEvidence":{"type":"object","required":["has_approved_petition_evidence","initial_approvals","continuing_approvals","total_approvals","fiscal_years","source","matched_employer","match_kind","run_id","as_of","caveat"],"properties":{"has_approved_petition_evidence":{"type":"boolean","const":true,"description":"Always true when this positive-evidence object is present; the entire object is omitted otherwise."},"initial_approvals":{"type":"integer","minimum":0,"description":"Approved initial-employment petitions in the matched USCIS records."},"continuing_approvals":{"type":"integer","minimum":0,"description":"Approved continuing-employment petitions in the matched USCIS records."},"total_approvals":{"type":"integer","minimum":1,"description":"Sum of initial_approvals and continuing_approvals; petitions are not unique workers or open roles."},"fiscal_years":{"type":"array","items":{"type":"string","pattern":"^[0-9]{4}$"},"description":"USCIS fiscal years represented by the approval counts."},"source":{"type":"string","const":"uscis_h1b_employer_data_hub"},"matched_employer":{"type":"string","minLength":1,"description":"Employer name in the matched USCIS record."},"match_kind":{"type":"string","enum":["domain","name"],"description":"Unambiguous company-to-employer match method; ambiguous name matches are never served."},"run_id":{"type":"string","minLength":1,"description":"Audit run that produced the eligible match."},"as_of":{"type":"string","format":"date-time","description":"Completion timestamp of the audit run that made this record eligible for serving; fiscal_years identifies the USCIS evidence period."},"caveat":{"type":"string","description":"Historical approval counts are not a promise of current or future sponsorship for any role or applicant."}}},"CompanyProfileField":{"type":"object","required":["value","source","source_fields","confidence","as_of"],"properties":{"value":{},"source":{"type":"string","example":"jobs_supply.jobs"},"source_fields":{"type":"array","items":{"type":"string"}},"confidence":{"type":"string","enum":["derived","estimate"]},"as_of":{"type":"string","format":"date-time"}}},"OfficeLocation":{"type":"object","required":["city","country","lat","lng","open_jobs_here","geo_confidence"],"properties":{"city":{"type":"string"},"country":{"type":["string","null"]},"lat":{"type":["number","null"],"format":"double"},"lng":{"type":["number","null"],"format":"double"},"open_jobs_here":{"type":"integer","minimum":1},"geo_confidence":{"type":"string","enum":["matched_geonames","unresolved"]}}},"DepartmentRollup":{"type":"object","required":["family","subfamily","open_jobs"],"properties":{"family":{"type":"string"},"subfamily":{"type":["string","null"]},"open_jobs":{"type":"integer","minimum":1}}},"WorkModeDistribution":{"type":"object","required":["remote","hybrid","on_site","unknown"],"properties":{"remote":{"type":"integer","minimum":0},"hybrid":{"type":"integer","minimum":0},"on_site":{"type":"integer","minimum":0},"unknown":{"type":"integer","minimum":0}}},"OpenPositionSummary":{"type":"object","required":["job_key","title","apply_url","location","work_mode"],"properties":{"job_key":{"type":"string"},"title":{"type":"string"},"apply_url":{"type":"string","format":"uri"},"location":{"type":["string","null"]},"work_mode":{"type":"string","enum":["remote","hybrid","on_site","unknown"]}}},"OpenPositionRollup":{"type":"object","required":["count","items"],"properties":{"count":{"type":"integer","minimum":0},"items":{"type":"array","items":{"$ref":"#/components/schemas/OpenPositionSummary"}}}},"HqGuess":{"type":"object","required":["city","country","lat","lng","label"],"properties":{"city":{"type":["string","null"]},"country":{"type":["string","null"]},"lat":{"type":["number","null"],"format":"double"},"lng":{"type":["number","null"],"format":"double"},"label":{"type":"string"}}},"TeamSizeProxy":{"type":"object","required":["band","open_jobs","label"],"properties":{"band":{"type":"string"},"open_jobs":{"type":"integer","minimum":0},"label":{"type":"string"}}},"OfficeNetworkProfileField":{"allOf":[{"$ref":"#/components/schemas/CompanyProfileField"},{"type":"object","properties":{"value":{"type":"array","items":{"$ref":"#/components/schemas/OfficeLocation"}}}}]},"DepartmentsProfileField":{"allOf":[{"$ref":"#/components/schemas/CompanyProfileField"},{"type":"object","properties":{"value":{"type":"array","items":{"$ref":"#/components/schemas/DepartmentRollup"}}}}]},"WorkModeProfileField":{"allOf":[{"$ref":"#/components/schemas/CompanyProfileField"},{"type":"object","properties":{"value":{"$ref":"#/components/schemas/WorkModeDistribution"}}}]},"OpenPositionsProfileField":{"allOf":[{"$ref":"#/components/schemas/CompanyProfileField"},{"type":"object","properties":{"value":{"$ref":"#/components/schemas/OpenPositionRollup"}}}]},"HqGuessProfileField":{"allOf":[{"$ref":"#/components/schemas/CompanyProfileField"},{"type":"object","properties":{"value":{"$ref":"#/components/schemas/HqGuess"}}}]},"TeamSizeProxyProfileField":{"allOf":[{"$ref":"#/components/schemas/CompanyProfileField"},{"type":"object","properties":{"value":{"$ref":"#/components/schemas/TeamSizeProxy"}}}]},"CompanyProfile":{"type":"object","required":["schema_version","tier","office_network","departments","work_mode","open_positions","hq_guess","team_size_proxy"],"properties":{"schema_version":{"type":"integer","example":1},"tier":{"type":"string","enum":["tier_a"]},"office_network":{"$ref":"#/components/schemas/OfficeNetworkProfileField","description":"value is a count-sorted list of city/country/lat/lng/open_jobs_here office pins."},"departments":{"$ref":"#/components/schemas/DepartmentsProfileField","description":"value is a count-sorted list of taxonomy family and subfamily rollups."},"work_mode":{"$ref":"#/components/schemas/WorkModeProfileField","description":"value contains remote, hybrid, on_site, and unknown current-open-job counts."},"open_positions":{"$ref":"#/components/schemas/OpenPositionsProfileField","description":"value contains count plus compact current-open-position rows."},"hq_guess":{"$ref":"#/components/schemas/HqGuessProfileField","description":"value is explicitly an estimate from the highest-volume current office location."},"team_size_proxy":{"$ref":"#/components/schemas/TeamSizeProxyProfileField","description":"value is explicitly an open-role hiring-volume estimate, never a claimed headcount."}}},"CompanyDetail":{"allOf":[{"$ref":"#/components/schemas/Company"},{"type":"object","required":["company_profile"]}]},"Count":{"type":"object","required":["count"],"properties":{"count":{"type":"integer"}}},"ExpiredRow":{"type":"object","required":["job_key","closed_at","close_reason"],"properties":{"job_key":{"type":"string"},"id":{"type":"integer","format":"int64"},"closed_at":{"type":"string","format":"date-time"},"close_reason":{"type":"string","enum":["removed_from_board","board_dead","expired_by_source"]}}},"ModifiedRow":{"type":"object","required":["job_key","modified_at","modified_fields"],"properties":{"job_key":{"type":"string"},"modified_at":{"type":"string","format":"date-time"},"modified_fields":{"type":"array","items":{"type":"string"}},"job":{"$ref":"#/components/schemas/Job"}}},"ModifiedChangeEvent":{"type":"object","additionalProperties":false,"required":["seq","stream","action","event_at","job_key","modified_fields"],"properties":{"seq":{"type":"integer","format":"int64","minimum":1,"maximum":9223372036854775807},"stream":{"type":"string","const":"modified"},"action":{"type":"string","const":"upsert"},"event_at":{"type":"string","format":"date-time"},"job_key":{"type":"string","minLength":1,"maxLength":512},"modified_fields":{"type":"array","maxItems":100,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":128}}}},"ExpiredChangeEvent":{"type":"object","additionalProperties":false,"required":["seq","stream","action","event_at","job_key","closed_at","close_reason"],"properties":{"seq":{"type":"integer","format":"int64","minimum":1,"maximum":9223372036854775807},"stream":{"type":"string","const":"expired"},"action":{"type":"string","const":"tombstone"},"event_at":{"type":"string","format":"date-time"},"job_key":{"type":"string","minLength":1,"maxLength":512},"closed_at":{"type":"string","format":"date-time"},"close_reason":{"type":"string","enum":["removed_from_board","board_dead","expired_by_source","quarantined","closed"]}}},"ChangeEvent":{"oneOf":[{"$ref":"#/components/schemas/ModifiedChangeEvent"},{"$ref":"#/components/schemas/ExpiredChangeEvent"}]},"ChangesPage":{"type":"object","additionalProperties":false,"required":["results","next_seq","has_more"],"properties":{"results":{"type":"array","maxItems":1000,"items":{"$ref":"#/components/schemas/ChangeEvent"}},"next_seq":{"type":"integer","format":"int64","minimum":0,"maximum":9223372036854775807},"has_more":{"type":"boolean"}}},"DatasetSummary":{"type":"object","additionalProperties":false,"required":["date","generated_at","row_count","part_count","format","content_type"],"properties":{"date":{"type":"string","format":"date"},"generated_at":{"type":"string","format":"date-time"},"row_count":{"type":"integer","minimum":1},"part_count":{"type":"integer","minimum":1,"maximum":1000},"format":{"type":"string","const":"parquet"},"content_type":{"type":"string","const":"application/vnd.apache.parquet"}}},"DatasetPage":{"type":"object","additionalProperties":false,"required":["results"],"properties":{"results":{"type":"array","maxItems":520,"items":{"$ref":"#/components/schemas/DatasetSummary"}}}},"DatasetPart":{"type":"object","additionalProperties":false,"required":["name","bytes","download_url"],"properties":{"name":{"type":"string","pattern":"^part-[0-9]{5}\\.parquet$"},"bytes":{"type":"integer","minimum":1,"maximum":8589934592},"download_url":{"type":"string","format":"uri","pattern":"^https://"}}},"DatasetDetail":{"type":"object","additionalProperties":false,"required":["date","generated_at","row_count","part_count","format","content_type","columns","parts","expires_at"],"properties":{"date":{"type":"string","format":"date"},"generated_at":{"type":"string","format":"date-time"},"row_count":{"type":"integer","minimum":1},"part_count":{"type":"integer","minimum":1,"maximum":1000},"format":{"type":"string","const":"parquet"},"content_type":{"type":"string","const":"application/vnd.apache.parquet"},"columns":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string"}},"parts":{"type":"array","minItems":1,"maxItems":1000,"items":{"$ref":"#/components/schemas/DatasetPart"}},"expires_at":{"type":"string","format":"date-time","description":"Every signed part URL expires at this time, 15 minutes after issuance."}}},"PaidPlan":{"type":"string","enum":["starter","growth","scale"]},"PreviewStructuredLocation":{"type":"object","additionalProperties":false,"description":"Compact preview location; unresolved keys are omitted rather than returned as null.","properties":{"city":{"type":["string","null"]},"country":{"type":["string","null"]},"country_code":{"type":["string","null"],"pattern":"^[A-Z]{2}$"},"lat":{"type":["number","null"],"minimum":-90,"maximum":90},"lng":{"type":["number","null"],"minimum":-180,"maximum":180}}},"PreviewJob":{"type":"object","additionalProperties":false,"required":["locations_derived","employment_type"],"properties":{"job_key":{"type":"string"},"title":{"type":"string"},"organization":{"type":"string"},"location":{"type":"object","additionalProperties":true},"locations_derived":{"type":"array","items":{"$ref":"#/components/schemas/PreviewStructuredLocation"}},"workplace":{"$ref":"#/components/schemas/AiWorkArrangementFilter"},"employment_type":{"type":"array","items":{"$ref":"#/components/schemas/EmploymentTypeFilter"}},"source":{"$ref":"#/components/schemas/SourceFilter"},"date_posted":{"type":"string","format":"date-time"},"apply_url":{"type":"string","format":"uri"}}},"PreviewJobPage":{"type":"object","additionalProperties":false,"required":["results","total_estimate","result_cap"],"properties":{"results":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/PreviewJob"}},"total_estimate":{"type":"integer","minimum":0},"result_cap":{"type":"integer","const":10}}},"BillingCheckoutRequest":{"type":"object","additionalProperties":false,"required":["plan","email","return_url"],"properties":{"plan":{"$ref":"#/components/schemas/PaidPlan"},"email":{"type":"string","format":"email","minLength":3,"maxLength":254},"return_url":{"type":"string","format":"uri","pattern":"^https://(www\\.)?praxyjobs\\.com(?:/|$)","description":"HTTPS return URL on praxyjobs.com or www.praxyjobs.com."}}},"BillingCheckoutResponse":{"type":"object","additionalProperties":false,"required":["checkout_url","claim_token"],"properties":{"checkout_url":{"type":"string","format":"uri"},"claim_token":{"type":"string","description":"Opaque one-time token returned only by checkout."}}},"BillingWebhookEvent":{"type":"object","additionalProperties":true,"description":"Dodo Payments webhook event. Unsupported event types are safely acknowledged."},"BillingWebhookResponse":{"type":"object","additionalProperties":false,"required":["received"],"properties":{"received":{"type":"boolean"},"duplicate":{"type":"boolean"}}},"BillingClaimRequest":{"type":"object","additionalProperties":false,"required":["claim_token"],"properties":{"claim_token":{"type":"string","description":"Opaque checkout token. Invalid lengths resolve to an expired status instead of a validation error."}}},"BillingClaimResponse":{"type":"object","additionalProperties":false,"required":["status"],"properties":{"status":{"type":"string","enum":["pending","active","claimed","expired"]},"plan":{"$ref":"#/components/schemas/PaidPlan"},"api_key":{"type":"string","pattern":"^pj_[0-9a-f]{32}$"}}},"BillingPortalResponse":{"type":"object","additionalProperties":false,"required":["portal_url"],"properties":{"portal_url":{"type":"string","format":"uri"}}},"UsagePeriod":{"type":"object","additionalProperties":false,"required":["start","end"],"properties":{"start":{"type":["string","null"],"format":"date-time"},"end":{"type":["string","null"],"format":"date-time"}}},"UsageTopFilter":{"type":"object","additionalProperties":false,"required":["name","value","requests"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"requests":{"type":"integer","minimum":1}}},"DailyUsageDay":{"type":"object","additionalProperties":false,"required":["date","requests","unique_actor_runs","records_returned","errors","top_filters"],"properties":{"date":{"type":"string","format":"date"},"requests":{"type":"integer","minimum":0},"unique_actor_runs":{"type":"integer","minimum":0},"records_returned":{"type":"integer","minimum":0},"errors":{"type":"integer","minimum":0},"top_filters":{"type":"array","items":{"$ref":"#/components/schemas/UsageTopFilter"}}}},"RecentApiActivity":{"type":"object","additionalProperties":false,"required":["endpoint","occurred_at","status","jobs_returned"],"properties":{"endpoint":{"type":"string"},"occurred_at":{"type":"string","format":"date-time"},"status":{"type":"integer","minimum":0},"jobs_returned":{"type":"integer","minimum":0}}},"AccountUsageResponse":{"type":"object","additionalProperties":false,"required":["plan","status","allowance","jobs_returned","request_count","error_count","period","daily_usage","recent_activity"],"properties":{"plan":{"type":"string"},"status":{"type":"string"},"allowance":{"type":["integer","null"],"minimum":0},"jobs_returned":{"type":"integer","minimum":0},"request_count":{"type":"integer","minimum":0},"error_count":{"type":"integer","minimum":0},"period":{"$ref":"#/components/schemas/UsagePeriod"},"daily_usage":{"type":"array","items":{"$ref":"#/components/schemas/DailyUsageDay"}},"recent_activity":{"type":"array","maxItems":20,"items":{"$ref":"#/components/schemas/RecentApiActivity"}}}},"SitemapSegmentSummary":{"type":"object","additionalProperties":false,"required":["segment_id","job_count"],"properties":{"segment_id":{"type":"string","pattern":"^[0-9a-f]{2}$"},"job_count":{"type":"integer","minimum":0},"last_modified":{"type":"string","format":"date-time"}}},"SitemapIndexResponse":{"type":"object","additionalProperties":false,"required":["segments"],"properties":{"segments":{"type":"array","minItems":256,"maxItems":256,"items":{"$ref":"#/components/schemas/SitemapSegmentSummary"}}}},"SitemapJob":{"type":"object","additionalProperties":false,"required":["job_key","last_modified"],"properties":{"job_key":{"type":["string","null"]},"last_modified":{"type":["string","null"],"format":"date-time"}}},"SitemapSegmentResponse":{"type":"object","additionalProperties":false,"required":["segment_id","results"],"properties":{"segment_id":{"type":"string"},"results":{"type":"array","items":{"$ref":"#/components/schemas/SitemapJob"}}}},"AccountKeyCreateRequest":{"type":"object","additionalProperties":false,"properties":{"label":{"type":["string","null"],"minLength":1,"maxLength":80}}},"AccountKey":{"type":"object","additionalProperties":false,"required":["key_id","label","key_hint","created_at","last_used_at","revoked_at","status","is_current"],"properties":{"key_id":{"type":"string","pattern":"^key_[0-9a-f]{24}$"},"label":{"type":"string","minLength":1,"maxLength":80},"key_hint":{"type":["string","null"],"pattern":"^[0-9a-f]{4}$","description":"Last four non-secret characters, for distinguishing keys."},"created_at":{"type":"string","format":"date-time"},"last_used_at":{"type":["string","null"],"format":"date-time"},"revoked_at":{"type":["string","null"],"format":"date-time"},"status":{"type":"string","enum":["active","revoked"]},"is_current":{"type":"boolean"}}},"AccountKeyPage":{"type":"object","additionalProperties":false,"required":["keys","max_active_keys"],"properties":{"keys":{"type":"array","items":{"$ref":"#/components/schemas/AccountKey"}},"max_active_keys":{"type":"integer","const":10}}},"AccountKeyCreated":{"type":"object","additionalProperties":false,"required":["api_key","key"],"properties":{"api_key":{"type":"string","pattern":"^pj_[0-9a-f]{32}$","description":"One-time plaintext credential. It is never returned by list operations."},"key":{"$ref":"#/components/schemas/AccountKey"}}},"PostgresDestinationConfig":{"type":"object","additionalProperties":false,"required":["dsn"],"properties":{"dsn":{"type":"string","minLength":1,"maxLength":4096,"writeOnly":true},"table":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_]*(?:\\.[A-Za-z_][A-Za-z0-9_]*)?$","default":"jobs"}}},"ElasticsearchDestinationConfig":{"type":"object","additionalProperties":false,"required":["url"],"properties":{"url":{"type":"string","format":"uri","pattern":"^https://","maxLength":2048,"writeOnly":true},"index":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._-]{0,254}$","default":"jobs"},"api_key":{"type":"string","minLength":1,"maxLength":4096,"writeOnly":true},"basic_auth":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"string","minLength":1,"maxLength":2048,"writeOnly":true}}}},"WebhookDestinationConfig":{"type":"object","additionalProperties":false,"required":["url"],"properties":{"url":{"type":"string","format":"uri","pattern":"^https://","maxLength":2048,"writeOnly":true,"description":"Public HTTPS URL on port 443. DNS is revalidated before every attempt and redirect."},"headers":{"type":"object","maxProperties":20,"writeOnly":true,"additionalProperties":{"type":"string","minLength":1,"maxLength":4096}}}},"DestinationCreateRequest":{"type":"object","additionalProperties":false,"required":["name","kind","config"],"properties":{"name":{"type":"string","minLength":1,"maxLength":120},"kind":{"type":"string","enum":["postgres","webhook"],"description":"Elasticsearch remains operator-provisioned until its client can enforce the same pinned-public-network boundary."},"config":{"writeOnly":true,"oneOf":[{"$ref":"#/components/schemas/PostgresDestinationConfig"},{"$ref":"#/components/schemas/WebhookDestinationConfig"}]},"expiry_mode":{"type":"string","enum":["tombstone","delete"],"default":"tombstone"},"pause_after_failures":{"type":"integer","minimum":1,"maximum":10,"default":3}}},"DestinationUpdateRequest":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"name":{"type":"string","minLength":1,"maxLength":120},"config":{"writeOnly":true,"oneOf":[{"$ref":"#/components/schemas/PostgresDestinationConfig"},{"$ref":"#/components/schemas/ElasticsearchDestinationConfig"},{"$ref":"#/components/schemas/WebhookDestinationConfig"}]},"expiry_mode":{"type":"string","enum":["tombstone","delete"]},"pause_after_failures":{"type":"integer","minimum":1,"maximum":10}}},"Destination":{"type":"object","additionalProperties":false,"required":["destination_id","name","kind","expiry_mode","enabled","status","consecutive_failures","pause_after_failures","created_at","updated_at","config_stored"],"properties":{"destination_id":{"type":"string","pattern":"^dest_[0-9a-f]{24}$"},"name":{"type":"string"},"kind":{"type":"string","enum":["postgres","elasticsearch","webhook"]},"expiry_mode":{"type":"string","enum":["tombstone","delete"]},"enabled":{"type":"boolean"},"status":{"type":"string","enum":["inactive","active","paused"]},"consecutive_failures":{"type":"integer","minimum":0},"pause_after_failures":{"type":"integer","minimum":1},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"config_stored":{"type":"boolean","const":true}}},"DestinationPage":{"type":"object","additionalProperties":false,"required":["results"],"properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/Destination"}}}},"OutboundRun":{"type":"object","additionalProperties":false,"required":["run_id","destination_id","dry_run","status","git_sha","origin_main_sha","started_at","completed_at","rows_read","rows_delivered","report"],"properties":{"run_id":{"type":"string"},"destination_id":{"type":"string","pattern":"^dest_[0-9a-f]{24}$"},"dry_run":{"type":"boolean"},"status":{"type":"string","enum":["started","completed","failed"]},"git_sha":{"type":"string","pattern":"^[0-9a-f]{40}$"},"origin_main_sha":{"type":["string","null"],"pattern":"^[0-9a-f]{40}$"},"started_at":{"type":"string","format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"rows_read":{"type":"integer","minimum":0},"rows_delivered":{"type":"integer","minimum":0},"report":{"type":"object","description":"Whitelisted delivery metadata; adapter credentials and destination config are never returned.","additionalProperties":true}}},"OutboundRunPage":{"type":"object","additionalProperties":false,"required":["results"],"properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/OutboundRun"}}}}},"responses":{"Problem":{"description":"Error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"RateLimitProblem":{"description":"Too many requests","headers":{"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"CursorSnapshotExpired":{"description":"The result set changed after the first page; restart pagination.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"paths":{"/v1/jobs/search":{"get":{"tags":["Jobs"],"summary":"Indexed full-text search over open jobs","description":"`q` runs indexed English full-text retrieval over title, company, and the full description.\nSemantic retrieval is opt-in on the typed POST search contract. Anonymous callers get snippets;\nkeyed callers get full text via `include_description=true`.\n","security":[{"apiKey":[]}],"parameters":[{"name":"q","in":"query","description":"Indexed English full-text search over title, company, and full description (maximum 500 characters); browser URI schemes and SQL-injection control sequences are rejected with a typed 400 problem response.","schema":{"type":"string","maxLength":500}},{"name":"title","in":"query","description":"Boolean title filter. `!` binds first, then `&`, then `|`; e.g. `engineer & !senior | founding`.","schema":{"type":"string","maxLength":500}},{"name":"family","in":"query","schema":{"type":"array","items":{"$ref":"#/components/schemas/FamilyFilter"}},"style":"form","explode":false},{"name":"skill_cluster","in":"query","schema":{"type":"array","maxItems":10,"items":{"type":"string","maxLength":500}},"style":"form","explode":false},{"name":"country","in":"query","schema":{"type":"array","items":{"$ref":"#/components/schemas/CountryFilter"}},"style":"form","explode":false},{"name":"city","in":"query","schema":{"type":"string","maxLength":500}},{"name":"remote","in":"query","schema":{"type":"string","enum":["only","exclude"]}},{"name":"company","in":"query","schema":{"type":"string","maxLength":500}},{"name":"source","in":"query","schema":{"type":"array","items":{"$ref":"#/components/schemas/SourceFilter"}},"style":"form","explode":false},{"name":"experience_level","in":"query","description":"One or more normalized experience levels; `unknown` selects rows without a derived level.","schema":{"type":"array","maxItems":5,"items":{"$ref":"#/components/schemas/ExperienceLevelFilter"}},"style":"form","explode":false},{"name":"posted_since","in":"query","description":"Inclusive lower bound on the source posting timestamp. Must include a UTC offset.","schema":{"type":"string","format":"date-time"}},{"name":"posted_before","in":"query","description":"Exclusive upper bound on the source posting timestamp. Must include a UTC offset; undated jobs do not match.","schema":{"type":"string","format":"date-time"}},{"name":"has_salary","in":"query","schema":{"type":"boolean"}},{"name":"visa_sponsorship","in":"query","schema":{"type":"boolean"},"description":"Exact tri-state filter; null/unknown rows never match true or false."},{"name":"security_clearance","in":"query","schema":{"type":"boolean"},"description":"Exact tri-state filter; null/unknown rows never match true or false."},{"name":"salary_min_gte","in":"query","description":"Require the stored salary minimum to be at least this value; no currency conversion is applied.","schema":{"type":"number","minimum":0}},{"name":"salary_max_lte","in":"query","description":"Require the stored salary maximum to be at most this value; no currency conversion is applied.","schema":{"type":"number","minimum":0}},{"name":"salary_currency","in":"query","description":"Three-letter uppercase salary currency code.","schema":{"type":"string","maxLength":3,"pattern":"^[A-Z]{3}$"}},{"name":"salary_period","in":"query","schema":{"$ref":"#/components/schemas/SalaryPeriodFilter"}},{"name":"employment_type","in":"query","schema":{"type":"array","items":{"$ref":"#/components/schemas/EmploymentTypeFilter"}},"style":"form","explode":false},{"name":"ai_work_arrangement","in":"query","schema":{"$ref":"#/components/schemas/AiWorkArrangementFilter"}},{"name":"language","in":"query","schema":{"type":"string","maxLength":500}},{"name":"company_domain","in":"query","description":"Exact canonical employer hostname; shared ATS, aggregator, IP, and localhost domains are rejected.","schema":{"type":"string","maxLength":253,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)+\\.?$"}},{"name":"status","in":"query","schema":{"type":"string","enum":["open","closed","all"],"default":"open"}},{"name":"exclude_duplicates","in":"query","schema":{"type":"boolean","default":false}},{"name":"include_description","in":"query","schema":{"type":"boolean","default":false}},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/cursor"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Result-Cap":{"$ref":"#/components/headers/X-Result-Cap"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobPage"}}}},"400":{"$ref":"#/components/responses/Problem"},"409":{"$ref":"#/components/responses/CursorSnapshotExpired"},"401":{"$ref":"#/components/responses/Problem"},"402":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}},"post":{"tags":["Jobs"],"summary":"Structured keyword or Growth+ semantic job search","description":"Uses the same filters, default-served quarantine, ordering, and description\nauthorization as GET search. `query` is parsed into a bounded AST and all\nPostgreSQL values remain parameterized. Requested facets and results are\ncomputed in the same repeatable-read snapshot. Continuation cursors are\nbound to the original request except that `limit` may change.\n\n`semantic_query` is opt-in for current Growth and Scale subscriptions (and\nexplicit service identities). It embeds at query time and hybrid-ranks open\njobs by vector relevance plus recency. Semantic mode rejects facets,\ncursors, non-open status, and limits above 100.\n","security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobSearchRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobSearchPage"}}}},"400":{"$ref":"#/components/responses/Problem"},"403":{"$ref":"#/components/responses/Problem"},"409":{"$ref":"#/components/responses/CursorSnapshotExpired"},"401":{"$ref":"#/components/responses/Problem"},"402":{"$ref":"#/components/responses/Problem"},"502":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/jobs/preview":{"get":{"tags":["Jobs"],"summary":"Preview a fixed sample of current jobs","description":"Public proof surface capped by the server at ten rows regardless of the positive `limit` supplied.","security":[{}],"parameters":[{"name":"q","in":"query","schema":{"type":"string","maxLength":500}},{"name":"country","in":"query","schema":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/CountryFilter"}},"style":"form","explode":false},{"name":"city","in":"query","schema":{"type":"string","maxLength":500}},{"name":"source","in":"query","schema":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/SourceFilter"}},"style":"form","explode":false},{"name":"employment_type","in":"query","schema":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/EmploymentTypeFilter"}},"style":"form","explode":false},{"name":"ai_work_arrangement","in":"query","schema":{"$ref":"#/components/schemas/AiWorkArrangementFilter"}},{"name":"posted_since","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"limit","in":"query","description":"Must be positive; the server always applies the fixed ten-row preview cap.","schema":{"type":"integer","minimum":1,"default":10}}],"responses":{"200":{"description":"Public preview capped at ten rows.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewJobPage"}}}},"400":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/jobs/export":{"get":{"tags":["Jobs"],"summary":"Export filtered default-served jobs","description":"Requires an active `X-API-Key`. CSV and NDJSON are streamed in deterministic\n50,000-row parts selected with `part=1,2,...`; JSON arrays are intentionally\nunsupported. Parquet is a single incrementally written Snappy-compressed file.\nThe default-served quarantine cannot be bypassed. `description_text` must be\nexplicitly selected and is returned only to an authorized keyed identity.\n","security":[{"apiKey":[]}],"parameters":[{"name":"format","in":"query","required":true,"schema":{"type":"string","enum":["csv","ndjson","parquet"]}},{"name":"columns","in":"query","description":"Comma-separated subset of the documented safe export columns. Omit for the stable default set.","schema":{"type":"string","maxLength":2000}},{"name":"part","in":"query","description":"One-indexed 50K part for CSV/NDJSON. Parquet requires part=1.","schema":{"type":"integer","minimum":1,"maximum":10000,"default":1}},{"name":"status","in":"query","schema":{"type":"string","enum":["open","closed","all"],"default":"open"}},{"name":"country","in":"query","schema":{"type":"array","items":{"$ref":"#/components/schemas/CountryFilter"}},"style":"form","explode":false},{"name":"source","in":"query","schema":{"type":"array","items":{"$ref":"#/components/schemas/SourceFilter"}},"style":"form","explode":false},{"name":"posted_since","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"exclude_duplicates","in":"query","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Export artifact","content":{"text/csv":{"schema":{"type":"string","format":"binary"}},"application/x-ndjson":{"schema":{"type":"string","description":"One job object per line; never a JSON array."}},"application/vnd.apache.parquet":{"schema":{"type":"string","format":"binary","description":"Snappy-compressed Parquet written incrementally to a bounded spool."}}}},"400":{"$ref":"#/components/responses/Problem"},"401":{"$ref":"#/components/responses/Problem"},"402":{"$ref":"#/components/responses/Problem"},"403":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/jobs/{job_key}":{"get":{"tags":["Jobs"],"summary":"Fetch one job","security":[{"apiKey":[]}],"parameters":[{"name":"job_key","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"404":{"$ref":"#/components/responses/Problem"},"401":{"$ref":"#/components/responses/Problem"},"402":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/companies":{"get":{"tags":["Companies"],"summary":"Browse the verified company directory","description":"Paginated and filterable — or fetch the full catalog with `export=jsonl`.\nJSONL export requires an active, issued `X-API-Key` and cannot be combined with `limit` or `cursor`.\nEvery row includes validated board slugs and native endpoints.\n","security":[{"apiKey":[]}],"parameters":[{"name":"source","in":"query","schema":{"$ref":"#/components/schemas/SourceFilter"}},{"name":"country","in":"query","schema":{"$ref":"#/components/schemas/CountryFilter"}},{"name":"min_open_jobs","in":"query","schema":{"type":"integer","minimum":0}},{"name":"export","in":"query","schema":{"type":"string","enum":["jsonl"]},"description":"Stream the entire filtered catalog as JSONL (keyed callers; refreshed daily). Mutually exclusive with limit and cursor."},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/cursor"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["results","total_estimate"],"properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/Company"}},"next_cursor":{"type":"string"},"total_estimate":{"type":"integer","minimum":0,"description":"Exact count of all matching companies after filters and before pagination, in the same repeatable-read snapshot as this page."}}}},"application/x-ndjson":{"schema":{"type":"string","description":"One Company JSON object per newline when export=jsonl is requested."}}}},"400":{"$ref":"#/components/responses/Problem"},"401":{"$ref":"#/components/responses/Problem"},"402":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/companies/{company_key}":{"get":{"tags":["Companies"],"summary":"Company profile with hiring velocity","security":[{"apiKey":[]}],"parameters":[{"name":"company_key","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyDetail"}}}},"404":{"$ref":"#/components/responses/Problem"},"402":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/companies/{company_key}/jobs":{"get":{"tags":["Companies"],"summary":"Jobs at a company by status","security":[{"apiKey":[]}],"parameters":[{"name":"company_key","in":"path","required":true,"schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string","enum":["open","closed","all"],"default":"open"}},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/cursor"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobPage"}}}},"400":{"$ref":"#/components/responses/Problem"},"402":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"},"404":{"$ref":"#/components/responses/Problem"}}}},"/v1/stats":{"get":{"tags":["Stats"],"summary":"Public corpus and freshness statistics (measured, not claimed)","description":"Includes measured freshness SLAs — p50/p95 new-job discovery latency and closure\nlatency per refresh tier — plus corpus counts by source, country, and career family,\nand enrichment coverage percentages. Cached 5 minutes. Anonymous.\n","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsResponse"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/analytics/companies/{company_key}/posting-velocity":{"get":{"tags":["Analytics"],"summary":"Compare a company's first-observed posting velocity across equal windows","description":"Counts the first opening for each stable job key from live jobs plus durable closure history. This is an exact source-observation count, not a projected demand estimate.","security":[{"apiKey":[]}],"parameters":[{"name":"company_key","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":500}},{"name":"window_days","in":"query","schema":{"type":"integer","minimum":1,"maximum":365,"default":30}}],"responses":{"200":{"description":"Equal-window posting velocity with weekly source-observation series.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyPostingVelocityResponse"}}}},"400":{"$ref":"#/components/responses/Problem"},"402":{"$ref":"#/components/responses/Problem"},"404":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/analytics/time-to-fill":{"get":{"tags":["Analytics"],"summary":"Measure the evidence-backed posting-duration proxy","description":"Median and percentile duration from first observation to definitive source closure. Estimates are withheld below the minimum audited sample and never claim a confirmed hire.","security":[{"apiKey":[]}],"parameters":[{"name":"window_days","in":"query","schema":{"type":"integer","minimum":1,"maximum":365,"default":90}},{"name":"source","in":"query","schema":{"$ref":"#/components/schemas/SourceFilter"}},{"name":"country","in":"query","schema":{"$ref":"#/components/schemas/CountryFilter"}},{"name":"family","in":"query","schema":{"$ref":"#/components/schemas/FamilyFilter"}},{"name":"company_key","in":"query","schema":{"type":"string","minLength":1,"maxLength":500}}],"responses":{"200":{"description":"Audited duration proxy, or an explicit insufficient-data result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeToFillAnalyticsResponse"}}}},"400":{"$ref":"#/components/responses/Problem"},"402":{"$ref":"#/components/responses/Problem"},"404":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/analytics/state-of-hiring":{"get":{"tags":["Analytics"],"summary":"Public measured state-of-hiring report","description":"Quarter or quarter-to-date first-observed posting volume and audited posting-duration signals by ATS, country, and career family. Current quarters are explicitly partial and are never projected.","security":[{}],"parameters":[{"name":"quarter","in":"query","description":"UTC calendar quarter. Omit for the latest completed quarter.","schema":{"type":"string","minLength":7,"maxLength":7,"pattern":"^[0-9]{4}-Q[1-4]$"}}],"responses":{"200":{"description":"Complete measured report with explicit evidence coverage.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StateOfHiringResponse"}}}},"400":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/data-quality/current":{"get":{"tags":["Stats"],"summary":"Latest measured data-quality gate artifact","description":"The exact retained artifact used by the public trust page; values are measured by the jobs-db quality runner and are never hand-edited.","security":[{}],"responses":{"200":{"description":"Latest measured artifact.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataQualityArtifact"}}}},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/keys":{"post":{"tags":["Keys"],"summary":"Issue a free account key","description":"Key issuance is free; paid data routes still require an active subscription.","security":[{}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email"],"additionalProperties":false,"properties":{"email":{"type":"string","format":"email","minLength":3,"maxLength":254}}}}}},"responses":{"201":{"description":"Key issued instantly.","content":{"application/json":{"schema":{"type":"object","properties":{"api_key":{"type":"string","pattern":"^pj_[0-9a-f]{32}$"},"tier":{"type":"string"}}}}}},"400":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/billing/checkout":{"post":{"tags":["Billing"],"summary":"Start a paid Praxy Jobs checkout","security":[{}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingCheckoutRequest"}}}},"responses":{"200":{"description":"Hosted checkout URL and one-time claim token.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingCheckoutResponse"}}}},"400":{"$ref":"#/components/responses/Problem"},"502":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"504":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/billing/webhook":{"post":{"tags":["Billing"],"summary":"Receive a signed Dodo Payments event","description":"Verification covers the exact raw body plus the three required webhook headers.","security":[{}],"parameters":[{"name":"Webhook-Id","in":"header","required":true,"schema":{"type":"string","minLength":1}},{"name":"Webhook-Timestamp","in":"header","required":true,"schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"Webhook-Signature","in":"header","required":true,"schema":{"type":"string","minLength":1}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingWebhookEvent"},"example":{"type":"ping"}}}},"responses":{"200":{"description":"Event accepted or safely acknowledged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingWebhookResponse"}}}},"400":{"$ref":"#/components/responses/Problem"},"401":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"}}}},"/v1/billing/claim":{"post":{"tags":["Billing"],"summary":"Claim the API key created by a completed checkout","security":[{}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingClaimRequest"}}}},"responses":{"200":{"description":"Current claim state; an active key is returned only once.","headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingClaimResponse"}}}},"400":{"$ref":"#/components/responses/Problem"},"503":{"description":"Claim storage is unavailable.","headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/billing/portal":{"post":{"tags":["Billing"],"summary":"Create a customer billing-portal session","security":[{"apiKey":[]}],"responses":{"200":{"description":"Hosted billing-portal URL.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingPortalResponse"}}}},"403":{"$ref":"#/components/responses/Problem"},"502":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"504":{"$ref":"#/components/responses/Problem"}}}},"/v1/account/usage":{"get":{"tags":["Account"],"summary":"Read current paid-account usage and recent API activity","security":[{"apiKey":[]}],"responses":{"200":{"description":"Current billing-period usage plus at most twenty recent API requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountUsageResponse"}}}},"403":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"}}}},"/v1/account/keys":{"get":{"tags":["Keys"],"summary":"List API keys for the current paid account","description":"Returns identifiers and safe metadata only. Plaintext credentials and hashes are never returned.","security":[{"apiKey":[]}],"responses":{"200":{"description":"Newest-first account key metadata, including revoked history.","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountKeyPage"}}}},"403":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}},"post":{"tags":["Keys"],"summary":"Create an additional API key","description":"Returns the plaintext credential once. Test it before revoking the old key.","security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountKeyCreateRequest"}}}},"responses":{"201":{"description":"Key created; the plaintext credential appears only in this response.","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountKeyCreated"}}}},"400":{"$ref":"#/components/responses/Problem"},"403":{"$ref":"#/components/responses/Problem"},"409":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/account/keys/rotate":{"post":{"tags":["Keys"],"summary":"Stage a replacement API key","description":"Safe two-phase rotation. This creates a replacement but does not revoke the working key; test the replacement, then revoke the old key separately.","security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountKeyCreateRequest"}}}},"responses":{"201":{"description":"Replacement staged; the plaintext credential appears only in this response.","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountKeyCreated"}}}},"400":{"$ref":"#/components/responses/Problem"},"403":{"$ref":"#/components/responses/Problem"},"409":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/account/keys/{key_id}":{"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","pattern":"^key_[0-9a-f]{24}$"}}],"delete":{"tags":["Keys"],"summary":"Revoke one API key","description":"Idempotent for an already-revoked account key. The last active key cannot be revoked.","security":[{"apiKey":[]}],"responses":{"204":{"description":"Key revoked or already revoked.","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}}}},"400":{"$ref":"#/components/responses/Problem"},"403":{"$ref":"#/components/responses/Problem"},"404":{"$ref":"#/components/responses/Problem"},"409":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/datasets":{"get":{"tags":["Datasets"],"summary":"List verified dated dataset snapshots","description":"Scale-plan metadata surface. Listing and downloads do not consume monthly job credits.","security":[{"apiKey":[]}],"responses":{"200":{"description":"Newest-first verified snapshot summaries.","headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetPage"}}}},"403":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/datasets/{snapshot_date}":{"parameters":[{"name":"snapshot_date","in":"path","required":true,"schema":{"type":"string","format":"date","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$","minLength":10,"maxLength":10}}],"get":{"tags":["Datasets"],"summary":"Get verified snapshot metadata and signed part downloads","description":"Each part is HEAD-verified before signing. URLs expire after 15 minutes and responses must not be cached.","security":[{"apiKey":[]}],"responses":{"200":{"description":"Verified manifest metadata and short-lived HTTPS downloads.","headers":{"Cache-Control":{"schema":{"type":"string","const":"no-store"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetDetail"}}}},"400":{"$ref":"#/components/responses/Problem"},"403":{"$ref":"#/components/responses/Problem"},"404":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/destinations":{"get":{"tags":["Destinations"],"summary":"List this Scale account's outbound destinations","security":[{"apiKey":[]}],"responses":{"200":{"description":"Safe destination metadata; stored config is never returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DestinationPage"}}}},"403":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}},"post":{"tags":["Destinations"],"summary":"Create a disabled outbound destination","description":"Configuration is encrypted at rest. Creation never enables delivery; call the explicit enable action after validating the sink.","security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DestinationCreateRequest"}}}},"responses":{"201":{"description":"Created disabled and inactive.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Destination"}}}},"400":{"$ref":"#/components/responses/Problem"},"403":{"$ref":"#/components/responses/Problem"},"409":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/destinations/{destination_id}":{"parameters":[{"name":"destination_id","in":"path","required":true,"schema":{"type":"string","pattern":"^dest_[0-9a-f]{24}$","minLength":29,"maxLength":29}}],"get":{"tags":["Destinations"],"summary":"Get one account-owned destination","security":[{"apiKey":[]}],"responses":{"200":{"description":"Safe destination metadata.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Destination"}}}},"400":{"$ref":"#/components/responses/Problem"},"403":{"$ref":"#/components/responses/Problem"},"404":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}},"patch":{"tags":["Destinations"],"summary":"Replace destination metadata or encrypted config","description":"Kind is immutable. Config replacement is atomic and does not reset cursors or implicitly enable a destination.","security":[{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DestinationUpdateRequest"}}}},"responses":{"200":{"description":"Updated safe metadata.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Destination"}}}},"400":{"$ref":"#/components/responses/Problem"},"403":{"$ref":"#/components/responses/Problem"},"404":{"$ref":"#/components/responses/Problem"},"409":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}},"delete":{"tags":["Destinations"],"summary":"Disable and soft-delete a destination","security":[{"apiKey":[]}],"responses":{"204":{"description":"Destination removed; audit history remains stored."},"400":{"$ref":"#/components/responses/Problem"},"403":{"$ref":"#/components/responses/Problem"},"404":{"$ref":"#/components/responses/Problem"},"409":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/destinations/{destination_id}/enable":{"parameters":[{"name":"destination_id","in":"path","required":true,"schema":{"type":"string","pattern":"^dest_[0-9a-f]{24}$","minLength":29,"maxLength":29}}],"post":{"tags":["Destinations"],"summary":"Explicitly enable or resume a destination","security":[{"apiKey":[]}],"responses":{"200":{"description":"Active destination metadata. Consecutive failures are reset.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Destination"}}}},"400":{"$ref":"#/components/responses/Problem"},"403":{"$ref":"#/components/responses/Problem"},"404":{"$ref":"#/components/responses/Problem"},"409":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/destinations/{destination_id}/disable":{"parameters":[{"name":"destination_id","in":"path","required":true,"schema":{"type":"string","pattern":"^dest_[0-9a-f]{24}$","minLength":29,"maxLength":29}}],"post":{"tags":["Destinations"],"summary":"Disable a destination without deleting it","security":[{"apiKey":[]}],"responses":{"200":{"description":"Inactive destination metadata.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Destination"}}}},"400":{"$ref":"#/components/responses/Problem"},"403":{"$ref":"#/components/responses/Problem"},"404":{"$ref":"#/components/responses/Problem"},"409":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/destinations/{destination_id}/runs":{"parameters":[{"name":"destination_id","in":"path","required":true,"schema":{"type":"string","pattern":"^dest_[0-9a-f]{24}$","minLength":29,"maxLength":29}}],"get":{"tags":["Destinations"],"summary":"List redacted delivery run reports for one destination","security":[{"apiKey":[]}],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Newest-first redacted run reports.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundRunPage"}}}},"400":{"$ref":"#/components/responses/Problem"},"403":{"$ref":"#/components/responses/Problem"},"404":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/feed/active":{"get":{"tags":["Feed"],"summary":"Newly indexed jobs by time window (never-duplicate incremental feed)","description":"Windowed on `first_seen`. Poll `time_frame=1h` hourly or `24h` daily and you will\nnever receive the same job twice. Jobs closed within the window still appear, with\n`status=closed` and `closed_at` set — no separate reconciliation pass needed for\nshort windows.\n","security":[{"apiKey":[]}],"parameters":[{"$ref":"#/components/parameters/time_frame"},{"name":"source","in":"query","schema":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/SourceFilter"}},"style":"form","explode":false},{"name":"exclude_source","in":"query","schema":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/SourceFilter"}},"style":"form","explode":false},{"name":"country","in":"query","schema":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/CountryFilter"}},"style":"form","explode":false},{"name":"organization","in":"query","schema":{"type":"array","maxItems":10,"items":{"type":"string","minLength":1,"maxLength":500}},"style":"form","explode":false},{"name":"domain","in":"query","schema":{"type":"array","maxItems":10,"items":{"type":"string","format":"hostname","maxLength":253}},"style":"form","explode":false},{"name":"title","in":"query","schema":{"type":"string","minLength":1,"maxLength":500}},{"name":"description_format","in":"query","schema":{"type":"string","enum":["text","none"],"default":"none"}},{"name":"first_seen_gte","in":"query","schema":{"type":"string","format":"date-time","maxLength":64},"description":"Outage replay. When supplied, this replaces the rolling time_frame lower bound; first_seen increases monotonically."},{"name":"exclude_duplicates","in":"query","schema":{"type":"boolean","default":false}},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/cursor"}],"responses":{"200":{"description":"OK","headers":{"X-Quota-Jobs-Remaining":{"$ref":"#/components/headers/X-Quota-Jobs-Remaining"},"X-Quota-Renews-At":{"$ref":"#/components/headers/X-Quota-Renews-At"},"X-Result-Cap":{"$ref":"#/components/headers/X-Result-Cap"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobPage"}}}},"400":{"$ref":"#/components/responses/Problem"},"402":{"$ref":"#/components/responses/Problem"},"409":{"$ref":"#/components/responses/CursorSnapshotExpired"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/feed/active/count":{"get":{"tags":["Feed"],"summary":"Count matching feed rows (unmetered — no job credits)","description":"Accepts every row-filtering parameter from /v1/feed/active except description_format, limit, and cursor. Use for plan sizing and monitoring.","security":[{"apiKey":[]}],"parameters":[{"$ref":"#/components/parameters/time_frame"},{"name":"source","in":"query","schema":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/SourceFilter"}},"style":"form","explode":false},{"name":"exclude_source","in":"query","schema":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/SourceFilter"}},"style":"form","explode":false},{"name":"country","in":"query","schema":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/CountryFilter"}},"style":"form","explode":false},{"name":"organization","in":"query","schema":{"type":"array","maxItems":10,"items":{"type":"string","minLength":1,"maxLength":500}},"style":"form","explode":false},{"name":"domain","in":"query","schema":{"type":"array","maxItems":10,"items":{"type":"string","format":"hostname","maxLength":253}},"style":"form","explode":false},{"name":"title","in":"query","schema":{"type":"string","minLength":1,"maxLength":500}},{"name":"first_seen_gte","in":"query","schema":{"type":"string","format":"date-time","maxLength":64},"description":"Overrides the rolling time_frame lower bound for outage replay."},{"name":"exclude_duplicates","in":"query","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Count"}}}},"400":{"$ref":"#/components/responses/Problem"},"402":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/feed/expired":{"get":{"tags":["Feed"],"summary":"Jobs that closed in the window — with timestamps and reasons","description":"Richer than bare ID lists: every row carries `closed_at` (hours-level accuracy)\nand `close_reason`. Free of job credits.\n","security":[{"apiKey":[]}],"parameters":[{"$ref":"#/components/parameters/time_frame"},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/cursor"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/ExpiredRow"}},"next_cursor":{"type":"string"}}}}}},"400":{"$ref":"#/components/responses/Problem"},"402":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/feed/modified":{"get":{"tags":["Feed"],"summary":"Field-level changes to previously delivered jobs","description":"Rows list exactly which fields changed (`modified_fields`) plus the updated job. Free of job credits.","security":[{"apiKey":[]}],"parameters":[{"$ref":"#/components/parameters/time_frame"},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/cursor"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/ModifiedRow"}},"next_cursor":{"type":"string"}}}}}},"400":{"$ref":"#/components/responses/Problem"},"402":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/feed/changes":{"get":{"tags":["Feed"],"summary":"Resume the non-expiring modified and expired event stream","description":"Returns events in strictly increasing `seq` order with no wall-clock replay limit.\nPersist `next_seq` only after processing every returned event, then supply it as\n`since_seq` after a restart. Sequence values can contain rollback holes; callers\nmust treat them as opaque checkpoints and request `seq > since_seq`. An empty\n`modified_fields` array means a job newly entered the served set. For an upsert,\nretrieve the current public job record by `job_key`; tombstones are self-contained.\n","security":[{"apiKey":[]}],"parameters":[{"name":"since_seq","in":"query","description":"Last fully processed sequence. Zero starts from the launch baseline.","schema":{"type":"integer","format":"int64","minimum":0,"maximum":9223372036854775807,"default":0}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":1000,"default":100}}],"responses":{"200":{"description":"One checkpoint page in ascending sequence order.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangesPage"}}}},"400":{"$ref":"#/components/responses/Problem"},"402":{"$ref":"#/components/responses/Problem"},"503":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/usage/daily":{"get":{"tags":["Stats"],"summary":"Daily service-account usage aggregates","description":"Service-key-only account/channel report covering at most 90 inclusive calendar days.","security":[{"apiKey":[]}],"parameters":[{"name":"date_from","in":"query","schema":{"type":"string","format":"date"}},{"name":"date_to","in":"query","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"Account-scoped daily usage.","content":{"application/json":{"schema":{"type":"object","required":["account_id","channel","date_from","date_to","days"],"properties":{"account_id":{"type":"string"},"channel":{"type":"string"},"date_from":{"type":"string","format":"date"},"date_to":{"type":"string","format":"date"},"days":{"type":"array","items":{"$ref":"#/components/schemas/DailyUsageDay"}}}}}}},"400":{"$ref":"#/components/responses/Problem"},"401":{"$ref":"#/components/responses/Problem"},"403":{"$ref":"#/components/responses/Problem"},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/sitemaps":{"get":{"tags":["Sitemaps"],"summary":"List deterministic sitemap segments","description":"Returns all 256 lowercase two-hex segments with measured active-job counts and honest last-modified timestamps.","security":[{}],"responses":{"200":{"description":"Complete sitemap segment index.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SitemapIndexResponse"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/v1/sitemaps/{segment_id}":{"parameters":[{"name":"segment_id","in":"path","required":true,"description":"Lowercase two-hex segment ID; unknown values deliberately return an empty 200 response.","schema":{"type":"string"},"example":"00"}],"get":{"tags":["Sitemaps"],"summary":"Read one deterministic sitemap segment","security":[{}],"responses":{"200":{"description":"Active deduplicated job identities assigned to this segment.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SitemapSegmentResponse"}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}},"/healthz":{"get":{"tags":["Stats"],"summary":"Liveness + corpus freshness gauges","security":[{}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"$ref":"#/components/responses/RateLimitProblem"}}}}}}