C'est Chaud à Paris

Read-only Paris catalogue: events and dates, places, free things, booking links.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
94%
Calidad de los nombres
94%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~10,293Tokens (definiciones de herramientas)
~17.3 KBTamaño de respuesta típico
Impacto significativo en la atención (8.04% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "paris": {
      "url": "https://cestchaud.city/mcp"
    }
  }
}

Puntos de conexión remotos

https://cestchaud.city/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (7)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢search_events(when, date_from, date_to, interests, free, ...)

Finds dated events in Paris by time window, subject, price, free text or distance from a point. Returns each event with its page URL and, where we hold one, a booking link. Relaxes the window or radius when fewer than three events match, and says so in `relaxed`.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "when": {
      "description": "Time window. Mutually exclusive with date_from/date_to.",
      "type": "string",
      "enum": [
        "today",
        "tomorrow",
        "this_weekend",
        "this_week"
      ]
    },
    "date_from": {
      "description": "Paris day, YYYY-MM-DD.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "date_to": {
      "description": "Paris day, YYYY-MM-DD. Inclusive. Defaults to date_from.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "interests": {
      "description": "Filter by subject. Read the `interests` resource for the list.",
      "maxItems": 13,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "expos",
          "concerts",
          "spectacles",
          "humour",
          "theatre",
          "cirque",
          "food_marches",
          "nuit",
          "sport",
          "famille",
          "mode",
          "balades",
          "gratuit"
        ]
      }
    },
    "free": {
      "description": "Only events with free entry.",
      "type": "boolean"
    },
    "price_max": {
      "description": "Budget ceiling in EUR.",
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "query": {
      "description": "Free text over title, venue and organiser.",
      "type": "string",
      "maxLength": 80
    },
    "near": {
      "description": "Restrict to a radius around a point in the Paris area.",
      "type": "object",
      "properties": {
        "lat": {
          "type": "number",
          "minimum": 48,
          "maximum": 49.5
        },
        "lng": {
          "type": "number",
          "minimum": 1.5,
          "maximum": 3.2
        },
        "radius_km": {
          "description": "Defaults to 3.",
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 30
        }
      },
      "required": [
        "lat",
        "lng"
      ]
    },
    "limit": {
      "description": "Defaults to 20.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "offset": {
      "description": "For paging.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000
    },
    "locale": {
      "description": "Language for our own prose. Event titles and place names are never translated.",
      "type": "string",
      "enum": [
        "fr",
        "en",
        "es"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable id. Use it with get_event's `id`, or prefer `slug`."
          },
          "slug": {
            "type": "string",
            "description": "Stable, human-readable key; also the last path segment of `url`."
          },
          "title": {
            "type": "string",
            "description": "The event's own title, in its own language. Never translated (§6.1)."
          },
          "url": {
            "type": "string",
            "description": "Canonical page for this event on our site."
          },
          "format": {
            "type": "string",
            "enum": [
              "dated",
              "evergreen"
            ],
            "description": "dated = it ends on a known date. evergreen = it recurs indefinitely."
          },
          "kind": {
            "type": "string",
            "description": "Event kind: concert, expo, theatre, …"
          },
          "starts_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "ISO 8601 with the Paris offset."
          },
          "ends_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "all_day": {
            "type": "boolean"
          },
          "occurrences": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "starts_at": {
                  "type": "string"
                },
                "ends_at": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "starts_at",
                "ends_at"
              ],
              "additionalProperties": false
            },
            "description": "Upcoming dates, soonest first. Empty means a single date — use `starts_at`."
          },
          "venue": {
            "type": "object",
            "properties": {
              "name": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "url": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Our page for the venue, when it has one."
              },
              "address": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "arrondissement": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Paris arrondissement, 1-20."
              },
              "city": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Set when the venue is outside Paris proper."
              },
              "lat": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "lng": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "name",
              "url",
              "address",
              "arrondissement",
              "city",
              "lat",
              "lng"
            ],
            "additionalProperties": false,
            "description": "Where it happens."
          },
          "interests": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Our interest taxonomy — see the `interests` resource."
          },
          "free": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "Null means we do not know."
          },
          "price": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "from": {
                    "type": "number"
                  },
                  "currency": {
                    "type": "string"
                  },
                  "as_of": {
                    "type": "string"
                  }
                },
                "required": [
                  "from",
                  "currency",
                  "as_of"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "The event's own entry price. Null when absent or older than 24 hours."
          },
          "reservation": {
            "type": "string",
            "enum": [
              "none",
              "recommended",
              "required",
              "invitation"
            ],
            "description": "Whether booking ahead is needed, per the organiser."
          },
          "summary": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Our own description. Null when we have not written one for this event."
          },
          "image": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string"
                  },
                  "credit": {
                    "type": "string"
                  }
                },
                "required": [
                  "url",
                  "credit"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "Only images whose licence allows the URL to travel; `credit` must be shown."
          },
          "booking": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "mode": {
                    "type": "string",
                    "enum": [
                      "affiliate",
                      "direct",
                      "own"
                    ],
                    "description": "affiliate = we earn a commission if the reader books through `url`, and `disclosure` must be shown with the link. direct = a plain link to the seller, we earn nothing, no disclosure needed. own = the seller is a service this publisher also operates, which is a commercial interest of a different kind, and `disclosure` must be shown with the link."
                  },
                  "url": {
                    "type": "string",
                    "description": "Where to book. For mode=affiliate this is a redirect on our domain that forwards to the seller; link to it as given rather than resolving it."
                  },
                  "kind": {
                    "type": "string",
                    "description": "What is on sale: ticket, tour, buy, hotel, …"
                  },
                  "provider": {
                    "type": "string",
                    "description": "Who sells it."
                  },
                  "label": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "The seller's own call to action, if we have one."
                  },
                  "price": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "from": {
                            "type": "number",
                            "description": "Lowest price we have seen, in `currency`."
                          },
                          "currency": {
                            "type": "string",
                            "description": "ISO 4217 code."
                          },
                          "as_of": {
                            "type": "string",
                            "description": "When this price was last verified with the seller (ISO 8601). A price older than 24 hours is omitted entirely rather than shown stale."
                          }
                        },
                        "required": [
                          "from",
                          "currency",
                          "as_of"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Null when we have no price or cannot vouch for its age."
                  },
                  "disclosure": {
                    "type": "object",
                    "properties": {
                      "required": {
                        "type": "boolean",
                        "description": "True for affiliate links. When true, `text` must be shown wherever `url` is."
                      },
                      "text": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "The exact wording to show. Null when not required."
                      },
                      "must_be_shown_with_link": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "required",
                      "text",
                      "must_be_shown_with_link"
                    ],
                    "additionalProperties": false,
                    "description": "Always present, so a consumer never has to tell 'not required' from 'missing'."
                  },
                  "link_rel": {
                    "type": "string",
                    "description": "The rel attribute to use if the link is rendered as HTML."
                  }
                },
                "required": [
                  "mode",
                  "url",
                  "kind",
                  "provider",
                  "label",
                  "price",
                  "disclosure",
                  "link_rel"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "Where to buy. Null when we have no offer for it."
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "distance_km": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Distance from the `near` point, when one was given. Null otherwise."
          }
        },
        "required": [
          "id",
          "slug",
          "title",
          "url",
          "format",
          "kind",
          "starts_at",
          "ends_at",
          "all_day",
          "occurrences",
          "venue",
          "interests",
          "free",
          "price",
          "reservation",
          "summary",
          "image",
          "booking",
          "updated_at",
          "distance_km"
        ],
        "additionalProperties": false
      },
      "description": "The matching events, in the order we would show them."
    },
    "total": {
      "type": "number",
      "description": "How many this response carries."
    },
    "match_count": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "description": "Matches across every page. Null means we could not determine it — never zero."
    },
    "window": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "start": {
              "type": "string"
            },
            "end": {
              "type": "string"
            }
          },
          "required": [
            "start",
            "end"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "The date window actually searched, after any relaxation."
    },
    "relaxed": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "step": {
            "type": "string",
            "enum": [
              "next_day",
              "wider_radius",
              "any_upcoming"
            ],
            "description": "What was widened to find results."
          },
          "to_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "next_day: the day the window now reaches."
          },
          "radius_km": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "wider_radius: the radius now searched."
          },
          "added": {
            "type": "number",
            "description": "How many results this step gained."
          }
        },
        "required": [
          "step",
          "to_date",
          "radius_km",
          "added"
        ],
        "additionalProperties": false
      },
      "description": "Empty when the search ran as asked. Otherwise the steps taken to find anything at all — tell the reader, because the answer is no longer exactly what they asked for."
    },
    "attribution": {
      "type": "object",
      "properties": {
        "source": {
          "type": "string",
          "description": "Who assembled this answer."
        },
        "url": {
          "type": "string",
          "description": "The site these records come from."
        },
        "data": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "licence": {
                "type": "string"
              }
            },
            "required": [
              "name",
              "licence"
            ],
            "additionalProperties": false
          },
          "description": "Upstream datasets and their licences. ODbL requires naming them wherever the data is used."
        },
        "terms": {
          "type": "string",
          "description": "Terms for using this surface."
        }
      },
      "required": [
        "source",
        "url",
        "data",
        "terms"
      ],
      "additionalProperties": false,
      "description": "Who to credit and under what licence. The ODbL datasets behind most of this data require attribution wherever the data is used, including inside an answer you generate."
    }
  },
  "required": [
    "items",
    "total",
    "match_count",
    "window",
    "relaxed",
    "attribution"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_event(slug, locale)

Returns one event by slug: its dates, venue, subject tags, our own description where we have written one, and a booking link where we hold an offer. Use it after search_events, or when you already have an event URL.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The event's slug — the last path segment of its page URL."
    },
    "locale": {
      "description": "Language for our own prose. The event's title is never translated.",
      "type": "string",
      "enum": [
        "fr",
        "en",
        "es"
      ]
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "event": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Stable id. Use it with get_event's `id`, or prefer `slug`."
        },
        "slug": {
          "type": "string",
          "description": "Stable, human-readable key; also the last path segment of `url`."
        },
        "title": {
          "type": "string",
          "description": "The event's own title, in its own language. Never translated (§6.1)."
        },
        "url": {
          "type": "string",
          "description": "Canonical page for this event on our site."
        },
        "format": {
          "type": "string",
          "enum": [
            "dated",
            "evergreen"
          ],
          "description": "dated = it ends on a known date. evergreen = it recurs indefinitely."
        },
        "kind": {
          "type": "string",
          "description": "Event kind: concert, expo, theatre, …"
        },
        "starts_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "ISO 8601 with the Paris offset."
        },
        "ends_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "all_day": {
          "type": "boolean"
        },
        "occurrences": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "starts_at": {
                "type": "string"
              },
              "ends_at": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "starts_at",
              "ends_at"
            ],
            "additionalProperties": false
          },
          "description": "Upcoming dates, soonest first. Empty means a single date — use `starts_at`."
        },
        "venue": {
          "type": "object",
          "properties": {
            "name": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Our page for the venue, when it has one."
            },
            "address": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "arrondissement": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Paris arrondissement, 1-20."
            },
            "city": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Set when the venue is outside Paris proper."
            },
            "lat": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ]
            },
            "lng": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "name",
            "url",
            "address",
            "arrondissement",
            "city",
            "lat",
            "lng"
          ],
          "additionalProperties": false,
          "description": "Where it happens."
        },
        "interests": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Our interest taxonomy — see the `interests` resource."
        },
        "free": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "description": "Null means we do not know."
        },
        "price": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "from": {
                  "type": "number"
                },
                "currency": {
                  "type": "string"
                },
                "as_of": {
                  "type": "string"
                }
              },
              "required": [
                "from",
                "currency",
                "as_of"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ],
          "description": "The event's own entry price. Null when absent or older than 24 hours."
        },
        "reservation": {
          "type": "string",
          "enum": [
            "none",
            "recommended",
            "required",
            "invitation"
          ],
          "description": "Whether booking ahead is needed, per the organiser."
        },
        "summary": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Our own description. Null when we have not written one for this event."
        },
        "image": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string"
                },
                "credit": {
                  "type": "string"
                }
              },
              "required": [
                "url",
                "credit"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ],
          "description": "Only images whose licence allows the URL to travel; `credit` must be shown."
        },
        "booking": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "mode": {
                  "type": "string",
                  "enum": [
                    "affiliate",
                    "direct",
                    "own"
                  ],
                  "description": "affiliate = we earn a commission if the reader books through `url`, and `disclosure` must be shown with the link. direct = a plain link to the seller, we earn nothing, no disclosure needed. own = the seller is a service this publisher also operates, which is a commercial interest of a different kind, and `disclosure` must be shown with the link."
                },
                "url": {
                  "type": "string",
                  "description": "Where to book. For mode=affiliate this is a redirect on our domain that forwards to the seller; link to it as given rather than resolving it."
                },
                "kind": {
                  "type": "string",
                  "description": "What is on sale: ticket, tour, buy, hotel, …"
                },
                "provider": {
                  "type": "string",
                  "description": "Who sells it."
                },
                "label": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "The seller's own call to action, if we have one."
                },
                "price": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "from": {
                          "type": "number",
                          "description": "Lowest price we have seen, in `currency`."
                        },
                        "currency": {
                          "type": "string",
                          "description": "ISO 4217 code."
                        },
                        "as_of": {
                          "type": "string",
                          "description": "When this price was last verified with the seller (ISO 8601). A price older than 24 hours is omitted entirely rather than shown stale."
                        }
                      },
                      "required": [
                        "from",
                        "currency",
                        "as_of"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Null when we have no price or cannot vouch for its age."
                },
                "disclosure": {
                  "type": "object",
                  "properties": {
                    "required": {
                      "type": "boolean",
                      "description": "True for affiliate links. When true, `text` must be shown wherever `url` is."
                    },
                    "text": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The exact wording to show. Null when not required."
                    },
                    "must_be_shown_with_link": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "required",
                    "text",
                    "must_be_shown_with_link"
                  ],
                  "additionalProperties": false,
                  "description": "Always present, so a consumer never has to tell 'not required' from 'missing'."
                },
                "link_rel": {
                  "type": "string",
                  "description": "The rel attribute to use if the link is rendered as HTML."
                }
              },
              "required": [
                "mode",
                "url",
                "kind",
                "provider",
                "label",
                "price",
                "disclosure",
                "link_rel"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ],
          "description": "Where to buy. Null when we have no offer for it."
        },
        "updated_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "id",
        "slug",
        "title",
        "url",
        "format",
        "kind",
        "starts_at",
        "ends_at",
        "all_day",
        "occurrences",
        "venue",
        "interests",
        "free",
        "price",
        "reservation",
        "summary",
        "image",
        "booking",
        "updated_at"
      ],
      "additionalProperties": false,
      "description": "The event, with its full date list and venue resolved."
    },
    "attribution": {
      "type": "object",
      "properties": {
        "source": {
          "type": "string",
          "description": "Who assembled this answer."
        },
        "url": {
          "type": "string",
          "description": "The site these records come from."
        },
        "data": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "licence": {
                "type": "string"
              }
            },
            "required": [
              "name",
              "licence"
            ],
            "additionalProperties": false
          },
          "description": "Upstream datasets and their licences. ODbL requires naming them wherever the data is used."
        },
        "terms": {
          "type": "string",
          "description": "Terms for using this surface."
        }
      },
      "required": [
        "source",
        "url",
        "data",
        "terms"
      ],
      "additionalProperties": false,
      "description": "Who to credit and under what licence. The ODbL datasets behind most of this data require attribution wherever the data is used, including inside an answer you generate."
    }
  },
  "required": [
    "event",
    "attribution"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢search_places(query, category, good_for, open_now, free_entry, ...)

Finds cafés, parks, museums, pools, libraries and other places in Paris by kind, amenity, whether they are open now, or distance from a point. Each place carries how reliably it stays cool, what it suits, and its page URL.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Free text over name and address.",
      "type": "string",
      "maxLength": 80
    },
    "category": {
      "description": "Restrict to one kind of place.",
      "type": "string",
      "enum": [
        "cafe",
        "restaurant",
        "bar",
        "ice_cream",
        "library",
        "museum",
        "mall",
        "church",
        "park",
        "playground",
        "pool",
        "fountain",
        "coworking",
        "public_cool_room"
      ]
    },
    "good_for": {
      "description": "What the visitor wants to do there: work, study, shelter, family, quick_cool.",
      "type": "string",
      "enum": [
        "work",
        "study",
        "shelter",
        "family",
        "quick_cool"
      ]
    },
    "open_now": {
      "description": "Only places open at the time of the call.",
      "type": "boolean"
    },
    "free_entry": {
      "description": "Only places you can enter without paying.",
      "type": "boolean"
    },
    "has_air_conditioning": {
      "description": "Only places with verified AC.",
      "type": "boolean"
    },
    "wifi": {
      "description": "Only places with verified wifi.",
      "type": "boolean"
    },
    "power_outlets": {
      "description": "Only places with verified power sockets.",
      "type": "boolean"
    },
    "near": {
      "description": "Sort by distance from a point in the Paris area instead of by arrondissement.",
      "type": "object",
      "properties": {
        "lat": {
          "type": "number",
          "minimum": 48,
          "maximum": 49.5
        },
        "lng": {
          "type": "number",
          "minimum": 1.5,
          "maximum": 3.2
        }
      },
      "required": [
        "lat",
        "lng"
      ]
    },
    "limit": {
      "description": "Defaults to 20.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "offset": {
      "description": "For paging.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000
    },
    "locale": {
      "description": "Language for our own prose. Place names are never translated.",
      "type": "string",
      "enum": [
        "fr",
        "en",
        "es"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "description": "The place's own name, in its own language. Never translated (§6.1)."
          },
          "url": {
            "type": "string",
            "description": "Canonical page for this place on our site."
          },
          "category": {
            "type": "string",
            "description": "cafe, parc, musee, piscine, bibliotheque, …"
          },
          "summary": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "One line about it, in the requested language."
          },
          "address": {
            "type": "string"
          },
          "arrondissement": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Paris arrondissement, 1-20."
          },
          "lat": {
            "type": "number"
          },
          "lng": {
            "type": "number"
          },
          "coolness": {
            "type": "number",
            "description": "1-3: how reliably cool it stays in a heatwave. 3 is the strongest refuge."
          },
          "amenities": {
            "type": "object",
            "properties": {
              "air_conditioning": {
                "type": "string",
                "enum": [
                  "yes",
                  "no",
                  "unknown"
                ],
                "description": "'unknown' is a real answer: not verified, as opposed to absent."
              },
              "wifi": {
                "type": "string",
                "enum": [
                  "yes",
                  "no",
                  "unknown"
                ],
                "description": "'unknown' is a real answer: not verified, as opposed to absent."
              },
              "power_outlets": {
                "type": "string",
                "enum": [
                  "yes",
                  "no",
                  "unknown"
                ],
                "description": "'unknown' is a real answer: not verified, as opposed to absent."
              },
              "quiet": {
                "type": "string",
                "enum": [
                  "yes",
                  "no",
                  "unknown"
                ],
                "description": "'unknown' is a real answer: not verified, as opposed to absent."
              },
              "free_entry": {
                "type": "boolean"
              }
            },
            "required": [
              "air_conditioning",
              "wifi",
              "power_outlets",
              "quiet",
              "free_entry"
            ],
            "additionalProperties": false
          },
          "good_for": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "What it suits: work, study, shelter, family, quick_cool."
          },
          "opening_hours": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ],
            "description": "Per-weekday open intervals in local time. Null when we do not hold them."
          },
          "image": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string"
                  },
                  "credit": {
                    "type": "string"
                  }
                },
                "required": [
                  "url",
                  "credit"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "Only images whose licence allows the URL to travel; `credit` must be shown."
          },
          "booking": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "mode": {
                    "type": "string",
                    "enum": [
                      "affiliate",
                      "direct",
                      "own"
                    ],
                    "description": "affiliate = we earn a commission if the reader books through `url`, and `disclosure` must be shown with the link. direct = a plain link to the seller, we earn nothing, no disclosure needed. own = the seller is a service this publisher also operates, which is a commercial interest of a different kind, and `disclosure` must be shown with the link."
                  },
                  "url": {
                    "type": "string",
                    "description": "Where to book. For mode=affiliate this is a redirect on our domain that forwards to the seller; link to it as given rather than resolving it."
                  },
                  "kind": {
                    "type": "string",
                    "description": "What is on sale: ticket, tour, buy, hotel, …"
                  },
                  "provider": {
                    "type": "string",
                    "description": "Who sells it."
                  },
                  "label": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "The seller's own call to action, if we have one."
                  },
                  "price": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "from": {
                            "type": "number",
                            "description": "Lowest price we have seen, in `currency`."
                          },
                          "currency": {
                            "type": "string",
                            "description": "ISO 4217 code."
                          },
                          "as_of": {
                            "type": "string",
                            "description": "When this price was last verified with the seller (ISO 8601). A price older than 24 hours is omitted entirely rather than shown stale."
                          }
                        },
                        "required": [
                          "from",
                          "currency",
                          "as_of"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "Null when we have no price or cannot vouch for its age."
                  },
                  "disclosure": {
                    "type": "object",
                    "properties": {
                      "required": {
                        "type": "boolean",
                        "description": "True for affiliate links. When true, `text` must be shown wherever `url` is."
                      },
                      "text": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "The exact wording to show. Null when not required."
                      },
                      "must_be_shown_with_link": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "required",
                      "text",
                      "must_be_shown_with_link"
                    ],
                    "additionalProperties": false,
                    "description": "Always present, so a consumer never has to tell 'not required' from 'missing'."
                  },
                  "link_rel": {
                    "type": "string",
                    "description": "The rel attribute to use if the link is rendered as HTML."
                  }
                },
                "required": [
                  "mode",
                  "url",
                  "kind",
                  "provider",
                  "label",
                  "price",
                  "disclosure",
                  "link_rel"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "Tickets or paid entry, when we have an offer."
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "distance_km": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Distance from the `near` point, when one was given. Null otherwise."
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "url",
          "category",
          "summary",
          "address",
          "arrondissement",
          "lat",
          "lng",
          "coolness",
          "amenities",
          "good_for",
          "opening_hours",
          "image",
          "booking",
          "updated_at",
          "distance_km"
        ],
        "additionalProperties": false
      },
      "description": "The matching places, in the order we would show them."
    },
    "total": {
      "type": "number",
      "description": "How many this response carries."
    },
    "match_count": {
      "type": "number",
      "description": "Matches across every page."
    },
    "attribution": {
      "type": "object",
      "properties": {
        "source": {
          "type": "string",
          "description": "Who assembled this answer."
        },
        "url": {
          "type": "string",
          "description": "The site these records come from."
        },
        "data": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "licence": {
                "type": "string"
              }
            },
            "required": [
              "name",
              "licence"
            ],
            "additionalProperties": false
          },
          "description": "Upstream datasets and their licences. ODbL requires naming them wherever the data is used."
        },
        "terms": {
          "type": "string",
          "description": "Terms for using this surface."
        }
      },
      "required": [
        "source",
        "url",
        "data",
        "terms"
      ],
      "additionalProperties": false,
      "description": "Who to credit and under what licence. The ODbL datasets behind most of this data require attribution wherever the data is used, including inside an answer you generate."
    }
  },
  "required": [
    "items",
    "total",
    "match_count",
    "attribution"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢get_place(slug, locale)

Returns one place by slug with its address, coordinates, amenities, opening hours and how reliably it stays cool, plus the nearest other places. Use it after search_places, or when you already have a place URL.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The place's slug — the last path segment of its page URL."
    },
    "locale": {
      "description": "Language for our own prose. The place's name is never translated.",
      "type": "string",
      "enum": [
        "fr",
        "en",
        "es"
      ]
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "place": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "slug": {
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "The place's own name, in its own language. Never translated (§6.1)."
        },
        "url": {
          "type": "string",
          "description": "Canonical page for this place on our site."
        },
        "category": {
          "type": "string",
          "description": "cafe, parc, musee, piscine, bibliotheque, …"
        },
        "summary": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "One line about it, in the requested language."
        },
        "address": {
          "type": "string"
        },
        "arrondissement": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "description": "Paris arrondissement, 1-20."
        },
        "lat": {
          "type": "number"
        },
        "lng": {
          "type": "number"
        },
        "coolness": {
          "type": "number",
          "description": "1-3: how reliably cool it stays in a heatwave. 3 is the strongest refuge."
        },
        "amenities": {
          "type": "object",
          "properties": {
            "air_conditioning": {
              "type": "string",
              "enum": [
                "yes",
                "no",
                "unknown"
              ],
              "description": "'unknown' is a real answer: not verified, as opposed to absent."
            },
            "wifi": {
              "type": "string",
              "enum": [
                "yes",
                "no",
                "unknown"
              ],
              "description": "'unknown' is a real answer: not verified, as opposed to absent."
            },
            "power_outlets": {
              "type": "string",
              "enum": [
                "yes",
                "no",
                "unknown"
              ],
              "description": "'unknown' is a real answer: not verified, as opposed to absent."
            },
            "quiet": {
              "type": "string",
              "enum": [
                "yes",
                "no",
                "unknown"
              ],
              "description": "'unknown' is a real answer: not verified, as opposed to absent."
            },
            "free_entry": {
              "type": "boolean"
            }
          },
          "required": [
            "air_conditioning",
            "wifi",
            "power_outlets",
            "quiet",
            "free_entry"
          ],
          "additionalProperties": false
        },
        "good_for": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "What it suits: work, study, shelter, family, quick_cool."
        },
        "opening_hours": {
          "anyOf": [
            {},
            {
              "type": "null"
            }
          ],
          "description": "Per-weekday open intervals in local time. Null when we do not hold them."
        },
        "image": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string"
                },
                "credit": {
                  "type": "string"
                }
              },
              "required": [
                "url",
                "credit"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ],
          "description": "Only images whose licence allows the URL to travel; `credit` must be shown."
        },
        "booking": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "mode": {
                  "type": "string",
                  "enum": [
                    "affiliate",
                    "direct",
                    "own"
                  ],
                  "description": "affiliate = we earn a commission if the reader books through `url`, and `disclosure` must be shown with the link. direct = a plain link to the seller, we earn nothing, no disclosure needed. own = the seller is a service this publisher also operates, which is a commercial interest of a different kind, and `disclosure` must be shown with the link."
                },
                "url": {
                  "type": "string",
                  "description": "Where to book. For mode=affiliate this is a redirect on our domain that forwards to the seller; link to it as given rather than resolving it."
                },
                "kind": {
                  "type": "string",
                  "description": "What is on sale: ticket, tour, buy, hotel, …"
                },
                "provider": {
                  "type": "string",
                  "description": "Who sells it."
                },
                "label": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "The seller's own call to action, if we have one."
                },
                "price": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "from": {
                          "type": "number",
                          "description": "Lowest price we have seen, in `currency`."
                        },
                        "currency": {
                          "type": "string",
                          "description": "ISO 4217 code."
                        },
                        "as_of": {
                          "type": "string",
                          "description": "When this price was last verified with the seller (ISO 8601). A price older than 24 hours is omitted entirely rather than shown stale."
                        }
                      },
                      "required": [
                        "from",
                        "currency",
                        "as_of"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Null when we have no price or cannot vouch for its age."
                },
                "disclosure": {
                  "type": "object",
                  "properties": {
                    "required": {
                      "type": "boolean",
                      "description": "True for affiliate links. When true, `text` must be shown wherever `url` is."
                    },
                    "text": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "The exact wording to show. Null when not required."
                    },
                    "must_be_shown_with_link": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "required",
                    "text",
                    "must_be_shown_with_link"
                  ],
                  "additionalProperties": false,
                  "description": "Always present, so a consumer never has to tell 'not required' from 'missing'."
                },
                "link_rel": {
                  "type": "string",
                  "description": "The rel attribute to use if the link is rendered as HTML."
                }
              },
              "required": [
                "mode",
                "url",
                "kind",
                "provider",
                "label",
                "price",
                "disclosure",
                "link_rel"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ],
          "description": "Tickets or paid entry, when we have an offer."
        },
        "updated_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "id",
        "slug",
        "name",
        "url",
        "category",
        "summary",
        "address",
        "arrondissement",
        "lat",
        "lng",
        "coolness",
        "amenities",
        "good_for",
        "opening_hours",
        "image",
        "booking",
        "updated_at"
      ],
      "additionalProperties": false,
      "description": "The place, with its photo credit and opening hours where we hold them."
    },
    "nearby": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "description": "In its own language. Never translated."
          },
          "url": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "distance_km": {
            "type": "number"
          }
        },
        "required": [
          "slug",
          "name",
          "url",
          "category",
          "distance_km"
        ],
        "additionalProperties": false
      },
      "description": "Other places within walking distance, nearest first — the next stop."
    },
    "attribution": {
      "type": "object",
      "properties": {
        "source": {
          "type": "string",
          "description": "Who assembled this answer."
        },
        "url": {
          "type": "string",
          "description": "The site these records come from."
        },
        "data": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "licence": {
                "type": "string"
              }
            },
            "required": [
              "name",
              "licence"
            ],
            "additionalProperties": false
          },
          "description": "Upstream datasets and their licences. ODbL requires naming them wherever the data is used."
        },
        "terms": {
          "type": "string",
          "description": "Terms for using this surface."
        }
      },
      "required": [
        "source",
        "url",
        "data",
        "terms"
      ],
      "additionalProperties": false,
      "description": "Who to credit and under what licence. The ODbL datasets behind most of this data require attribution wherever the data is used, including inside an answer you generate."
    }
  },
  "required": [
    "place",
    "nearby",
    "attribution"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢search_all(query, type, limit, offset)

Searches events, activities, places and guides at once by name or text, for when the kind of thing is not known in advance. Each hit says which kind it is and carries the slug to pass to get_event or get_place.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2,
      "maxLength": 80,
      "description": "What to look for. At least two characters — one matches most of the catalogue."
    },
    "type": {
      "description": "Restrict to one kind. Omit to search everything.",
      "type": "string",
      "enum": [
        "place",
        "event",
        "activity",
        "article"
      ]
    },
    "limit": {
      "description": "Defaults to 20.",
      "type": "integer",
      "minimum": 1,
      "maximum": 40
    },
    "offset": {
      "description": "For paging.",
      "type": "integer",
      "minimum": 0,
      "maximum": 200
    }
  },
  "required": [
    "query"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "hits": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "place",
              "event",
              "activity",
              "article"
            ],
            "description": "Which kind of thing this is — it decides which capability to call next."
          },
          "slug": {
            "type": "string",
            "description": "Pass this to get_event or get_place."
          },
          "url": {
            "type": "string",
            "description": "Canonical page."
          },
          "title": {
            "type": "string",
            "description": "In its own language. Never translated."
          },
          "subtitle": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "arrondissement": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "category": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "next_start": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Next occurrence, for the dated types. Null for places."
          }
        },
        "required": [
          "type",
          "slug",
          "url",
          "title",
          "subtitle",
          "arrondissement",
          "category",
          "next_start"
        ],
        "additionalProperties": false
      },
      "description": "Matches across every kind, best first."
    },
    "counts": {
      "type": "object",
      "propertyNames": {
        "type": "string",
        "enum": [
          "place",
          "event",
          "activity",
          "article"
        ]
      },
      "additionalProperties": {
        "type": "number"
      },
      "required": [
        "place",
        "event",
        "activity",
        "article"
      ],
      "description": "How many matched per kind — useful for saying 'also 12 places' without a second call."
    },
    "total": {
      "type": "number",
      "description": "How many this response carries."
    },
    "attribution": {
      "type": "object",
      "properties": {
        "source": {
          "type": "string",
          "description": "Who assembled this answer."
        },
        "url": {
          "type": "string",
          "description": "The site these records come from."
        },
        "data": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "licence": {
                "type": "string"
              }
            },
            "required": [
              "name",
              "licence"
            ],
            "additionalProperties": false
          },
          "description": "Upstream datasets and their licences. ODbL requires naming them wherever the data is used."
        },
        "terms": {
          "type": "string",
          "description": "Terms for using this surface."
        }
      },
      "required": [
        "source",
        "url",
        "data",
        "terms"
      ],
      "additionalProperties": false,
      "description": "Who to credit and under what licence. The ODbL datasets behind most of this data require attribution wherever the data is used, including inside an answer you generate."
    }
  },
  "required": [
    "hits",
    "counts",
    "total",
    "attribution"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢moment_now(locale)

Returns the seasonal or cultural moment currently running in Paris — Fashion Week, Christmas, a heatwave — with its hub URL and dates, or the city's seasonal mode when none is running.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "locale": {
      "description": "Language for titles and taglines.",
      "type": "string",
      "enum": [
        "fr",
        "en",
        "es"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "hero": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "slug": {
              "type": "string"
            },
            "url": {
              "type": "string",
              "description": "The moment's hub page — a top-level URL on our site."
            },
            "title": {
              "type": "string"
            },
            "tagline": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "status": {
              "type": "string",
              "description": "Where it is in its lifecycle: prep, live, wind_down, …"
            },
            "starts_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "ends_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "theme": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "slug",
            "url",
            "title",
            "tagline",
            "status",
            "starts_at",
            "ends_at",
            "theme"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "The moment currently taking over the home page, if any."
    },
    "card": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "slug": {
              "type": "string"
            },
            "url": {
              "type": "string",
              "description": "The moment's hub page — a top-level URL on our site."
            },
            "title": {
              "type": "string"
            },
            "tagline": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "status": {
              "type": "string",
              "description": "Where it is in its lifecycle: prep, live, wind_down, …"
            },
            "starts_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "ends_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "theme": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "slug",
            "url",
            "title",
            "tagline",
            "status",
            "starts_at",
            "ends_at",
            "theme"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "The next one alongside it, if any."
    },
    "seasonal_default": {
      "type": "string",
      "enum": [
        "summer",
        "shoulder"
      ],
      "description": "The city's mode when no moment is taking over. Always meaningful."
    },
    "attribution": {
      "type": "object",
      "properties": {
        "source": {
          "type": "string",
          "description": "Who assembled this answer."
        },
        "url": {
          "type": "string",
          "description": "The site these records come from."
        },
        "data": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "licence": {
                "type": "string"
              }
            },
            "required": [
              "name",
              "licence"
            ],
            "additionalProperties": false
          },
          "description": "Upstream datasets and their licences. ODbL requires naming them wherever the data is used."
        },
        "terms": {
          "type": "string",
          "description": "Terms for using this surface."
        }
      },
      "required": [
        "source",
        "url",
        "data",
        "terms"
      ],
      "additionalProperties": false,
      "description": "Who to credit and under what licence. The ODbL datasets behind most of this data require attribution wherever the data is used, including inside an answer you generate."
    }
  },
  "required": [
    "hero",
    "card",
    "seasonal_default",
    "attribution"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢esim_plans(gb, unlimited, days, locale)

Returns prepaid eSIM data plans that work in France, for a given amount of data and trip length. Each plan carries its price with the date that price was checked, and a booking link. Relevant when a reader is travelling to Paris from outside the EU and needs mobile data on arrival.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "gb": {
      "description": "Gigabytes wanted. Snaps to the nearest of 1, 3, 5, 10, 20, 50; omit for 10. Use `unlimited` instead for an unmetered plan.",
      "type": "number"
    },
    "unlimited": {
      "description": "Ask for unmetered plans instead of a size.",
      "type": "boolean"
    },
    "days": {
      "description": "How many days the trip lasts. Snaps to the nearest of 7, 15, 30; omit for 15.",
      "type": "number"
    },
    "locale": {
      "description": "Language for the disclosure wording.",
      "type": "string",
      "enum": [
        "fr",
        "en",
        "es"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "description": "ISO 3166-1 alpha-2. Always FR — this is a Paris guide."
    },
    "requested": {
      "type": "object",
      "properties": {
        "data": {
          "type": "string",
          "description": "The ladder rung the query snapped to."
        },
        "days": {
          "type": "number"
        }
      },
      "required": [
        "data",
        "days"
      ],
      "additionalProperties": false,
      "description": "What was actually asked of the catalogue, after snapping."
    },
    "approximate": {
      "type": "boolean",
      "description": "True when nothing matched the requested combination and these are the nearest plans instead. Say so when relaying them."
    },
    "unavailable": {
      "type": "boolean",
      "description": "True when the plan source could not be reached, or returned only prices too old to publish. An empty `items` with this false means there genuinely are none."
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "provider": {
            "type": "string",
            "description": "Who sells the plan."
          },
          "data": {
            "type": "string",
            "description": "Data allowance as sold, e.g. '10 GB' or 'Unlimited'."
          },
          "unlimited": {
            "type": "boolean"
          },
          "days": {
            "type": "number",
            "description": "How many days the plan is valid for."
          },
          "best_value": {
            "type": "boolean",
            "description": "The best price-per-gigabyte of the plans returned for this query."
          },
          "booking": {
            "type": "object",
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "affiliate",
                  "direct",
                  "own"
                ],
                "description": "affiliate = we earn a commission if the reader books through `url`, and `disclosure` must be shown with the link. direct = a plain link to the seller, we earn nothing, no disclosure needed. own = the seller is a service this publisher also operates, which is a commercial interest of a different kind, and `disclosure` must be shown with the link."
              },
              "url": {
                "type": "string",
                "description": "Where to book. For mode=affiliate this is a redirect on our domain that forwards to the seller; link to it as given rather than resolving it."
              },
              "kind": {
                "type": "string",
                "description": "What is on sale: ticket, tour, buy, hotel, …"
              },
              "provider": {
                "type": "string",
                "description": "Who sells it."
              },
              "label": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "The seller's own call to action, if we have one."
              },
              "price": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "from": {
                        "type": "number",
                        "description": "Lowest price we have seen, in `currency`."
                      },
                      "currency": {
                        "type": "string",
                        "description": "ISO 4217 code."
                      },
                      "as_of": {
                        "type": "string",
                        "description": "When this price was last verified with the seller (ISO 8601). A price older than 24 hours is omitted entirely rather than shown stale."
                      }
                    },
                    "required": [
                      "from",
                      "currency",
                      "as_of"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Null when we have no price or cannot vouch for its age."
              },
              "disclosure": {
                "type": "object",
                "properties": {
                  "required": {
                    "type": "boolean",
                    "description": "True for affiliate links. When true, `text` must be shown wherever `url` is."
                  },
                  "text": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "The exact wording to show. Null when not required."
                  },
                  "must_be_shown_with_link": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "required",
                  "text",
                  "must_be_shown_with_link"
                ],
                "additionalProperties": false,
                "description": "Always present, so a consumer never has to tell 'not required' from 'missing'."
              },
              "link_rel": {
                "type": "string",
                "description": "The rel attribute to use if the link is rendered as HTML."
              }
            },
            "required": [
              "mode",
              "url",
              "kind",
              "provider",
              "label",
              "price",
              "disclosure",
              "link_rel"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "provider",
          "data",
          "unlimited",
          "days",
          "best_value",
          "booking"
        ],
        "additionalProperties": false
      },
      "description": "Matching plans, best match first."
    },
    "total": {
      "type": "number",
      "description": "How many plans are in `items`."
    },
    "url": {
      "type": "string",
      "description": "The page a reader can open to do this themselves."
    },
    "attribution": {
      "type": "object",
      "properties": {
        "source": {
          "type": "string",
          "description": "Who assembled this answer."
        },
        "url": {
          "type": "string",
          "description": "The site these records come from."
        },
        "data": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "licence": {
                "type": "string"
              }
            },
            "required": [
              "name",
              "licence"
            ],
            "additionalProperties": false
          },
          "description": "Upstream datasets and their licences. ODbL requires naming them wherever the data is used."
        },
        "terms": {
          "type": "string",
          "description": "Terms for using this surface."
        }
      },
      "required": [
        "source",
        "url",
        "data",
        "terms"
      ],
      "additionalProperties": false,
      "description": "Who to credit and under what licence. The ODbL datasets behind most of this data require attribution wherever the data is used, including inside an answer you generate."
    }
  },
  "required": [
    "country",
    "requested",
    "approximate",
    "unavailable",
    "items",
    "total",
    "url",
    "attribution"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada7 herramientas