Oxen Directories API

The Directories API from Oxen — 1 operation(s) for directories.

OpenAPI Specification

oxen-directories-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: oxen Ai Directories API
  version: 0.243.1
servers:
- url: https://hub.oxen.ai
  variables: {}
security: []
tags:
- name: Directories
paths:
  /api/repos/{namespace}/{repo_name}/dir/{resource}:
    get:
      description: List paginated contents of a directory at a specific revision, with optional workspace support.
      operationId: get
      parameters:
      - description: Namespace of the repository
        example: ox
        in: path
        name: namespace
        required: true
        schema:
          type: string
      - description: Name of the repository
        example: ImageNet-1k
        in: path
        name: repo_name
        required: true
        schema:
          type: string
      - description: Path to the directory (including branch/commit ID)
        example: main/data/train
        in: path
        name: resource
        required: true
        schema:
          type: string
      - in: path
        name: page
        required: true
        schema:
          minimum: 0
          type:
          - integer
          - 'null'
      - in: path
        name: page_size
        required: true
        schema:
          minimum: 0
          type:
          - integer
          - 'null'
      - in: path
        name: api_version
        required: true
        schema:
          type:
          - string
          - 'null'
      - description: Depth of nested directory traversal. 0 = current directory only (default), 1 = include immediate children, -1 = unlimited.
        in: path
        name: depth
        required: true
        schema:
          type:
          - integer
          - 'null'
      - description: Sort entries by "name" (default) or "date" (latest commit timestamp).
        in: path
        name: sort_by
        required: true
        schema:
          type:
          - string
          - 'null'
      - description: Reverse the sort order. Default is false (ascending).
        in: path
        name: reverse
        required: true
        schema:
          type:
          - boolean
          - 'null'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedDirEntriesResponse'
          description: Paginated list of directory entries
        '404':
          description: Directory or repository not found
      summary: List directory contents
      tags:
      - Directories
