University of Cape Town collections API

Public collections

OpenAPI Specification

university-of-cape-town-collections-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: DataFirst Microdata Catalog API (NADA) articles collections API
  description: DataFirst is a University of Cape Town research unit and data service providing online access to survey and administrative microdata from South Africa and other African countries. Its open data portal is built on the NADA (National Data Archive) cataloging tool, which exposes a public, unauthenticated REST/JSON API for browsing the catalog of studies. This OpenAPI description was reverse-engineered from confirmed live responses of the public catalog endpoint (verified returning survey metadata in JSON). Only paths and response fields actually observed in live responses are documented here.
  version: '1.0'
  contact:
    name: DataFirst
    url: https://www.datafirst.uct.ac.za/
servers:
- url: https://www.datafirst.uct.ac.za/dataportal/index.php/api
  description: DataFirst NADA public catalog API
tags:
- name: collections
  description: Public collections
paths:
  /collections:
    get:
      tags:
      - collections
      summary: List public collections
      operationId: listCollections
      parameters:
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/pageSize'
      - name: institution
        in: query
        schema:
          type: integer
      responses:
        '200':
          description: A list of public collections.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Collection'
  /collections/{collection_id}:
    get:
      tags:
      - collections
      summary: Get a public collection
      operationId: getCollection
      parameters:
      - name: collection_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: The requested collection.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Collection'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    Collection:
      type: object
      required:
      - id
      - title
      - doi
      - handle
      - url
      - timeline
      properties:
        id:
          type: integer
          example: 123
        title:
          type: string
          example: Sample collection
        doi:
          type: string
          example: 10.6084/m9.figshare.123
        handle:
          type: string
        url:
          type: string
          format: uri
          example: https://api.figshare.com/v2/collections/123
        timeline:
          $ref: '#/components/schemas/Timeline'
    Timeline:
      type: object
      description: Publishing timeline for an item.
      properties:
        posted:
          type: string
          description: Date the item was posted.
          example: '2026-06-04T02:59:32'
        firstOnline:
          type: string
          description: Date the item first went online.
        revision:
          type: string
          description: Date of the last revision.
    ErrorMessage:
      type: object
      properties:
        code:
          type: string
          description: Machine-readable error code.
        message:
          type: string
          description: Human-readable error message.
  responses:
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
  parameters:
    pageSize:
      name: page_size
      in: query
      description: Number of results per page.
      schema:
        type: integer
        minimum: 1
        maximum: 1000
    page:
      name: page
      in: query
      description: Page number for pagination.
      schema:
        type: integer
        minimum: 1