{
  "api": "vamosalicante-public-api",
  "version": "1",
  "endpoint": "/api/public/v1/policy",
  "ok": true,
  "generatedAt": {
    "epochMs": 1788333417606,
    "madrid": "2026-09-02T09:16:57+02:00",
    "utc": "2026-09-02T07:16:57.606Z"
  },
  "timeZone": "Europe/Madrid",
  "dataType": "STATIC",
  "declaredDataType": "STATIC",
  "observedAt": null,
  "retrievedAt": {
    "epochMs": 1788333417606,
    "madrid": "2026-09-02T09:16:57+02:00",
    "utc": "2026-09-02T07:16:57.606Z"
  },
  "validThrough": null,
  "validUntil": null,
  "timestampContract": {
    "observedAt": "Instante de la medición o cálculo en la fuente. null = la fuente no fecha el dato.",
    "retrievedAt": "Instante en que VamosAlicante ha servido esta respuesta. No es la hora de la medición.",
    "validUntil": "TTL explícito: pasada esta hora el dato se entrega como STALE."
  },
  "ttlSeconds": 3600,
  "freshness": {
    "state": "UNDATED",
    "ageSeconds": null,
    "ttlRemainingSeconds": null
  },
  "source": {
    "name": "VamosAlicante",
    "canonical": "https://vamosalicante.com/data-methodology"
  },
  "attribution": "VamosAlicante (https://vamosalicante.com)",
  "license": "Uso libre para lectura y citación con atribución y enlace a la URL canónica. Reventa de los datos no autorizada.",
  "notes": "PERMITIR EL USO DE LOS DATOS. NO PERMITIR LA EXPORTACIÓN DEL INVENTARIO. Los límites pueden ajustarse sin previo aviso para proteger los activos del sitio.",
  "data": {
    "principle": "El acceso resuelve una necesidad concreta del usuario. Se permite el uso de los datos; no se permite la exportación del inventario.",
    "allowed": [
      "Estado o próximas salidas de una parada concreta.",
      "Disponibilidad de un parking concreto o el estado global del servicio.",
      "Ficha de una entidad concreta identificada por el cliente.",
      "Búsqueda acotada de un conjunto limitado y relevante (por consulta, zona, categoría o coordenada).",
      "Resolución de un trayecto entre origen y destino."
    ],
    "blocked": [
      "Enumerar todas las paradas, fichas o cartas de un sector.",
      "Recorrer identificadores de forma secuencial para reconstruir un catálogo.",
      "Descargas o exportaciones masivas de contenido, fotografías o multimedia.",
      "Series de consultas que, acumuladas, extraen un sector completo."
    ],
    "proportionality": "El volumen entregado es proporcional a la necesidad. Sin parámetro de acotación se devuelve una respuesta resumida con la URL canónica, no el inventario.",
    "cumulativeControl": "Cada cliente se evalúa por su historial reciente (ventana de 60 minutos): número de consultas, entidades únicas por sector, proporción de entidades distintas y patrón de enumeración.",
    "decisions": [
      "allow: respuesta completa dentro del límite del endpoint.",
      "summarize: respuesta resumida por falta de acotación o por historial de enumeración.",
      "quota_exceeded (429): se ha agotado la cuota de la ventana; reintentar más tarde.",
      "bulk_extraction_blocked (403): el patrón acumulado equivale a reconstruir un inventario.",
      "scope_required (403): el volumen pedido exige un nivel de acceso superior."
    ],
    "windowMinutes": 60,
    "budgets": {
      "requestsPerWindow": 300,
      "requestsPerWindowHighValue": 60,
      "uniqueEntitiesPerSectorSoft": 80,
      "uniqueEntitiesPerSectorHard": 160,
      "uniqueEntitiesPerSectorSoftHighValue": 25,
      "uniqueEntitiesPerSectorHardHighValue": 60
    },
    "responseHeaders": {
      "X-Api-Access-Decision": "Decisión aplicada a esta respuesta.",
      "X-Api-Access-Note": "Motivo cuando la respuesta se ha resumido.",
      "X-RateLimit-Limit": "Consultas permitidas en la ventana.",
      "X-RateLimit-Remaining": "Consultas restantes en la ventana.",
      "X-RateLimit-Window": "Duración de la ventana de control."
    },
    "privacy": "El control acumulado usa una huella irreversible (hash) del cliente. No se almacena la IP en claro ni se identifica al usuario final.",
    "higherAccess": "Necesidades legítimas de mayor volumen (investigación, integración, licencia de datos) se atienden por escrito en https://vamosalicante.com/contacto.",
    "endpoints": [
      {
        "path": "/api/public/v1",
        "accessClass": "meta",
        "boundingParams": [],
        "defaultLimit": 0,
        "maxLimit": 0,
        "summaryLimit": 0,
        "highValue": false
      },
      {
        "path": "/api/public/v1/openapi.json",
        "accessClass": "meta",
        "boundingParams": [],
        "defaultLimit": 0,
        "maxLimit": 0,
        "summaryLimit": 0,
        "highValue": false
      },
      {
        "path": "/api/public/v1/policy",
        "accessClass": "meta",
        "boundingParams": [],
        "defaultLimit": 0,
        "maxLimit": 0,
        "summaryLimit": 0,
        "highValue": false,
        "canonical": "https://vamosalicante.com/data-methodology"
      },
      {
        "path": "/api/public/v1/search",
        "accessClass": "inventory",
        "boundingParams": [
          "q"
        ],
        "defaultLimit": 10,
        "maxLimit": 20,
        "summaryLimit": 5,
        "highValue": false,
        "canonical": "https://vamosalicante.com/buscar"
      },
      {
        "path": "/api/public/v1/resolve",
        "accessClass": "inventory",
        "boundingParams": [
          "q",
          "type"
        ],
        "defaultLimit": 5,
        "maxLimit": 10,
        "summaryLimit": 3,
        "highValue": false,
        "canonical": "https://vamosalicante.com/buscar"
      },
      {
        "path": "/api/public/v1/state",
        "accessClass": "entity",
        "boundingParams": [
          "entity_id"
        ],
        "defaultLimit": 20,
        "maxLimit": 40,
        "summaryLimit": 20,
        "highValue": false,
        "canonical": "https://vamosalicante.com/buscar"
      },
      {
        "path": "/api/public/v1/parkings",
        "accessClass": "bounded",
        "boundingParams": [],
        "defaultLimit": 40,
        "maxLimit": 40,
        "summaryLimit": 40,
        "highValue": false,
        "canonical": "https://vamosalicante.com/parkings-libres-ahora"
      },
      {
        "path": "/api/public/v1/weather/now",
        "accessClass": "bounded",
        "boundingParams": [],
        "defaultLimit": 1,
        "maxLimit": 1,
        "summaryLimit": 1,
        "highValue": false,
        "canonical": "https://vamosalicante.com/weather"
      },
      {
        "path": "/api/public/v1/weather/alerts",
        "accessClass": "bounded",
        "boundingParams": [],
        "defaultLimit": 20,
        "maxLimit": 20,
        "summaryLimit": 20,
        "highValue": false,
        "canonical": "https://vamosalicante.com/weather"
      },
      {
        "path": "/api/public/v1/food/places",
        "accessClass": "inventory",
        "boundingParams": [
          "q",
          "cuisine"
        ],
        "defaultLimit": 5,
        "maxLimit": 15,
        "summaryLimit": 3,
        "highValue": true,
        "canonical": "https://vamosalicante.com/food-guide"
      },
      {
        "path": "/api/public/v1/food/search",
        "accessClass": "inventory",
        "boundingParams": [
          "q"
        ],
        "defaultLimit": 5,
        "maxLimit": 15,
        "summaryLimit": 3,
        "highValue": true,
        "canonical": "https://vamosalicante.com/food-guide"
      },
      {
        "path": "/api/public/v1/accommodation/hotels",
        "accessClass": "inventory",
        "boundingParams": [
          "q",
          "stars",
          "zone"
        ],
        "defaultLimit": 6,
        "maxLimit": 20,
        "summaryLimit": 3,
        "highValue": false,
        "canonical": "https://vamosalicante.com/accommodation"
      },
      {
        "path": "/api/public/v1/beaches",
        "accessClass": "inventory",
        "boundingParams": [
          "q",
          "municipality"
        ],
        "defaultLimit": 10,
        "maxLimit": 25,
        "summaryLimit": 6,
        "highValue": false,
        "canonical": "https://vamosalicante.com/beach-guide"
      },
      {
        "path": "/api/public/v1/beaches/flags",
        "accessClass": "bounded",
        "boundingParams": [],
        "defaultLimit": 60,
        "maxLimit": 60,
        "summaryLimit": 60,
        "highValue": false,
        "canonical": "https://vamosalicante.com/beach-guide"
      },
      {
        "path": "/api/public/v1/shopping/zones",
        "accessClass": "inventory",
        "boundingParams": [
          "q"
        ],
        "defaultLimit": 12,
        "maxLimit": 25,
        "summaryLimit": 8,
        "highValue": false,
        "canonical": "https://vamosalicante.com/shopping"
      },
      {
        "path": "/api/public/v1/shopping/businesses",
        "accessClass": "inventory",
        "boundingParams": [
          "q",
          "zone",
          "sector"
        ],
        "defaultLimit": 6,
        "maxLimit": 20,
        "summaryLimit": 3,
        "highValue": false,
        "canonical": "https://vamosalicante.com/shopping"
      },
      {
        "path": "/api/public/v1/nightlife/places",
        "accessClass": "inventory",
        "boundingParams": [
          "q",
          "kind"
        ],
        "defaultLimit": 6,
        "maxLimit": 20,
        "summaryLimit": 3,
        "highValue": false,
        "canonical": "https://vamosalicante.com/nightlife"
      },
      {
        "path": "/api/public/v1/bus/lines",
        "accessClass": "inventory",
        "boundingParams": [
          "q",
          "line"
        ],
        "defaultLimit": 10,
        "maxLimit": 20,
        "summaryLimit": 3,
        "highValue": false,
        "canonical": "https://vamosalicante.com/citybus"
      },
      {
        "path": "/api/public/v1/bus/stops",
        "accessClass": "inventory",
        "boundingParams": [
          "q",
          "line",
          "stop"
        ],
        "defaultLimit": 8,
        "maxLimit": 20,
        "summaryLimit": 3,
        "highValue": false,
        "canonical": "https://vamosalicante.com/citybus"
      },
      {
        "path": "/api/public/v1/bus/arrivals",
        "accessClass": "entity",
        "boundingParams": [
          "stop"
        ],
        "defaultLimit": 20,
        "maxLimit": 40,
        "summaryLimit": 20,
        "highValue": false,
        "canonical": "https://vamosalicante.com/citybus"
      },
      {
        "path": "/api/public/v1/bus/live-arrivals",
        "accessClass": "entity",
        "boundingParams": [
          "stop"
        ],
        "defaultLimit": 20,
        "maxLimit": 40,
        "summaryLimit": 20,
        "highValue": true,
        "canonical": "https://vamosalicante.com/citybus"
      },
      {
        "path": "/api/public/v1/mobility/catch-decision",
        "accessClass": "entity",
        "boundingParams": [
          "stop"
        ],
        "defaultLimit": 20,
        "maxLimit": 40,
        "summaryLimit": 20,
        "highValue": true,
        "canonical": "https://vamosalicante.com/citybus"
      },
      {
        "path": "/api/public/v1/tram/stations",
        "accessClass": "inventory",
        "boundingParams": [
          "q",
          "line_id",
          "stop_id"
        ],
        "defaultLimit": 10,
        "maxLimit": 25,
        "summaryLimit": 3,
        "highValue": false,
        "canonical": "https://vamosalicante.com/citytrain"
      },
      {
        "path": "/api/public/v1/tram/departures",
        "accessClass": "entity",
        "boundingParams": [
          "stop_id"
        ],
        "defaultLimit": 20,
        "maxLimit": 40,
        "summaryLimit": 20,
        "highValue": false,
        "canonical": "https://vamosalicante.com/citytrain"
      },
      {
        "path": "/api/public/v1/train/departures",
        "accessClass": "bounded",
        "boundingParams": [],
        "defaultLimit": 40,
        "maxLimit": 40,
        "summaryLimit": 40,
        "highValue": false,
        "canonical": "https://vamosalicante.com/railway"
      },
      {
        "path": "/api/public/v1/coach/routes",
        "accessClass": "inventory",
        "boundingParams": [
          "q",
          "destination"
        ],
        "defaultLimit": 8,
        "maxLimit": 20,
        "summaryLimit": 3,
        "highValue": false,
        "canonical": "https://vamosalicante.com/coach-travel"
      },
      {
        "path": "/api/public/v1/coach/departures",
        "accessClass": "inventory",
        "boundingParams": [
          "destination",
          "date"
        ],
        "defaultLimit": 10,
        "maxLimit": 25,
        "summaryLimit": 3,
        "highValue": false,
        "canonical": "https://vamosalicante.com/coach-travel"
      },
      {
        "path": "/api/public/v1/car-rental/offices",
        "accessClass": "bounded",
        "boundingParams": [],
        "defaultLimit": 20,
        "maxLimit": 20,
        "summaryLimit": 20,
        "highValue": false,
        "canonical": "https://vamosalicante.com/car-rental"
      },
      {
        "path": "/api/public/v1/fuel/prices",
        "accessClass": "inventory",
        "boundingParams": [
          "q",
          "fuel"
        ],
        "defaultLimit": 8,
        "maxLimit": 20,
        "summaryLimit": 3,
        "highValue": false,
        "canonical": "https://vamosalicante.com/gasolineras-alicante"
      },
      {
        "path": "/api/public/v1/flights",
        "accessClass": "inventory",
        "boundingParams": [
          "city",
          "type",
          "date"
        ],
        "defaultLimit": 15,
        "maxLimit": 40,
        "summaryLimit": 8,
        "highValue": false,
        "canonical": "https://vamosalicante.com/air-travel"
      },
      {
        "path": "/api/public/v1/health/pharmacies",
        "accessClass": "inventory",
        "boundingParams": [
          "q",
          "on_duty"
        ],
        "defaultLimit": 8,
        "maxLimit": 20,
        "summaryLimit": 3,
        "highValue": false,
        "canonical": "https://vamosalicante.com/medical-care"
      },
      {
        "path": "/api/public/v1/health/centers",
        "accessClass": "inventory",
        "boundingParams": [
          "q"
        ],
        "defaultLimit": 6,
        "maxLimit": 20,
        "summaryLimit": 3,
        "highValue": false,
        "canonical": "https://vamosalicante.com/medical-care"
      },
      {
        "path": "/api/public/v1/events",
        "accessClass": "inventory",
        "boundingParams": [
          "category",
          "from",
          "q"
        ],
        "defaultLimit": 8,
        "maxLimit": 20,
        "summaryLimit": 3,
        "highValue": false,
        "canonical": "https://vamosalicante.com/entertainment"
      },
      {
        "path": "/api/public/v1/cinema/showtimes",
        "accessClass": "inventory",
        "boundingParams": [
          "cinema",
          "film"
        ],
        "defaultLimit": 10,
        "maxLimit": 25,
        "summaryLimit": 3,
        "highValue": false,
        "canonical": "https://vamosalicante.com/entertainment"
      },
      {
        "path": "/api/public/v1/tourism/places",
        "accessClass": "inventory",
        "boundingParams": [
          "q",
          "category"
        ],
        "defaultLimit": 6,
        "maxLimit": 20,
        "summaryLimit": 3,
        "highValue": false,
        "canonical": "https://vamosalicante.com/tourists"
      },
      {
        "path": "/api/public/v1/taxi/stops",
        "accessClass": "inventory",
        "boundingParams": [
          "q"
        ],
        "defaultLimit": 6,
        "maxLimit": 20,
        "summaryLimit": 3,
        "highValue": false,
        "canonical": "https://vamosalicante.com/cab-service"
      },
      {
        "path": "/api/public/v1/taxi/tariffs",
        "accessClass": "bounded",
        "boundingParams": [],
        "defaultLimit": 20,
        "maxLimit": 20,
        "summaryLimit": 20,
        "highValue": false,
        "canonical": "https://vamosalicante.com/cab-service"
      },
      {
        "path": "/api/public/v1/bus/c6",
        "accessClass": "bounded",
        "boundingParams": [],
        "defaultLimit": 40,
        "maxLimit": 40,
        "summaryLimit": 40,
        "highValue": false,
        "canonical": "https://vamosalicante.com/autobus-c6-aeropuerto-alicante"
      },
      {
        "path": "/api/public/v1/luggage-storage",
        "accessClass": "inventory",
        "boundingParams": [
          "q"
        ],
        "defaultLimit": 6,
        "maxLimit": 20,
        "summaryLimit": 3,
        "highValue": false,
        "canonical": "https://vamosalicante.com/consignas-equipaje-alicante"
      },
      {
        "path": "/api/public/v1/favorite-stop",
        "accessClass": "entity",
        "boundingParams": [
          "stop"
        ],
        "defaultLimit": 20,
        "maxLimit": 40,
        "summaryLimit": 20,
        "highValue": false,
        "canonical": "https://vamosalicante.com/preferred-bus-stop"
      },
      {
        "path": "/api/public/v1/maps3d/layers",
        "accessClass": "inventory",
        "boundingParams": [
          "layer"
        ],
        "defaultLimit": 25,
        "maxLimit": 60,
        "summaryLimit": 6,
        "highValue": true,
        "canonical": "https://vamosalicante.com/virtual-map"
      }
    ],
    "declaredRules": 41
  }
}