> 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.

# Day slots

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

# Company OVAC Day Slots (`query`)

Esta operación permite obtener el desglose detallado de los tramos horarios (`slots`) disponibles para una fecha específica. El método cuenta con una regla de filtrado dinámico del pasado: si se consulta el día en curso, el backend omitirá automáticamente los intervalos anteriores y solo devolverá aquellos cuya hora sea posterior a la hora actual de la solicitud.

### 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 |
| --- | --- | --- | --- |
| companyId | Identificador único de la entidad en OVAC donde se busca la disponibilidad. | SI | Integer |
| statuteId | Identificador interno en OVAC asociado al trámite específico. | NO | Integer |
| date | Fecha de consulta en formato UTC bajo el estándar ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ). | SI | String |
| reservedMode | `true` -> Muestra/aísla los tramos reservados por profesionales.  <br>`false` -> Muestra el horario de atención al público habitual (Valor por defecto). | NO | Boolean |

### Campos de Respuesta (Payload)

La consulta devuelve un array directo de objetos con todos los tramos horarios calculados bajo el campo raíz `companyOVACDaySlots`:

| Parámetro | Descripción | Tipo |
| --- | --- | --- |
| companyOVACDaySlots | Array con la colección de todos los slots horarios calculados para el día. | Array |
| companyOVACDaySlots.**length** | Duración de cada intervalo o hueco de cita expresado en minutos. | Integer |
| companyOVACDaySlots.**utcHour** | Hora de inicio del slot en formato UTC decimal (ej. 6.0 = 06:00, 6.5 = 06:30, 6.25 = 06:15). | Float |
| companyOVACDaySlots.**date** | Fecha y hora específica de inicio del slot en formato ISO 8601 UTC. | String |
| companyOVACDaySlots.**disabled** | Estado de bloqueo del slot. true: Deshabilitado (no se puede reservar); false: Habilitado. | Boolean |
| companyOVACDaySlots.**availability** | Número de huecos netos que quedan libres actualmente en este tramo para agendar. | Integer |
| companyOVACDaySlots.**assignedUsers** | Array con los identificadores numéricos de los agentes disponibles en este tramo. En alta concurrencia. | Array |
| companyOVACDaySlots.**totalAvailability** | Capacidad máxima o concurrencia total de citas simultáneas configurada para el slot. | Integer |

💡 **Nota Aclaratoria: Gestión de Agentes según el Tipo de Concurrencia**

Dependiendo de cómo esté parametrizada la agenda de la entidad o trámite en el backend, la API responderá con lógicas distintas para determinar la ocupación:

- **Baja Concurrencia (****`assignedUsers`****):** No se realiza una asignación dinámica en tiempo real. El array `assignedUsers` expone los IDs de los usuarios/agentes que **ya se encuentran ocupados** con una cita en esa franja. Sirve para descartar de forma preventiva a dichos profesionales.
    
- **Alta Concurrencia (****`users`****):** Se computa la disponibilidad activa por agente en tiempo real. El método puede alternar o exponer un array de usuarios **completamente disponibles**. Este array se ordena automáticamente por carga de trabajo (desde el agente con menos citas hasta el que tiene más) para equilibrar el reparto.
    

## Ejemplos de Código y Peticiones

### 1\. Consulta GraphQL

``` graphql
query CompanyOVACDaySlots (
    $companyId: ID!,
    $statuteId: ID,
    $date: String!,
    $reservedMode: Boolean
){
    companyOVACDaySlots(
        companyId: $companyId,
        statuteId: $statuteId,
        date: $date,
        reservedMode: $reservedMode
    )
}

 ```

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

``` json
{
    "companyId": "2191",
    "statuteId": "",
    "date": "2026-05-19T00:00:00.000Z",
    "reservedMode": false
}

 ```

