> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ovac.councilbox.com/llms.txt.
> For full documentation content, see https://docs.ovac.councilbox.com/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ovac.councilbox.com/_mcp/server.

# Organization Users

POST https://api.ovac.pre.councilbox.com/graphql/organizationusers
Content-Type: application/json

# Organization Users (`query`)

Esta operación permite consultar la información detallada de los usuarios pertenecientes a una organización raíz (corporación) y, de manera específica, obtener el listado de las entidades, delegaciones o centros de atención a los que están vinculados. Está especialmente diseñada para conocer el alcance de gestión de los operarios o filtrar de forma directa por su correo electrónico.

### Autenticación

> **Tipo:** API Key**  
Header:** `x-jwt-token`  
**Ubicación:** Header HTTP_  
Ejemplo:_ `x-jwt-token: eyJhbGciOiJIUzI1NiIsInR5cCI6...` 
  

## Referencia de la API

### Parámetros de entrada (Variables)

| Parámetro | Descripción | Requerido | Tipo |
| --- | --- | --- | --- |
| organizationId | Identificador único de la organización. | SI | Integer |
| options | Parámetros de configuración para paginación (ej. limit y offset). | NO | OptionsInput |
| filters | Colección de criterios de filtrado para acotar la búsqueda de usuarios. | NO | FilterInput |
| filters.**field** | Campo del usuario por el que realizar la búsqueda (para este caso técnico: "email"). | SI (si se filtra) | String |
| filters.**text** | Dirección de correo electrónico exacta que se desea buscar en el sistema. | SI (si se filtra) | String |

### Campos de respuesta (Payload)

La consulta devuelve un objeto contenedor `organizationUsers` estructurado con la siguiente taxonomía de datos:

| Parámetro | Descripción | Tipo |
| --- | --- | --- |
| organizationUsers | Objeto raíz contenedor de los resultados de la consulta de organización. | Objeto |
| organizationUsers.**list** | Array que contiene los usuarios localizados bajo los criterios de filtrado. | Array |
| organizationUsers.list\[\].**id** | Identificador numérico único del usuario en la plataforma (userId). | Integer |
| organizationUsers.list\[\].**name** | Nombre de pila del usuario. | String |
| organizationUsers.list\[\].**surname** | Apellidos completos del usuario. | String |
| organizationUsers.list\[\].**email** | Dirección de correo electrónico corporativo del usuario. | String |
| organizationUsers.list\[\].**roles** | Rol de permisos asignado al usuario dentro de la organización (ej. "superadmin"). | String |
| organizationUsers.list\[\].**externalId** | Identificador único del usuario en los sistemas de origen del cliente (si aplica, si no null). | String |
| organizationUsers.list\[\].**companies** | Matriz o colección de entidades específicas a las que pertenece o tiene acceso el usuario. | Array |
| organizationUsers.list\[\].**companies\[\].id** | Identificador numérico único de la entidad/empresa en la plataforma. | Integer |
| organizationUsers.list\[\].**companies\[\].externalId** | Código identificativo externo de la entidad (si no dispone de él, devuelve null). | String |
| organizationUsers.list\[\].**companies.businessName** | Razón social o denominación oficial de la entidad vinculada. | String |
| total | Número total de registros de usuarios encontrados que cumplen las condiciones. | Integer |

## Ejemplos de código y peticiones

> 💡 **Nota de Integración:** Se ha ajustado la consulta GraphQL de ejemplo para incluir explícitamente el nodo `companies` y el argumento `filters` en la firma de ejecución. De este modo, la petición reflejará de forma fidedigna los datos de filtrado de entrada y el listado de centros del payload de respuesta. 
  

### 1\. Consulta GraphQL

``` graphql
query OrganizationUsers(
    $organizationId: Int!, 
    $options: OptionsInput,
    $filters: [FilterInput]
) {
    organizationUsers(
        corporationId: $organizationId, 
        options: $options,
        filters: $filters
    ) {
        list {
            id
            name
            surname
            email
            roles
            externalId
            companies {
                id
                externalId
                businessName
            }
        }
        total
    }
}

 ```

### 2\. Variables de la petición (JSON Payload)