components:
  schemas:
    GenericMetadata:
      oneOf:
      - $ref: '#/components/schemas/MetadataDir'
      - $ref: '#/components/schemas/MetadataText'
      - $ref: '#/components/schemas/MetadataImage'
      - $ref: '#/components/schemas/MetadataVideo'
      - $ref: '#/components/schemas/MetadataAudio'
      - $ref: '#/components/schemas/MetadataTabular'
    EMetadataEntry:
      oneOf:
      - $ref: '#/components/schemas/MetadataEntry'
      - $ref: '#/components/schemas/WorkspaceMetadataEntry'
    MetadataVideoImpl:
      properties:
        height:
          minimum: 0
          type: integer
        num_seconds:
          format: double
          type: number
        width:
          minimum: 0
          type: integer
      required:
      - num_seconds
      - width
      - height
      type: object
    MetadataImageImpl:
      properties:
        color_space:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/ImgColorSpace'
        height:
          format: int32
          minimum: 0
          type: integer
        width:
          format: int32
          minimum: 0
          type: integer
      required:
      - width
      - height
      type: object
    MetadataText:
      properties:
        text:
          $ref: '#/components/schemas/MetadataTextImpl'
      required:
      - text
      type: object
    WorkspaceView:
      description: 'Used to send workspace state across the wire. The `Workspace`''s other fields (like

        `LocalRepository`) would bloat the response and leak internal state.'
      properties:
        commit:
          $ref: '#/components/schemas/Commit'
        id:
          type: string
        name:
          type:
          - string
          - 'null'
      required:
      - id
      - commit
      type: object
    WorkspaceMetadataEntry:
      properties:
        changes:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/WorkspaceChanges'
        children:
          items:
            $ref: '#/components/schemas/WorkspaceMetadataEntry'
          type:
          - array
          - 'null'
        data_type:
          $ref: '#/components/schemas/EntryDataType'
        extension:
          type: string
        filename:
          type: string
        hash:
          type: string
        is_dir:
          type: boolean
        is_queryable:
          type:
          - boolean
          - 'null'
        latest_commit:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Commit'
        metadata:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/GenericMetadata'
        mime_type:
          type: string
        resource:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/ParsedResourceView'
        size:
          format: int64
          minimum: 0
          type: integer
      required:
      - filename
      - hash
      - is_dir
      - size
      - data_type
      - mime_type
      - extension
      type: object
    PaginatedDirEntriesResponse:
      allOf:
      - $ref: '#/components/schemas/StatusMessage'
      - $ref: '#/components/schemas/PaginatedDirEntries'
    MetadataTabular:
      properties:
        tabular:
          $ref: '#/components/schemas/MetadataTabularImpl'
      required:
      - tabular
      type: object
    DataTypeCount:
      properties:
        count:
          minimum: 0
          type: integer
        data_type:
          type: string
      required:
      - count
      - data_type
      type: object
    MetadataDir:
      properties:
        dir:
          $ref: '#/components/schemas/MetadataDirImpl'
      required:
      - dir
      type: object
    Schema:
      properties:
        fields:
          items:
            $ref: '#/components/schemas/Field'
          type: array
        hash:
          type: string
        metadata: {}
      required:
      - hash
      - fields
      type: object
    Changes:
      properties:
        previous:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/PreviousField'
        status:
          type: string
      required:
      - status
      type: object
    ImgColorSpace:
      enum:
      - RGB
      - RGBA
      - Grayscale
      - GrayscaleAlpha
      - Rgb16
      - Rgba16
      - Grayscale16
      - GrayscaleAlpha16
      - Rgb32F
      - Rgba32F
      - Unknown
      type: string
    MetadataEntry:
      additionalProperties: false
      description: '`deny_unknown_fields` is the discriminator for the untagged `EMetadataEntry` enum:

        payloads with a `changes` field (i.e. `WorkspaceMetadataEntry`) fail to deserialize here

        and fall through to the workspace variant.'
      properties:
        children:
          items:
            $ref: '#/components/schemas/MetadataEntry'
          type:
          - array
          - 'null'
        data_type:
          $ref: '#/components/schemas/EntryDataType'
        extension:
          type: string
        filename:
          type: string
        hash:
          type: string
        is_dir:
          type: boolean
        is_queryable:
          type:
          - boolean
          - 'null'
        latest_commit:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Commit'
        metadata:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/GenericMetadata'
        mime_type:
          type: string
        resource:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/ParsedResourceView'
        size:
          format: int64
          minimum: 0
          type: integer
      required:
      - filename
      - hash
      - is_dir
      - size
      - data_type
      - mime_type
      - extension
      type: object
    WorkspaceChanges:
      properties:
        status:
          $ref: '#/components/schemas/StagedEntryStatus'
      required:
      - status
      type: object
    Field:
      properties:
        changes:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Changes'
        dtype:
          type: string
        metadata: {}
        name:
          type: string
      required:
      - name
      - dtype
      type: object
    MetadataAudio:
      properties:
        audio:
          $ref: '#/components/schemas/MetadataAudioImpl'
      required:
      - audio
      type: object
    MetadataAudioImpl:
      properties:
        num_channels:
          minimum: 0
          type: integer
        num_seconds:
          format: double
          type: number
        sample_rate:
          minimum: 0
          type: integer
      required:
      - num_seconds
      - num_channels
      - sample_rate
      type: object
    StatusMessage:
      properties:
        oxen_version:
          type:
          - string
          - 'null'
        status:
          type: string
        status_message:
          type: string
      required:
      - status
      - status_message
      type: object
    StagedEntryStatus:
      enum:
      - Added
      - Modified
      - Removed
      - Unmodified
      type: string
    PreviousField:
      properties:
        dtype:
          type: string
        metadata: {}
        name:
          type: string
      required:
      - name
      - dtype
      type: object
    Branch:
      properties:
        commit_id:
          type: string
        name:
          type: string
      required:
      - name
      - commit_id
      type: object
    EntryDataType:
      enum:
      - dir
      - text
      - image
      - video
      - audio
      - tabular
      - binary
      type: string
    PaginatedDirEntries:
      properties:
        dir:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/EMetadataEntry'
        entries:
          items:
            $ref: '#/components/schemas/EMetadataEntry'
          type: array
        metadata:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/MetadataDir'
        page_number:
          minimum: 0
          type: integer
        page_size:
          minimum: 0
          type: integer
        resource:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/ResourceVersion'
        total_entries:
          minimum: 0
          type: integer
        total_pages:
          minimum: 0
          type: integer
      required:
      - entries
      - page_size
      - page_number
      - total_pages
      - total_entries
      type: object
    Commit:
      example:
        author: ox
        email: ox@example.com
        id: a1b2c3d4e5f67890abcdef1234567890
        message: Refactor data loading pipeline.
        parent_ids:
        - f1e2d3c4b5a67890fedcba9876543210
        timestamp: '2025-01-01T10:00:00Z'
      properties:
        author:
          type: string
        email:
          type: string
        id:
          type: string
        message:
          type: string
        parent_ids:
          items:
            type: string
          type: array
        timestamp:
          format: date-time
          type: string
      required:
      - id
      - parent_ids
      - message
      - author
      - email
      - timestamp
      type: object
    MetadataImage:
      properties:
        image:
          $ref: '#/components/schemas/MetadataImageImpl'
      required:
      - image
      type: object
    ResourceVersion:
      properties:
        path:
          type: string
        version:
          type: string
      required:
      - path
      - version
      type: object
    MetadataTabularImpl:
      properties:
        height:
          minimum: 0
          type: integer
        schema:
          $ref: '#/components/schemas/Schema'
        width:
          minimum: 0
          type: integer
      required:
      - width
      - height
      - schema
      type: object
    MetadataTextImpl:
      properties:
        num_chars:
          minimum: 0
          type: integer
        num_lines:
          minimum: 0
          type: integer
      required:
      - num_lines
      - num_chars
      type: object
    ParsedResourceView:
      description: External (view) model that is returned to the client with fewer fields.
      properties:
        branch:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Branch'
        commit:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Commit'
        path:
          type: string
        resource:
          type: string
        version:
          type: string
        workspace:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/WorkspaceView'
      required:
      - path
      - version
      - resource
      type: object
    MetadataDirImpl:
      properties:
        data_types:
          items:
            $ref: '#/components/schemas/DataTypeCount'
          type: array
      required:
      - data_types
      type: object
    MetadataVideo:
      properties:
        video:
          $ref: '#/components/schemas/MetadataVideoImpl'
      required:
      - video
      type: object
  securitySchemes:
    authorization:
      scheme: bearer
      type: http