openapi: 3.0.3
info:
  title: REST API description for Get Aanbod Overview
  description: Verstrekt Aanbod Overview van Aanbieder voor gebruik in het NSMV ecosysteem
  version: 2.1.0
servers:
  - url: 'https://example.com'
    description: Url te bepalen door aanbieder
tags:
  - name: aanbod
    description: Operations voor het verstrekken van Aanbod-items
paths:
  /path/courtesy/of/aanbieder:
    description: Path te bepalen door aanbieder
    get:
      operationId: getAanbodOverviewAanbieder
      summary: Get aanbod from participating aanbieders for display in NSMV
      description: Gets aanbod as an array of objects, with predifined properties and references
      tags:
        - aanbod
      responses:
        "200":
          description: Succes
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Aanbod"
        "400":
          $ref: "https://reference.exply.nl/openapispecifications/responses/Error400BadRequest.yaml"
        "401":
          $ref: "https://reference.exply.nl/openapispecifications/responses/Error401Unauthorized.yaml"
components:
  schemas:
    Aanbod:
      type: array
      description: an array of aanbod objects, with predefined properties and references
      example:
        - id: 75459de1-27bf-47c7-a59f-a0d658878ff0
          title: "Een schilderij maken"
          korte_omschrijving: "We gaan met de hele klas samen een schilderij maken. Dit doen we op locatie. Afhankelijk van het weer schilderen we binnen of buiten."
          locatie_openingstijden: "Iedere dinsdag t/m vrijdag van 9:00u tot 16:00u. Gesloten op Kerstmis."
        - id: d2360f0d-bd94-4fca-93c4-2b3af5832657
          title: "Een beeld maken"
          contactpersoon_email: "pieterersoon@example.com"
      items:
        type: object
        additionalProperties: false
        required:
          - id
          - title
        properties:
          id:
            type: string
            format: uuid
            description: Uniek uuid voor Aanbod item
            example: d0bd493d-1a1b-43e4-98fb-2237b9ca8af3
          title:
            type: string
            maxLength: 255
            description: De titel van het aanbod
            example: "Een schilderij maken"
          image:
            type: string
            maxLength: 255
            format: url
            description: Een url naar een downloadbare versie van een image bij de korte omschrijving
            example: https://www.example.com/images/schilderij.png
          korte_omschrijving:
            type: string
            maxLength: 4294967295
            description: Een korte omschrijving van het aanbod
            example: "We gaan met de hele klas samen een schilderij maken. Dit doen we op locatie. Afhankelijk van het weer schilderen we binnen of buiten."
          soort_activiteit:
            $ref: 'https://reference.exply.nl/openapispecifications/referencelists/1.1/soort_activiteit.yaml'
          classificatie_locatie_1:
            $ref: 'https://reference.exply.nl/openapispecifications/referencelists/1.1/classificatie_locatie_1.yaml'
          classificatie_locatie_2:
            $ref: 'https://reference.exply.nl/openapispecifications/referencelists/1.1/classificatie_locatie_2.yaml'
          rol_leerkracht:
            $ref: 'https://reference.exply.nl/openapispecifications/referencelists/1.1/rol_leerkracht.yaml'
          soort_leermateriaal:
            $ref: 'https://reference.exply.nl/openapispecifications/referencelists/1.1/soort_leermateriaal.yaml'
          toelichting_bij_leermateriaal:
            type: string
            maxLength: 255
            description: Toelichting bij het leermateriaal
            example: "Canvas, kwasten en verf worden verzorgd. Trek oude kleren aan."
          website_aanbod:
            type: string
            maxLength: 255
            format: url
            description: Directe link naar het aanbod
            example: https://www.example.com/aanbod/schilderen.php
          website_aanbod_login_verplicht:
            type: boolean
            description: Login verplicht
            example: true
          bestanden_bij_aanbod:
            type: array
            items:
              type: string
              maxLength: 255
              format: url
              description: Een url naar een downloadbaar bestand
            example:
              - https://www.example.com/bestanden/bestand1.docx
              - https://www.example.com/bestanden/bestand2.pptx
          bestanden_via_website:
            type: boolean
            description: Bestanden verkrijgbaar op website
            example: false
          locatie_naam:
            type: string
            maxLength: 255
            description: De naam van locatie waar het aanbod wordt gegeven, in het geval van extern aanbod
            example: "Het schilderijenhuis"
          locatie_adres:
            type: object
            description: Het adres van de de locatie van (extern) aanbod
            example:
              regel_straat: "Voorbeeldlaan 99a"
              regel_plaats: "9876XX Ter Voorbeeld"
            properties:
              regel_straat:
                type: string
                maxLength: 255
                description: straatnaam, huisnummer, huisnummer toevoeging van de locatie
                example: "Voorbeeldlaan 99a"
              regel_plaats:
                type: string
                maxLength: 255
                description: postcode, plaats van de locatie
                example: "9876XX Ter Voorbeeld"
          locatie_postcode:
            type: string
            maxLength: 255
            description: Postcode van de locatie. Wordt gebruikt voor geocodering.
            example: "9876XX"
          locatie_openingstijden:
            type: string
            maxLength: 255
            description: Openingstijden van de locatie
            example: "Iedere dinsdag t/m vrijdag van 9:00u tot 16:00u. Gesloten op Kerstmis."
          doelgroep:
            $ref: 'https://reference.exply.nl/openapispecifications/referencelists/1.1/doelgroep.yaml'
          specifieke_doelgroep:
            $ref: 'https://reference.exply.nl/openapispecifications/referencelists/1.1/specifieke_doelgroep.yaml'
          leerlingen_max_aantal:
            $ref: 'https://reference.exply.nl/openapispecifications/referencelists/1.1/leerlingen_max_aantal.yaml'
          leergebied:
            $ref: 'https://reference.exply.nl/openapispecifications/referencelists/1.1/leergebied.yaml'
          taal:
            $ref: 'https://reference.exply.nl/openapispecifications/referencelists/1.1/taal.yaml'
          contactpersoon_naam:
            type: string
            maxLength: 255
            description: Naam van de contactpersoon
            example: "Pieter Ersoon"
          contactpersoon_email:
            type: string
            maxLength: 255
            format: email
            description: Emailadres van de contactpersoon
            example: "pieterersoon@example.com"
          contactpersoon_telefoonnr:
            type: string
            maxLength: 255
            description: Telefoonnummer van de contactpersoon
            example: "0123456789"
          beschikbaar_vanaf:
            type: string
            maxLength: 255
            format: date
            description: Begindatum beschikbaarheid van het aanbod in het formaat dd-mm-yyyy
            example: "28-01-2025"
          beschikbaar_tot:
            type: string
            maxLength: 255
            format: date
            description: Einddatum beschikbaarheid van het aanbod in het formaat dd-mm-yyyy
            example: "19-12-2025"
          periode_op_aanvraag:
            type: boolean
            description: Periode op aanvraag
            example: false
          vervaldatum_aanbod:
            type: string
            maxLength: 255
            format: date
            description: Vervaldatum van het aanbod in het formaat dd-mm-yyyy
            example: "23-12-2025"
          vervaldatum_aanbod_nvt:
            type: boolean
            description: Vervaldatum niet van toepassing
            example: true
          kosten_bedrag:
            type: string
            maxLength: 255
            description: Kosten in euro
            example: "28 euro"
          kosten_type:
            $ref: 'https://reference.exply.nl/openapispecifications/referencelists/1.1/kosten_type.yaml'
          gebruik:
            $ref: 'https://reference.exply.nl/openapispecifications/referencelists/1.1/gebruik.yaml'
          licentievorm:
            $ref: 'https://reference.exply.nl/openapispecifications/referencelists/1.1/licentievorm.yaml'
          licentievorm_auteursrecht:
            type: boolean
            description: Auteursrecht van toepassing op licentie
            example: true
          indicatie_tijdsduur:
            $ref: 'https://reference.exply.nl/openapispecifications/referencelists/1.1/indicatie_tijdsduur.yaml'
          voorbereidingstijd:
            $ref: 'https://reference.exply.nl/openapispecifications/referencelists/1.1/voorbereidingstijd.yaml'
          omvang_van_het_aanbod:
            $ref: 'https://reference.exply.nl/openapispecifications/referencelists/1.1/omvang_van_het_aanbod.yaml'
          aanbieder_naam:
            type: string
            maxLength: 255
            description: Naam van de aanbieder
            example: "Het Kunsthuis"
          aanbieder_logo:
            type: string
            maxLength: 255
            format: url
            description: Een url naar een downloadbare versie van een image met het logo van de aanbieder
            example: https://www.example.com/logos/kunsthuis.png
          aanbieder_adres:
            type: object
            description: Het adres van de aanbieder
            example:
              regel_straat: "Kunststraat 1c"
              regel_plaats: "5678YY Ter Kunsten"
            properties:
              regel_straat:
                type: string
                maxLength: 255
                description: straatnaam, huisnummer, huisnummer toevoeging van de aanbieder
                example: "Kunststraat 1c"
              regel_plaats:
                type: string
                maxLength: 255
                description: postcode, plaats van de aanbieder
                example: "5678YY Ter Kunsten"
          aanbieder_email:
            type: string
            maxLength: 255
            format: email
            description: Algemeen emailadres van de aanbieder
            example: "kunsthuis@example.com"
          aanbieder_telefoonnummer:
            type: string
            maxLength: 255
            description: Telefoonnummer van de aanbieder
            example: "0123456789"
          aanbieder_website:
            type: string
            maxLength: 255
            format: url
            description: Een url naar de algemene website van de aanbieder
            example: http://www.example.com/kusthuis
          kerndoelen:
            type: array
            items:
              type: integer
              minimum: 1
              maximum: 58
              description: Nummers van gerelateerde SLO kerndoelen voor dit aanbod
            example:
              - 53
              - 54
          aanbodsdoelen:
            type: array
            items:
              type: string
              maxLength: 255
              format: uuid
              description: Uuids van gerelateerde SlO aanbodsdoelen voor dit aanbod
            example:
              - 2d4892fb-519a-4fca-9fbe-5555767e8836
              - 5f520802-a729-45fe-bc1b-90739188c6a2
              - 476e3c97-e9e8-43cf-84b2-93a110a925d2
        example:
          id: 75459de1-27bf-47c7-a59f-a0d658878ff0
          title: "Een schilderij maken"
          korte_omschrijving: "We gaan met de hele klas samen een schilderij maken. Dit doen we op locatie. Afhankelijk van het weer schilderen we binnen of buiten."
          locatie_openingstijden: "Iedere dinsdag t/m vrijdag van 9:00u tot 16:00u. Gesloten op Kerstmis."
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: simple header key authentication
security:
  - basicAuth: []
