RecraHub Public API

Preview. Het v1-contract kan wijzigen vóór algemene beschikbaarheid. Leg integraties vast op openapi.json en volg deze pagina.

OpenAPI-schema · https://recrahub.nl/api/v1

GET /properties/{property-id}/programmes/current-or-next

Geeft het gepubliceerde programma op de selectiedatum terug, of het volgende gepubliceerde programma als er die dag geen actief is.

Queryparameters

Parameter Beschrijving
lang Optioneel. Ondersteunde waarden hangen af van de bedrijfstalen. Vertaalbare velden bevatten nl, en, de, fr en localized. Localized gebruikt de gevraagde taal wanneer beschikbaar en valt terug op Nederlands.
date Optioneel. Selectiedatum als YYYY-MM-DD. Standaard vandaag (applicatietijdzone).

Voorbeeldverzoeken

Huidig of volgend programma

GET /properties/{property-id}/programmes/current-or-next

Huidig of volgend programma voor een datum

GET /properties/{property-id}/programmes/current-or-next?date=2026-07-01

Engelse gelokaliseerde waarden

GET /properties/{property-id}/programmes/current-or-next?lang=en

Antwoorden

200 OK

Programmapayload met programmavelden, days, highlights en more_info.

Antwoord

{
  "id": 48,
  "name": "Week 27",
  "title": {
    "nl": "Recreatieprogramma",
    "en": "Recreation programme",
    "de": null,
    "fr": null,
    "localized": "Recreation programme"
  },
  "start_date": "2026-07-06",
  "end_date": "2026-07-12",
  "urls": { "api": "https://example.com/api/v1/properties/12/programmes/48" },
  "theme": {
    "id": 7,
    "name": {
      "nl": "Zomer",
      "en": "Summer",
      "de": null,
      "fr": null,
      "localized": "Summer"
    },
    "description": {
      "nl": "Zomerse week",
      "en": "Summer week",
      "de": null,
      "fr": null,
      "localized": "Summer week"
    },
    "image_url": "https://example.com/storage/themes/summer.jpg",
    "highlighted": true
  },
  "days": [
    {
      "day": 1,
      "date": "2026-07-06",
      "activities": [
        {
          "id": 901,
          "name": {
            "nl": "Kinderdisco",
            "en": "Kids disco",
            "de": null,
            "fr": null,
            "localized": "Kids disco"
          },
          "starts_at": "2026-07-06T10:00:00+02:00",
          "category": {
            "id": 3,
            "name": {
              "nl": "Sport",
              "en": "Sport",
              "de": null,
              "fr": null,
              "localized": "Sport"
            },
            "explanation": {
              "nl": "Activiteiten waarbij je actief beweegt.",
              "en": "Activities where you move actively.",
              "de": null,
              "fr": null,
              "localized": "Activities where you move actively."
            },
            "cta": {
              "nl": "Doe mee",
              "en": "Join",
              "de": null,
              "fr": null,
              "localized": "Join"
            },
            "image_url": "https://example.com/storage/categories/sport.png"
          },
          "signup": { "enabled": true, "status": "open" }
        }
      ]
    }
  ],
  "highlights": [
    {
      "type": "activity",
      "id": 34,
      "name": {
        "nl": "Disco avond",
        "en": "Disco night",
        "de": null,
        "fr": null,
        "localized": "Disco night"
      },
      "header": {
        "nl": "Vandaag uitgelicht",
        "en": "Highlighted today",
        "de": null,
        "fr": null,
        "localized": "Highlighted today"
      },
      "description": {
        "nl": "Kom dansen met het animatieteam.",
        "en": "Come dance with the entertainment team.",
        "de": null,
        "fr": null,
        "localized": "Come dance with the entertainment team."
      },
      "image_url": "https://example.com/storage/highlights/disco.jpg",
      "program_activity_id": 901
    }
  ],
  "more_info": {
    "explanation_categories": [
      {
        "id": 3,
        "name": {
          "nl": "Sport",
          "en": "Sport",
          "de": null,
          "fr": null,
          "localized": "Sport"
        },
        "explanation": {
          "nl": "Activiteiten waarbij je actief beweegt.",
          "en": "Activities where you move actively.",
          "de": null,
          "fr": null,
          "localized": "Activities where you move actively."
        },
        "cta": {
          "nl": "Doe mee",
          "en": "Join",
          "de": null,
          "fr": null,
          "localized": "Join"
        },
        "image_url": "https://example.com/storage/categories/sport.png"
      }
    ],
    "explanation_footer_text": {
      "nl": "Programma onder voorbehoud.",
      "en": "Programme subject to change.",
      "de": null,
      "fr": null,
      "localized": "Programme subject to change."
    },
    "online": {
      "enabled": true,
      "url": "https://example.com/demo-park",
      "show_recrateam_logo": true,
      "recrateam_logo_url": "https://example.com/images/logo-recrateam.svg"
    },
    "practical_information": [
      {
        "icon": "info",
        "text": {
          "nl": "Verzamelen bij de receptie.",
          "en": "Meet at reception.",
          "de": null,
          "fr": null,
          "localized": "Meet at reception."
        }
      }
    ]
  }
}
404 Niet gevonden