``` json
{
    "organizationId": 2191,
    "options": {
        "limit": 100,
        "offset": 0
    },
    "filters": [
        {
            "field": "email",
            "text": "alejandro.maneiro+apiprof@councilbox.com"
        }
    ]
}

 ```

### 3\. Ejemplo de comando cURL

``` bash
curl --location "https://api.ovac.pre.councilbox.com/graphql" \
--header "Content-Type: application/json" \
--header "x-jwt-token: {{token}}" \
--data '{"query":"query OrganizationUsers($organizationId: Int!, $options: OptionsInput, $filters: [FilterInput]) { organizationUsers(corporationId: $organizationId, options: $options, filters: $filters) { list { id name surname email roles externalId companies { id externalId businessName } } total } }","variables":{"organizationId":2191,"options":{"limit":100,"offset":0},"filters":[{"field":"email","text":"alejandro.maneiro+apiprof@councilbox.com"}]}}'

 ```

### 4\. Respuesta esperada (200 OK)

``` json
{
    "data": {
        "organizationUsers": {
            "list": [
                {
                    "id": 3477,
                    "name": "API",
                    "surname": "PROFESIONAL",
                    "email": "alejandro.maneiro+apiprof@councilbox.com",
                    "roles": "professionalAdmin",
                    "externalId": null,
                    "companies": [
                        {
                            "id": 2191,
                            "externalId": null,
                            "businessName": "TEST API"
                        }
                    ]
                }
            ],
            "total": 1
        }
    }
}

 ```

> **Nota OpenAPI/Fern:** esta operación GraphQL se documenta como `/graphql/organizationusers` para que Fern pueda mostrarla como operación independiente. La ruta técnica real de ejecución es `POST /graphql`.


Reference: https://docs.ovac.councilbox.com/metodos-api/ovac/organization-users

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: ovac
  version: 1.0.0
