Open Education API News API

The news API provides news feeds and items regarding a specific subject.

Operations 4

GET /news-feeds GET /news-feeds #
GET /news-feeds/{newsFeedId} GET /news-feeds/{newsFeedId} #
GET /news-feeds/{newsFeedId}/news-items GET /news-feeds/{newsFeedId}/news-items #
GET /news-items/{newsItemId} GET /news-items/{newsItemId} #

Documentation

Specifications

Schemas & Data

📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-education-api/refs/heads/main/json-schema/open-education-api-test-component-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-education-api/refs/heads/main/json-schema/open-education-api-learning-component-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-education-api/refs/heads/main/json-schema/open-education-api-person-properties-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-education-api/refs/heads/main/json-schema/open-education-api-learning-outcome-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-education-api/refs/heads/main/json-schema/open-education-api-organisation-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-education-api/refs/heads/main/json-schema/open-education-api-academic-session-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-education-api/refs/heads/main/json-schema/open-education-api-component-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-education-api/refs/heads/main/json-schema/open-education-api-organization-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-education-api/refs/heads/main/json-schema/open-education-api-room-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/open-education-api/refs/heads/main/json-schema/open-education-api-group-schema.json

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/open-education-api:open-education-api-news-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

open-education-api-news-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Open Education News API
  version: 5.0.0
  x-logo:
    url: ../logo.png
  description: 'Operations tagged news across 2 of this provider''s published API definitions: ooapi-v5.yaml, open-education-api-v5-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: http://demo01.eduapi.nl/v5
  description: SURF demo implementation
tags:
- name: News
  description: The news API provides news feeds and items regarding a specific subject.
