Lumilio-Photos Manager API (1.0)

Download OpenAPI specification:

Photo management system API with asset upload, processing, and organization features

assets

List assets with filtering

Retrieve a paginated list of assets with optional filtering by type, owner, or search query

query Parameters
type
string
Enum: "PHOTO" "VIDEO" "AUDIO" "DOCUMENT"
Example: type="PHOTO"

Asset type filter

owner_id
integer
Example: owner_id=123

Filter by owner ID

q
string
Example: q="vacation"

Search query for filename

limit
integer
Default: 20
Example: limit=20

Maximum number of results (max 100)

offset
integer
Default: 0

Number of results to skip for pagination

Responses

Response samples

Content type
application/json
{
  • "code": 0,
  • "data": {
    },
  • "error": "error details",
  • "message": "success"
}

Upload a single asset

Upload a single photo, video, audio file or document to the system

header Parameters
X-Content-Hash
string

Client-calculated BLAKE3 hash of the file

Request Body schema: multipart/form-data
required
file
required
string <binary>

Asset file to upload

Responses

Response samples

Content type
application/json
{
  • "code": 0,
  • "data": {
    },
  • "error": "error details",
  • "message": "success"
}

Delete an asset

Soft delete an asset by marking it as deleted (does not remove the physical file)

path Parameters
id
required
string
Example: "550e8400-e29b-41d4-a716-446655440000"

Asset ID (UUID format)

Responses

Response samples

Content type
application/json
{
  • "code": 0,
  • "data": {
    },
  • "error": "error details",
  • "message": "success"
}

Get asset by ID

Retrieve detailed information about a specific asset with optional relationships

path Parameters
id
required
string
Example: "550e8400-e29b-41d4-a716-446655440000"

Asset ID (UUID format)

query Parameters
include_thumbnails
boolean
Default: true

Include thumbnails

include_tags
boolean
Default: true

Include tags

include_albums
boolean
Default: true

Include albums

Responses

Response samples

Content type
application/json
{
  • "code": 0,
  • "data": {
    },
  • "error": "error details",
  • "message": "success"
}

Update asset metadata

Update the specific metadata of an asset (e.g., photo EXIF data, video metadata)

path Parameters
id
required
string
Example: "550e8400-e29b-41d4-a716-446655440000"

Asset ID (UUID format)

Request Body schema: application/json
required

Updated metadata

object (models.SpecificMetadata)

Type-specific metadata stored as JSON

Responses

Request samples

Content type
application/json
{
  • "metadata": { }
}

Response samples

Content type
application/json
{
  • "code": 0,
  • "data": {
    },
  • "error": "error details",
  • "message": "success"
}

Add asset to album

Associate an asset with a specific album

path Parameters
id
required
string
Example: "550e8400-e29b-41d4-a716-446655440000"

Asset ID (UUID format)

albumId
required
integer
Example: 123

Album ID

Responses

Response samples

Content type
application/json
{
  • "code": 0,
  • "data": {
    },
  • "error": "error details",
  • "message": "success"
}

Get original file by asset ID

Serve the original file content for an asset

path Parameters
id
required
string
Example: "550e8400-e29b-41d4-a716-446655440000"

Asset ID (UUID format)

Responses

Get asset thumbnail by ID and size

Retrieve a specific thumbnail image for an asset by asset ID and size parameter

path Parameters
id
required
string
Example: "550e8400-e29b-41d4-a716-446655440000"

Asset ID (UUID format)

query Parameters
size
string
Default: "\"medium\""
Enum: "small" "medium" "large"

Thumbnail size

Responses

Response samples

Content type
application/json
"string"

Batch upload assets

Batch uploads multiple assets using a multipart/form-data request. The field name for each file part must be its BLAKE3 content hash.

Responses

Response samples

Content type
application/json
{
  • "code": 0,
  • "data": {
    },
  • "error": "error details",
  • "message": "success"
}

Get supported asset types

Retrieve a list of all supported asset types in the system

Responses

Response samples

Content type
application/json
{
  • "code": 0,
  • "data": {
    },
  • "error": "error details",
  • "message": "success"
}

auth

Login user

Authenticate user with username and password

Request Body schema: application/json
required

Login credentials

password
required
string
username
required
string

Responses

Request samples

Content type
application/json
{
  • "password": "securepassword123",
  • "username": "john_doe"
}

Response samples

Content type
application/json
{
  • "code": 0,
  • "data": {
    },
  • "error": "error details",
  • "message": "success"
}

Logout user

Revoke the user's refresh token

Request Body schema: application/json
required

Refresh token to revoke

refreshToken
required
string

Responses

Request samples

Content type
application/json
{
  • "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

Response samples

Content type
application/json
{
  • "code": 0,
  • "data": { },
  • "error": "error details",
  • "message": "success"
}

Get current user

Get information about the currently authenticated user

Authorizations:
BearerAuth

Responses

Response samples

Content type
application/json
{
  • "code": 0,
  • "data": {
    },
  • "error": "error details",
  • "message": "success"
}

Refresh access token

Generate a new access token using a valid refresh token

Request Body schema: application/json
required

Refresh token

refreshToken
required
string

Responses

Request samples

Content type
application/json
{
  • "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

Response samples

Content type
application/json
{
  • "code": 0,
  • "data": {
    },
  • "error": "error details",
  • "message": "success"
}

Register a new user

Create a new user account with username, email, and password

Request Body schema: application/json
required

Registration data

email
required
string
password
required
string >= 6 characters
username
required
string [ 3 .. 50 ] characters

Responses

Request samples

Content type
application/json
{
  • "email": "john@example.com",
  • "password": "securepassword123",
  • "username": "john_doe"
}

Response samples

Content type
application/json
{
  • "code": 0,
  • "data": {
    },
  • "error": "error details",
  • "message": "success"
}