### 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 companyOVACDaySlots ($companyId: ID!, $statuteId: ID, $date: String!, $reservedMode: Boolean){ companyOVACDaySlots(companyId: $companyId, statuteId: $statuteId, date: $date, reservedMode: $reservedMode) }","variables":{"companyId":"2191","statuteId":"","date":"2026-05-19T00:00:00.000Z","reservedMode":false}}'

 ```

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

``` json
{
    "data": {
        "companyOVACDaySlots": [
            {
                "length": 30,
                "utcHour": 14.5,
                "date": "2026-05-19T14:30:00.000Z",
                "disabled": false,
                "availability": 1,
                "assignedUsers": [],
                "totalAvailability": 1
            },
            {
                "length": 30,
                "utcHour": 15.0,
                "date": "2026-05-19T15:00:00.000Z",
                "disabled": true,
                "availability": 0,
                "assignedUsers": [],
                "totalAvailability": 1
            },
            {
                "length": 30,
                "utcHour": 15.5,
                "date": "2026-05-19T15:30:00.000Z",
                "disabled": true,
                "availability": 0,
                "assignedUsers": [
                    3477
                ],
                "totalAvailability": 1
            },
            {
                "length": 30,
                "utcHour": 16.0,
                "date": "2026-05-19T16:00:00.000Z",
                "disabled": false,
                "availability": 1,
                "assignedUsers": [],
                "totalAvailability": 1
            }
        ]
    }
}



 ```

> **Nota OpenAPI/Fern:** esta operación GraphQL se documenta como `/graphql/companyovacdayslots` 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/company-ovac-day-slots

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: ovac
  version: 1.0.0
paths:
  /graphql/companyovacdayslots:
    post:
      operationId: company-ovac-day-slots
      summary: Day slots
      description: >
        # Company OVAC Day Slots (`query`)


        Esta operación permite obtener el desglose detallado de los tramos
        horarios (`slots`) disponibles para una fecha específica. El método
        cuenta con una regla de filtrado dinámico del pasado: si se consulta el
        día en curso, el backend omitirá automáticamente los intervalos
        anteriores y solo devolverá aquellos cuya hora sea posterior a la hora
        actual de la solicitud.


        ### 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 |

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

        | companyId | Identificador único de la entidad en OVAC donde se busca
        la disponibilidad. | SI | Integer |

        | statuteId | Identificador interno en OVAC asociado al trámite
        específico. | NO | Integer |

        | date | Fecha de consulta en formato UTC bajo el estándar ISO 8601
        (YYYY-MM-DDTHH:mm:ss.sssZ). | SI | String |

        | reservedMode | `true` -> Muestra/aísla los tramos reservados por
        profesionales.  <br>`false` -> Muestra el horario de atención al público
        habitual (Valor por defecto). | NO | Boolean |


        ### Campos de Respuesta (Payload)


        La consulta devuelve un array directo de objetos con todos los tramos
        horarios calculados bajo el campo raíz `companyOVACDaySlots`:


        | Parámetro | Descripción | Tipo |

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

        | companyOVACDaySlots | Array con la colección de todos los slots
        horarios calculados para el día. | Array |

        | companyOVACDaySlots.**length** | Duración de cada intervalo o hueco de
        cita expresado en minutos. | Integer |

        | companyOVACDaySlots.**utcHour** | Hora de inicio del slot en formato
        UTC decimal (ej. 6.0 = 06:00, 6.5 = 06:30, 6.25 = 06:15). | Float |

        | companyOVACDaySlots.**date** | Fecha y hora específica de inicio del
        slot en formato ISO 8601 UTC. | String |

        | companyOVACDaySlots.**disabled** | Estado de bloqueo del slot. true:
        Deshabilitado (no se puede reservar); false: Habilitado. | Boolean |

        | companyOVACDaySlots.**availability** | Número de huecos netos que
        quedan libres actualmente en este tramo para agendar. | Integer |

        | companyOVACDaySlots.**assignedUsers** | Array con los identificadores
        numéricos de los agentes disponibles en este tramo. En alta
        concurrencia. | Array |

        | companyOVACDaySlots.**totalAvailability** | Capacidad máxima o
        concurrencia total de citas simultáneas configurada para el slot. |
        Integer |


        💡 **Nota Aclaratoria: Gestión de Agentes según el Tipo de
        Concurrencia**


        Dependiendo de cómo esté parametrizada la agenda de la entidad o trámite
        en el backend, la API responderá con lógicas distintas para determinar
        la ocupación:


        - **Baja Concurrencia (****`assignedUsers`****):** No se realiza una
        asignación dinámica en tiempo real. El array `assignedUsers` expone los
        IDs de los usuarios/agentes que **ya se encuentran ocupados** con una
        cita en esa franja. Sirve para descartar de forma preventiva a dichos
        profesionales.
            
        - **Alta Concurrencia (****`users`****):** Se computa la disponibilidad
        activa por agente en tiempo real. El método puede alternar o exponer un
        array de usuarios **completamente disponibles**. Este array se ordena
        automáticamente por carga de trabajo (desde el agente con menos citas
        hasta el que tiene más) para equilibrar el reparto.
            

        ## Ejemplos de Código y Peticiones


        ### 1\. Consulta GraphQL


        ``` graphql

        query CompanyOVACDaySlots (
            $companyId: ID!,
            $statuteId: ID,
            $date: String!,
            $reservedMode: Boolean
        ){
            companyOVACDaySlots(
                companyId: $companyId,
                statuteId: $statuteId,
                date: $date,
                reservedMode: $reservedMode
            )
        }

         ```

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


        ``` json

        {
            "companyId": "2191",
            "statuteId": "",
            "date": "2026-05-19T00:00:00.000Z",
            "reservedMode": false
        }

         ```

        ### 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 companyOVACDaySlots ($companyId: ID!,
        $statuteId: ID, $date: String!, $reservedMode: Boolean){
        companyOVACDaySlots(companyId: $companyId, statuteId: $statuteId, date:
        $date, reservedMode: $reservedMode)
        }","variables":{"companyId":"2191","statuteId":"","date":"2026-05-19T00:00:00.000Z","reservedMode":false}}'

         ```

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


        ``` json

        {
            "data": {
                "companyOVACDaySlots": [
                    {
                        "length": 30,
                        "utcHour": 14.5,
                        "date": "2026-05-19T14:30:00.000Z",
                        "disabled": false,
                        "availability": 1,
                        "assignedUsers": [],
                        "totalAvailability": 1
                    },
                    {
                        "length": 30,
                        "utcHour": 15.0,
                        "date": "2026-05-19T15:00:00.000Z",
                        "disabled": true,
                        "availability": 0,
                        "assignedUsers": [],
                        "totalAvailability": 1
                    },
                    {
                        "length": 30,
                        "utcHour": 15.5,
                        "date": "2026-05-19T15:30:00.000Z",
                        "disabled": true,
                        "availability": 0,
                        "assignedUsers": [
                            3477
                        ],
                        "totalAvailability": 1
                    },
                    {
                        "length": 30,
                        "utcHour": 16.0,
                        "date": "2026-05-19T16:00:00.000Z",
                        "disabled": false,
                        "availability": 1,
                        "assignedUsers": [],
                        "totalAvailability": 1
                    }
                ]
            }
        }



         ```

        > **Nota OpenAPI/Fern:** esta operación GraphQL se documenta como
        `/graphql/companyovacdayslots` 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_companyOVACDaySlots_Response_200'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: string
                  description: GraphQL operation
                variables:
                  $ref: >-
                    #/components/schemas/GraphqlCompanyovacdayslotsPostRequestBodyContentApplicationJsonSchemaVariables
                  description: GraphQL variables
              required:
                - query
