{"openapi":"3.1.0","info":{"title":"Eduardo López public résumé API","version":"1.0.0","description":"Read the English or Spanish résumé with founder or employee emphasis. No authentication is required."},"servers":[{"url":"https://eduardo-lopez.com"}],"paths":{"/api/resume":{"get":{"operationId":"getResume","summary":"Get a public résumé","description":"Returns JSON Resume fields with expanded experience in work[].details, or redirects to a short or full PDF. Unknown parameters, invalid values, and repeated parameters return 400. Parameters are case sensitive.","parameters":[{"name":"lang","in":"query","description":"Résumé language.","schema":{"type":"string","enum":["en","es"],"default":"en"}},{"name":"version","in":"query","description":"Experience emphasis and ordering.","schema":{"type":"string","enum":["founder","employee"],"default":"founder"}},{"name":"format","in":"query","description":"Download format.","schema":{"type":"string","enum":["json","pdf"],"default":"json"}},{"name":"length","in":"query","description":"PDF length. Short is one page; full adds expanded experience. JSON always contains all details regardless of this parameter.","schema":{"type":"string","enum":["short","full"],"default":"short"}}],"responses":{"200":{"description":"Public résumé JSON download.","headers":{"Content-Disposition":{"description":"Attachment filename for the selected version and language.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Resume"}}}},"307":{"description":"Redirect to the selected public PDF on the current deployment.","headers":{"Location":{"description":"Relative PDF download path. Resolve it against the request URL.","schema":{"type":"string","format":"uri-reference"}}}},"400":{"description":"A query parameter is unknown, repeated, empty, or has an unsupported value.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Resume":{"type":"object","required":["basics","work","education","skills","languages","projects","meta"],"properties":{"basics":{"type":"object","required":["name","label","email","phone","url","summary","profiles"],"properties":{"name":{"type":"string"},"label":{"type":"string"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"url":{"type":"string","format":"uri"},"summary":{"type":"string"},"profiles":{"type":"array","items":{"type":"object","required":["network","username","url"],"properties":{"network":{"type":"string"},"username":{"type":"string"},"url":{"type":"string","format":"uri"}}}}}},"work":{"type":"array","items":{"type":"object","required":["name","position","summary","highlights"],"properties":{"name":{"type":"string"},"position":{"type":"string"},"url":{"type":"string","format":"uri"},"startDate":{"type":"string","pattern":"^[0-9]{4}(-[0-9]{2})?$","description":"Year or year and month. Unknown dates are omitted."},"endDate":{"type":"string","pattern":"^[0-9]{4}(-[0-9]{2})?$","description":"Year or year and month. Unknown dates are omitted."},"summary":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"details":{"type":"array","description":"Expanded experience, grouped by subject or consulting project. Empty when no additional detail is recorded.","items":{"type":"object","required":["title","paragraphs"],"properties":{"title":{"type":"string"},"paragraphs":{"type":"array","items":{"type":"string"},"minItems":1}}}}}}},"education":{"type":"array","items":{"type":"object","required":["institution","area","startDate"],"properties":{"institution":{"type":"string"},"area":{"type":"string"},"startDate":{"type":"string","pattern":"^[0-9]{4}(-[0-9]{2})?$","description":"Year or year and month. Unknown dates are omitted."}}}},"skills":{"type":"array","items":{"type":"object","required":["name","keywords"],"properties":{"name":{"type":"string"},"keywords":{"type":"array","items":{"type":"string"}}}}},"languages":{"type":"array","description":"Spoken languages. Proficiency levels are omitted when not sourced.","items":{"type":"object","required":["language"],"properties":{"language":{"type":"string"},"fluency":{"type":"string"}}}},"projects":{"type":"array","items":{"type":"object","required":["name","description","highlights"],"properties":{"name":{"type":"string"},"description":{"type":"string"},"highlights":{"type":"array","items":{"type":"string"}},"url":{"type":"string","format":"uri"}}}},"meta":{"type":"object","required":["language","version","lastModified","sources"],"properties":{"language":{"type":"string","enum":["en","es"]},"version":{"type":"string","enum":["founder","employee"]},"lastModified":{"type":"string","format":"date"},"sources":{"type":"array","items":{"type":"string","format":"uri"}}}}}},"Error":{"type":"object","required":["error","details"],"properties":{"error":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}}}}