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

# Miembros del proyecto

> Agrega, actualiza y elimina miembros de un proyecto.

Usa estos endpoints para controlar quién puede acceder a un proyecto y qué rol tiene. Roles: `Viewer`, `Commenter`, `Editor`, `Admin`, `Owner`.

## Solicitud básica y respuesta

Lista miembros actuales con `GET /api/v1/app/project/{projectId}/member`.

<Accordion title="Parametros del endpoint">
  | Tipo  | Nombre        | Requerido | Notas                                                |
  | ----- | ------------- | --------- | ---------------------------------------------------- |
  | Path  | `projectID`   | Si        | Identificador del proyecto.                          |
  | Query | `page`        | No        | Numero absoluto de pagina, empezando en 1.           |
  | Query | `page_size`   | No        | Numero de elementos por pagina. Predeterminado `20`. |
  | Query | `page_order`  | No        | `ASC` o `DESC`. Predeterminado `ASC`.                |
  | Query | `after`       | No        | Cursor o valor desde el que paginar hacia delante.   |
  | Query | `before`      | No        | Cursor o valor desde el que paginar hacia atras.     |
  | Query | `first`       | No        | Limita a los primeros N elementos tras un cursor.    |
  | Query | `last`        | No        | Limita a los ultimos N elementos antes de un cursor. |
  | Query | `total_count` | No        | Incluye el total en la respuesta.                    |
</Accordion>

```bash theme={null}
curl "https://{BASE_URL}/api/v1/app/project/{projectID}/member?page=1&page_size=50" \
  -H "Authorization: Bearer {API_TOKEN}"
  -H "x-org: {org_slug}"
```

<Accordion title="Ejemplo de respuesta">
  ```json theme={null}
  {
    "data": [
      {
        "id": "member_1a2b3c4d5e6f",
        "role": "Owner",
        "user": {
          "id": "user_4b7c2a1d9e5f3c8b",
          "org_id": "org_2f3a9d1c7b5e4a8f",
          "account_id": "acct_6c8a1f3b2d4e5f7a",
          "name": "Sasha Patel",
          "email": "sasha@auroralabs.com",
          "state": "Active",
          "roles": ["AppAdmin"],
          "created_at": "2026-02-08T14:12:45Z"
        },
        "is_project_member": true
      }
    ],
    "has_next_page": false,
    "has_previous_page": false,
    "total_count": 1
  }
  ```
</Accordion>

## Agregar miembros

<Accordion title="Parametros del endpoint">
  | Tipo | Nombre              | Requerido | Notas                                               |
  | ---- | ------------------- | --------- | --------------------------------------------------- |
  | Path | `projectID`         | Si        | Identificador del proyecto.                         |
  | Body | `members`           | Si        | Lista de miembros a agregar.                        |
  | Body | `members[].user_id` | Si        | Identificador del usuario.                          |
  | Body | `members[].role`    | Si        | `Viewer`, `Commenter`, `Editor`, `Admin` u `Owner`. |
</Accordion>

```bash theme={null}
curl -X POST "https://{BASE_URL}/api/v1/app/project/{projectID}/member" \
  -H "Authorization: Bearer {API_TOKEN}" \
  -H "x-org: {org_slug}" \
  -H "Content-Type: application/json" \
  -d '{
    "members": [
      { "user_id": "{userID}", "role": "Editor" }
    ]
  }'
```

<Accordion title="Ejemplo de respuesta">
  ```json theme={null}
  [
    {
      "id": "member_7f6e5d4c3b2a",
      "role": "Editor",
      "user": {
        "id": "user_9d1c3b5a7f2e4c6d",
        "org_id": "org_2f3a9d1c7b5e4a8f",
        "account_id": "acct_6c8a1f3b2d4e5f7a",
        "name": "Jordan Lee",
        "email": "jordan@auroralabs.com",
        "state": "Active",
        "roles": ["AppMember"],
        "created_at": "2026-02-07T09:20:12Z"
      },
      "is_project_member": true
    }
  ]
  ```
