EPFL Memento Events API

Public REST API serving EPFL events ("Memento"), with resources for events, mementos, categories, domains, faculties, registrations, spoken languages and vulgarizations. The Events endpoint supports extensive filtering by date, time, speaker, location and language, plus pagination, search and ordering. Default access is unauthenticated.

OpenAPI Specification

epfl-memento.yaml Raw ↑
openapi: 3.0.3
info:
  title: EPFL Memento Events API
  description: >-
    Public REST API serving EPFL events ("Memento"), with resources for events,
    mementos, categories, domains, faculties, registrations, spoken languages
    and vulgarizations. Converted faithfully from the published Django REST
    Framework CoreAPI schema at https://memento.epfl.ch/api/docs/?format=corejson
    and verified against live responses. The Events endpoint supports extensive
    filtering by date, time, speaker, location and language, plus pagination,
    search and ordering. Default access is unauthenticated.
  version: v1
  contact:
    name: EPFL Memento API
    url: https://memento.epfl.ch/api/docs/
servers:
  - url: https://memento.epfl.ch/api/v1
paths:
  /categories/:
    get:
      operationId: listCategories
      summary: List all Category objects.
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Ordering'
      responses:
        '200':
          description: A paginated list of categories.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedCategoryList'
  /categories/{id}/:
    get:
      operationId: readCategory
      summary: Return the details about the given Category id.
      parameters:
        - $ref: '#/components/parameters/IntId'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Ordering'
      responses:
        '200':
          description: A single category.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Category'
  /domains/:
    get:
      operationId: listDomains
      summary: List all Domain objects.
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Ordering'
      responses:
        '200':
          description: A paginated list of domains.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedDomainList'
  /domains/{id}/:
    get:
      operationId: readDomain
      summary: Return the details about the given Domain id.
      parameters:
        - $ref: '#/components/parameters/IntId'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Ordering'
      responses:
        '200':
          description: A single domain.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Domain'
  /events/:
    get:
      operationId: listEvents
      summary: List all Event objects with filtering.
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
        - name: title
          in: query
          description: Filters the events containing the given text in the title.
          schema:
            type: string
        - name: description
          in: query
          description: Filters the events containing the given text in the description.
          schema:
            type: string
        - name: start_date
          in: query
          description: Filters the events which start at the given start_date.
          schema:
            type: string
            format: date
        - name: end_date
          in: query
          description: Filters the events which finish at the given end_date.
          schema:
            type: string
            format: date
        - name: start_time
          in: query
          description: Filters the events which start at the given start_time.
          schema:
            type: string
        - name: end_time
          in: query
          description: Filters the events which finish at the given end_time.
          schema:
            type: string
        - name: start_year
          in: query
          description: Filters the events which start at the given start_year.
          schema:
            type: number
        - name: place_and_room
          in: query
          description: Filters the events containing the given text in the place and room.
          schema:
            type: string
        - name: spoken_languages
          in: query
          description: 'Spoken Language ID. Return only the events with the given spoken language.'
          schema:
            type: string
        - name: memento
          in: query
          description: 'Memento ID. Return only the events in the given memento.'
          schema:
            type: number
        - name: category
          in: query
          description: 'Category ID. Return only the events linked to the given category.'
          schema:
            type: string
        - name: theme
          in: query
          description: 'Theme name. Return only the events linked to the given theme.'
          schema:
            type: string
        - name: keywords
          in: query
          description: 'Keywords name. Return only the events linked to the given keywords.'
          schema:
            type: string
        - name: vulgarization
          in: query
          description: 'Vulgarization ID. Return only the events with the given vulgarization.'
          schema:
            type: string
        - name: registration
          in: query
          description: 'Registration ID. Return only the events linked to the given registration.'
          schema:
            type: string
        - name: domains
          in: query
          description: 'Domain ID. Return only the events linked to the given domain.'
          schema:
            type: string
        - name: academic_calendar_category
          in: query
          description: 'Academic Calendar Category ID. Return only matching events.'
          schema:
            type: number
        - name: speaker
          in: query
          description: Filters the events containing the given text in the speaker.
          schema:
            type: string
        - name: organizer
          in: query
          description: Filters the events containing the given text in the organizer.
          schema:
            type: string
        - name: contact
          in: query
          description: Filters the events containing the given text in the contact.
          schema:
            type: string
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Ordering'
      responses:
        '200':
          description: A paginated list of events.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedEventList'
  /events/{event__pk}/:
    get:
      operationId: readEvent
      summary: Return the details about the given Event id.
      parameters:
        - name: event__pk
          in: path
          required: true
          description: A unique integer value identifying this event.
          schema:
            type: integer
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Ordering'
      responses:
        '200':
          description: A single event.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Event'
  /faculties/:
    get:
      operationId: listFaculties
      summary: List all Faculty objects.
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Ordering'
      responses:
        '200':
          description: A paginated list of faculties.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedFacultyList'
  /faculties/{id}/:
    get:
      operationId: readFaculty
      summary: Return the details about the given Faculty id.
      parameters:
        - $ref: '#/components/parameters/IntId'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Ordering'
      responses:
        '200':
          description: A single faculty.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Faculty'
  /mementos/:
    get:
      operationId: listMementos
      summary: List all Memento objects.
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Ordering'
      responses:
        '200':
          description: A paginated list of mementos.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedMementoList'
  /mementos/{id}/:
    get:
      operationId: readMemento
      summary: Return the details about the given Memento id.
      parameters:
        - $ref: '#/components/parameters/IntId'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Ordering'
      responses:
        '200':
          description: A single memento.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Memento'
  /mementos/{id}/events/:
    get:
      operationId: listMementoEvents
      summary: List events for a memento.
      parameters:
        - $ref: '#/components/parameters/IntId'
      responses:
        '200':
          description: Events for the memento.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedEventList'
  /registrations/:
    get:
      operationId: listRegistrations
      summary: List all Registration objects.
      responses:
        '200':
          description: A list of registrations.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedRegistrationList'
  /registrations/{id}/:
    get:
      operationId: readRegistration
      summary: Return the details about the given Registration id.
      parameters:
        - $ref: '#/components/parameters/IntId'
      responses:
        '200':
          description: A single registration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Registration'
  /spoken_languages/:
    get:
      operationId: listSpokenLanguages
      summary: List all Spoken Language objects.
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Ordering'
      responses:
        '200':
          description: A paginated list of spoken languages.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedSpokenLanguageList'
  /spoken_languages/{id}/:
    get:
      operationId: readSpokenLanguage
      summary: Return the details about the given Spoken Language id.
      parameters:
        - $ref: '#/components/parameters/IntId'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Ordering'
      responses:
        '200':
          description: A single spoken language.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SpokenLanguage'
  /vulgarizations/:
    get:
      operationId: listVulgarizations
      summary: List all Vulgarization objects.
      responses:
        '200':
          description: A list of vulgarizations.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedVulgarizationList'
  /vulgarizations/{id}/:
    get:
      operationId: readVulgarization
      summary: Return the details about the given Vulgarization id.
      parameters:
        - $ref: '#/components/parameters/IntId'
      responses:
        '200':
          description: A single vulgarization.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Vulgarization'
