University of Chicago Gen3 indexd — bundle API

Bundle endpoints.

Operations 4

POST /bundle Create a bundle.
GET /bundle List all Bundles. #
GET /bundle/{GUID} Get bundle info for a given GUID
DELETE /bundle/{GUID} delete bundle from bundle records

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/university-of-chicago-bundle-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

university-of-chicago-bundle-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Gen3 indexd OpenAPI Specification Bundle API
  version: 0.1.0
  description: 'indexd is the Gen3 data indexing and GUID service, authored by the University of Chicago Center for Translational Data Science. Code: https://github.com/uc-cdis/indexd'
  termsOfService: http://cdis.uchicago.edu/terms/
  contact:
    email: cdis@uchicago.edu
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
- url: https://gen3.datacommons.io/
  description: University of Chicago Center for Translational Data Science (CTDS) reference Gen3 data commons. Gen3 is deployable software authored by CTDS (github.com/uc-cdis), so the upstream specification ships a placeholder host; this is the base URL of the deployment CTDS itself operates. The datacommons.io domain is registered to CDIS, University of Chicago.
  x-operator: institution
  x-verified: '2026-08-19'
  x-verified-evidence: https://gen3.datacommons.io/.well-known/openid-configuration
tags:
- name: bundle
  description: Bundle endpoints.
paths:
  /bundle:
    post:
      tags:
      - bundle
      summary: Create a bundle.
      description: ''
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BundleResponse'
        '400':
          description: Invalid input
        '404':
          description: GUID in bundle doesn't exist.
      security:
      - authToken: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InputBundle'
        description: Body takes in GUID, bundle_name, checksum, list of bundles/objects to bundle, and size. Only list of bundles/objects is required, rest will be created by indexd if not provided.
        required: true
    get:
      summary: List all Bundles.
      description: By default lists all the bundles
      operationId: ListBundles
      parameters:
      - name: form
        in: query
        description: specify whether you want to list bundle, objects or both.
        required: false
        schema:
          type: string
          enum:
          - bundle
          - object
          - all
      - name: start
        in: query
        description: start did
        required: false
        schema:
          type: string
      - name: limit
        in: query
        description: number of records to return for this page, default to 100
        required: false
        schema:
          type: integer
      - name: page
        in: query
        description: pagination support without relying on dids. offsets results by limit*page
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListBundles'
      security: []
      tags:
      - bundle
  /bundle/{GUID}:
    get:
      tags:
      - bundle
      summary: Get bundle info for a given GUID
      parameters:
      - name: GUID
        in: path
        description: Resolves for both bundle id and object id.
        required: true
        schema:
          type: string
      - name: expand
        in: query
        description: Only shows first layer of contents when expand=false. Recursively unbundles contents when expand=true. false by default
        schema:
          type: boolean
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BundleGet'
        '404':
          description: bundle not found
    delete:
      tags:
      - bundle
      summary: delete bundle from bundle records
      description: ''
      parameters:
      - name: GUID
        in: path
        description: bundle id
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Bundle is successfully deleted
        '404':
          description: Bundle ID not found
      security:
      - authToken: []
components:
  schemas:
    BundleContent:
      type: object
      properties:
        id:
          type: string
        drs_uri:
          type: string
        name:
          type: string
        contents:
          type: array
          items:
            type: object
    BundleResponse:
      type: object
      properties:
        bundle_id:
          $ref: '#/components/schemas/DID'
        name:
          type: string
        contents:
          type: array
          items:
            $ref: '#/components/schemas/OutputBundle'
    Checksum:
      type: object
      required:
      - checksum
      properties:
        checksum:
          type: string
          description: The hex-string encoded checksum for the Data.
        type:
          type: string
          description: 'The digest method used to create the checksum. If left unspecified md5

            will be assumed.

            possible values:

            md5                # most blob stores provide a checksum using this

            multipart-md5      # multipart uploads provide a specialized tag in S3

            sha256

            sha512'
    BundleGet:
      type: object
      properties:
        id:
          type: string
        drs_uri:
          type: string
        name:
          type: string
        size:
          type: integer
        created_time:
          type: string
          format: date-time
        updated_time:
          type: string
          format: date-time
        checksums:
          type: array
          items:
            $ref: '#/components/schemas/Checksum'
        contents:
          type: array
          items:
            $ref: '#/components/schemas/BundleContent'
    ListBundles:
      type: object
      properties:
        ids:
          type: array
          items:
            $ref: '#/components/schemas/DID'
        records:
          type: array
          items:
            $ref: '#/components/schemas/OutputBundle'
        size:
          type: integer
          format: int64
          description: size in bytes
        start:
          type: integer
          format: int64
          description: start index for the pagination
        limit:
          type: integer
          format: int64
          description: number of dids to return
        file_name:
          type: string
        urls:
          type: array
          items:
            type: string
        acl:
          type: array
          items:
            type: string
        authz:
          type: array
          items:
            type: string
        checksums:
          $ref: '#/components/schemas/Checksum'
        metadata:
          type: object
        version:
          type: string
    InputBundle:
      type: object
      required:
      - bundles
      properties:
        bundle_id:
          $ref: '#/components/schemas/DID'
        name:
          type: string
        size:
          type: integer
          format: int64
          description: size in bytes
        checksums:
          type: array
          items:
            $ref: '#/components/schemas/Checksum'
        description:
          type: string
          description: optional description of the object
        version:
          type: string
          description: optional version string of the object
        bundles:
          type: array
          items:
            type: string
          description: list of guid to be in the bundle
    DID:
      type: string
      pattern: ^.*[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$
    OutputBundle:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/DID'
        form:
          type: string
          description: how the entry was submitted to storage
          enum:
          - object
          - container
          - multipart
          - bundle
        size:
          type: integer
          format: int64
          description: size in bytes
        name:
          type: string
        checksums:
          $ref: '#/components/schemas/Checksum'
        updated_time:
          type: string
          format: date-time
          description: last updated time
        created_time:
          type: string
          format: date-time
          description: time created
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: /oauth/authorize
          tokenUrl: /oauth/token
          scopes:
            user: generic user access