EPFL Actu News API

Public REST API serving EPFL news ("Actu") content, with resources for news, projects, channels, faculties, categories, themes and publics. Supports pagination, search and language preferences. Default access is unauthenticated; optional Token, Basic and Session authentication exist.

OpenAPI Specification

epfl-actu.yaml Raw ↑
openapi: 3.0.3
info:
  title: EPFL Actu News API
  description: >-
    Public REST API serving EPFL news ("Actu") content, with resources for
    news, projects, channels, faculties, categories, themes and publics.
    Converted faithfully from the published Django REST Framework CoreAPI
    schema at https://actu.epfl.ch/api-docs/?format=corejson. Only paths,
    parameters and objects observed in the real schema and live responses are
    included. Default access is unauthenticated; optional Token, Basic and
    Session authentication exist.
  version: v1
  contact:
    name: EPFL Actu API
    url: https://actu.epfl.ch/api-docs/
servers:
  - url: https://actu.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'
      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'
      responses:
        '200':
          description: A single category.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Category'
  /channels/:
    get:
      operationId: listChannels
      summary: List all Channel objects.
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: A paginated list of channels.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedChannelList'
  /channels/{id}/:
    get:
      operationId: readChannel
      summary: Return the details about the given Channel id.
      parameters:
        - $ref: '#/components/parameters/StringId'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: A single channel.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Channel'
  /channels/{id}/news/:
    get:
      operationId: listChannelNews
      summary: List news for a channel.
      parameters:
        - $ref: '#/components/parameters/StringId'
      responses:
        '200':
          description: News items for the channel.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedNewsList'
  /channels/{id}/projects/:
    get:
      operationId: listChannelProjects
      summary: List projects for a channel.
      parameters:
        - $ref: '#/components/parameters/StringId'
      responses:
        '200':
          description: Projects for the channel.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedProjectList'
  /faculties/:
    get:
      operationId: listFaculties
      summary: List all Faculty objects.
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Search'
      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'
      responses:
        '200':
          description: A single faculty.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Faculty'
  /news/:
    get:
      operationId: listNews
      summary: List all News objects.
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Lang'
      responses:
        '200':
          description: A paginated list of news items.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedNewsList'
  /news/{news__pk}/:
    get:
      operationId: readNews
      summary: Return the details about the given News id.
      parameters:
        - name: news__pk
          in: path
          required: true
          description: A unique integer value identifying this news item.
          schema:
            type: integer
        - $ref: '#/components/parameters/Search'
        - $ref: '#/components/parameters/Lang'
      responses:
        '200':
          description: A single news item.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/News'
  /projects/:
    get:
      operationId: listProjects
      summary: List all Project objects.
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: A paginated list of projects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedProjectList'
  /projects/{id}/:
    get:
      operationId: readProject
      summary: Return the details about the given Project id.
      parameters:
        - $ref: '#/components/parameters/IntId'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: A single project.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
  /publics/:
    get:
      operationId: listPublics
      summary: List all Public objects.
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: A paginated list of publics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedPublicList'
  /publics/{id}/:
    get:
      operationId: readPublic
      summary: Return the details about the given Public id.
      parameters:
        - $ref: '#/components/parameters/IntId'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: A single public.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Public'
  /themes/:
    get:
      operationId: listThemes
      summary: List all Theme objects.
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: A paginated list of themes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedThemeList'
  /themes/{id}/:
    get:
      operationId: readTheme
      summary: Return the details about the given Theme id.
      parameters:
        - $ref: '#/components/parameters/IntId'
        - $ref: '#/components/parameters/Search'
      responses:
        '200':
          description: A single theme.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Theme'
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
    Lang:
      name: lang
      in: query
      description: Preferred language for localized content.
      schema:
        type: string
        enum: [en, fr, de]
    IntId:
      name: id
      in: path
      required: true
      description: A unique integer value identifying this object.
      schema:
        type: integer
    StringId:
      name: id
      in: path
      required: true
      description: A unique value identifying this object.
      schema:
        type: string
  schemas:
    Category:
      type: object
      properties:
        id:
          type: integer
        fr_label:
          type: string
        en_label:
          type: string
        de_label:
          type: string
    Channel:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        fr_description:
          type: string
        en_description:
          type: string
        de_description:
          type: string
        is_active:
          type: boolean
    Faculty:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
    Theme:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
    Public:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
    Project:
      type: object
      properties:
        id:
          type: integer
        title:
          type: string
        news_url:
          type: string
          format: uri
    News:
      type: object
      properties:
        id:
          type: integer
        lang:
          type: string
        title:
          type: string
        subtitle:
          type: string
        text:
          type: string
        order:
          type: integer
        publish_date:
          type: string
          format: date-time
        visual_url:
          type: string
          format: uri
          nullable: true
        thumbnail_url:
          type: string
          format: uri
          nullable: true
        visual_description:
          type: string
        short_vimeo_video_id:
          type: string
        short_vimeo_video_credits:
          type: string
        carousel_images:
          type: array
          items:
            type: object
        video:
          type: string
        channel:
          $ref: '#/components/schemas/Channel'
        category:
          $ref: '#/components/schemas/Category'
        news_url:
          type: string
          format: uri
        themes:
          type: array
          items:
            $ref: '#/components/schemas/Theme'
        publics:
          type: array
          items:
            $ref: '#/components/schemas/Public'
        faculties:
          type: array
          items:
            $ref: '#/components/schemas/Faculty'
        projects:
          type: array
          items:
            $ref: '#/components/schemas/Project'
        authors:
          type: array
          items:
            type: object
        links:
          type: array
          items:
            type: object
        funding:
          type: string
        references:
          type: string
        is_under_cc_license:
          type: boolean
    PaginatedNewsList:
      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/News'
    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'
    PaginatedChannelList:
      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/Channel'
    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'
    PaginatedThemeList:
      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/Theme'
    PaginatedPublicList:
      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/Public'
    PaginatedProjectList:
      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/Project'
  securitySchemes:
    tokenAuth:
      type: apiKey
      in: header
      name: Authorization
      description: 'DRF Token authentication, e.g. "Authorization: Token <key>".'
    basicAuth:
      type: http
      scheme: basic
security: []