{
    "variable": [
        {
            "id": "baseUrl",
            "key": "baseUrl",
            "type": "string",
            "name": "string",
            "value": "https:\/\/openvan.camp"
        }
    ],
    "info": {
        "name": "OpenVan.camp \u2014 Public API",
        "_postman_id": "b6969bc4-ea2c-4c6e-92de-0a5534962721",
        "description": "Open data API for fuel prices, currency rates and vanlife events. Free to use with attribution (CC BY 4.0).",
        "schema": "https:\/\/schema.getpostman.com\/json\/collection\/v2.1.0\/collection.json"
    },
    "item": [
        {
            "name": "Currency Rates",
            "description": "",
            "item": [
                {
                    "name": "Get currency rates",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/currency\/rates",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/currency\/rates"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns EUR-base exchange rates. By default the response is limited to ~165 ISO 4217\nactive fiat currencies that are realistic for travel\/fuel-price use cases.\n\n**Source chain:** national central banks (RUB\/TRY\/GEL\/UAH\/BYN\/UZS) for precision,\nthen Fawaz API \/ ExchangeRate-API \/ Frankfurter \/ ECB for the long tail.\n\n**Refresh:** Redis-backed cache stored `forever`; refreshed by cron every 6 hours.\nA separate hourly watchdog alerts in Telegram if cache > 25h old.\n\n**HTTP cache:** `Cache-Control: public, max-age=1800` (edge `X-Accel-Expires: 1800`).\nEdge \u043a\u0435\u0448 30 \u043c\u0438\u043d\u0443\u0442 \u2014 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f (\u0440\u0430\u0437 \u0432 6 \u0447\u0430\u0441\u043e\u0432).\nNote: PHP-\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 Cache-Control \u0437\u0430\u0442\u0438\u0440\u0430\u0435\u0442\u0441\u044f nginx \u0447\u0435\u0440\u0435\u0437 `fastcgi_hide_header` +\n`cache-control-map.conf`, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 header \u0432 \u043e\u0442\u0432\u0435\u0442\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f nginx.\n\n**Query parameters:**\n- `include=all` \u2014 return the raw upstream set (~340 codes), including crypto, metals\n  and historical\/legacy codes (BTC, ETH, USDT, XAU, ATS, DEM, VEF, TRL, ZWL, etc.).\n  Without this parameter, those are filtered out.\n\n**Market overrides:** the `meta.overrides` field lists codes whose rate is a manual\nmarket-rate override rather than an official feed. Currently only **CUP** (Cuba uses\na parallel market rate of ~120 CUP\/USD; the official fixing of ~24 CUP\/USD does not\nreflect retail fuel pricing).\n\n**License:** CC BY 4.0 \u2014 free to use with attribution to [OpenVan.camp](https:\/\/openvan.camp).",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"success\": true,\n  \"rates\": {\n    \"EUR\": 1,\n    \"USD\": 1.1641,\n    \"GBP\": 0.8729,\n    \"RUB\": 84.0742,\n    \"TRY\": 53.0915,\n    \"GEL\": 3.1146\n  },\n  \"meta\": {\n    \"count\": 165,\n    \"base\": \"EUR\",\n    \"updated_at\": \"2026-05-19T12:24:28+00:00\",\n    \"refreshed_every_hours\": 6,\n    \"max_age_seconds\": 90000,\n    \"scope\": \"fiat\",\n    \"overrides\": {\n      \"CUP\": {\n        \"reason\": \"dual_exchange_rate\",\n        \"source\": \"market_rate_120_cup_per_usd\",\n        \"note\": \"\u041a\u0443\u0431\u0430: \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0438\u043a\u0441\u0438\u043d\u0433 ~24 CUP\/USD \u0440\u0430\u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u044b\u043d\u043a\u043e\u043c ~120 CUP\/USD.\"\n      }\n    }\n  }\n}",
                            "name": "Success"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Endpoints",
            "description": "",
            "item": [
                {
                    "name": "POST api\/route-cost",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/route-cost",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/route-cost"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"waypoints\":[\"\u0412\u043e\u043b\u0433\u043e\u0433\u0440\u0430\u0434\",\"\u0413\u0440\u0443\u0437\u0438\u044f\",\"\u0410\u043d\u0442\u0430\u043b\u0438\u044f\"],\"tank\":80,\"cons\":10,\"fuel\":\"diesel\",\"currency\":\"RUB\",\"locale\":\"ru\"}"
                        },
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": []
                },
                {
                    "name": "VanSky weather for all countries",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/vansky\/weather",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/vansky\/weather"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "\u0412\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u044b \u2014 \u0441\u0432\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b \/ \u043a\u0430\u0440\u0442\u044b. \u041e\u0442\u0432\u0435\u0442 ~900 \u041a\u0411, \u043a\u0435\u0448\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 1 \u0447\u0430\u0441.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": [\n    {\"country_code\": \"DE\", \"country_slug\": \"germany\", \"van_score\": 90, \"temp_day\": 24.1, \"temp_night\": 14.3, \"solar_kwh\": 2.8, \"sea_temp\": 18.2, \"is_coastal\": true, \"label\": \"ideal\"}\n  ],\n  \"count\": 155,\n  \"updated_at\": \"2026-07-15T02:00:00+03:00\",\n  \"source\": \"Open-Meteo (api.open-meteo.com)\"\n}",
                            "name": "Success (truncated)"
                        }
                    ]
                },
                {
                    "name": "VanSky weather for one country",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/vansky\/weather\/:code",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/vansky\/weather\/:code",
                            "variable": [
                                {
                                    "id": "code",
                                    "key": "code",
                                    "value": "DE",
                                    "description": "ISO 3166-1 alpha-2 \u043a\u043e\u0434 \u0441\u0442\u0440\u0430\u043d\u044b."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u044b (ISO 3166-1 alpha-2).",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "max-age=3600, public"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-ratelimit-limit",
                                    "value": "120"
                                },
                                {
                                    "key": "x-ratelimit-remaining",
                                    "value": "114"
                                },
                                {
                                    "key": "x-seo",
                                    "value": "Liked our optimization? We do technical SEO + GEO. Let's talk -> https:\/\/openvan.camp\/en\/about#contacts"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 200,
                            "body": "{\"data\":{\"code\":\"DE\",\"marine\":{\"sea_temp\":19.5,\"wave_dir\":295,\"swell_dir\":247,\"wave_height\":1.54,\"wave_period\":4.6,\"swell_height\":0,\"swell_period\":5.8,\"wind_wave_dir\":295,\"wind_wave_height\":1.54,\"wind_wave_period\":4.6},\"region\":\"europe\",\"weather\":{\"sunset\":\"2026-07-26T18:58\",\"uv_max\":null,\"sunrise\":\"2026-07-26T03:41\",\"humidity\":65,\"temp_day\":26.5,\"wind_dir\":240,\"wind_max\":15.7,\"dew_point\":12.6,\"precip_sum\":0.2,\"temp_night\":18.4,\"cloud_cover\":75,\"temp_current\":19.4,\"weather_code\":51,\"feels_like_day\":25.3,\"peak_sun_hours\":4.7,\"sunshine_hours\":11.4,\"wind_gusts_max\":37.4,\"precip_prob_max\":0,\"feels_like_night\":18,\"feels_like_current\":18.9,\"shortwave_radiation_sum\":16.89},\"forecast\":[{\"date\":\"2026-07-26\",\"temp_day\":26.5,\"solar_kwh\":2.1,\"van_score\":97,\"temp_night\":18.4,\"drive_score\":100,\"score_label\":\"ideal\",\"sleep_score\":97,\"weather_code\":51},{\"date\":\"2026-07-27\",\"temp_day\":25.5,\"solar_kwh\":2.1,\"van_score\":94,\"temp_night\":16.8,\"drive_score\":99,\"score_label\":\"ideal\",\"sleep_score\":95,\"weather_code\":2},{\"date\":\"2026-07-28\",\"temp_day\":28.4,\"solar_kwh\":2.8,\"van_score\":73,\"temp_night\":14,\"drive_score\":100,\"score_label\":\"comfortable\",\"sleep_score\":88,\"weather_code\":0},{\"date\":\"2026-07-29\",\"temp_day\":33.1,\"solar_kwh\":2.8,\"van_score\":53,\"temp_night\":16.8,\"drive_score\":100,\"score_label\":\"acceptable\",\"sleep_score\":89,\"weather_code\":51},{\"date\":\"2026-07-30\",\"temp_day\":36.2,\"solar_kwh\":2.7,\"van_score\":82,\"temp_night\":19.7,\"drive_score\":94,\"score_label\":\"ideal\",\"sleep_score\":95,\"weather_code\":1},{\"date\":\"2026-07-31\",\"temp_day\":33.7,\"solar_kwh\":2.2,\"van_score\":95,\"temp_night\":20.7,\"drive_score\":100,\"score_label\":\"ideal\",\"sleep_score\":93,\"weather_code\":51},{\"date\":\"2026-08-01\",\"temp_day\":28.8,\"solar_kwh\":2.3,\"van_score\":90,\"temp_night\":19,\"drive_score\":98,\"score_label\":\"ideal\",\"sleep_score\":84,\"weather_code\":61}],\"sea_score\":null,\"solar_kwh\":2.1,\"van_score\":97,\"confidence\":\"high\",\"fetched_at\":\"2026-07-26T23:22:45.181608Z\",\"is_coastal\":true,\"week_score\":69,\"band_counts\":{\"hard\":0,\"ideal\":33,\"extreme\":0,\"acceptable\":473,\"comfortable\":1269},\"drive_score\":100,\"score_label\":\"ideal\",\"sleep_score\":96,\"solar_score\":46,\"drive_window\":null,\"awning_status\":\"caution\",\"best_move_day\":{\"date\":\"2026-07-26\",\"temp_day\":26.5,\"solar_kwh\":2.1,\"van_score\":93,\"temp_night\":18.4,\"drive_score\":100,\"score_label\":\"ideal\",\"sleep_score\":97,\"weather_code\":51},\"sample_points\":1775,\"typical_score\":65,\"ideal_coverage\":0,\"sample_regions\":16,\"best_area_score\":72,\"recommendations\":[{\"key\":\"vansky.rec.awning_caution\",\"type\":\"warning\",\"params\":{\"gusts\":37.4}},{\"key\":\"vansky.rec.night_ideal\",\"type\":\"success\",\"params\":{\"temp\":19.1}},{\"key\":\"vansky.rec.day_comfortable\",\"type\":\"success\",\"params\":{\"temp\":24.7}}],\"condensation_risk\":\"low\",\"aggregation_version\":2,\"comfortable_coverage\":81},\"updated_at\":\"2026-07-27T02:23:24+03:00\",\"source\":\"Open-Meteo (api.open-meteo.com)\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"error\": \"Country not found or not supported\"}",
                            "name": "Not found"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Events",
            "description": "",
            "item": [
                {
                    "name": "List events",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/events",
                            "query": [
                                {
                                    "key": "locale",
                                    "value": "en",
                                    "description": "Language code for localized names. One of: `en`, `ru`, `de`, `fr`, `es`, `pt`, `tr`. Defaults to `en`.",
                                    "disabled": false
                                },
                                {
                                    "key": "status",
                                    "value": "upcoming",
                                    "description": "Filter by event status. One of: `upcoming`, `ongoing`, `past`, `all`. Defaults to `upcoming`.",
                                    "disabled": false
                                },
                                {
                                    "key": "type",
                                    "value": "festival",
                                    "description": "Filter by event type. One of: `expo`, `festival`, `forum`, `meetup`, `roadtrip`.",
                                    "disabled": false
                                },
                                {
                                    "key": "country",
                                    "value": "DE",
                                    "description": "2-letter ISO country code.",
                                    "disabled": false
                                },
                                {
                                    "key": "search",
                                    "value": "Adventure Northside",
                                    "description": "Text search by event name.",
                                    "disabled": false
                                },
                                {
                                    "key": "page",
                                    "value": "1",
                                    "description": "Page number. Defaults to 1.",
                                    "disabled": false
                                },
                                {
                                    "key": "limit",
                                    "value": "30",
                                    "description": "Results per page (max 100). Defaults to 30.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/events?locale=en&status=upcoming&type=festival&country=DE&search=Adventure%20Northside&page=1&limit=30"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns a paginated list of vanlife events (exhibitions, festivals, meetups, road trips).\nFilter by status, type, country, or search by name.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"events\": [\n    {\n      \"id\": 960,\n      \"slug\": \"adventure-northside-2026\",\n      \"event_name\": \"Adventure Northside 2026\",\n      \"event_type\": \"festival\",\n      \"event_type_emoji\": \"\ud83c\udf89\",\n      \"start_date\": \"2026-09-18\",\n      \"end_date\": \"2026-09-20\",\n      \"city\": \"Basthorst\",\n      \"country_code\": \"DE\",\n      \"country\": { \"code\": \"de\", \"slug\": \"germany\", \"name\": \"Germany\", \"flag_emoji\": \"\ud83c\udde9\ud83c\uddea\" },\n      \"status\": \"upcoming\",\n      \"url\": \"https:\/\/openvan.camp\/en\/event\/adventure-northside-2026\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": 48,\n    \"page\": 1,\n    \"limit\": 30,\n    \"pages\": 2\n  }\n}",
                            "name": "Success"
                        }
                    ]
                },
                {
                    "name": "Get event details",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/event\/:slug",
                            "query": [
                                {
                                    "key": "locale",
                                    "value": "en",
                                    "description": "Language for localized content. One of: `en`, `ru`, `de`, `fr`, `es`, `pt`, `tr`.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/event\/:slug?locale=en",
                            "variable": [
                                {
                                    "id": "slug",
                                    "key": "slug",
                                    "value": "adventure-northside-2026",
                                    "description": "The event slug."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns full details for a single vanlife event by slug, including location, description, and social links.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"id\": 960,\n  \"slug\": \"adventure-northside-2026\",\n  \"event_name\": \"Adventure Northside 2026\",\n  \"event_type\": \"festival\",\n  \"event_type_emoji\": \"\ud83c\udf89\",\n  \"start_date\": \"2026-09-18\",\n  \"end_date\": \"2026-09-20\",\n  \"city\": \"Basthorst\",\n  \"country_code\": \"DE\",\n  \"description\": \"Northern Germany's Overland & Self-build expo and festival...\",\n  \"official_url\": \"https:\/\/adventurenorthside.de\/\",\n  \"image_url\": \"https:\/\/...\",\n  \"status\": \"upcoming\",\n  \"url\": \"https:\/\/openvan.camp\/en\/event\/adventure-northside-2026\"\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\": \"No query results for model [App\\\\Models\\\\Event].\"}",
                            "name": "Not found"
                        }
                    ]
                },
                {
                    "name": "Get event articles",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/event\/:slug\/articles",
                            "query": [
                                {
                                    "key": "locale",
                                    "value": "en",
                                    "description": "Language code to filter articles by source language. One of: `en`, `ru`, `de`, `fr`, `es`, `pt`, `tr`. Defaults to `en`.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/event\/:slug\/articles?locale=en",
                            "variable": [
                                {
                                    "id": "slug",
                                    "key": "slug",
                                    "value": "adventure-northside-2026",
                                    "description": "The event slug."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns source articles linked to this event.\nWhen `locale` is provided, attempts to return only articles in that language.\nIf no articles match the requested locale, **all articles are returned** as a fallback\n(they may be in the original source language, e.g. Japanese or German).\nThe `language` field on each article indicates the actual language of the source.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "[\n  {\n    \"id\": 1001,\n    \"title\": \"Adventure Northside 2026 opens its doors\",\n    \"image_url\": \"https:\/\/...\",\n    \"published_at\": \"2026-03-11T10:00:00+00:00\",\n    \"source_name\": \"CamperVan Magazine\",\n    \"original_url\": \"https:\/\/...\",\n    \"language\": \"en\"\n  }\n]",
                            "name": "Success"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Fuel Prices",
            "description": "",
            "item": [
                {
                    "name": "Get fuel prices",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/fuel\/prices",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/fuel\/prices"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns current retail fuel prices for all supported countries.\nPrice keys follow FuelGradeCatalog::ORDER plus the legacy `premium` alias.\nData is updated weekly from 45+ official government sources and independent aggregators.\n\nPrices are weighted averages from multiple sources per country. The `sources` array\nlists all contributing data providers (sorted by trust weight, highest first).\n\n**License:** CC BY 4.0 \u2014 free to use with attribution to [OpenVan.camp](https:\/\/openvan.camp).",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"success\": true,\n  \"data\": {\n    \"DE\": {\n      \"country_code\": \"DE\",\n      \"country_name\": \"Germany\",\n      \"region\": \"europe\",\n      \"currency\": \"EUR\",\n      \"local_currency\": \"EUR\",\n      \"unit\": \"liter\",\n      \"prices\": {\n        \"gasoline_regular\": null,\n        \"gasoline\": 2.1313,\n        \"gasoline_premium\": null,\n        \"gasoline_super\": null,\n        \"diesel_regular\": null,\n        \"diesel\": 2.2845,\n        \"diesel_premium\": null,\n        \"lpg\": 1.113,\n        \"cng\": null,\n        \"e85\": null,\n        \"kerosene\": null,\n        \"premium\": null\n      },\n      \"price_changes\": {\n        \"gasoline_regular\": null,\n        \"gasoline\": -0.02,\n        \"gasoline_premium\": null,\n        \"gasoline_super\": null,\n        \"diesel_regular\": null,\n        \"diesel\": 0.01,\n        \"diesel_premium\": null,\n        \"lpg\": 0.0,\n        \"cng\": null,\n        \"e85\": null,\n        \"kerosene\": null,\n        \"premium\": null\n      },\n      \"fetched_at\": \"2026-06-29T11:12:55+00:00\",\n      \"sources\": [\"Fuelo.net\", \"EU Weekly Oil Bulletin\", \"Cargopedia.net\"],\n      \"sources_count\": 3,\n      \"is_excluded\": false\n    }\n  },\n  \"meta\": {\n    \"total_countries\": 135,\n    \"updated_at\": \"2026-06-29 11:12:55\",\n    \"cache_ttl_hours\": 6\n  }\n}",
                            "name": "Success"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Stories",
            "description": "\nVanlife news stories \u2014 clustered and translated into 7 languages.\nEach story aggregates multiple source articles from different publishers.",
            "item": [
                {
                    "name": "List stories",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/stories",
                            "query": [
                                {
                                    "key": "locale",
                                    "value": "en",
                                    "description": "Language for localized titles and summaries. One of: `en`, `ru`, `de`, `fr`, `es`, `pt`, `tr`. Defaults to `en`.",
                                    "disabled": false
                                },
                                {
                                    "key": "category",
                                    "value": "festival",
                                    "description": "Filter by category slug. One of: `lifestyle`, `industry`, `incident`, `opening`, `closing`, `law`, `builds`, `festival`, `expo`, `review`, `ban`, `other`.",
                                    "disabled": false
                                },
                                {
                                    "key": "country",
                                    "value": "DE",
                                    "description": "2-letter ISO country code to filter by associated country.",
                                    "disabled": false
                                },
                                {
                                    "key": "search",
                                    "value": "vanlife festival",
                                    "description": "Full-text search by story title.",
                                    "disabled": false
                                },
                                {
                                    "key": "page",
                                    "value": "1",
                                    "description": "Page number. Defaults to 1.",
                                    "disabled": false
                                },
                                {
                                    "key": "limit",
                                    "value": "20",
                                    "description": "Results per page (max 50). Defaults to 20.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/stories?locale=en&category=festival&country=DE&search=vanlife%20festival&page=1&limit=20"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns a paginated list of vanlife news stories in the requested language.\nTitles and summaries are translated; `sources` are original-language articles.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"stories\": [\n    {\n      \"slug\": \"adac-camper-des-jahres-der-wettbewerb-fuer\",\n      \"title\": \"ADAC launches 'Camper of the Year' competition for motorhome drivers\",\n      \"summary\": \"ADAC is holding the national 'Camper des Jahres 2026' competition for motorhome owners...\",\n      \"image_url\": \"https:\/\/...\",\n      \"category\": {\"slug\": \"festival\", \"name\": \"Festivals\"},\n      \"countries\": [{\"code\": \"de\", \"name\": \"Germany\", \"flag_emoji\": \"\ud83c\udde9\ud83c\uddea\"}],\n      \"first_published_at\": \"2026-01-22T11:00:00+03:00\",\n      \"articles_count\": 5,\n      \"url\": \"https:\/\/openvan.camp\/en\/news\/festival\/adac-camper-des-jahres-der-wettbewerb-fuer\"\n    }\n  ],\n  \"pagination\": {\"total\": 120, \"page\": 1, \"limit\": 20, \"pages\": 6}\n}",
                            "name": "Success"
                        }
                    ]
                },
                {
                    "name": "Get story details",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/story\/:slug",
                            "query": [
                                {
                                    "key": "locale",
                                    "value": "en",
                                    "description": "Language for localized title and summary. One of: `en`, `ru`, `de`, `fr`, `es`, `pt`, `tr`. Defaults to `en`.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/story\/:slug?locale=en",
                            "variable": [
                                {
                                    "id": "slug",
                                    "key": "slug",
                                    "value": "adac-camper-des-jahres-der-wettbewerb-fuer",
                                    "description": "The story slug."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns full details for a single news story including all source articles.\nThe `sources` array contains original publisher articles with direct links.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"slug\": \"adac-camper-des-jahres-der-wettbewerb-fuer\",\n  \"title\": \"ADAC launches 'Camper of the Year' competition for motorhome drivers\",\n  \"summary\": \"ADAC is holding the national 'Camper des Jahres 2026' competition for motorhome owners...\",\n  \"image_url\": \"https:\/\/...\",\n  \"category\": {\"slug\": \"festival\", \"name\": \"Festivals\"},\n  \"countries\": [{\"code\": \"de\", \"name\": \"Germany\", \"flag_emoji\": \"\ud83c\udde9\ud83c\uddea\"}],\n  \"first_published_at\": \"2026-01-22T11:00:00+03:00\",\n  \"last_updated_at\": \"2026-07-04T04:16:47+03:00\",\n  \"articles_count\": 5,\n  \"url\": \"https:\/\/openvan.camp\/en\/news\/festival\/adac-camper-des-jahres-der-wettbewerb-fuer\",\n  \"sources\": [\n    {\n      \"title\": \"N\u00fcrburgring: Bundesweiter Wettbewerb \u00abCamper des Jahres\u00bb\",\n      \"original_url\": \"https:\/\/www.blick-aktuell.de\/Berichte\/...\",\n      \"source_name\": \"BLICK aktuell\",\n      \"published_at\": \"2026-04-30T09:24:20+03:00\",\n      \"language\": \"de\",\n      \"image_url\": \"https:\/\/...\"\n    }\n  ]\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"error\": \"Story not found.\"}",
                            "name": "Not found"
                        }
                    ]
                },
                {
                    "name": "Semantic news search (RAG)",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/news\/search",
                            "query": [
                                {
                                    "key": "q",
                                    "value": "ford camper 2026",
                                    "description": "Search query.",
                                    "disabled": false
                                },
                                {
                                    "key": "locale",
                                    "value": "ru",
                                    "description": "Language for localized titles\/summaries. One of: `en`, `ru`, `de`, `fr`, `es`, `pt`, `tr`. Defaults to `en`.",
                                    "disabled": false
                                },
                                {
                                    "key": "limit",
                                    "value": "8",
                                    "description": "Max results (1-15). Defaults to 8.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/news\/search?q=ford%20camper%202026&locale=ru&limit=8"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Semantic search over news via the same engine as the \/{locale}\/search page\n(SemanticSearchService: Jina embeddings + pgvector). Returns matching news\nstories ranked by similarity. Story summary shape matches \/stories.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-ratelimit-limit",
                                    "value": "120"
                                },
                                {
                                    "key": "x-ratelimit-remaining",
                                    "value": "115"
                                },
                                {
                                    "key": "x-seo",
                                    "value": "Liked our optimization? We do technical SEO + GEO. Let's talk -> https:\/\/openvan.camp\/en\/about#contacts"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 200,
                            "body": "{\"results\":[{\"slug\":\"panoramic-ford-f-camper-truck-costs-fraction\",\"title\":\"Supertramp \\u043f\\u0440\\u0435\\u0434\\u0441\\u0442\\u0430\\u0432\\u0438\\u043b\\u0430 \\u043a\\u0435\\u043c\\u043f\\u0435\\u0440 Paragon \\u043d\\u0430 \\u0431\\u0430\\u0437\\u0435 Ford F-350\",\"summary\":\"\\u041a\\u043e\\u043c\\u043f\\u0430\\u043d\\u0438\\u044f Supertramp \\u0430\\u043d\\u043e\\u043d\\u0441\\u0438\\u0440\\u043e\\u0432\\u0430\\u043b\\u0430 \\u043d\\u043e\\u0432\\u0443\\u044e \\u043c\\u043e\\u0434\\u0435\\u043b\\u044c \\u043a\\u0435\\u043c\\u043f\\u0435\\u0440\\u0430 Paragon \\u043d\\u0430 \\u0448\\u0430\\u0441\\u0441\\u0438 Ford F-350. \\u0411\\u0430\\u0437\\u043e\\u0432\\u0430\\u044f \\u0446\\u0435\\u043d\\u0430 \\u0441\\u043e\\u0441\\u0442\\u0430\\u0432\\u043b\\u044f\\u0435\\u0442 199 000 \\u0434\\u043e\\u043b\\u043b\\u0430\\u0440\\u043e\\u0432, \\u0447\\u0442\\u043e \\u0437\\u043d\\u0430\\u0447\\u0438\\u0442\\u0435\\u043b\\u044c\\u043d\\u043e \\u043d\\u0438\\u0436\\u0435 \\u043a\\u043e\\u043d\\u043a\\u0443\\u0440\\u0435\\u043d\\u0442\\u043e\\u0432, \\u0442\\u0430\\u043a\\u0438\\u0445 \\u043a\\u0430\\u043a Earthroamer (\\u043e\\u0442 825 000 \\u0434\\u043e\\u043b\\u043b\\u0430\\u0440\\u043e\\u0432) \\u0438 Winnebago Arka (330 000 \\u0434\\u043e\\u043b\\u043b\\u0430\\u0440\\u043e\\u0432). \\u041c\\u043e\\u0434\\u0435\\u043b\\u044c \\u043e\\u0441\\u043d\\u0430\\u0449\\u0435\\u043d\\u0430 \\u043a\\u043e\\u043c\\u043f\\u043e\\u0437\\u0438\\u0442\\u043d\\u044b\\u043c \\u043c\\u043e\\u0434\\u0443\\u043b\\u0435\\u043c \\u0441 \\u0432\\u0430\\u043a\\u0443\\u0443\\u043c\\u043d\\u043e\\u0439 \\u0438\\u043d\\u0444\\u0443\\u0437\\u0438\\u0435\\u0439, \\u0441\\u043f\\u0430\\u043b\\u044c\\u043d\\u044b\\u043c\\u0438 \\u043c\\u0435\\u0441\\u0442\\u0430\\u043c\\u0438 \\u043d\\u0430 \\u0447\\u0435\\u0442\\u044b\\u0440\\u0435 \\u0447\\u0435\\u043b\\u043e\\u0432\\u0435\\u043a\\u0430 \\u0438 \\u043e\\u043f\\u0446\\u0438\\u043e\\u043d\\u0430\\u043b\\u044c\\u043d\\u043e\\u0439 \\u043f\\u0430\\u043b\\u0430\\u0442\\u043a\\u043e\\u0439 \\u043d\\u0430 \\u043a\\u0440\\u044b\\u0448\\u0435 \\u0434\\u043b\\u044f \\u0448\\u0435\\u0441\\u0442\\u0438 \\u0447\\u0435\\u043b\\u043e\\u0432\\u0435\\u043a. \\u0421\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u0430\\u044f \\u043a\\u043e\\u043c\\u043f\\u043b\\u0435\\u043a\\u0442\\u0430\\u0446\\u0438\\u044f \\u0432\\u043a\\u043b\\u044e\\u0447\\u0430\\u0435\\u0442 \\u043b\\u0438\\u0442\\u0438\\u0439-\\u0438\\u043e\\u043d\\u043d\\u0443\\u044e \\u0431\\u0430\\u0442\\u0430\\u0440\\u0435\\u044e \\u043d\\u0430 270 \\u0410\\u00b7\\u0447, \\u0438\\u043d\\u0432\\u0435\\u0440\\u0442\\u043e\\u0440 \\u043d\\u0430 3000 \\u0412\\u0442 \\u0438 \\u0441\\u043e\\u043b\\u043d\\u0435\\u0447\\u043d\\u0443\\u044e \\u0441\\u0438\\u0441\\u0442\\u0435\\u043c\\u0443 \\u043d\\u0430 660 \\u0412\\u0442.\",\"image_url\":\"https:\\\/\\\/assets.newatlas.com\\\/dims4\\\/default\\\/00d5475\\\/2147483647\\\/strip\\\/true\\\/crop\\\/3276x1720+0+514\\\/resize\\\/1200x630!\\\/quality\\\/85\\\/?url=https%3A%2F%2Fnewatlas-brightspot.s3.amazonaws.com%2Fb8%2F31%2F5eb910d0450196ac9000fdc083c3%2F699761506-18360938500231222-6098785867930289037-n.jpg&na.image_optimisation=0\",\"category\":{\"slug\":\"industry\",\"name\":\"\\u0418\\u043d\\u0434\\u0443\\u0441\\u0442\\u0440\\u0438\\u044f\"},\"countries\":[],\"first_published_at\":\"2026-06-05T04:35:09+03:00\",\"articles_count\":1,\"url\":\"https:\\\/\\\/openvan.camp\\\/ru\\\/news\\\/industry\\\/panoramic-ford-f-camper-truck-costs-fraction\",\"score\":0.562},{\"slug\":\"ram-promaster-add-new-prebuilt-camper-van-thats\",\"title\":\"Ram ProMaster 2027 \\u043f\\u043e\\u043b\\u0443\\u0447\\u0438\\u043b \\u043f\\u0430\\u043a\\u0435\\u0442 Vanlife \\u0434\\u043b\\u044f \\u0430\\u0432\\u0442\\u043e\\u0434\\u043e\\u043c\\u043e\\u0432\",\"summary\":\"\\u041a\\u043e\\u043c\\u043f\\u0430\\u043d\\u0438\\u044f Ram \\u043f\\u0440\\u0435\\u0434\\u0441\\u0442\\u0430\\u0432\\u0438\\u043b\\u0430 \\u043f\\u0430\\u043a\\u0435\\u0442 Vanlife \\u0434\\u043b\\u044f \\u0444\\u0443\\u0440\\u0433\\u043e\\u043d\\u0430 ProMaster 2027 \\u0433\\u043e\\u0434\\u0430, \\u0443\\u043f\\u0440\\u043e\\u0449\\u0430\\u044e\\u0449\\u0438\\u0439 \\u043f\\u0435\\u0440\\u0435\\u043e\\u0431\\u043e\\u0440\\u0443\\u0434\\u043e\\u0432\\u0430\\u043d\\u0438\\u0435 \\u0432 \\u043a\\u0435\\u043c\\u043f\\u0435\\u0440. \\u0426\\u0435\\u043d\\u0430 \\u2014 \\u043e\\u0442 $60 320.\",\"image_url\":\"https:\\\/\\\/hips.hearstapps.com\\\/hmg-prod\\\/images\\\/94800d47-567d-49f8-8bb7-2996f6c8af4c.jpg?crop=1.00xw:0.753xh;0,0.171xh&amp;resize=1200:*\",\"category\":{\"slug\":\"industry\",\"name\":\"\\u0418\\u043d\\u0434\\u0443\\u0441\\u0442\\u0440\\u0438\\u044f\"},\"countries\":[{\"code\":\"ru\",\"name\":\"\\u0420\\u043e\\u0441\\u0441\\u0438\\u044f\",\"flag_emoji\":\"\\ud83c\\uddf7\\ud83c\\uddfa\"},{\"code\":\"us\",\"name\":\"\\u0421\\u0428\\u0410\",\"flag_emoji\":\"\\ud83c\\uddfa\\ud83c\\uddf8\"}],\"first_published_at\":\"2026-06-02T20:53:00+03:00\",\"articles_count\":6,\"url\":\"https:\\\/\\\/openvan.camp\\\/ru\\\/news\\\/industry\\\/ram-promaster-add-new-prebuilt-camper-van-thats\",\"score\":0.533},{\"slug\":\"ford-convierte-la-transit-custom-en-la-mejor\",\"title\":\"Carado T457 \\u043d\\u0430 \\u0431\\u0430\\u0437\\u0435 Ford Transit \\u043f\\u0440\\u0438\\u0437\\u043d\\u0430\\u043d \\u043b\\u0443\\u0447\\u0448\\u0438\\u043c \\u0430\\u0432\\u0442\\u043e\\u0434\\u043e\\u043c\\u043e\\u043c 2026 \\u0433\\u043e\\u0434\\u0430 \\u043f\\u043e \\u0432\\u0435\\u0440\\u0441\\u0438\\u0438 Red Dot Awards\",\"summary\":\"\\u041c\\u043e\\u0434\\u0435\\u043b\\u044c Carado T457, \\u043f\\u043e\\u043b\\u0443\\u0438\\u043d\\u0442\\u0435\\u0433\\u0440\\u0438\\u0440\\u043e\\u0432\\u0430\\u043d\\u043d\\u044b\\u0439 \\u0430\\u0432\\u0442\\u043e\\u0434\\u043e\\u043c \\u043d\\u0430 \\u043f\\u043b\\u0430\\u0442\\u0444\\u043e\\u0440\\u043c\\u0435 Ford Transit, \\u043f\\u043e\\u043b\\u0443\\u0447\\u0438\\u043b \\u043d\\u0430\\u0433\\u0440\\u0430\\u0434\\u0443 Red Dot Design Awards 2026. \\u0414\\u043b\\u0438\\u043d\\u0430 \\u2014 7,4 \\u043c, \\u0448\\u0438\\u0440\\u0438\\u043d\\u0430 \\u2014 2,32 \\u043c, \\u0432\\u044b\\u0441\\u043e\\u0442\\u0430 \\u2014 2,93 \\u043c. \\u0426\\u0435\\u043d\\u0430 \\u043e\\u0442 71 690 \\u0435\\u0432\\u0440\\u043e.\",\"image_url\":\"https:\\\/\\\/album.mediaset.es\\\/eimg\\\/2026\\\/01\\\/03\\\/ford-logo-16-9-aspect-ratio-default-1027707_da39.jpg\",\"category\":{\"slug\":\"industry\",\"name\":\"\\u0418\\u043d\\u0434\\u0443\\u0441\\u0442\\u0440\\u0438\\u044f\"},\"countries\":[{\"code\":\"de\",\"name\":\"\\u0413\\u0435\\u0440\\u043c\\u0430\\u043d\\u0438\\u044f\",\"flag_emoji\":\"\\ud83c\\udde9\\ud83c\\uddea\"}],\"first_published_at\":\"2026-02-18T10:20:01+03:00\",\"articles_count\":2,\"url\":\"https:\\\/\\\/openvan.camp\\\/ru\\\/news\\\/industry\\\/ford-convierte-la-transit-custom-en-la-mejor\",\"score\":0.529},{\"slug\":\"dfsk-tebar-promo-besar-di-prj-2026-mulai\",\"title\":\"DFSK \\u043d\\u0430 PRJ 2026: \\u043a\\u0435\\u043c\\u043f\\u0435\\u0440 Delima x Explora \\u0438 \\u0430\\u043d\\u043e\\u043d\\u0441 PHEV\",\"summary\":\"\\u041d\\u0430 Jakarta Fair Kemayoran 2026 \\u043a\\u043e\\u043c\\u043f\\u0430\\u043d\\u0438\\u044f DFSK \\u043f\\u0440\\u0435\\u0434\\u0441\\u0442\\u0430\\u0432\\u0438\\u043b\\u0430 Camper Van Delima x Explora, \\u044d\\u043b\\u0435\\u043a\\u0442\\u0440\\u043e\\u043c\\u043e\\u0431\\u0438\\u043b\\u0438 \\u0438 \\u0430\\u043d\\u043e\\u043d\\u0441\\u0438\\u0440\\u043e\\u0432\\u0430\\u043b\\u0430 \\u0442\\u0435\\u0445\\u043d\\u043e\\u043b\\u043e\\u0433\\u0438\\u044e Plug-in Hybrid Electric Vehicle (PHEV). \\u0414\\u0435\\u0439\\u0441\\u0442\\u0432\\u0443\\u044e\\u0442 \\u043f\\u0440\\u043e\\u0433\\u0440\\u0430\\u043c\\u043c\\u044b trade-in \\u0438 \\u0431\\u0435\\u0441\\u043f\\u043b\\u0430\\u0442\\u043d\\u043e\\u0433\\u043e \\u043e\\u0431\\u0441\\u043b\\u0443\\u0436\\u0438\\u0432\\u0430\\u043d\\u0438\\u044f.\",\"image_url\":\"https:\\\/\\\/dapurletter.id\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/PRJ-DFSK-2.jpeg\",\"category\":{\"slug\":\"expo\",\"name\":\"\\u0412\\u044b\\u0441\\u0442\\u0430\\u0432\\u043a\\u0438\"},\"countries\":[{\"code\":\"id\",\"name\":\"\\u0418\\u043d\\u0434\\u043e\\u043d\\u0435\\u0437\\u0438\\u044f\",\"flag_emoji\":\"\\ud83c\\uddee\\ud83c\\udde9\"}],\"first_published_at\":\"2026-06-11T07:13:45+03:00\",\"articles_count\":2,\"url\":\"https:\\\/\\\/openvan.camp\\\/ru\\\/news\\\/expo\\\/dfsk-tebar-promo-besar-di-prj-2026-mulai\",\"score\":0.524},{\"slug\":\"chrysler-pacifica-awd-minit-campervan-brings-van\",\"title\":\"2026 Chrysler Pacifica AWD Mini-T Campervan\",\"summary\":\"\\u041a\\u043e\\u043c\\u043f\\u0430\\u043d\\u0438\\u044f DLM-Distribution \\u043f\\u0440\\u0435\\u0434\\u0441\\u0442\\u0430\\u0432\\u0438\\u043b\\u0430 \\u043a\\u0435\\u043c\\u043f\\u0435\\u0440 \\u043d\\u0430 \\u0431\\u0430\\u0437\\u0435 Chrysler Pacifica \\u0441 \\u043f\\u043e\\u043b\\u043d\\u044b\\u043c \\u043f\\u0440\\u0438\\u0432\\u043e\\u0434\\u043e\\u043c. \\u041c\\u043e\\u0434\\u0435\\u043b\\u044c \\u043f\\u043e\\u043c\\u0435\\u0449\\u0430\\u0435\\u0442\\u0441\\u044f \\u0432 \\u0441\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u044b\\u0439 \\u0433\\u0430\\u0440\\u0430\\u0436 \\u0438 \\u043e\\u0441\\u043d\\u0430\\u0449\\u0435\\u043d\\u0430 \\u0441\\u043f\\u0430\\u043b\\u044c\\u043d\\u044b\\u043c \\u043c\\u0435\\u0441\\u0442\\u043e\\u043c, \\u0445\\u043e\\u043b\\u043e\\u0434\\u0438\\u043b\\u044c\\u043d\\u0438\\u043a\\u043e\\u043c, \\u0440\\u0430\\u043a\\u043e\\u0432\\u0438\\u043d\\u043e\\u0439 \\u0438 \\u0441\\u043e\\u043b\\u043d\\u0435\\u0447\\u043d\\u043e\\u0439 \\u0431\\u0430\\u0442\\u0430\\u0440\\u0435\\u0435\\u0439. \\u0426\\u0435\\u043d\\u0430 \\u2014 $66 900.\",\"image_url\":\"https:\\\/\\\/moparinsiders.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/2026-Chrysler-Pacifica-AWD-Mini-T-Campervan.-DLM-Distribution.-1.jpeg\",\"category\":{\"slug\":\"industry\",\"name\":\"\\u0418\\u043d\\u0434\\u0443\\u0441\\u0442\\u0440\\u0438\\u044f\"},\"countries\":[{\"code\":\"us\",\"name\":\"\\u0421\\u0428\\u0410\",\"flag_emoji\":\"\\ud83c\\uddfa\\ud83c\\uddf8\"}],\"first_published_at\":\"2026-05-17T19:00:21+03:00\",\"articles_count\":1,\"url\":\"https:\\\/\\\/openvan.camp\\\/ru\\\/news\\\/industry\\\/chrysler-pacifica-awd-minit-campervan-brings-van\",\"score\":0.524},{\"slug\":\"volkswagen-id-buzz-coming-back-america-van-camp\",\"title\":\"Volkswagen \\u0432\\u043e\\u0437\\u0432\\u0440\\u0430\\u0449\\u0430\\u0435\\u0442 \\u043a\\u0435\\u043c\\u043f\\u0435\\u0440 ID. Buzz \\u0432 \\u0421\\u0428\\u0410 \\u0441 \\u043d\\u043e\\u0432\\u043e\\u0439 \\u043a\\u043e\\u043c\\u043f\\u043b\\u0435\\u043a\\u0442\\u0430\\u0446\\u0438\\u0435\\u0439 Tourer\",\"summary\":\"Volkswagen \\u043f\\u0440\\u0435\\u0434\\u0441\\u0442\\u0430\\u0432\\u0438\\u043b \\u043a\\u043e\\u043c\\u043f\\u043b\\u0435\\u043a\\u0442\\u0430\\u0446\\u0438\\u044e Tourer \\u0434\\u043b\\u044f \\u044d\\u043b\\u0435\\u043a\\u0442\\u0440\\u0438\\u0447\\u0435\\u0441\\u043a\\u043e\\u0433\\u043e \\u043c\\u0438\\u043a\\u0440\\u043e\\u0430\\u0432\\u0442\\u043e\\u0431\\u0443\\u0441\\u0430 ID. Buzz 2027 \\u0433\\u043e\\u0434\\u0430, \\u043f\\u0440\\u0435\\u0434\\u043d\\u0430\\u0437\\u043d\\u0430\\u0447\\u0435\\u043d\\u043d\\u0443\\u044e \\u0434\\u043b\\u044f \\u043a\\u0435\\u043c\\u043f\\u0438\\u043d\\u0433\\u0430. \\u0412 \\u043e\\u0441\\u043d\\u0430\\u0449\\u0435\\u043d\\u0438\\u0435 \\u0432\\u0445\\u043e\\u0434\\u044f\\u0442 \\u0441\\u043a\\u043b\\u0430\\u0434\\u043d\\u0430\\u044f \\u043a\\u0440\\u043e\\u0432\\u0430\\u0442\\u044c, \\u0448\\u0442\\u043e\\u0440\\u043a\\u0438, \\u0440\\u0435\\u0436\\u0438\\u043c Overnight \\u0438 \\u0443\\u043b\\u0438\\u0447\\u043d\\u0430\\u044f \\u043c\\u0435\\u0431\\u0435\\u043b\\u044c. \\u041f\\u0440\\u043e\\u0434\\u0430\\u0436\\u0438 \\u043d\\u0430\\u0447\\u043d\\u0443\\u0442\\u0441\\u044f \\u0432 2027 \\u0433\\u043e\\u0434\\u0443, \\u0446\\u0435\\u043d\\u044b \\u043f\\u043e\\u043a\\u0430 \\u043d\\u0435 \\u043e\\u0431\\u044a\\u044f\\u0432\\u043b\\u0435\\u043d\\u044b.\",\"image_url\":\"https:\\\/\\\/images-stag.jazelc.com\\\/uploads\\\/theautopian-m2en\\\/ID_Camper_TS2.png\",\"category\":{\"slug\":\"industry\",\"name\":\"\\u0418\\u043d\\u0434\\u0443\\u0441\\u0442\\u0440\\u0438\\u044f\"},\"countries\":[{\"code\":\"us\",\"name\":\"\\u0421\\u0428\\u0410\",\"flag_emoji\":\"\\ud83c\\uddfa\\ud83c\\uddf8\"}],\"first_published_at\":\"2026-05-14T16:49:00+03:00\",\"articles_count\":7,\"url\":\"https:\\\/\\\/openvan.camp\\\/ru\\\/news\\\/industry\\\/volkswagen-id-buzz-coming-back-america-van-camp\",\"score\":0.523}],\"timing_ms\":60,\"_attribution\":{\"data_source\":\"openvan.camp\",\"license\":\"CC BY 4.0\",\"attribution_url\":\"https:\\\/\\\/openvan.camp\\\/\",\"attribution_html\":\"Data: <a href=\\\"https:\\\/\\\/openvan.camp\\\/\\\">OpenVan.camp<\\\/a> (CC BY 4.0)\"}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Daily news digest (raw content)",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/news\/digest",
                            "query": [
                                {
                                    "key": "locale",
                                    "value": "ru",
                                    "description": "Digest language. Currently `ru` or `en`. Defaults to `ru`.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/news\/digest?locale=ru"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns the structured evening news digest for the requested locale,\nassembled once per evening by the site. Consumers (site social channels,",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"locale\": \"ru\",\n  \"date\": \"2026-07-25\",\n  \"intro\": \"\u0414\u043e\u0440\u043e\u0433\u0438 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u0434\u043a\u0438\u043d\u0443\u043b\u0438 \u0432\u0441\u0451\u2026\",\n  \"groups\": [\n    {\"key\": \"incident\", \"title\": \"\u26a0\ufe0f \u041f\u0440\u043e\u0438\u0441\u0448\u0435\u0441\u0442\u0432\u0438\u044f\", \"items\": [\n      {\"id\": 123, \"flag\": \"\ud83c\udde9\ud83c\uddea\", \"hook\": \"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a-\u0437\u0430\u0446\u0435\u043f\u043a\u0430\", \"detail\": \"\u0414\u0435\u0442\u0430\u043b\u044c \u0441\u044e\u0436\u0435\u0442\u0430\", \"url\": \"https:\/\/openvan.camp\/ru\/news\/incident\/slug\"}\n    ]}\n  ]\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 204,
                            "body": "",
                            "name": "No digest yet"
                        }
                    ]
                }
            ]
        },
        {
            "name": "VanBasket Food Price Index",
            "description": "\nVanBasket Index shows how expensive food is in a country\nrelative to the world average (World = 100).\nBased on World Bank ICP 2021 data, adjusted with IMF CPI.",
            "item": [
                {
                    "name": "Get all countries with VanBasket index.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/vanbasket\/countries",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/vanbasket\/countries"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns food price index for 90+ countries.\nWorld average = 100. Above 100 = more expensive, below 100 = cheaper.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"success\": true, \"data\": {\"DE\": {\"country_code\": \"DE\", \"country_name\": \"Germany\", \"vanbasket_index\": 124.9, \"pct_vs_world\": 24.9}}, \"meta\": {\"total_countries\": 92}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Compare food prices between two countries.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/vanbasket\/compare",
                            "query": [
                                {
                                    "key": "from",
                                    "value": "DE",
                                    "description": "ISO 3166-1 alpha-2 code of home country.",
                                    "disabled": false
                                },
                                {
                                    "key": "to",
                                    "value": "TR",
                                    "description": "ISO 3166-1 alpha-2 code of destination country.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/vanbasket\/compare?from=DE&to=TR"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"success\": true, \"data\": {\"from\": {\"country_code\": \"DE\", \"country_name\": \"Germany\", \"vanbasket_index\": 124.9}, \"to\": {\"country_code\": \"TR\", \"country_name\": \"Turkey\", \"vanbasket_index\": 88.0}, \"diff_percent\": -29.5, \"budget_100\": 70, \"cheaper\": true}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get VanBasket country details",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/vanbasket\/countries\/:code",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/vanbasket\/countries\/:code",
                            "variable": [
                                {
                                    "id": "code",
                                    "key": "code",
                                    "value": "DE",
                                    "description": "ISO 3166-1 alpha-2 country code."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Detailed data for a single country including historical snapshots.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"success\": true, \"data\": {\"country\": {\"country_code\": \"DE\", \"vanbasket_index\": 124.9}, \"snapshots\": [{\"snapshot_date\": \"2021-01-01\", \"vanbasket_index\": 124.9}]}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Visa & Border Rules",
            "description": "\nHow long you may stay and how the days are counted \u2014 for all 199 \u00d7 199\npassport\/destination pairs, plus temporary vehicle import rules.\n\nEvery answer carries `confidence` and `source_url`, and says which layer it\ncame from: `curated` (hand-verified), `window` (counting window applied on\ntop of the dataset), `zone` (Schengen-style shared counter) or `dataset`.\nTreat `confidence: low` as \"the number of days is right, the way they are\ncounted is an assumption\" \u2014 verify at the border.",
            "item": [
                {
                    "name": "Check a passport against a destination.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/visa\/check",
                            "query": [
                                {
                                    "key": "passport",
                                    "value": "RU",
                                    "description": "ISO 3166-1 alpha-2 code of the passport.",
                                    "disabled": false
                                },
                                {
                                    "key": "destination",
                                    "value": "TR",
                                    "description": "ISO alpha-2 code, slug or zone code.",
                                    "disabled": false
                                },
                                {
                                    "key": "weight",
                                    "value": "le35",
                                    "description": "Vehicle weight class for the vehicle rule: le35 (\u22643.5t) or gt35.",
                                    "disabled": false
                                },
                                {
                                    "key": "plate",
                                    "value": "third",
                                    "description": "Vehicle plate origin for the vehicle rule: eu, non_eu, eaeu, third.",
                                    "disabled": false
                                },
                                {
                                    "key": "locale",
                                    "value": "en",
                                    "description": "Language of place names, one of ru\/en\/de\/es\/fr\/pt\/tr. Defaults to en.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/visa\/check?passport=RU&destination=TR&weight=le35&plate=third&locale=en"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns the stay rule (days, counting window, whether a visa run resets\nthe counter), the entry mode, and the vehicle import rule for the same\ndestination.\n\nIf the country belongs to a shared-counter zone, the stay rule is the\nzone's \u2014 entering Spain spends Schengen days, not \"Spanish\" ones \u2014 and\n`counted_against` names the place the counter belongs to.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"success\": true, \"data\": {\"passport\": {\"code\": \"RU\", \"name\": \"Russia\"}, \"destination\": {\"code\": \"TR\", \"name\": \"Turkey\", \"kind\": \"country\", \"zone\": null}, \"entry_mode\": \"visa_free\", \"stay\": {\"visa_type\": \"visa_free\", \"max_continuous\": 90, \"max_total\": 90, \"window\": \"rolling\", \"window_days\": 180, \"visa_run\": false, \"confidence\": \"high\", \"source_url\": \"https:\/\/www.mfa.gov.tr\/visa-information-for-foreigners.en.mfa\", \"note\": \"\u0411\u0435\u0437\u0432\u0438\u0437 90\/180.\", \"layer\": \"curated\"}, \"vehicle\": {\"max_days\": null, \"basis\": \"tied_to_person\", \"green_card\": \"required\", \"confidence\": \"high\"}}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"success\": false, \"error\": \"Parameters \\\"passport\\\" and \\\"destination\\\" are required.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Passport ranking by destinations reachable without a prior visa.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/visa\/rank",
                            "query": [
                                {
                                    "key": "limit",
                                    "value": "10",
                                    "description": "How many rows to return, 1..199. Defaults to all.",
                                    "disabled": false
                                },
                                {
                                    "key": "locale",
                                    "value": "en",
                                    "description": "Language of passport names. Defaults to en.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/visa\/rank?limit=10&locale=en"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Score = visa free + visa on arrival + eTA. The breakdown is returned\nalongside so the number can be checked rather than taken on faith.\nTies share a rank.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"success\": true, \"data\": [{\"rank\": 1, \"passport\": \"SG\", \"name\": \"Singapore\", \"score\": 168, \"visa_free\": 130, \"visa_on_arrival\": 30, \"eta\": 8, \"e_visa\": 20, \"visa_required\": 10}], \"meta\": {\"total\": 199, \"scoring\": \"visa_free + visa_on_arrival + eta\"}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Change log of visa and vehicle rules.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/visa\/history",
                            "query": [
                                {
                                    "key": "subject_type",
                                    "value": "requirement",
                                    "description": "Filter: requirement, window, window_exception, curated_rule, vehicle_rule, place.",
                                    "disabled": false
                                },
                                {
                                    "key": "subject_key",
                                    "value": "RU>TR",
                                    "description": "Filter by subject, e.g. RU>TR for a pair or TR for a place.",
                                    "disabled": false
                                },
                                {
                                    "key": "since",
                                    "value": "2026-01-01",
                                    "description": "ISO date, only changes on or after it.",
                                    "disabled": false
                                },
                                {
                                    "key": "limit",
                                    "value": "50",
                                    "description": "1..500, defaults to 100.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/visa\/history?subject_type=requirement&subject_key=RU%3ETR&since=2026-01-01&limit=50"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "One row per changed field, written both by imports and by editors.\nCommercial passport APIs charge for rule history; this one is open.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"success\": true, \"data\": [{\"subject_type\": \"requirement\", \"subject_key\": \"RU>TR\", \"field\": \"days\", \"old_value\": \"60\", \"new_value\": \"90\", \"source\": \"import\", \"changed_at\": \"2026-07-27T10:00:00+00:00\"}], \"meta\": {\"total\": 1}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "All destinations for one passport.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/visa\/passport\/:code",
                            "query": [
                                {
                                    "key": "mode",
                                    "value": "visa_free",
                                    "description": "Filter by entry mode: visa_free, visa_required, e_visa, eta, voa, no_admission.",
                                    "disabled": false
                                },
                                {
                                    "key": "locale",
                                    "value": "en",
                                    "description": "Language of place names. Defaults to en.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/visa\/passport\/:code?mode=visa_free&locale=en",
                            "variable": [
                                {
                                    "id": "code",
                                    "key": "code",
                                    "value": "DE",
                                    "description": "ISO 3166-1 alpha-2 code of the passport."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "199 rows resolved through the full chain, sorted by destination name.\nCounts by entry mode are in `meta`.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"success\": true, \"data\": [{\"destination\": \"TR\", \"name\": \"Turkey\", \"slug\": \"turkey\", \"mode\": \"visa_free\", \"days\": 90, \"stay\": {\"window\": \"rolling\", \"window_days\": 180, \"confidence\": \"medium\", \"layer\": \"window\"}}], \"meta\": {\"passport\": \"DE\", \"total\": 199, \"by_mode\": {\"visa_free\": 130}}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Compact payload for colouring a world map by one passport.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/visa\/map\/:code",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/visa\/map\/:code",
                            "variable": [
                                {
                                    "id": "code",
                                    "key": "code",
                                    "value": "US",
                                    "description": "ISO 3166-1 alpha-2 code of the passport."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Same data as \/passport\/{code} stripped to what a choropleth needs:\n`m` \u2014 entry mode, `d` \u2014 visa-free days if known.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"success\": true, \"data\": {\"TR\": {\"m\": \"visa_free\", \"d\": 90}, \"RU\": {\"m\": \"visa_required\", \"d\": null}}, \"meta\": {\"passport\": \"US\", \"legend\": [\"visa_free\", \"voa\", \"eta\", \"e_visa\", \"visa_required\", \"no_admission\", \"self\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Temporary vehicle import rules for a country.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/visa\/vehicle\/:place",
                            "query": [
                                {
                                    "key": "locale",
                                    "value": "en",
                                    "description": "Language of the place name. Defaults to en.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/visa\/vehicle\/:place?locale=en",
                            "variable": [
                                {
                                    "id": "place",
                                    "key": "place",
                                    "value": "georgia",
                                    "description": "ISO alpha-2 code, slug or zone code."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Only rules we can stand behind are returned: an official source, or two\nindependent research runs agreeing, or manual verification. A country\nwith nothing trustworthy returns an empty list rather than a guess \u2014\nthe cost of being wrong here is a vehicle held at the border.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"success\": true, \"data\": [{\"weight_class\": \"le35\", \"plate_group\": null, \"max_days\": 90, \"basis\": \"per_entry\", \"window_days\": null, \"carnet_required\": false, \"extension_possible\": null, \"green_card\": \"border_insurance\", \"confidence\": \"high\", \"source_url\": \"https:\/\/georgiacb.com\/en\/articles\/customs-procedure-temporary-importation-admission-im-53\", \"curated\": true}], \"meta\": {\"place\": \"GE\", \"name\": \"Georgia\", \"green_card_by_plate\": {\"eu\": \"plate_ok\"}}}",
                            "name": ""
                        }
                    ]
                }
            ]
        }
    ],
    "auth": {
        "type": "noauth"
    }
}