> ## Documentation Index
> Fetch the complete documentation index at: https://docs.opensource-together.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List projects by user ID

> Get a paginated list of projects for a specific user



## OpenAPI

````yaml get /users/{id}/projects
openapi: 3.0.0
info:
  title: OST API
  description: OST API endpoints
  version: '0.1'
  contact: {}
servers:
  - url: https://api.opensource-together.com
    description: Backend server
security: []
tags:
  - name: ost
    description: ''
paths:
  /users/{id}/projects:
    get:
      tags:
        - User
      summary: List projects by user ID
      description: Get a paginated list of projects for a specific user
      operationId: UserController_listUserProjects
      parameters:
        - name: id
          required: true
          in: path
          description: Public ID of the user
          schema:
            type: string
        - name: page
          required: false
          in: query
          description: Page number for pagination
          schema:
            type: number
        - name: per_page
          required: false
          in: query
          description: Number of projects per page
          schema:
            type: number
        - name: published
          required: false
          in: query
          description: Whether to include published projects
          schema:
            type: boolean
      responses:
        '200':
          description: Projects retrieved
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/ProjectEntity'
                  pagination:
                    type: object
                    properties:
                      total:
                        type: number
                        default: 1
                      lastPage:
                        type: number
                        default: 1
                      currentPage:
                        type: number
                        default: 1
                      size:
                        type: number
                        default: 10
                  timestamp:
                    type: string
                    format: date-time
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      message:
                        type: string
                      code:
                        type: string
                      details:
                        type: object
                  timestamp:
                    type: string
                    format: date-time
        '404':
          description: User not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      message:
                        type: string
                      code:
                        type: string
                      details:
                        type: object
                  timestamp:
                    type: string
                    format: date-time
components:
  schemas:
    ProjectEntity:
      type: object
      properties:
        id:
          type: string
          pattern: ^pjt_[0-9a-fA-F]{32}$
          example: pjt_c54b633eb12f4900b92b34e222096449
        title:
          type: string
          example: My Awesome Project
        description:
          type: string
          nullable: true
          example: A revolutionary web application
        repoUrl:
          type: string
          nullable: true
          example: https://github.com/username/repository
        provider:
          type: string
          enum:
            - GITHUB
            - GITLAB
          example: GITHUB
        image:
          type: string
          nullable: true
          example: https://example.com/image.jpg
        logoUrl:
          type: string
          nullable: true
          example: https://example.com/logo.png
        published:
          type: boolean
          example: true
          description: Whether the project is published and visible to public
        trending:
          type: boolean
          example: true
          description: Whether the project is marked as trending
        githubUrl:
          type: string
          nullable: true
          example: https://github.com/username/repository
        gitlabUrl:
          type: string
          nullable: true
          example: https://gitlab.com/username/repository
        twitterUrl:
          type: string
          nullable: true
          example: https://twitter.com/username
        linkedinUrl:
          type: string
          nullable: true
          example: https://linkedin.com/in/username
        discordUrl:
          type: string
          nullable: true
          example: https://discord.gg/server
        websiteUrl:
          type: string
          nullable: true
          example: https://example.com
        imagesUrls:
          description: Additional project images (max 5)
          type: array
          items:
            type: string
        projectTechStacks:
          description: Project tech stacks (max 10)
          type: array
          items:
            $ref: '#/components/schemas/TechStackEntity'
        projectCategories:
          description: Project categories
          type: array
          items:
            $ref: '#/components/schemas/CategoryEntity'
      required:
        - id
        - title
        - description
        - repoUrl
        - provider
        - image
        - logoUrl
        - published
        - trending
        - githubUrl
        - gitlabUrl
        - twitterUrl
        - linkedinUrl
        - discordUrl
        - websiteUrl
    TechStackEntity:
      type: object
      properties:
        id:
          type: string
          pattern: ^tst_[0-9a-fA-F]{32}$
          example: tst_c54b633eb12f4900b92b34e222096449
        name:
          type: string
          example: React
        iconUrl:
          type: string
          example: >-
            https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/react/react-original.svg
        type:
          type: string
          enum:
            - TECH
            - LANGUAGE
          example: TECH
      required:
        - id
        - name
        - iconUrl
        - type
    CategoryEntity:
      type: object
      properties:
        id:
          type: string
          pattern: ^cat_[0-9a-fA-F]{32}$
          example: cat_c54b633eb12f4900b92b34e222096449
        name:
          type: string
          example: API & Microservices
      required:
        - id
        - name

````