paths:
  /news-feeds:
    get:
      summary: GET /news-feeds
      description: Get a list of all news feeds, ordered by title.
      tags:
      - News
      parameters:
      - $ref: '#/components/parameters/pageSize'
      - $ref: '#/components/parameters/pageNumber'
      - $ref: '#/components/parameters/consumer'
      - $ref: '#/components/parameters/search'
      - name: newsFeedType
        in: query
        description: Filter by news type
        required: false
        schema:
          type: string
          enum:
          - organization
          - program
          - course
          - component
          - person
          - building
          - room
      - name: sort
        in: query
        explode: false
        description: 'Sort by one or more attributes, the default is ascending. Prefixing the attribute with a minus sign `-` allows for descending sort. Examples: [ATTR | -ATTR | ATTR1,-ATTR2]'
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - newsFeedId
            - name
            - -newsFeedId
            - -name
          default:
          - name
          example:
          - name
          - -newsFeedId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/Pagination'
                - type: object
                  required:
                  - items
                  properties:
                    items:
                      type: array
                      items:
                        $ref: '#/components/schemas/NewsFeed'
                    ext:
                      $ref: '#/components/schemas/Ext'
        '400':
          $ref: '#/components/responses/ErrorBadRequest'
        '401':
          $ref: '#/components/responses/ErrorUnauthorized'
        '403':
          $ref: '#/components/responses/ErrorForbidden'
        '405':
          $ref: '#/components/responses/ErrorMethodNotAllowed'
        '429':
          $ref: '#/components/responses/ErrorTooManyRequests'
        '500':
          $ref: '#/components/responses/ErrorInternalServerError'
      operationId: getNewsFeeds
      x-operation-id-source: derived
    servers:
    - url: http://demo01.eduapi.nl/v5
      description: SURF demo implementation
  /news-feeds/{newsFeedId}:
    get:
      summary: GET /news-feeds/{newsFeedId}
      description: Get a single news feed.
      tags:
      - News
      parameters:
      - name: newsFeedId
        in: path
        description: News feed ID
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NewsFeed'
        '400':
          $ref: '#/components/responses/ErrorBadRequest'
        '401':
          $ref: '#/components/responses/ErrorUnauthorized'
        '403':
          $ref: '#/components/responses/ErrorForbidden'
        '404':
          $ref: '#/components/responses/ErrorNotFound'
        '405':
          $ref: '#/components/responses/ErrorMethodNotAllowed'
        '429':
          $ref: '#/components/responses/ErrorTooManyRequests'
        '500':
          $ref: '#/components/responses/ErrorInternalServerError'
      operationId: getNewsFeedsByNewsFeedId
      x-operation-id-source: derived
    servers:
    - url: http://demo01.eduapi.nl/v5
      description: SURF demo implementation
  /news-feeds/{newsFeedId}/news-items:
    get:
      summary: GET /news-feeds/{newsFeedId}/news-items
      description: Get an ordered list of all news items.
      tags:
      - News
      parameters:
      - name: newsFeedId
        in: path
        description: News feed ID
        required: true
        schema:
          type: string
          format: uuid
      - $ref: '#/components/parameters/pageSize'
      - $ref: '#/components/parameters/pageNumber'
      - $ref: '#/components/parameters/consumer'
      - $ref: '#/components/parameters/search'
      - name: author
        in: query
        description: Filter by author
        required: false
        schema:
          type: string
      - name: sort
        in: query
        explode: false
        description: 'Sort by one or more attributes, the default is ascending. Prefixing the attribute with a minus sign `-` allows for descending sort. Examples: [ATTR | -ATTR | ATTR1,-ATTR2]'
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - newsItemId
            - name
            - validFrom
            - validUntil
            - lastModified
            - -newsItemId
            - -name
            - -validFrom
            - -validUntil
            - -lastModified
          default:
          - newsItemId
          example:
          - validFrom
          - -name
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/Pagination'
                - type: object
                  required:
                  - items
                  properties:
                    items:
                      type: array
                      items:
                        $ref: '#/components/schemas/NewsItem'
                    ext:
                      $ref: '#/components/schemas/Ext'
        '400':
          $ref: '#/components/responses/ErrorBadRequest'
        '401':
          $ref: '#/components/responses/ErrorUnauthorized'
        '403':
          $ref: '#/components/responses/ErrorForbidden'
        '404':
          $ref: '#/components/responses/ErrorNotFound'
        '405':
          $ref: '#/components/responses/ErrorMethodNotAllowed'
        '429':
          $ref: '#/components/responses/ErrorTooManyRequests'
        '500':
          $ref: '#/components/responses/ErrorInternalServerError'
      operationId: getNewsFeedsByNewsFeedIdNewsItems
      x-operation-id-source: derived
    servers:
    - url: http://demo01.eduapi.nl/v5
      description: SURF demo implementation
  /news-items/{newsItemId}:
    get:
      summary: GET /news-items/{newsItemId}
      description: Get a single news item.
      tags:
      - News
      parameters:
      - name: newsItemId
        in: path
        description: News item ID
        required: true
        schema:
          type: string
          format: uuid
      - name: expand
        in: query
        explode: false
        description: Optional properties to include, separated by a comma
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - newsFeeds
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NewsItem'
        '400':
          $ref: '#/components/responses/ErrorBadRequest'
        '401':
          $ref: '#/components/responses/ErrorUnauthorized'
        '403':
          $ref: '#/components/responses/ErrorForbidden'
        '404':
          $ref: '#/components/responses/ErrorNotFound'
        '405':
          $ref: '#/components/responses/ErrorMethodNotAllowed'
        '429':
          $ref: '#/components/responses/ErrorTooManyRequests'
        '500':
          $ref: '#/components/responses/ErrorInternalServerError'
      operationId: getNewsItemsByNewsItemId
      x-operation-id-source: derived
    servers:
    - url: http://demo01.eduapi.nl/v5
      description: SURF demo implementation