paths:
  /graphql/organizationusers:
    post:
      operationId: organization-users
      summary: Organization Users
      description: >
        # Organization Users (`query`)


        Esta operación permite consultar la información detallada de los
        usuarios pertenecientes a una organización raíz (corporación) y, de
        manera específica, obtener el listado de las entidades, delegaciones o
        centros de atención a los que están vinculados. Está especialmente
        diseñada para conocer el alcance de gestión de los operarios o filtrar
        de forma directa por su correo electrónico.


        ### Autenticación


        > **Tipo:** API Key**  

        Header:** `x-jwt-token`  

        **Ubicación:** Header HTTP_  

        Ejemplo:_ `x-jwt-token: eyJhbGciOiJIUzI1NiIsInR5cCI6...` 
          

        ## Referencia de la API


        ### Parámetros de entrada (Variables)


        | Parámetro | Descripción | Requerido | Tipo |

        | --- | --- | --- | --- |

        | organizationId | Identificador único de la organización. | SI |
        Integer |

        | options | Parámetros de configuración para paginación (ej. limit y
        offset). | NO | OptionsInput |

        | filters | Colección de criterios de filtrado para acotar la búsqueda
        de usuarios. | NO | FilterInput |

        | filters.**field** | Campo del usuario por el que realizar la búsqueda
        (para este caso técnico: "email"). | SI (si se filtra) | String |

        | filters.**text** | Dirección de correo electrónico exacta que se desea
        buscar en el sistema. | SI (si se filtra) | String |


        ### Campos de respuesta (Payload)


        La consulta devuelve un objeto contenedor `organizationUsers`
        estructurado con la siguiente taxonomía de datos:


        | Parámetro | Descripción | Tipo |

        | --- | --- | --- |

        | organizationUsers | Objeto raíz contenedor de los resultados de la
        consulta de organización. | Objeto |

        | organizationUsers.**list** | Array que contiene los usuarios
        localizados bajo los criterios de filtrado. | Array |

        | organizationUsers.list\[\].**id** | Identificador numérico único del
        usuario en la plataforma (userId). | Integer |

        | organizationUsers.list\[\].**name** | Nombre de pila del usuario. |
        String |

        | organizationUsers.list\[\].**surname** | Apellidos completos del
        usuario. | String |

        | organizationUsers.list\[\].**email** | Dirección de correo electrónico
        corporativo del usuario. | String |

        | organizationUsers.list\[\].**roles** | Rol de permisos asignado al
        usuario dentro de la organización (ej. "superadmin"). | String |

        | organizationUsers.list\[\].**externalId** | Identificador único del
        usuario en los sistemas de origen del cliente (si aplica, si no null). |
        String |

        | organizationUsers.list\[\].**companies** | Matriz o colección de
        entidades específicas a las que pertenece o tiene acceso el usuario. |
        Array |

        | organizationUsers.list\[\].**companies\[\].id** | Identificador
        numérico único de la entidad/empresa en la plataforma. | Integer |

        | organizationUsers.list\[\].**companies\[\].externalId** | Código
        identificativo externo de la entidad (si no dispone de él, devuelve
        null). | String |

        | organizationUsers.list\[\].**companies.businessName** | Razón social o
        denominación oficial de la entidad vinculada. | String |

        | total | Número total de registros de usuarios encontrados que cumplen
        las condiciones. | Integer |


        ## Ejemplos de código y peticiones


        > 💡 **Nota de Integración:** Se ha ajustado la consulta GraphQL de
        ejemplo para incluir explícitamente el nodo `companies` y el argumento
        `filters` en la firma de ejecución. De este modo, la petición reflejará
        de forma fidedigna los datos de filtrado de entrada y el listado de
        centros del payload de respuesta. 
          

        ### 1\. Consulta GraphQL


        ``` graphql

        query OrganizationUsers(
            $organizationId: Int!, 
            $options: OptionsInput,
            $filters: [FilterInput]
        ) {
            organizationUsers(
                corporationId: $organizationId, 
                options: $options,
                filters: $filters
            ) {
                list {
                    id
                    name
                    surname
                    email
                    roles
                    externalId
                    companies {
                        id
                        externalId
                        businessName
                    }
                }
                total
            }
        }

         ```

        ### 2\. Variables de la petición (JSON Payload)


        ``` json

        {
            "organizationId": 2191,
            "options": {
                "limit": 100,
                "offset": 0
            },
            "filters": [
                {
                    "field": "email",
                    "text": "alejandro.maneiro+apiprof@councilbox.com"
                }
            ]
        }

         ```

        ### 3\. Ejemplo de comando cURL


        ``` bash

        curl --location "https://api.ovac.pre.councilbox.com/graphql" \

        --header "Content-Type: application/json" \

        --header "x-jwt-token: {{token}}" \

        --data '{"query":"query OrganizationUsers($organizationId: Int!,
        $options: OptionsInput, $filters: [FilterInput]) {
        organizationUsers(corporationId: $organizationId, options: $options,
        filters: $filters) { list { id name surname email roles externalId
        companies { id externalId businessName } } total }
        }","variables":{"organizationId":2191,"options":{"limit":100,"offset":0},"filters":[{"field":"email","text":"alejandro.maneiro+apiprof@councilbox.com"}]}}'

         ```

        ### 4\. Respuesta esperada (200 OK)


        ``` json

        {
            "data": {
                "organizationUsers": {
                    "list": [
                        {
                            "id": 3477,
                            "name": "API",
                            "surname": "PROFESIONAL",
                            "email": "alejandro.maneiro+apiprof@councilbox.com",
                            "roles": "professionalAdmin",
                            "externalId": null,
                            "companies": [
                                {
                                    "id": 2191,
                                    "externalId": null,
                                    "businessName": "TEST API"
                                }
                            ]
                        }
                    ],
                    "total": 1
                }
            }
        }

         ```

        > **Nota OpenAPI/Fern:** esta operación GraphQL se documenta como
        `/graphql/organizationusers` para que Fern pueda mostrarla como
        operación independiente. La ruta técnica real de ejecución es `POST
        /graphql`.
      tags:
        - subpackage_ovac
      parameters:
        - name: x-jwt-token
          in: header
          description: JWT token obtained from Login.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: >-
            Successful response. GraphQL business errors may be returned inside
            the JSON `errors` field while transport status remains HTTP 200.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OVAC_organizationUsers_Response_200'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: string
                  description: GraphQL operation
                variables:
                  $ref: >-
                    #/components/schemas/GraphqlOrganizationusersPostRequestBodyContentApplicationJsonSchemaVariables
                  description: GraphQL variables
              required:
                - query
servers:
  - url: https://api.ovac.pre.councilbox.com
  - url: https://api.ovac.councilbox.com