Geen gepubliceerd programma voor dit bedrijf en deze datum (en geen later programma).

422 Validatiefout

Ongeldige lang- of date-querywaarde.

GET /properties/{property-id}/programmes/{program-id}

Geeft één gepubliceerd programma op id. Het programma moet bij het bedrijf in het pad horen.

Queryparameters

Parameter Beschrijving
lang Optioneel. Ondersteunde waarden hangen af van de bedrijfstalen. Vertaalbare velden bevatten nl, en, de, fr en localized. Localized gebruikt de gevraagde taal wanneer beschikbaar en valt terug op Nederlands.

Voorbeeldverzoeken

Programma op ID

GET /properties/{property-id}/programmes/{program-id}

Programma op ID met gelokaliseerde waarden

GET /properties/{property-id}/programmes/{program-id}?lang=de

Antwoorden

200 OK

Programmapayload met programmavelden, days, highlights en more_info.

Antwoord

{
  "id": 48,
  "name": "Week 27",
  "title": {
    "nl": "Recreatieprogramma",
    "en": "Recreation programme",
    "de": null,
    "fr": null,
    "localized": "Recreation programme"
  },
  "start_date": "2026-07-06",
  "end_date": "2026-07-12",
  "urls": { "api": "https://example.com/api/v1/properties/12/programmes/48" },
  "theme": {
    "id": 7,
    "name": {
      "nl": "Zomer",
      "en": "Summer",
      "de": null,
      "fr": null,
      "localized": "Summer"
    },
    "description": {
      "nl": "Zomerse week",
      "en": "Summer week",
      "de": null,
      "fr": null,
      "localized": "Summer week"
    },
    "image_url": "https://example.com/storage/themes/summer.jpg",
    "highlighted": true
  },
  "days": [
    {
      "day": 1,
      "date": "2026-07-06",
      "activities": [
        {
          "id": 901,
          "name": {
            "nl": "Kinderdisco",
            "en": "Kids disco",
            "de": null,
            "fr": null,
            "localized": "Kids disco"
          },
          "starts_at": "2026-07-06T10:00:00+02:00",
          "category": {
            "id": 3,
            "name": {
              "nl": "Sport",
              "en": "Sport",
              "de": null,
              "fr": null,
              "localized": "Sport"
            },
            "explanation": {
              "nl": "Activiteiten waarbij je actief beweegt.",
              "en": "Activities where you move actively.",
              "de": null,
              "fr": null,
              "localized": "Activities where you move actively."
            },
            "cta": {
              "nl": "Doe mee",
              "en": "Join",
              "de": null,
              "fr": null,
              "localized": "Join"
            },
            "image_url": "https://example.com/storage/categories/sport.png"
          },
          "signup": { "enabled": true, "status": "open" }
        }
      ]
    }
  ],
  "highlights": [
    {
      "type": "activity",
      "id": 34,
      "name": {
        "nl": "Disco avond",
        "en": "Disco night",
        "de": null,
        "fr": null,
        "localized": "Disco night"
      },
      "header": {
        "nl": "Vandaag uitgelicht",
        "en": "Highlighted today",
        "de": null,
        "fr": null,
        "localized": "Highlighted today"
      },
      "description": {
        "nl": "Kom dansen met het animatieteam.",
        "en": "Come dance with the entertainment team.",
        "de": null,
        "fr": null,
        "localized": "Come dance with the entertainment team."
      },
      "image_url": "https://example.com/storage/highlights/disco.jpg",
      "program_activity_id": 901
    }
  ],
  "more_info": {
    "explanation_categories": [
      {
        "id": 3,
        "name": {
          "nl": "Sport",
          "en": "Sport",
          "de": null,
          "fr": null,
          "localized": "Sport"
        },
        "explanation": {
          "nl": "Activiteiten waarbij je actief beweegt.",
          "en": "Activities where you move actively.",
          "de": null,
          "fr": null,
          "localized": "Activities where you move actively."
        },
        "cta": {
          "nl": "Doe mee",
          "en": "Join",
          "de": null,
          "fr": null,
          "localized": "Join"
        },
        "image_url": "https://example.com/storage/categories/sport.png"
      }
    ],
    "explanation_footer_text": {
      "nl": "Programma onder voorbehoud.",
      "en": "Programme subject to change.",
      "de": null,
      "fr": null,
      "localized": "Programme subject to change."
    },
    "online": {
      "enabled": true,
      "url": "https://example.com/demo-park",
      "show_recrateam_logo": true,
      "recrateam_logo_url": "https://example.com/images/logo-recrateam.svg"
    },
    "practical_information": [
      {
        "icon": "info",
        "text": {
          "nl": "Verzamelen bij de receptie.",
          "en": "Meet at reception.",
          "de": null,
          "fr": null,
          "localized": "Meet at reception."
        }
      }
    ]
  }
}
404 Niet gevonden

Programma bestaat niet, is niet gepubliceerd, of hoort bij een ander bedrijf.

422 Validatiefout

Ongeldige lang-querywaarde.

GET /properties/{property-id}/age-tags