components:
  parameters:
    consumer:
      name: consumer
      in: query
      description: Request entities meant for a specific consumer. This query parameter is independent from the `consumers` attribute. See the [documentation on support for specific consumers](https://openonderwijsapi.nl/v5/#/technical/consumers-and-profiles/) for more information about this mechanism.
      required: false
      schema:
        type: string
    pageSize:
      name: pageSize
      in: query
      description: The number of items per page
      required: false
      schema:
        type: integer
        format: int32
        default: 10
        enum:
        - 10
        - 20
        - 50
        - 100
        - 250
    search:
      name: q
      in: query
      description: Filter by items having a name, abbreviation or description containing the given search term (exact partial match, case insensitive)
      required: false
      schema:
        type: string
    pageNumber:
      name: pageNumber
      in: query
      description: The page number to get. Page numbers start at 1.
      required: false
      schema:
        type: integer
        format: int32
        example: 1
        minimum: 1
  schemas:
    Consumer:
      type: object
      description: Object for communicating data to a specific consumer (destination). This object has no relationship with the `consumer` query parameter.
      required:
      - consumerKey
      properties:
        consumerKey:
          description: The key of the consumer (destination) for which this information is intended. See the [consumer registry](https://openonderwijsapi.nl/v5/#/technical/consumers-and-profiles/) for more information.
          type: string
      additionalProperties: true
    NewsItem:
      type: object
      description: A newsitem contains the message and metadata of that message
      required:
      - newsItemId
      - name
      properties:
        newsItemId:
          type: string
          description: Unique id for this news item
          format: uuid
          example: 123e4567-e89b-12d3-a456-122564174000
        newsItemType:
          $ref: '#/components/schemas/newsItemType'
        name:
          type: array
          description: The name for this news item
          minItems: 1
          items:
            $ref: '#/components/schemas/LanguageTypedString'
          example:
          - language: en-GB
            value: Room Bb 4.35 will be un available from 2020-09-29 until 2020-09-30
        authors:
          type: array
          description: The authors of the article with this news item
          items:
            type: string
            maxLength: 256
          example:
          - admin@universiteitvanharderwijk.nl
        image:
          type: string
          description: The url containing the address of the image belonging to this news item
          format: uri
          maxLength: 2048
          example: https://upload.wikimedia.org/wikipedia/commons/4/44/Antu_emblem-unavailable.svg
        link:
          type: string
          description: The url containing the address of the article belonging to this news item
          format: uri
          maxLength: 2048
          example: https://www.universiteitvanharderwijk.nl/cms/ruimtegebrek
        content:
          type: array
          description: The content of this news item.
          minItems: 1
          items:
            $ref: '#/components/schemas/LanguageTypedString'
          example:
          - language: en-GB
            value: The room Bb 4.35 will be under maintenance
        newsFeeds:
          description: The newsFeeds where this item can be found. [`expandable`](#tag/news_feed_model)
          type: array
          items:
            oneOf:
            - $ref: '#/components/schemas/Identifier'
              title: newsFeedId
            - $ref: '#/components/schemas/NewsFeed'
              title: NewsFeed
        validFrom:
          type: string
          description: The moment from which this news item is valid, RFC3339 (date-time)
          format: date-time
          example: '2020-09-28T08:30:00.000Z'
        validUntil:
          type: string
          description: The moment until which this news item is valid, RFC3339 (date-time)
          format: date-time
          example: '2020-09-30T20:00:00.000Z'
        lastModified:
          type: string
          description: The moment on which this news item was updated, RFC3339 (date-time)
          format: date-time
          example: '2020-09-28T00:00:00.000Z'
        consumers:
          description: The additional consumer elements that can be provided, see the [documentation on support for specific consumers](https://openonderwijsapi.nl/v5/#/technical/consumers-and-profiles/) for more information about this mechanism.
          type: array
          items:
            $ref: '#/components/schemas/Consumer'
          example:
          - consumerKey: x-test-consumer
            additional: custom
            attributes: here
        ext:
          $ref: '#/components/schemas/Ext'
    Problem:
      type: object
      description: A system message including the error code and an explanation
      required:
      - status
      - title
      properties:
        status:
          type: string
          description: The HTTP status code
          example: '404'
        title:
          type: string
          description: A short, human-readable summary of the problem type
          example: Resource not found
        detail:
          type: string
          description: A human-readable explanation specific to this occurrence of the problem
    Ext:
      type: object
      description: Object for additional non-standard attributes
    newsItemType:
      type: string
      description: 'The type of this news item

        - calamity: calamiteit

        - general: algemeen

        - schedule-change: roosterwijziging

        - announcement: aankondiging

        '
      enum:
      - calamity
      - general
      - schedule-change
      - announcement
    LanguageTypedString:
      type: object
      description: A String with an associated language code.
      properties:
        language:
          description: The language used in the described entity. A string formatted according to RFC3066.
          type: string
          pattern: ^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$
        value:
          description: String to describe the entity.
          type: string
      example:
        language: en-GB
        value: program that is a place holder for all courses that are made available for student mobility
    NewsFeed:
      type: object
      description: A placeholder or collection of news items
      required:
      - newsFeedId
      - newsFeedType
      - name
      - description
      properties:
        newsFeedId:
          type: string
          description: Unique id for this news feed
          format: uuid
          example: 123e4567-e89b-12d3-a456-134564174222
        newsFeedType:
          type: string
          description: The type of the object this news feed relates to
          enum:
          - organization
          - program
          - course
          - component
          - person
          - building
          - room
          example: room
        name:
          type: array
          description: The name for this news feed
          minItems: 1
          items:
            $ref: '#/components/schemas/LanguageTypedString'
          example:
          - language: en-GB
            value: room Bb 4.35 news
        description:
          type: array
          description: The description of this news feed.
          minItems: 1
          items:
            $ref: '#/components/schemas/LanguageTypedString'
          example:
          - language: en-GB
            value: all information on what happens in room Bb 4.35
        consumers:
          description: The additional consumer elements that can be provided, see the [documentation on support for specific consumers](https://openonderwijsapi.nl/v5/#/technical/consumers-and-profiles/) for more information about this mechanism.
          type: array
          items:
            $ref: '#/components/schemas/Consumer'
          example:
          - consumerKey: x-test-consumer
            additional: custom
            attributes: here
        ext:
          $ref: '#/components/schemas/Ext'
    Pagination:
      type: object
      required:
      - pageSize
      - pageNumber
      - hasPreviousPage
      - hasNextPage
      - items
      properties:
        pageSize:
          type: integer
          format: int32
          description: The number of items per page
          example: 10
        pageNumber:
          type: integer
          format: int32
          description: The current page number
          example: 1
          minimum: 1
        hasPreviousPage:
          type: boolean
          description: Whether there is a previous page
          example: false
        hasNextPage:
          type: boolean
          description: Whether there is a previous page
          example: true
        totalPages:
          type: integer
          format: int32
          description: Total number of pages
          example: 8
    Identifier:
      type: string
      description: An identifier of another resource.
      format: uuid
  responses:
    ErrorMethodNotAllowed:
      description: Method not allowed
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    ErrorNotFound:
      description: Not Found
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    ErrorUnauthorized:
      description: Unauthorized
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    ErrorTooManyRequests:
      description: Too many requests
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    ErrorForbidden:
      description: Forbidden
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    ErrorBadRequest:
      description: Bad request
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    ErrorInternalServerError:
      description: Internal Server Error
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
    openId:
      type: openIdConnect
      openIdConnectUrl: https://example.nl/.well-known/openid-configuration
x-refined-from:
- ooapi-v5.yaml
- open-education-api-v5-openapi.yml
x-tagGroups:
- name: Requests and responses
  tags:
  - security
  - service metadata
  - academic sessions
  - associations
  - buildings
  - courses
  - course offerings
  - course offering associations
  - components
  - documents
  - groups
  - learning components
  - learning component offerings
  - learning component offering associations
  - learning outcomes
  - news
  - organisations
  - persons
  - programmes
  - programme offerings
  - programme offering associations
  - rooms
  - test components
  - test component offerings
  - test component offering associations
  - test component offering association attempts
- name: Models
  tags:
  - data_model
  - service_model
  - learning_outcome_model
  - academic_session_model
  - building_model
  - course_model
  - course_offering_model
  - course_offering_association_model
  - document_model
  - learning_component_model
  - learning_component_offering_model
  - learning_component_offering_association_model
  - test_component_model
  - test_component_offering_model
  - test_component_offering_association_model
  - test_component_offering_association_attempt_model
  - group_model
  - membership_model
  - organisation_model
  - person_model
  - programme_model
  - programme_offering_model
  - programme_offering_association_model
  - room_model