{"openapi":"3.0.3","info":{"title":"RemoteHits API","version":"1.0.0","description":"REST API for searching and retrieving remote job listings from RemoteHits.","contact":{"email":"support@remotehits.com"}},"servers":[{"url":"https://remotehits.com","description":"Production"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"rh_live_...","description":"API key from your dashboard at /dashboard/api"}},"schemas":{"JobListItem":{"type":"object","properties":{"id":{"type":"string"},"position":{"type":"string"},"companyName":{"type":"string"},"companyLogo":{"type":"string","nullable":true},"category":{"type":"string"},"type":{"type":"string"},"locationRestriction":{"type":"string"},"salaryMin":{"type":"integer"},"salaryMax":{"type":"integer","nullable":true},"datePosted":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"tags":{"type":"string"},"howToApplyUrl":{"type":"string"},"provider":{"type":"string"}}},"JobDetail":{"allOf":[{"$ref":"#/components/schemas/JobListItem"},{"type":"object","properties":{"jobDescription":{"type":"string"}}}]},"Error":{"type":"object","properties":{"error":{"type":"string"},"retryAfterSec":{"type":"integer"}}}}},"paths":{"/api/v1/jobs":{"get":{"summary":"List remote jobs","operationId":"listJobs","tags":["Jobs"],"parameters":[{"name":"page","in":"query","schema":{"type":"integer","default":1,"minimum":1}},{"name":"limit","in":"query","schema":{"type":"integer","default":20,"minimum":1,"maximum":50}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"type","in":"query","schema":{"type":"string"}},{"name":"location","in":"query","schema":{"type":"string"}},{"name":"salaryMin","in":"query","schema":{"type":"integer"}},{"name":"salaryMax","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated job list","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"page":{"type":"integer"},"limit":{"type":"integer"},"count":{"type":"integer"},"jobs":{"type":"array","items":{"$ref":"#/components/schemas/JobListItem"}}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Subscription inactive","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/jobs/{id}":{"get":{"summary":"Get job by ID","operationId":"getJob","tags":["Jobs"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Job detail","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"job":{"$ref":"#/components/schemas/JobDetail"}}}}}},"404":{"description":"Job not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"x-rate-limits":{"hourly":500,"daily":5000}}