lakeFS internal API
The internal API from lakeFS — 24 operation(s) for internal.
The internal API from lakeFS — 24 operation(s) for internal.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/lakefs-internal-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
description: lakeFS HTTP API
title: lakeFS actions Internal API
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
version: 1.0.0
servers:
- url: /api/v1
description: lakeFS server endpoint
security:
- jwt_token: []
- basic_auth: []
- cookie_auth: []
- oidc_auth: []
- saml_auth: []
tags:
- name: internal
paths:
/setup_comm_prefs:
post:
tags:
- internal
operationId: setupCommPrefs
summary: setup communications preferences
security: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CommPrefsInput'
responses:
200:
description: communication preferences saved successfully
400:
$ref: '#/components/responses/BadRequest'
409:
description: setup was already completed
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
412:
description: wrong setup state for this operation
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/setup_lakefs:
get:
tags:
- internal
operationId: getSetupState
summary: check if the lakeFS installation is already set up
security: []
responses:
200:
description: lakeFS setup state
content:
application/json:
schema:
$ref: '#/components/schemas/SetupState'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
post:
tags:
- internal
operationId: setup
summary: setup lakeFS and create a first user
security: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Setup'
responses:
200:
description: user created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/CredentialsWithSecret'
400:
$ref: '#/components/responses/BadRequest'
409:
description: setup was already called
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/auth/capabilities:
get:
tags:
- internal
operationId: getAuthCapabilities
summary: list authentication capabilities supported
security: []
responses:
200:
description: auth capabilities
content:
application/json:
schema:
$ref: '#/components/schemas/AuthCapabilities'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/repositories/{repository}/metadata:
parameters:
- in: path
name: repository
required: true
schema:
type: string
post:
tags:
- internal
operationId: setRepositoryMetadata
summary: set repository metadata
description: 'Set repository metadata. This will only add or update the provided keys, and will not remove any existing keys.
'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RepositoryMetadataSet'
responses:
204:
description: repository metadata set successfully
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
delete:
tags:
- internal
operationId: deleteRepositoryMetadata
summary: delete repository metadata
description: 'Delete specified keys from the repository''s metadata.
'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RepositoryMetadataKeys'
responses:
204:
description: repository metadata keys deleted successfully
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/repositories/{repository}/refs/dump:
parameters:
- in: path
name: repository
required: true
schema:
type: string
put:
tags:
- internal
operationId: dumpRefs
summary: 'Dump repository refs (tags, commits, branches) to object store
Deprecated: a new API will introduce long running operations
'
responses:
201:
description: refs dump
content:
application/json:
schema:
$ref: '#/components/schemas/RefsDump'
400:
$ref: '#/components/responses/ValidationError'
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/repositories/{repository}/refs/restore:
parameters:
- in: path
name: repository
required: true
schema:
type: string
put:
tags:
- internal
operationId: restoreRefs
summary: 'Restore repository refs (tags, commits, branches) from object store.
Deprecated: a new API will introduce long running operations
'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RefsRestore'
responses:
200:
description: refs successfully loaded
400:
$ref: '#/components/responses/ValidationError'
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/repositories/{repository}/commits:
parameters:
- in: path
name: repository
required: true
schema:
type: string
post:
tags:
- internal
operationId: CreateCommitRecord
summary: create commit record
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CommitRecordCreation'
responses:
204:
description: commit record created
400:
$ref: '#/components/responses/ValidationError'
401:
$ref: '#/components/responses/Unauthorized'
403:
$ref: '#/components/responses/Forbidden'
404:
$ref: '#/components/responses/NotFound'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/repositories/{repository}/branches/{branch}/objects/stage_allowed:
parameters:
- in: path
name: repository
required: true
schema:
type: string
- in: path
name: branch
required: true
schema:
type: string
- in: query
name: path
description: relative to the branch
required: true
schema:
type: string
get:
tags:
- internal
operationId: uploadObjectPreflight
responses:
204:
description: User has permissions to upload this object. This does not guarantee that the upload will be successful or even possible. It indicates only the permission at the time of calling this endpoint
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
403:
$ref: '#/components/responses/Forbidden'
404:
$ref: '#/components/responses/NotFound'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/repositories/{repository}/branches/{branch}/objects:
parameters:
- in: path
name: repository
required: true
schema:
type: string
- in: path
name: branch
required: true
schema:
type: string
- in: query
name: path
description: relative to the branch
required: true
schema:
type: string
put:
deprecated: true
tags:
- internal
operationId: stageObject
summary: stage an object's metadata for the given branch
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ObjectStageCreation'
responses:
201:
description: object metadata
content:
application/json:
schema:
$ref: '#/components/schemas/ObjectStats'
400:
$ref: '#/components/responses/ValidationError'
401:
$ref: '#/components/responses/Unauthorized'
403:
$ref: '#/components/responses/Forbidden'
404:
$ref: '#/components/responses/NotFound'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/repositories/{repository}/refs/{branch}/symlink:
parameters:
- in: path
name: repository
required: true
schema:
type: string
- in: path
name: branch
required: true
schema:
type: string
- in: query
name: location
schema:
type: string
description: path to the table data
post:
tags:
- internal
operationId: createSymlinkFile
summary: creates symlink files corresponding to the given directory
responses:
201:
description: location created
content:
application/json:
schema:
$ref: '#/components/schemas/StorageURI'
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/repositories/{repository}/metadata/object/{type}/{object_id}:
parameters:
- in: path
name: repository
required: true
schema:
type: string
- in: path
name: object_id
required: true
schema:
type: string
- in: path
name: type
required: true
schema:
type: string
enum:
- range
- meta_range
get:
tags:
- internal
operationId: getMetadataObject
summary: return a lakeFS metadata object by ID
parameters:
- in: query
name: presign
required: false
schema:
type: boolean
responses:
200:
description: object content
content:
application/octet-stream:
schema:
type: string
format: binary
headers:
Content-Length:
schema:
type: integer
format: int64
302:
description: Redirect to a pre-signed URL for the object
headers:
Location:
schema:
type: string
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/repositories/{repository}/gc/rules/set_allowed:
parameters:
- in: path
name: repository
required: true
schema:
type: string
get:
tags:
- internal
operationId: setGarbageCollectionRulesPreflight
responses:
204:
description: User has permissions to set garbage collection rules on this repository
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/repositories/{repository}/gc/rules:
parameters:
- in: path
name: repository
required: true
schema:
type: string
get:
deprecated: true
tags:
- internal
operationId: internalGetGarbageCollectionRules
description: Deprecated; use getGCRules.
responses:
200:
description: gc rule list
content:
application/json:
schema:
$ref: '#/components/schemas/GarbageCollectionRules'
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
post:
deprecated: true
tags:
- internal
operationId: internalSetGarbageCollectionRules
description: Deprecated; use setGCRules.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GarbageCollectionRules'
responses:
204:
description: set garbage collection rules successfully
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
delete:
deprecated: true
tags:
- internal
operationId: internalDeleteGarbageCollectionRules
description: Deprecated; use deleteGCRules.
responses:
204:
description: deleted garbage collection rules successfully
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/repositories/{repository}/gc/prepare_commits:
parameters:
- in: path
name: repository
required: true
schema:
type: string
post:
tags:
- internal
operationId: prepareGarbageCollectionCommits
summary: save lists of active commits for garbage collection
responses:
201:
description: paths to commit dataset
content:
application/json:
schema:
$ref: '#/components/schemas/GarbageCollectionPrepareResponse'
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
403:
$ref: '#/components/responses/Forbidden'
404:
$ref: '#/components/responses/NotFound'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/repositories/{repository}/gc/prepare_commits/async:
parameters:
- in: path
name: repository
required: true
schema:
type: string
post:
tags:
- internal
operationId: prepareGarbageCollectionCommitsAsync
summary: prepare gc commits
responses:
202:
description: GC prepare task started
content:
application/json:
schema:
$ref: '#/components/schemas/TaskCreation'
400:
$ref: '#/components/responses/ValidationError'
401:
$ref: '#/components/responses/Unauthorized'
403:
$ref: '#/components/responses/Forbidden'
404:
$ref: '#/components/responses/NotFound'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/repositories/{repository}/gc/prepare_commits/status:
parameters:
- in: path
name: repository
required: true
schema:
type: string
get:
tags:
- internal
operationId: prepareGarbageCollectionCommitsStatus
summary: get status of prepare gc commits operation
parameters:
- in: query
name: id
description: Unique identifier of the prepare GC commits task
schema:
type: string
required: true
responses:
200:
description: prepare GC commits task status
content:
application/json:
schema:
$ref: '#/components/schemas/PrepareGarbageCollectionCommitsStatus'
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
403:
$ref: '#/components/responses/Forbidden'
404:
$ref: '#/components/responses/NotFound'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/repositories/{repository}/gc/prepare_uncommited:
parameters:
- in: path
name: repository
required: true
schema:
type: string
post:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PrepareGCUncommittedRequest'
tags:
- internal
operationId: prepareGarbageCollectionUncommitted
summary: save repository uncommitted metadata for garbage collection
responses:
201:
description: paths to commit dataset
content:
application/json:
schema:
$ref: '#/components/schemas/PrepareGCUncommittedResponse'
400:
$ref: '#/components/responses/ValidationError'
401:
$ref: '#/components/responses/Unauthorized'
403:
$ref: '#/components/responses/Forbidden'
404:
$ref: '#/components/responses/NotFound'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/repositories/{repository}/branch_protection/set_allowed:
parameters:
- in: path
name: repository
required: true
schema:
type: string
get:
tags:
- internal
operationId: createBranchProtectionRulePreflight
responses:
204:
description: User has permissions to create a branch protection rule in this repository
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
409:
$ref: '#/components/responses/Conflict'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/repositories/{repository}/branch_protection:
parameters:
- in: path
name: repository
required: true
schema:
type: string
get:
deprecated: true
tags:
- internal
operationId: internalGetBranchProtectionRules
summary: get branch protection rules
responses:
200:
description: branch protection rules
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/BranchProtectionRule'
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
post:
deprecated: true
tags:
- internal
operationId: internalCreateBranchProtectionRule
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BranchProtectionRule'
responses:
204:
description: branch protection rule created successfully
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
delete:
deprecated: true
tags:
- internal
operationId: internalDeleteBranchProtectionRule
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
pattern:
type: string
required:
- pattern
responses:
204:
description: branch protection rule deleted successfully
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/config/version:
get:
tags:
- internal
operationId: getLakeFSVersion
description: get version of lakeFS server
deprecated: true
responses:
200:
description: lakeFS version
content:
application/json:
schema:
$ref: '#/components/schemas/VersionConfig'
401:
$ref: '#/components/responses/Unauthorized'
/config/storage:
get:
tags:
- internal
operationId: getStorageConfig
description: retrieve lakeFS storage configuration
deprecated: true
responses:
200:
description: lakeFS storage configuration
content:
application/json:
schema:
$ref: '#/components/schemas/StorageConfig'
401:
$ref: '#/components/responses/Unauthorized'
/config/garbage-collection:
get:
tags:
- internal
operationId: getGarbageCollectionConfig
description: get information of gc settings
responses:
200:
description: lakeFS garbage collection config
content:
application/json:
schema:
$ref: '#/components/schemas/GarbageCollectionConfig'
401:
$ref: '#/components/responses/Unauthorized'
/statistics:
post:
tags:
- internal
operationId: postStatsEvents
summary: post stats events, this endpoint is meant for internal use only
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/StatsEventsList'
responses:
204:
description: reported successfully
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/usage-report/summary:
get:
tags:
- internal
operationId: getUsageReportSummary
summary: get usage report summary
responses:
200:
description: Usage report
content:
application/json:
schema:
$ref: '#/components/schemas/InstallationUsageReport'
application/text:
schema:
type: string
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFound'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
components:
responses:
Conflict:
description: Resource Conflicts With Target
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
ServerError:
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
ValidationError:
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Forbidden:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BadRequest:
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
TaskCreation:
type: object
properties:
id:
description: The id of the new task
type: string
required:
- id
LoginConfig:
type: object
properties:
RBAC:
description: 'RBAC will remain enabled on GUI if "external". That only works
with an external auth service.
'
type: string
enum:
- none
- simplified
- internal
- external
username_ui_placeholder:
description: 'Placeholder text to display in the username field of the login form.
'
type: string
password_ui_placeholder:
description: 'Placeholder text to display in the password field of the login form.
'
type: string
login_url:
description: Primary URL to use for login.
type: string
login_url_method:
type: string
description: 'Defines login behavior when login_url is set.
- none: For OSS users.
- redirect: Auto-redirect to login_url.
- select: Show a page to choose between logging in via login_url or with lakeFS credentials.
Ignored if login_url is not configured.
'
enum:
- none
- redirect
- select
login_failed_message:
description: 'Message to display to users who fail to login; a full sentence that is rendered
in HTML and may contain a link to a secondary login method
'
type: string
fallback_login_url:
description: Secondary URL to offer users to use for login.
type: string
fallback_login_label:
description: Label to place on fallback_login_url.
type: string
login_cookie_names:
description: Cookie names used to store JWT
type: array
items:
type: string
logout_url:
description: URL to use for logging out.
type: string
required:
- login_url
- login_cookie_names
- logout_url
PrepareGCUncommittedRequest:
type: object
properties:
continuation_token:
type: string
ObjectStats:
type: object
required:
- checksum
- physical_address
- path
- path_type
- mtime
properties:
path:
type: string
path_type:
type: string
enum:
- common_prefix
- object
physical_address:
type: string
description: 'The location of the object on the underlying object store.
Formatted as a native URI with the object store type as scheme ("s3://...", "gs://...", etc.)
Or, in the case of presign=true, will be an HTTP URL to be consumed via regular HTTP GET
'
physical_address_expiry:
type: integer
format: int64
description: 'If present and nonzero, physical_address is a pre-signed URL and
will expire at this Unix Epoch time. This will be shorter than
the pre-signed URL lifetime if an authentication token is about
to expire.
This field is *optional*.
'
checksum:
type: string
size_bytes:
type: integer
format: int64
description: 'The number of bytes in the object. lakeFS always populates this
field when returning ObjectStats. This field is optional _for
the client_ to supply, for instance on upload.
'
mtime:
type: integer
format: int64
description: Unix Epoch in seconds
metadata:
$ref: '#/components/schemas/ObjectUserMetadata'
content_type:
type: string
description: Object media type
AuthCapabilities:
type: object
properties:
invite_user:
type: boolean
forgot_password:
type: boolean
StatsEventsList:
type: object
required:
- events
properties:
events:
type: array
items:
$ref: '#/components/schemas/StatsEvent'
Setup:
type: object
properties:
username:
description: an identifier for the user (e.g. jane.doe)
type: string
key:
$ref: '#/components/schemas/AccessKeyCredentials'
firstName:
description: the provided first name
type: string
lastName:
description: the provided last name
type: string
email:
description: the provided email
type: string
companyName:
description: the provided company name
type: string
featureUpdates:
description: user preference to receive feature updates
type: boolean
securityUpdates:
description: user preference to receive security updates
type: boolean
required:
- username
AccessKeyCredentials:
type: object
properties:
access_key_id:
description: access key ID to set for user for use in integration testing.
example: AKIAIOSFODNN7EXAMPLE
type: string
minLength: 1
secret_access_key:
description: secret access key to set for user for use in integration testing.
example: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
type: string
minLength: 1
required:
- access_key_id
- secret_access_key
CommitRecordCreation:
type: object
required:
- commit_id
- version
- committer
- message
- metarange_id
- creation_date
- parents
- generation
properties:
commit_id:
type: string
description: id of the commit record
version:
type: integer
minimum: 0
maximum: 1
description: version of the commit record
committer:
type: string
descri
# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lakefs/refs/heads/main/openapi/lakefs-internal-api-openapi.yml