servers:
  - url: https://api.ovac.pre.councilbox.com
  - url: https://api.ovac.councilbox.com
components:
  schemas:
    GraphqlCompanyovacdayslotsPostRequestBodyContentApplicationJsonSchemaVariables:
      type: object
      properties: {}
      description: GraphQL variables
      title: >-
        GraphqlCompanyovacdayslotsPostRequestBodyContentApplicationJsonSchemaVariables
    OVAC_companyOVACDaySlots_Response_200:
      type: object
      properties: {}
      title: OVAC_companyOVACDaySlots_Response_200
  securitySchemes:
    JwtToken:
      type: apiKey
      in: header
      name: x-jwt-token
      description: JWT token obtained from Login.

```

## SDK Code Examples

```python Day slots
import requests

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

payload = {
    "query": "query companyOVACDaySlots (
    $companyId: ID!,
    $statuteId: ID,
    $date: String!
    $reservedMode: Boolean
){
    companyOVACDaySlots(
        companyId: $companyId,
        statuteId: $statuteId,
        date: $date,
        reservedMode: $reservedMode
    )
}",
    "variables": {
        "companyId": "2191",
        "statuteId": "452",
        "date": "2026-05-19T00:00:00.000Z",
        "reservedMode": False
    }
}
headers = {
    "x-jwt-token": "<apiKey>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Day slots
const url = 'https://api.ovac.pre.councilbox.com/graphql/companyovacdayslots';
const options = {
  method: 'POST',
  headers: {'x-jwt-token': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"query":"query companyOVACDaySlots (\r\n    $companyId: ID!,\r\n    $statuteId: ID,\r\n    $date: String!\r\n    $reservedMode: Boolean\r\n){\r\n    companyOVACDaySlots(\r\n        companyId: $companyId,\r\n        statuteId: $statuteId,\r\n        date: $date,\r\n        reservedMode: $reservedMode\r\n    )\r\n}","variables":{"companyId":"2191","statuteId":"452","date":"2026-05-19T00:00:00.000Z","reservedMode":false}}'
};

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

```go Day slots
package main

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

func main() {

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

	payload := strings.NewReader("{\n  \"query\": \"query companyOVACDaySlots (\\r\\n    $companyId: ID!,\\r\\n    $statuteId: ID,\\r\\n    $date: String!\\r\\n    $reservedMode: Boolean\\r\\n){\\r\\n    companyOVACDaySlots(\\r\\n        companyId: $companyId,\\r\\n        statuteId: $statuteId,\\r\\n        date: $date,\\r\\n        reservedMode: $reservedMode\\r\\n    )\\r\\n}\",\n  \"variables\": {\n    \"companyId\": \"2191\",\n    \"statuteId\": \"452\",\n    \"date\": \"2026-05-19T00:00:00.000Z\",\n    \"reservedMode\": false\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 Day slots
require 'uri'
require 'net/http'

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

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 companyOVACDaySlots (\\r\\n    $companyId: ID!,\\r\\n    $statuteId: ID,\\r\\n    $date: String!\\r\\n    $reservedMode: Boolean\\r\\n){\\r\\n    companyOVACDaySlots(\\r\\n        companyId: $companyId,\\r\\n        statuteId: $statuteId,\\r\\n        date: $date,\\r\\n        reservedMode: $reservedMode\\r\\n    )\\r\\n}\",\n  \"variables\": {\n    \"companyId\": \"2191\",\n    \"statuteId\": \"452\",\n    \"date\": \"2026-05-19T00:00:00.000Z\",\n    \"reservedMode\": false\n  }\n}"

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

```java Day slots
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.ovac.pre.councilbox.com/graphql/companyovacdayslots")
  .header("x-jwt-token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"query\": \"query companyOVACDaySlots (\\r\\n    $companyId: ID!,\\r\\n    $statuteId: ID,\\r\\n    $date: String!\\r\\n    $reservedMode: Boolean\\r\\n){\\r\\n    companyOVACDaySlots(\\r\\n        companyId: $companyId,\\r\\n        statuteId: $statuteId,\\r\\n        date: $date,\\r\\n        reservedMode: $reservedMode\\r\\n    )\\r\\n}\",\n  \"variables\": {\n    \"companyId\": \"2191\",\n    \"statuteId\": \"452\",\n    \"date\": \"2026-05-19T00:00:00.000Z\",\n    \"reservedMode\": false\n  }\n}")
  .asString();
```

```php Day slots
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.ovac.pre.councilbox.com/graphql/companyovacdayslots', [
  'body' => '{
  "query": "query companyOVACDaySlots (\\r\\n    $companyId: ID!,\\r\\n    $statuteId: ID,\\r\\n    $date: String!\\r\\n    $reservedMode: Boolean\\r\\n){\\r\\n    companyOVACDaySlots(\\r\\n        companyId: $companyId,\\r\\n        statuteId: $statuteId,\\r\\n        date: $date,\\r\\n        reservedMode: $reservedMode\\r\\n    )\\r\\n}",
  "variables": {
    "companyId": "2191",
    "statuteId": "452",
    "date": "2026-05-19T00:00:00.000Z",
    "reservedMode": false
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-jwt-token' => '<apiKey>',
  ],
]);

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

