Research-Stack/4-Infrastructure/NoDupeLabs/docs/api/openapi.yaml

206 lines
5.2 KiB
YAML

openapi: 3.1.2
info:
title: NoDupeLabs API
summary: CLI tool for duplicate file detection and management
description: |
NoDupeLabs is a Python library and CLI tool for detecting, managing,
and removing duplicate files. It provides a plugin architecture for
extensible similarity detection algorithms.
## Features
- Fast duplicate detection using various similarity algorithms
- Plugin system for custom algorithms
- Parallel processing for large file sets
- Database-backed file tracking
- Incremental scanning support
## API Stability
This specification describes the CLI commands. The internal Python API
uses decorator-based stability markers (STABLE, BETA, EXPERIMENTAL).
version: 1.0.0
contact:
name: NoDupeLabs Support
url: https://github.com/allaunthefox/NoDupeLabs
license:
name: MIT
identifier: MIT
termsOfService: https://github.com/allaunthefox/NoDupeLabs/blob/main/LICENSE
servers:
- url: https://localhost
description: Local execution (CLI only)
tags:
- name: Core
description: Core CLI commands
- name: Plugin
description: Plugin management commands
- name: Config
description: Configuration commands
paths:
/version:
get:
operationId: getVersion
summary: Show version information
description: |
Displays the current version of NoDupeLabs CLI,
platform information, and system configuration details.
tags:
- Core
responses:
'200':
description: Version information
content:
application/json:
schema:
$ref: '#/components/schemas/VersionInfo'
example:
version: 1.0.0
platform: ssd
cores: 8
ram_gb: 16
'1':
description: Error response
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/plugin:
get:
operationId: listPlugins
summary: List loaded plugins
description: |
Lists all currently loaded plugins with their names and versions.
tags:
- Plugin
parameters:
- name: verbose
in: query
description: Show detailed plugin information
schema:
type: boolean
example: false
responses:
'200':
description: List of plugins
content:
application/json:
schema:
$ref: '#/components/schemas/PluginList'
example:
plugins:
- name: hash
version: 1.0.0
type: similarity
- name: database
version: 1.0.0
type: storage
'1':
description: Error response
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
schemas:
VersionInfo:
type: object
description: Version and system information
required:
- version
properties:
version:
type: string
description: Semantic version
example: 1.0.0
platform:
type: string
description: Drive type (ssd/hdd)
example: ssd
cores:
type: integer
description: Detected CPU cores
example: 8
ram_gb:
type: integer
description: Available RAM in GB
example: 16
PluginList:
type: object
description: List of loaded plugins
required:
- plugins
properties:
plugins:
type: array
items:
$ref: '#/components/schemas/PluginInfo'
PluginInfo:
type: object
description: Plugin metadata
required:
- name
properties:
name:
type: string
description: Plugin name
example: hash
version:
type: string
description: Plugin version
example: 1.0.0
type:
type: string
description: Plugin category
enum:
- similarity
- storage
- command
- time_sync
Error:
type: object
description: Error response
required:
- message
properties:
code:
type: integer
description: Error code
example: 1
message:
type: string
description: Error message
example: Command failed
securitySchemes:
API_KEY_REMOVED:
type: apiKey
name: X-API-Key
in: header
description: API key for authenticated endpoints
responses:
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'
InternalError:
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'