Acme API - Projects

API Projects Endpoints Overview: Create and manage projects, including membership and settings.

Endpoint: GET /api/v1/projects

Description: List all projects accessible to the authenticated user.
Parameters:
  - status (string, optional): Filter by active, archived, or all
  - sort (string, optional): Sort by name, created_at, or updated_at
Response:
  - projects (array): List of project objects
  - total (integer): Total count

Endpoint: POST /api/v1/projects

Description: Create a new project.
Parameters:
  - name (string, required): Project name, must be unique within org
  - description (string, optional): Project description
  - visibility (string, optional): public or private, default private
Response:
  - id (string): New project ID
  - name (string): Confirmed project name
  - created_at (string): ISO 8601 timestamp

Endpoint: GET /api/v1/projects/{project_id}

Description: Get project details including member list and settings.
Parameters:
  - project_id (string, required): Project identifier
Response:
  - id (string): Project ID
  - name (string): Project name
  - description (string): Description
  - members (array): List of member objects with roles
  - settings (object): Project configuration
  - created_at (string): Creation timestamp

Endpoint: PUT /api/v1/projects/{project_id}

Description: Update project settings and metadata.
Parameters:
  - project_id (string, required): Project to update
  - name (string, optional): New name
  - description (string, optional): New description
  - visibility (string, optional): Updated visibility
Response:
  - id (string): Project ID
  - updated_fields (array): Changed fields

Endpoint: POST /api/v1/projects/{project_id}/members

Description: Add a member to the project.
Parameters:
  - project_id (string, required): Target project
  - user_id (string, required): User to add
  - role (string, optional): Member role in project, default "contributor"
Response:
  - project_id (string): Project ID
  - user_id (string): Added user
  - role (string): Assigned role

Endpoint: DELETE /api/v1/projects/{project_id}/members/{user_id}

Description: Remove a member from the project.
Parameters:
  - project_id (string, required): Target project
  - user_id (string, required): User to remove
Response:
  - status (string): "removed"