Geeft leeftijdstags terug die daadwerkelijk worden gebruikt door gepubliceerde programma's van een publiek bedrijf.

Queryparameters

Parameter Beschrijving
lang Optioneel. Ondersteunde waarden hangen af van de bedrijfstalen. Vertaalbare velden bevatten nl, en, de, fr en localized. Localized gebruikt de gevraagde taal wanneer beschikbaar en valt terug op Nederlands.

Voorbeeldverzoeken

Gebruikte leeftijdstags

GET /properties/{property-id}/age-tags

Engelse gelokaliseerde waarden

GET /properties/{property-id}/age-tags?lang=en

Antwoorden

200 OK

JSON-array van leeftijdstagobjecten met dezelfde tekststructuur als age_tag-waarden van programma-activiteiten.

Antwoord

[
  {
    "id": 5,
    "name": {
      "nl": "Alle leeftijden",
      "en": "All ages",
      "de": null,
      "fr": null,
      "localized": "All ages"
    }
  }
]
404 Niet gevonden

Bedrijf bestaat niet of is niet publiek.

422 Validatiefout

Ongeldige lang-querywaarde.

GET /properties/{property-id}/areas

Geeft locaties terug die daadwerkelijk worden gebruikt door gepubliceerde programma's van een publiek bedrijf.

Queryparameters

Parameter Beschrijving
lang Optioneel. Ondersteunde waarden hangen af van de bedrijfstalen. Vertaalbare velden bevatten nl, en, de, fr en localized. Localized gebruikt de gevraagde taal wanneer beschikbaar en valt terug op Nederlands.

Voorbeeldverzoeken

Gebruikte locaties

GET /properties/{property-id}/areas

Duitse gelokaliseerde waarden

GET /properties/{property-id}/areas?lang=de

Antwoorden

200 OK

JSON-array van locatieobjecten met dezelfde tekststructuur als area-waarden van programma-activiteiten.

Antwoord

[
  {
    "id": 8,
    "name": {
      "nl": "Sportveld",
      "en": "Sports field",
      "de": "Sportplatz",
      "fr": null,
      "localized": "Sportplatz"
    }
  }
]
404 Niet gevonden

Bedrijf bestaat niet of is niet publiek.

422 Validatiefout

Ongeldige lang-querywaarde.

GET /properties

Alle bedrijven met show_on_website. Bedoeld voor integratie en publieke kaarten.

Voorbeeldverzoeken

Publieke bedrijven weergeven

GET /properties

Antwoorden

200 OK

JSON-array van publieke bedrijfsobjecten met id, slug, naam, geformatteerd adres, coördinaten, publieke URL, logo-URL en headerafbeelding-URL.

Antwoord

[
  {
    "id": 12,
    "slug": "demo-park",
    "name": "Demo Park",
    "formatted_address": "Example Street 1, 1234 AB Amsterdam",
    "coordinates": { "lat": 52.37, "lng": 4.89 },
    "url": "https://example.com/demo-park",
    "logo_url": "https://example.com/storage/properties/logos/demo.png",
    "header_image_url": "https://example.com/storage/properties/headers/demo.jpg"
  }
]

GET /properties/{property-id}

Geeft publieke bedrijfsdetails op id. Gebruik dit endpoint bij voorkeur voor opgeslagen integraties, omdat ids niet wijzigen wanneer een slug wijzigt.

Voorbeeldverzoeken

Bedrijf op ID

GET /properties/{property-id}

Antwoorden

200 OK

Publiek bedrijfsobject met id, slug, naam, geformatteerd adres, coördinaten, publieke URL, logo-URL en headerafbeelding-URL.

Antwoord

{
  "id": 12,
  "slug": "demo-park",
  "name": "Demo Park",
  "formatted_address": "Example Street 1, 1234 AB Amsterdam",
  "coordinates": { "lat": 52.37, "lng": 4.89 },
  "url": "https://example.com/demo-park",
  "logo_url": "https://example.com/storage/properties/logos/demo.png",
  "header_image_url": "https://example.com/storage/properties/headers/demo.jpg"
}
404 Niet gevonden

Bedrijf bestaat niet of is niet publiek.

GET /properties/by-slug/{property-slug}

Geeft publieke bedrijfsdetails op slug. Gebruik dit voor ontdekking of gebruikerslinks; gebruik bij opgeslagen integraties bij voorkeur id.

Voorbeeldverzoeken

Bedrijf op slug

GET /properties/by-slug/{property-slug}

Antwoorden

200 OK

Publiek bedrijfsobject met id, slug, naam, geformatteerd adres, coördinaten, publieke URL, logo-URL en headerafbeelding-URL.

Antwoord

{
  "id": 12,
  "slug": "demo-park",
  "name": "Demo Park",
  "formatted_address": "Example Street 1, 1234 AB Amsterdam",
  "coordinates": { "lat": 52.37, "lng": 4.89 },
  "url": "https://example.com/demo-park",
  "logo_url": "https://example.com/storage/properties/logos/demo.png",
  "header_image_url": "https://example.com/storage/properties/headers/demo.jpg"
}
404 Niet gevonden

Bedrijf bestaat niet of is niet publiek.