</Accordion>

## Actualizar roles de miembros

<Accordion title="Parametros del endpoint">
  | Tipo | Nombre                | Requerido | Notas                                               |
  | ---- | --------------------- | --------- | --------------------------------------------------- |
  | Path | `projectID`           | Si        | Identificador del proyecto.                         |
  | Body | `members`             | Si        | Lista de miembros a actualizar.                     |
  | Body | `members[].user_id`   | Si        | Identificador del usuario.                          |
  | Body | `members[].role`      | No        | `Viewer`, `Commenter`, `Editor`, `Admin` u `Owner`. |
  | Body | `members[].is_pinned` | No        | Fija o desfija el proyecto para ese miembro.        |
</Accordion>

```bash theme={null}
curl -X PUT "https://{BASE_URL}/api/v1/app/project/{projectID}/member" \
  -H "Authorization: Bearer {API_TOKEN}" \
  -H "x-org: {org_slug}" \
  -H "Content-Type: application/json" \
  -d '{
    "members": [
      { "user_id": "{userID}", "role": "Admin", "is_pinned": true }
    ]
  }'
```

<Accordion title="Ejemplo de respuesta">
  ```json theme={null}
  [
    {
      "id": "member_7f6e5d4c3b2a",
      "role": "Admin",
      "user": {
        "id": "user_9d1c3b5a7f2e4c6d",
        "org_id": "org_2f3a9d1c7b5e4a8f",
        "account_id": "acct_6c8a1f3b2d4e5f7a",
        "name": "Jordan Lee",
        "email": "jordan@auroralabs.com",
        "state": "Active",
        "roles": ["AppMember"],
        "created_at": "2026-02-07T09:20:12Z"
      },
      "is_project_member": true
    }
  ]
  ```
</Accordion>

## Obtener o quitar un miembro

<Tabs>
  <Tab title="Obtener miembro">
    ```bash theme={null}
    curl "https://{BASE_URL}/api/v1/app/project/{projectID}/member/{userID}" \
      -H "Authorization: Bearer {API_TOKEN}"
      -H "x-org: {org_slug}"
    ```

    <Accordion title="Ejemplo de respuesta">
      ```json theme={null}
      {
        "id": "member_7f6e5d4c3b2a",
        "role": "Admin",
        "user": {
          "id": "user_9d1c3b5a7f2e4c6d",
          "org_id": "org_2f3a9d1c7b5e4a8f",
          "account_id": "acct_6c8a1f3b2d4e5f7a",
          "name": "Jordan Lee",
          "email": "jordan@auroralabs.com",
          "state": "Active",
          "roles": ["AppMember"],
          "created_at": "2026-02-07T09:20:12Z"
        },
        "is_project_member": true
      }
      ```
    </Accordion>
  </Tab>

  <Tab title="Eliminar miembro">
    ```bash theme={null}
    curl -X DELETE "https://{BASE_URL}/api/v1/app/project/{projectID}/member/{userID}" \
      -H "Authorization: Bearer {API_TOKEN}"
      -H "x-org: {org_slug}"
    ```

    <Accordion title="Ejemplo de respuesta">
      ```json theme={null}
      {
        "id": "member_7f6e5d4c3b2a",
        "role": "Admin",
        "user": {
          "id": "user_9d1c3b5a7f2e4c6d",
          "name": "Jordan Lee",
          "email": "jordan@auroralabs.com",
          "state": "Active",
          "roles": ["AppMember"],
          "created_at": "2026-02-07T09:20:12Z"
        },
        "is_project_member": false
      }
      ```
    </Accordion>
  </Tab>
</Tabs>

## Errores y casos límite

* **403**: no tienes permisos para administrar miembros.
* **404**: proyecto o usuario no encontrado.
