> ## 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 Project By Id

> Returns one project by id. The example response below is illustrative only.



## OpenAPI

````yaml GET /projects/{id}
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:
  /projects/{id}:
    get:
      tags:
        - Projects
      summary: Get a single project
      description: >-
        Returns one project by id. The example response below is illustrative
        only.
      operationId: getProjectById
      parameters:
        - $ref: '#/components/parameters/IdParam'
      responses:
        '200':
          description: Project detail.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
              examples:
                illustrativeResponse:
                  summary: Illustrative response
                  description: Sample values only. Live project data will vary.
                  value:
                    id: project_example_001
                    name: Project Atlas
                    summary: >-
                      Example summary for a customer-facing workflow automation
                      product.
                    tags:
                      - Workflow automation
                      - API integration
                      - Example tag
                    links:
                      github: https://example.com/project-atlas/repository
                      live: https://example.com/project-atlas
                      details: https://example.com/projects/project-atlas
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  parameters:
    IdParam:
      in: path
      name: id
      required: true
      description: The resource identifier returned by a list endpoint.
      schema:
        type: string
      examples:
        experienceId:
          summary: Experience id example
          value: experience_example_001
        projectId:
          summary: Project id example
          value: project_example_001
  schemas:
    Project:
      type: object
      description: Full project record returned by the detail endpoint.
      required:
        - id
        - name
        - summary
        - links
      properties:
        id:
          type: string
          description: Stable identifier for the project.
          example: project_example_001
        name:
          type: string
          description: Project name shown in the portfolio.
          example: Project Atlas
        summary:
          type: string
          description: Short summary of what the project is or does.
          example: Example summary for a customer-facing workflow automation product.
        tags:
          type: array
          description: Tags used to categorize the project.
          items:
            type: string
            description: One project tag.
          example:
            - Workflow automation
            - API integration
            - Example tag
        links:
          $ref: '#/components/schemas/ProjectLinks'
      example:
        id: project_example_001
        name: Project Atlas
        summary: Example summary for a customer-facing workflow automation product.
        tags:
          - Workflow automation
          - API integration
          - Example tag
        links:
          github: https://example.com/project-atlas/repository
          live: https://example.com/project-atlas
          details: https://example.com/projects/project-atlas
    ProjectLinks:
      type: object
      description: External links associated with a project.
      properties:
        github:
          type: string
          format: uri
          description: Repository URL for the project, when available.
          example: https://example.com/project-atlas/repository
        live:
          type: string
          format: uri
          description: Live deployment or demo URL for the project, when available.
          example: https://example.com/project-atlas
        details:
          type: string
          format: uri
          description: URL to a page with additional project details.
          example: https://example.com/projects/project-atlas
      example:
        github: https://example.com/project-atlas/repository
        live: https://example.com/project-atlas
        details: https://example.com/projects/project-atlas
    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.
    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:
    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
    NotFound:
      description: Resource not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            illustrativeResponse:
              summary: Illustrative not found error
              description: Sample values only. Live error messages will vary.
              value:
                error:
                  code: NOT_FOUND
                  message: The requested resource could not be found.
  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>`.

````