Availability Updated
v1eventsUn slot de reserva cambió su estado visible de disponibilidad. Evento delta y selectivo: solo se emite al cruzar el límite disponible ↔ no disponible.
1{
2 "type": "record",
3 "name": "AvailabilityUpdated",
4 "namespace": "reservations.availability",
5 "doc": "Emitido cuando un slot de reserva cruza el limite disponible/no-disponible en bigbox-backend (partner). Representa el estado de disponibilidad visible externamente, con independencia del proveedor (Bigbox, RoomCloud, CoverManager, etc.). Consumido por el servicio search para actualizar la disponibilidad del documento de actividad.",
6 "fields": [
7 {
8 "name": "activity_id",
9 "type": "int",
10 "doc": "Id de la actividad afectada."
11 },
12 {
13 "name": "location_id",
14 "type": "int",
15 "doc": "Id interno de la location (sucursal). Desambigua la misma (provincia, ciudad) entre sucursales; el consumer no lo expone en su API."
16 },
17 {
18 "name": "province_id",
19 "type": ["null", "int"],
20 "default": null
21 },
22 {
23 "name": "city_id",
24 "type": ["null", "int"],
25 "default": null
26 },
27 {
28 "name": "date",
29 "type": "string",
30 "doc": "Fecha del slot en ISO-8601 (date.isoformat())."
31 },
32 {
33 "name": "time",
34 "type": "string",
35 "doc": "Hora del slot en ISO-8601 (time.isoformat())."
36 },
37 {
38 "name": "end_time",
39 "type": ["null", "string"],
40 "default": null,
41 "doc": "Hora de fin del slot en ISO-8601; null si no esta definida. El consumer lo ignora."
42 },
43 {
44 "name": "bookable_until",
45 "type": ["null", "string"],
46 "default": null,
47 "doc": "Ultimo instante en que el slot todavia puede reservarse (hora del turno menos la anticipacion requerida). Datetime naive en hora local del pais del slot. null cuando no se pudo calcular (fail-safe)."
48 },
49 {
50 "name": "source",
51 "type": "string",
52 "doc": "Origen del cambio. Hoy siempre 'bigbox' (AutomaticReservationAvailabilityAdapter.SOURCE). El consumer lo ignora."
53 },
54 {
55 "name": "updated_at",
56 "type": "string",
57 "doc": "timezone.now().isoformat() de Django (aware, TZ del proyecto) al momento de publicar. El consumer lo ignora."
58 },
59 {
60 "name": "available_quotas",
61 "type": "int",
62 "doc": "Cupos restantes tras el cambio. En la practica 0 (el slot se acaba de llenar) o 1 (el slot se acaba de liberar). Nunca negativo. <= 0 hace que el consumer elimine el slot."
63 },
64 {
65 "name": "occurred_at",
66 "type": "string",
67 "doc": "ISO-8601 naive en hora local del proceso. Lo inyecta events.event.Event.__init__."
68 }
69 ]
70}
71Details
- Format
- JSON Schema
- Resource
- events
- Filename
- schema.json