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 ".' basicAuth: type: http scheme: basic security: []