Oxen Directories API
The Directories API from Oxen — 1 operation(s) for directories.
The Directories API from Oxen — 1 operation(s) for directories.
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