components:
  parameters:
    Limit:
      name: limit
      in: query
      description: Number of results to return per page.
      schema:
        type: integer
    Offset:
      name: offset
      in: query
      description: The initial index from which to return the results.
      schema:
        type: integer
    Search:
      name: search
      in: query
      description: A search term.
      schema:
        type: string
    Ordering:
      name: ordering
      in: query
      description: Which field to use when ordering the results.
      schema:
        type: string
    IntId:
      name: id
      in: path
      required: true
      description: A unique integer value identifying this object.
      schema:
        type: integer
  schemas:
    Category:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
    Domain:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
    Faculty:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
    Memento:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
    SpokenLanguage:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
    Vulgarization:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
    Registration:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
    Event:
      type: object
      properties:
        id:
          type: integer
        title:
          type: string
        slug:
          type: string
        event_url:
          type: string
          format: uri
        visual_url:
          type: string
          format: uri
        visual_large_url:
          type: string
          format: uri
        visual_maxsize_url:
          type: string
          format: uri
        lang:
          type: string
        start_date:
          type: string
          format: date
        end_date:
          type: string
          format: date
        start_time:
          type: string
        end_time:
          type: string
        description:
          type: string
        image_description:
          type: string
        creation_date:
          type: string
          format: date-time
        last_modification_date:
          type: string
          format: date-time
        link_label:
          type: string
        link_url:
          type: string
        canceled:
          type: string
        cancel_reason:
          type: string
        place_and_room:
          type: string
        url_place_and_room:
          type: string
        url_online_room:
          type: string
        spoken_languages:
          type: array
          items:
            $ref: '#/components/schemas/SpokenLanguage'
        speaker:
          type: string
        organizer:
          type: string
        contact:
          type: string
        is_internal:
          type: string
        theme:
          type: string
        vulgarization:
          $ref: '#/components/schemas/Vulgarization'
        registration:
          $ref: '#/components/schemas/Registration'
        keywords:
          type: string
        file:
          type: string
          nullable: true
        icalendar_url:
          type: string
          format: uri
        category:
          $ref: '#/components/schemas/Category'
        academic_calendar_category:
          type: string
          nullable: true
        domains:
          type: array
          items:
            $ref: '#/components/schemas/Domain'
        mementos:
          type: array
          items:
            $ref: '#/components/schemas/Memento'
    PaginatedEventList:
      type: object
      properties:
        count:
          type: integer
        next:
          type: string
          format: uri
          nullable: true
        previous:
          type: string
          format: uri
          nullable: true
        results:
          type: array
          items:
            $ref: '#/components/schemas/Event'
    PaginatedCategoryList:
      type: object
      properties:
        count:
          type: integer
        next:
          type: string
          format: uri
          nullable: true
        previous:
          type: string
          format: uri
          nullable: true
        results:
          type: array
          items:
            $ref: '#/components/schemas/Category'
    PaginatedDomainList:
      type: object
      properties:
        count:
          type: integer
        next:
          type: string
          format: uri
          nullable: true
        previous:
          type: string
          format: uri
          nullable: true
        results:
          type: array
          items:
            $ref: '#/components/schemas/Domain'
    PaginatedFacultyList:
      type: object
      properties:
        count:
          type: integer
        next:
          type: string
          format: uri
          nullable: true
        previous:
          type: string
          format: uri
          nullable: true
        results:
          type: array
          items:
            $ref: '#/components/schemas/Faculty'
    PaginatedMementoList:
      type: object
      properties:
        count:
          type: integer
        next:
          type: string
          format: uri
          nullable: true
        previous:
          type: string
          format: uri
          nullable: true
        results:
          type: array
          items:
            $ref: '#/components/schemas/Memento'
    PaginatedSpokenLanguageList:
      type: object
      properties:
        count:
          type: integer
        next:
          type: string
          format: uri
          nullable: true
        previous:
          type: string
          format: uri
          nullable: true
        results:
          type: array
          items:
            $ref: '#/components/schemas/SpokenLanguage'
    PaginatedRegistrationList:
      type: object
      properties:
        count:
          type: integer
        next:
          type: string
          format: uri
          nullable: true
        previous:
          type: string
          format: uri
          nullable: true
        results:
          type: array
          items:
            $ref: '#/components/schemas/Registration'
    PaginatedVulgarizationList:
      type: object
      properties:
        count:
          type: integer
        next:
          type: string
          format: uri
          nullable: true
        previous:
          type: string
          format: uri
          nullable: true
        results:
          type: array
          items:
            $ref: '#/components/schemas/Vulgarization'
  securitySchemes:
    tokenAuth:
      type: apiKey
      in: header
      name: Authorization
      description: 'Optional DRF Token authentication.'
    basicAuth:
      type: http
      scheme: basic
security: []