components:
  schemas:
    GraphqlOrganizationusersPostRequestBodyContentApplicationJsonSchemaVariables:
      type: object
      properties: {}
      description: GraphQL variables
      title: >-
        GraphqlOrganizationusersPostRequestBodyContentApplicationJsonSchemaVariables
    OVAC_organizationUsers_Response_200:
      type: object
      properties: {}
      title: OVAC_organizationUsers_Response_200
  securitySchemes:
    JwtToken:
      type: apiKey
      in: header
      name: x-jwt-token
      description: JWT token obtained from Login.

```

## SDK Code Examples

```python Organization Users
import requests

url = "https://api.ovac.pre.councilbox.com/graphql/organizationusers"

payload = {
    "query": "query OrganizationUsers(
    $organizationId: Int,
    $options: OptionsInput
    $filters: [FilterInput]
) {
    organizationUsers(
        corporationId: $organizationId,
        options: $options
        filters: $filters
    ) {
        list {
            id
            name
            surname
            email
            roles
            externalId
            companies {
                id
                externalId
                businessName
            }
        }
        total
    }
}",
    "variables": {
        "organizationId": 1234,
        "options": {
            "limit": 100,
            "offset": 0
        },
        "filters": [
            {
                "field": "",
                "text": ""
            }
        ]
    }
}
headers = {
    "x-jwt-token": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Organization Users
const url = 'https://api.ovac.pre.councilbox.com/graphql/organizationusers';
const options = {
  method: 'POST',
  headers: {'x-jwt-token': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"query":"query OrganizationUsers(\r\n    $organizationId: Int,\r\n    $options: OptionsInput\r\n    $filters: [FilterInput]\r\n) {\r\n    organizationUsers(\r\n        corporationId: $organizationId,\r\n        options: $options\r\n        filters: $filters\r\n    ) {\r\n        list {\r\n            id\r\n            name\r\n            surname\r\n            email\r\n            roles\r\n            externalId\r\n            companies {\r\n                id\r\n                externalId\r\n                businessName\r\n            }\r\n        }\r\n        total\r\n    }\r\n}","variables":{"organizationId":1234,"options":{"limit":100,"offset":0},"filters":[{"field":"","text":""}]}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Organization Users
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.ovac.pre.councilbox.com/graphql/organizationusers"

	payload := strings.NewReader("{\n  \"query\": \"query OrganizationUsers(\\r\\n    $organizationId: Int,\\r\\n    $options: OptionsInput\\r\\n    $filters: [FilterInput]\\r\\n) {\\r\\n    organizationUsers(\\r\\n        corporationId: $organizationId,\\r\\n        options: $options\\r\\n        filters: $filters\\r\\n    ) {\\r\\n        list {\\r\\n            id\\r\\n            name\\r\\n            surname\\r\\n            email\\r\\n            roles\\r\\n            externalId\\r\\n            companies {\\r\\n                id\\r\\n                externalId\\r\\n                businessName\\r\\n            }\\r\\n        }\\r\\n        total\\r\\n    }\\r\\n}\",\n  \"variables\": {\n    \"organizationId\": 1234,\n    \"options\": {\n      \"limit\": 100,\n      \"offset\": 0\n    },\n    \"filters\": [\n      {\n        \"field\": \"\",\n        \"text\": \"\"\n      }\n    ]\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("x-jwt-token", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Organization Users
require 'uri'
require 'net/http'

url = URI("https://api.ovac.pre.councilbox.com/graphql/organizationusers")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-jwt-token"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"query\": \"query OrganizationUsers(\\r\\n    $organizationId: Int,\\r\\n    $options: OptionsInput\\r\\n    $filters: [FilterInput]\\r\\n) {\\r\\n    organizationUsers(\\r\\n        corporationId: $organizationId,\\r\\n        options: $options\\r\\n        filters: $filters\\r\\n    ) {\\r\\n        list {\\r\\n            id\\r\\n            name\\r\\n            surname\\r\\n            email\\r\\n            roles\\r\\n            externalId\\r\\n            companies {\\r\\n                id\\r\\n                externalId\\r\\n                businessName\\r\\n            }\\r\\n        }\\r\\n        total\\r\\n    }\\r\\n}\",\n  \"variables\": {\n    \"organizationId\": 1234,\n    \"options\": {\n      \"limit\": 100,\n      \"offset\": 0\n    },\n    \"filters\": [\n      {\n        \"field\": \"\",\n        \"text\": \"\"\n      }\n    ]\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java Organization Users
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.ovac.pre.councilbox.com/graphql/organizationusers")
  .header("x-jwt-token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"query\": \"query OrganizationUsers(\\r\\n    $organizationId: Int,\\r\\n    $options: OptionsInput\\r\\n    $filters: [FilterInput]\\r\\n) {\\r\\n    organizationUsers(\\r\\n        corporationId: $organizationId,\\r\\n        options: $options\\r\\n        filters: $filters\\r\\n    ) {\\r\\n        list {\\r\\n            id\\r\\n            name\\r\\n            surname\\r\\n            email\\r\\n            roles\\r\\n            externalId\\r\\n            companies {\\r\\n                id\\r\\n                externalId\\r\\n                businessName\\r\\n            }\\r\\n        }\\r\\n        total\\r\\n    }\\r\\n}\",\n  \"variables\": {\n    \"organizationId\": 1234,\n    \"options\": {\n      \"limit\": 100,\n      \"offset\": 0\n    },\n    \"filters\": [\n      {\n        \"field\": \"\",\n        \"text\": \"\"\n      }\n    ]\n  }\n}")
  .asString();
```

```php Organization Users
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.ovac.pre.councilbox.com/graphql/organizationusers', [
  'body' => '{
  "query": "query OrganizationUsers(\\r\\n    $organizationId: Int,\\r\\n    $options: OptionsInput\\r\\n    $filters: [FilterInput]\\r\\n) {\\r\\n    organizationUsers(\\r\\n        corporationId: $organizationId,\\r\\n        options: $options\\r\\n        filters: $filters\\r\\n    ) {\\r\\n        list {\\r\\n            id\\r\\n            name\\r\\n            surname\\r\\n            email\\r\\n            roles\\r\\n            externalId\\r\\n            companies {\\r\\n                id\\r\\n                externalId\\r\\n                businessName\\r\\n            }\\r\\n        }\\r\\n        total\\r\\n    }\\r\\n}",
  "variables": {
    "organizationId": 1234,
    "options": {
      "limit": 100,
      "offset": 0
    },
    "filters": [
      {
        "field": "",
        "text": ""
      }
    ]
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-jwt-token' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp Organization Users
using RestSharp;

var client = new RestClient("https://api.ovac.pre.councilbox.com/graphql/organizationusers");
var request = new RestRequest(Method.POST);
request.AddHeader("x-jwt-token", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"query\": \"query OrganizationUsers(\\r\\n    $organizationId: Int,\\r\\n    $options: OptionsInput\\r\\n    $filters: [FilterInput]\\r\\n) {\\r\\n    organizationUsers(\\r\\n        corporationId: $organizationId,\\r\\n        options: $options\\r\\n        filters: $filters\\r\\n    ) {\\r\\n        list {\\r\\n            id\\r\\n            name\\r\\n            surname\\r\\n            email\\r\\n            roles\\r\\n            externalId\\r\\n            companies {\\r\\n                id\\r\\n                externalId\\r\\n                businessName\\r\\n            }\\r\\n        }\\r\\n        total\\r\\n    }\\r\\n}\",\n  \"variables\": {\n    \"organizationId\": 1234,\n    \"options\": {\n      \"limit\": 100,\n      \"offset\": 0\n    },\n    \"filters\": [\n      {\n        \"field\": \"\",\n        \"text\": \"\"\n      }\n    ]\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Organization Users
import Foundation

let headers = [
  "x-jwt-token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "query": "query OrganizationUsers(
    $organizationId: Int,
    $options: OptionsInput
    $filters: [FilterInput]
) {
    organizationUsers(
        corporationId: $organizationId,
        options: $options
        filters: $filters
    ) {
        list {
            id
            name
            surname
            email
            roles
            externalId
            companies {
                id
                externalId
                businessName
            }
        }
        total
    }
}",
  "variables": [
    "organizationId": 1234,
    "options": [
      "limit": 100,
      "offset": 0
    ],
    "filters": [
      [
        "field": "",
        "text": ""
      ]
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.ovac.pre.councilbox.com/graphql/organizationusers")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```