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

# List projects

> Retrieves a list of Projects associated with a Workspace



## OpenAPI

````yaml /openapi/qlty-api.json get /gh/{ownerKeyOrId}/projects
openapi: 3.1.0
info:
  title: Qlty API
  version: 1.0.0
  description: >-
    The Qlty API is organized around REST. It provides predictable,
    resource-oriented URLs, accepts JSON-encoded request bodies, and returns
    JSON-encoded responses.
servers:
  - url: https://api.qlty.sh
security:
  - BearerAuth: []
  - BasicAuth: []
tags:
  - name: User
    description: Operations for the authenticated user
  - name: Workspaces
    description: Operations for managing workspaces
  - name: Projects
    description: Operations for managing projects
  - name: Issues
    description: Operations for managing issues
  - name: Metrics
    description: Operations for retrieving metrics
paths:
  /gh/{ownerKeyOrId}/projects:
    get:
      tags:
        - Projects
      summary: List projects
      description: Retrieves a list of Projects associated with a Workspace
      operationId: listProjects
      parameters:
        - name: ownerKeyOrId
          in: path
          required: true
          description: The key or ID of the Workspace that owns the Projects
          schema:
            type: string
        - name: page[limit]
          in: query
          description: Maximum number of items to return
          schema:
            type: integer
        - name: page[offset]
          in: query
          description: Number of items to skip
          schema:
            type: integer
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListProjectsResponse'
              example:
                meta:
                  hasMore: false
                data:
                  - id: 85fae897-5a48-483b-ad29-1852c0db1707
                    workspaceId: 1c47b6fd-db56-4fbd-9cf0-4d88f9631050
                    providerUrl: https://github.com/acmeco/awesome-project
                    key: awesome-project
                    workspaceKey: acmeco
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '429':
          $ref: '#/components/responses/TooManyRequestsError'
components:
  schemas:
    ListProjectsResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Project'
          description: List of Project items returned in the response
        meta:
          $ref: '#/components/schemas/PaginationMeta'
      required:
        - data
        - meta
    Project:
      type: object
      properties:
        id:
          type: string
          description: The UUID of the Project
        workspaceId:
          type: string
          description: The UUID of the Workspace this Project belongs to
        providerUrl:
          type: string
          description: >-
            URL to the Project on the provider platform (e.g., GitHub repository
            URL)
        key:
          type: string
          description: The unique key identifier for the Project
        workspaceKey:
          type: string
          description: The key of the Workspace this Project belongs to
      required:
        - id
        - workspaceId
        - providerUrl
        - key
        - workspaceKey
    PaginationMeta:
      type: object
      properties:
        hasMore:
          type: boolean
          description: Indicates if there are more items available for pagination
      required:
        - hasMore
    ErrorBody:
      type: object
      properties:
        status:
          type: string
          description: The HTTP status code of the error
        title:
          type: string
          description: A short, human-readable summary of the error
        detail:
          type: string
          description: A detailed explanation of the error
      required:
        - status
  responses:
    BadRequestError:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
    UnauthorizedError:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
    ForbiddenError:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
    NotFoundError:
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
    TooManyRequestsError:
      description: Too Many Requests
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Generate an API token at https://qlty.sh/user/settings/tokens
    BasicAuth:
      type: http
      scheme: basic
      description: Use your API token as the username with an empty password

````