```csharp Day slots
using RestSharp;

var client = new RestClient("https://api.ovac.pre.councilbox.com/graphql/companyovacdayslots");
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 companyOVACDaySlots (\\r\\n    $companyId: ID!,\\r\\n    $statuteId: ID,\\r\\n    $date: String!\\r\\n    $reservedMode: Boolean\\r\\n){\\r\\n    companyOVACDaySlots(\\r\\n        companyId: $companyId,\\r\\n        statuteId: $statuteId,\\r\\n        date: $date,\\r\\n        reservedMode: $reservedMode\\r\\n    )\\r\\n}\",\n  \"variables\": {\n    \"companyId\": \"2191\",\n    \"statuteId\": \"452\",\n    \"date\": \"2026-05-19T00:00:00.000Z\",\n    \"reservedMode\": false\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Day slots
import Foundation

let headers = [
  "x-jwt-token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "query": "query companyOVACDaySlots (
    $companyId: ID!,
    $statuteId: ID,
    $date: String!
    $reservedMode: Boolean
){
    companyOVACDaySlots(
        companyId: $companyId,
        statuteId: $statuteId,
        date: $date,
        reservedMode: $reservedMode
    )
}",
  "variables": [
    "companyId": "2191",
    "statuteId": "452",
    "date": "2026-05-19T00:00:00.000Z",
    "reservedMode": false
  ]
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.ovac.pre.councilbox.com/graphql/companyovacdayslots")! 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()
```