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

# List Projects

> List all projects for the authenticated organization.

Platform JWT callers are rejected with HTTP 403 because platform
agents operate inside a single project scope and have no legitimate
reason to enumerate every project in the tenant.

Returns:
    Projects ordered by name ascending.



## OpenAPI

````yaml https://api.pragmatiks.io/openapi.json get /projects/
openapi: 3.1.0
info:
  title: Pragma API
  version: 0.1.0
servers: []
security: []
paths:
  /projects/:
    get:
      tags:
        - projects
      summary: List Projects
      description: |-
        List all projects for the authenticated organization.

        Platform JWT callers are rejected with HTTP 403 because platform
        agents operate inside a single project scope and have no legitimate
        reason to enumerate every project in the tenant.

        Returns:
            Projects ordered by name ascending.
      operationId: projects-list_projects
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Project'
                type: array
                title: Response Projects-List Projects
components:
  schemas:
    Project:
      properties:
        created_at:
          type: string
          format: date-time
          title: Created At
        updated_at:
          type: string
          format: date-time
          title: Updated At
        project_id:
          type: string
          title: Project Id
        organization_id:
          type: string
          title: Organization Id
        name:
          type: string
          title: Name
        managed_by:
          anyOf:
            - type: string
              enum:
                - user
                - platform
            - type: 'null'
          title: Managed By
      type: object
      required:
        - project_id
        - organization_id
        - name
      title: Project
      description: |-
        Project record persisted in the tenant namespace.

        Projects group resources within an organization. Each resource
        belongs to exactly one project, enabling scoped access control and
        isolation. Project rows live in the per-tenant namespace alongside
        resources so that lifecycle operations on a project and its
        resources execute inside a single tenant-scoped transaction.

        Identity fields (frozen):
            project_id: Unique project identifier, used as the record ID.
            organization_id: Owning organization, set at creation and immutable.
                Denormalised onto the row so platform callers can reason about
                the owner without re-deriving it from the namespace binding.

        Metadata:
            name: Display name of the project.
            managed_by: Ownership tier. ``"platform"`` projects are seeded by
                the platform itself (e.g. the platform-default project used by
                platform agents). User-facing write paths reject mutations to
                platform-managed projects with HTTP 403. ``None`` or ``"user"``
                indicates an ordinary user-created project.

        Inherited from PragmaModel:
            created_at: Creation timestamp (frozen).
            updated_at: Last update timestamp (mutable).

````