> ## Documentation Index
> Fetch the complete documentation index at: https://developer.jonahanderson.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Resume

> Returns either structured resume data or a PDF URL, depending on the requested format. The example responses below are illustrative only.



## OpenAPI

````yaml GET /resume
openapi: 3.1.0
info:
  title: Candidate Profile API
  version: 1.0.0
  description: >-
    Personal candidate profile API published at api.jonahanderson.me. Every
    endpoint except POST /auth/token requires bearer-token authentication. All
    example payloads in this spec are illustrative and do not represent live
    data.
servers:
  - url: https://api.jonahanderson.me
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Authentication
  - name: Candidate
  - name: Experience
  - name: Projects
  - name: Resume
  - name: Contact
paths:
  /resume:
    get:
      tags:
        - Resume
      summary: Get resume data or PDF link
      description: >-
        Returns either structured resume data or a PDF URL, depending on the
        requested format. The example responses below are illustrative only.
      operationId: getResume
      parameters:
        - in: query
          name: format
          required: false
          description: >-
            Controls whether the endpoint returns structured JSON or a JSON
            object containing a PDF URL.
          schema:
            type: string
            enum:
              - json
              - pdf
            default: json
          examples:
            jsonFormat:
              summary: Structured JSON response
              value: json
            pdfFormat:
              summary: PDF URL response
              value: pdf
      responses:
        '200':
          description: Resume response.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/Resume'
                  - $ref: '#/components/schemas/ResumePdf'
              examples:
                illustrativeJsonResponse:
                  summary: Illustrative JSON response
                  description: Sample values only. Live resume data will vary.
                  value:
                    name: Example Candidate
                    title: Senior Product Manager
                    experience:
                      - company: Sample Systems
                        company_start_date: '2023-01-01'
                        company_end_date: null
                        current: true
                        roles:
                          - title: Senior Product Manager
                            start_date: '2024-01-01'
                            end_date: null
                            accomplishments:
                              - >-
                                Defined an example roadmap for partner-facing
                                API improvements.
                              - >-
                                Coordinated an example cross-functional launch
                                for a workflow automation feature.
                    skills:
                      - API strategy
                      - Partner integrations
                      - Product discovery
                illustrativePdfResponse:
                  summary: Illustrative PDF response
                  description: Sample values only. Live resume data will vary.
                  value:
                    url: https://example.com/resume/example-candidate.pdf
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    Resume:
      type: object
      description: Structured resume response returned when `format=json` is requested.
      required:
        - name
        - title
        - experience
        - skills
      properties:
        name:
          type: string
          description: Display name shown on the resume.
          example: Example Candidate
        title:
          type: string
          description: Primary title shown on the resume.
          example: Senior Product Manager
        experience:
          type: array
          description: Experience entries included in the structured resume.
          items:
            $ref: '#/components/schemas/ResumeExperience'
        skills:
          type: array
          description: Core skills highlighted on the resume.
          items:
            type: string
            description: One skill or competency.
          example:
            - API strategy
            - Partner integrations
            - Product discovery
      example:
        name: Example Candidate
        title: Senior Product Manager
        experience:
          - company: Sample Systems
            company_start_date: '2023-01-01'
            company_end_date: null
            current: true
            roles:
              - title: Senior Product Manager
                start_date: '2024-01-01'
                end_date: null
                accomplishments:
                  - >-
                    Defined an example roadmap for partner-facing API
                    improvements.
                  - >-
                    Coordinated an example cross-functional launch for a
                    workflow automation feature.
        skills:
          - API strategy
          - Partner integrations
          - Product discovery
    ResumePdf:
      type: object
      description: Response returned when `format=pdf` is requested.
      required:
        - url
      properties:
        url:
          type: string
          format: uri
          description: Absolute URL to a downloadable PDF version of the resume.
          example: https://example.com/resume/example-candidate.pdf
      example:
        url: https://example.com/resume/example-candidate.pdf
    ResumeExperience:
      type: object
      description: >-
        Resume-friendly experience entry returned from the structured resume
        endpoint.
      required:
        - company
        - company_start_date
        - current
        - roles
      properties:
        company:
          type: string
          description: Company or organization name for the experience entry.
          example: Sample Systems
        company_start_date:
          type: string
          format: date
          description: Date when the candidate started working with the company.
          example: '2023-01-01'
        company_end_date:
          type:
            - string
            - 'null'
          format: date
          description: >-
            Date when the candidate stopped working with the company, or `null`
            if it is current.
          example: null
        current:
          type: boolean
          description: Whether this experience entry represents a current company.
          example: true
        roles:
          type: array
          description: Roles held within this company experience.
          items:
            $ref: '#/components/schemas/ExperienceRole'
      example:
        company: Sample Systems
        company_start_date: '2023-01-01'
        company_end_date: null
        current: true
        roles:
          - title: Senior Product Manager
            start_date: '2024-01-01'
            end_date: null
            accomplishments:
              - Defined an example roadmap for partner-facing API improvements.
              - >-
                Coordinated an example cross-functional launch for a workflow
                automation feature.
    ErrorResponse:
      type: object
      description: Wrapper object for API errors.
      required:
        - error
      properties:
        error:
          $ref: '#/components/schemas/Error'
      example:
        error:
          code: BAD_REQUEST
          message: The request payload is missing a required field.
    ExperienceRole:
      type: object
      description: One role held within an experience entry.
      required:
        - title
        - start_date
        - accomplishments
      properties:
        title:
          type: string
          description: Role title held during the experience.
          example: Senior Product Manager
        start_date:
          type: string
          format: date
          description: Date when the role started.
          example: '2024-01-01'
        end_date:
          type:
            - string
            - 'null'
          format: date
          description: Date when the role ended, or `null` if it is current.
          example: null
        accomplishments:
          type: array
          description: Representative accomplishments or responsibilities for the role.
          items:
            type: string
            description: One accomplishment or responsibility.
          example:
            - Defined an example roadmap for partner-facing API improvements.
            - >-
              Coordinated an example cross-functional launch for a workflow
              automation feature.
      example:
        title: Senior Product Manager
        start_date: '2024-01-01'
        end_date: null
        accomplishments:
          - Defined an example roadmap for partner-facing API improvements.
          - >-
            Coordinated an example cross-functional launch for a workflow
            automation feature.
    Error:
      type: object
      description: Standard error payload returned by the API.
      required:
        - code
        - message
      properties:
        code:
          type: string
          description: Machine-readable error code.
          example: BAD_REQUEST
        message:
          type: string
          description: Human-readable explanation of the error.
          example: The request payload is missing a required field.
      example:
        code: BAD_REQUEST
        message: The request payload is missing a required field.
  responses:
    BadRequest:
      description: Invalid request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            illustrativeResponse:
              summary: Illustrative validation error
              description: Sample values only. Live error messages will vary.
              value:
                error:
                  code: BAD_REQUEST
                  message: The request payload is missing a required field.
    Unauthorized:
      description: Bearer token is missing, invalid, or altered.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            missingOrInvalidToken:
              summary: Valid bearer token required
              value:
                error:
                  code: UNAUTHORIZED
                  message: A valid bearer token is required
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Signed bearer token returned by POST /auth/token. Send it in the
        Authorization header as `Bearer <token>`.

````