lakeFS auth API
The auth API from lakeFS — 23 operation(s) for auth.
The auth API from lakeFS — 23 operation(s) for auth.
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-auth-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 Auth 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: auth
paths:
/user:
get:
tags:
- auth
operationId: getCurrentUser
summary: get current user
responses:
200:
description: user
content:
application/json:
schema:
$ref: '#/components/schemas/CurrentUser'
/auth/login:
post:
tags:
- auth
operationId: login
summary: perform a login
security: []
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/LoginInformation'
responses:
200:
description: successful login
headers:
Set-Cookie:
schema:
type: string
example: access_token=abcde12356; Path=/; HttpOnly
content:
application/json:
schema:
$ref: '#/components/schemas/AuthenticationToken'
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/auth/external/principal/login:
post:
tags:
- auth
operationId: externalPrincipalLogin
summary: perform a login using an external authenticator
security: []
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalLoginInformation'
responses:
200:
description: successful external login
content:
application/json:
schema:
$ref: '#/components/schemas/AuthenticationToken'
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'
/auth/users:
get:
tags:
- auth
operationId: listUsers
summary: list users
parameters:
- $ref: '#/components/parameters/PaginationPrefix'
- $ref: '#/components/parameters/PaginationAfter'
- $ref: '#/components/parameters/PaginationAmount'
responses:
200:
description: user list
content:
application/json:
schema:
$ref: '#/components/schemas/UserList'
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
post:
tags:
- auth
operationId: createUser
summary: create user
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UserCreation'
responses:
201:
description: user
content:
application/json:
schema:
$ref: '#/components/schemas/User'
400:
description: validation error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
401:
$ref: '#/components/responses/Unauthorized'
409:
$ref: '#/components/responses/Conflict'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/auth/users/{userId}:
parameters:
- in: path
name: userId
required: true
schema:
type: string
get:
tags:
- auth
operationId: getUser
summary: get user
responses:
200:
description: user
content:
application/json:
schema:
$ref: '#/components/schemas/User'
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:
- auth
operationId: deleteUser
summary: delete user
responses:
204:
description: user 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'
/auth/groups:
get:
tags:
- auth
operationId: listGroups
summary: list groups
parameters:
- $ref: '#/components/parameters/PaginationPrefix'
- $ref: '#/components/parameters/PaginationAfter'
- $ref: '#/components/parameters/PaginationAmount'
responses:
200:
description: group list
content:
application/json:
schema:
$ref: '#/components/schemas/GroupList'
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
post:
tags:
- auth
operationId: createGroup
summary: create group
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/GroupCreation'
responses:
201:
description: group
content:
application/json:
schema:
$ref: '#/components/schemas/Group'
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'
/auth/groups/{groupId}:
parameters:
- in: path
name: groupId
required: true
schema:
type: string
get:
tags:
- auth
operationId: getGroup
summary: get group
responses:
200:
description: group
content:
application/json:
schema:
$ref: '#/components/schemas/Group'
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:
- auth
operationId: deleteGroup
summary: delete group
responses:
204:
description: group 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'
/auth/policies:
get:
tags:
- auth
operationId: listPolicies
summary: list policies
parameters:
- $ref: '#/components/parameters/PaginationPrefix'
- $ref: '#/components/parameters/PaginationAfter'
- $ref: '#/components/parameters/PaginationAmount'
responses:
200:
description: policy list
content:
application/json:
schema:
$ref: '#/components/schemas/PolicyList'
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
post:
tags:
- auth
operationId: createPolicy
summary: create policy
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Policy'
responses:
201:
description: policy
content:
application/json:
schema:
$ref: '#/components/schemas/Policy'
400:
$ref: '#/components/responses/ValidationError'
401:
$ref: '#/components/responses/Unauthorized'
409:
$ref: '#/components/responses/Conflict'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/auth/policies/{policyId}:
parameters:
- in: path
name: policyId
required: true
schema:
type: string
get:
tags:
- auth
operationId: getPolicy
summary: get policy
responses:
200:
description: policy
content:
application/json:
schema:
$ref: '#/components/schemas/Policy'
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'
put:
tags:
- auth
operationId: updatePolicy
summary: update policy
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Policy'
responses:
200:
description: policy
content:
application/json:
schema:
$ref: '#/components/schemas/Policy'
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'
delete:
tags:
- auth
operationId: deletePolicy
summary: delete policy
responses:
204:
description: policy 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'
/auth/groups/{groupId}/members:
parameters:
- in: path
name: groupId
required: true
schema:
type: string
get:
tags:
- auth
operationId: listGroupMembers
summary: list group members
parameters:
- $ref: '#/components/parameters/PaginationPrefix'
- $ref: '#/components/parameters/PaginationAfter'
- $ref: '#/components/parameters/PaginationAmount'
responses:
200:
description: group member list
content:
application/json:
schema:
$ref: '#/components/schemas/UserList'
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/auth/groups/{groupId}/members/{userId}:
parameters:
- in: path
name: groupId
required: true
schema:
type: string
- in: path
name: userId
required: true
schema:
type: string
put:
tags:
- auth
operationId: addGroupMembership
summary: add group membership
responses:
201:
description: membership added 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:
- auth
operationId: deleteGroupMembership
summary: delete group membership
responses:
204:
description: membership 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'
/auth/users/{userId}/credentials:
parameters:
- in: path
name: userId
required: true
schema:
type: string
get:
tags:
- auth
parameters:
- $ref: '#/components/parameters/PaginationPrefix'
- $ref: '#/components/parameters/PaginationAfter'
- $ref: '#/components/parameters/PaginationAmount'
operationId: listUserCredentials
summary: list user credentials
responses:
200:
description: credential list
content:
application/json:
schema:
$ref: '#/components/schemas/CredentialsList'
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:
tags:
- auth
operationId: createCredentials
summary: create credentials
responses:
201:
description: credentials
content:
application/json:
schema:
$ref: '#/components/schemas/CredentialsWithSecret'
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'
/auth/users/{userId}/credentials/{accessKeyId}:
parameters:
- in: path
name: userId
required: true
schema:
type: string
- in: path
name: accessKeyId
required: true
schema:
type: string
delete:
tags:
- auth
operationId: deleteCredentials
summary: delete credentials
responses:
204:
description: credentials 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'
get:
tags:
- auth
operationId: getCredentials
summary: get credentials
responses:
200:
description: credentials
content:
application/json:
schema:
$ref: '#/components/schemas/Credentials'
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'
/auth/users/{userId}/groups:
parameters:
- in: path
name: userId
required: true
schema:
type: string
get:
tags:
- auth
parameters:
- $ref: '#/components/parameters/PaginationPrefix'
- $ref: '#/components/parameters/PaginationAfter'
- $ref: '#/components/parameters/PaginationAmount'
operationId: listUserGroups
summary: list user groups
responses:
200:
description: group list
content:
application/json:
schema:
$ref: '#/components/schemas/GroupList'
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'
/auth/users/{userId}/policies:
parameters:
- in: path
name: userId
required: true
schema:
type: string
get:
tags:
- auth
parameters:
- $ref: '#/components/parameters/PaginationPrefix'
- $ref: '#/components/parameters/PaginationAfter'
- $ref: '#/components/parameters/PaginationAmount'
- in: query
name: effective
schema:
type: boolean
default: false
description: will return all distinct policies attached to the user or any of its groups
operationId: listUserPolicies
summary: list user policies
responses:
200:
description: policy list
content:
application/json:
schema:
$ref: '#/components/schemas/PolicyList'
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'
/auth/users/{userId}/policies/{policyId}:
parameters:
- in: path
name: userId
required: true
schema:
type: string
- in: path
name: policyId
required: true
schema:
type: string
put:
tags:
- auth
operationId: attachPolicyToUser
summary: attach policy to user
responses:
201:
description: policy attached 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:
- auth
operationId: detachPolicyFromUser
summary: detach policy from user
responses:
204:
description: policy detached 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'
/auth/users/{userId}/external/principals:
parameters:
- in: path
name: userId
required: true
schema:
type: string
- in: query
name: principalId
required: true
schema:
type: string
post:
tags:
- auth
operationId: createUserExternalPrincipal
summary: attach external principal to user
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalPrincipalCreation'
responses:
201:
description: external principal attached successfully
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'
delete:
tags:
- auth
operationId: deleteUserExternalPrincipal
summary: delete external principal from user
responses:
204:
description: external principal detached 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'
/auth/users/{userId}/external/principals/ls:
parameters:
- in: path
name: userId
required: true
schema:
type: string
get:
tags:
- auth
parameters:
- $ref: '#/components/parameters/PaginationPrefix'
- $ref: '#/components/parameters/PaginationAfter'
- $ref: '#/components/parameters/PaginationAmount'
operationId: listUserExternalPrincipals
summary: list user external policies attached to a user
responses:
200:
description: external principals list
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalPrincipalList'
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'
/auth/external/principals:
parameters:
- in: query
name: principalId
required: true
schema:
type: string
get:
tags:
- auth
operationId: getExternalPrincipal
summary: describe external principal by id
responses:
200:
description: external principal
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalPrincipal'
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'
/auth/groups/{groupId}/policies:
parameters:
- in: path
name: groupId
required: true
schema:
type: string
get:
tags:
- auth
parameters:
- $ref: '#/components/parameters/PaginationPrefix'
- $ref: '#/components/parameters/PaginationAfter'
- $ref: '#/components/parameters/PaginationAmount'
operationId: listGroupPolicies
summary: list group policies
responses:
200:
description: policy list
content:
application/json:
schema:
$ref: '#/components/schemas/PolicyList'
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'
/auth/groups/{groupId}/policies/{policyId}:
parameters:
- in: path
name: groupId
required: true
schema:
type: string
- in: path
name: policyId
required: true
schema:
type: string
put:
tags:
- auth
operationId: attachPolicyToGroup
summary: attach policy to group
responses:
201:
description: policy attached 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:
- auth
operationId: detachPolicyFromGroup
summary: detach policy from group
responses:
204:
description: policy detached 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'
/auth/groups/{groupId}/acl:
parameters:
- in: path
name: groupId
required: true
schema:
type: string
post:
tags:
- auth
operationId: setGroupACL
summary: set ACL of group
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ACL'
responses:
201:
description: ACL successfully changed
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'
get:
tags:
- auth
operationId: getGroupACL
summary: get ACL of group
responses:
200:
description: ACL of group
content:
application/json:
schema:
$ref: '#/components/schemas/ACL'
400:
$ref: '#/components/responses/BadRequest'
401:
$ref: '#/components/responses/Unauthorized'
404:
$ref: '#/components/responses/NotFoundOrNoACL'
429:
description: too many requests
default:
$ref: '#/components/responses/ServerError'
/oidc/callback:
get:
tags:
- auth
operationId: oauthCallback
security: []
responses:
302:
description: successfully got token
401:
description: failed to exchange authorization code for token
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'
NotFoundOrNoACL:
description: Group not found, or group found but has no ACL
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorNoACL'
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:
Group:
type: object
required:
- creation_date
- id
properties:
id:
type: string
name:
type: string
description:
type: string
creation_date:
type: integer
format: int64
description: Unix Epoch in seconds
PolicyList:
type: object
required:
- pagination
- results
properties:
pagination:
$ref: '#/components/schemas/Pagination'
results:
type: array
items:
$ref: '#/components/schemas/Policy'
LoginInformation:
type: object
required:
- access_key_id
- secret_access_key
properties:
access_key_id:
type: string
secret_access_key:
type: string
GroupCreation:
type: object
required:
- id
properties:
id:
type: string
description:
type: string
CredentialsList:
type: object
required:
- pagination
- results
properties:
pagination:
$ref: '#/components/schemas/Pagination'
results:
type: array
items:
$ref: '#/components/schemas/Credentials'
Credentials:
type: object
required:
- creation_date
- access_key_id
properties:
access_key_id:
type: string
creation_date:
type: integer
format: int64
description: Unix Epoch in seconds
ExternalPrincipal:
type: object
required:
- user_id
- id
properties:
id:
type: string
description: A unique identifier for the external principal i.e aws:sts::123:assumed-role/role-name
user_id:
type: string
description: 'lakeFS user ID to associate with an external principal.
'
settings:
type: object
items:
$ref: '#/components/schemas/ExternalPrincipalSettings'
ExternalPrincipalCreation:
type: object
properties:
settings:
type: object
items:
$ref: '#/components/schemas/ExternalPrincipalSettings'
ExternalLoginInformation:
type: object
required:
- identityRequest
properties:
token_expiration_duration:
type: integer
identityRequest:
type: object
UserCreation:
type: object
properties:
id:
type: string
description: a unique identifier for the user.
invite_user:
type: boolean
required:
- id
ExternalPrincipalSettings:
type: object
additionalProperties:
type: string
description: Additional settings to be consumed by the remote authenticator
PolicyCondition:
type: object
description: Condition operator (e.g., IpAddress)
additionalProperties:
type: array
items:
type: string
example:
IpAddress:
- 192.168.0.1/32
- 192.168.0.2/32
Statement:
type: object
required:
- effect
- resource
- action
properties:
effect:
type: string
enum:
- allow
- deny
resource:
type: string
action:
type: array
items:
type: string
minItems: 1
condition:
type: object
description: Optional conditions for when this statement applies.
additionalProperties:
$ref: '#/components/schemas/PolicyCondition'
Error:
type: object
required:
- message
properties:
message:
description: short message explaining the error
type: string
ErrorNoACL:
type: object
required:
- message
properties:
message:
description: short message explaining the error
type: string
no_acl:
description: true if the group exists but has no ACL
type: bo
# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lakefs/refs/heads/main/openapi/lakefs-auth-api-openapi.yml