Files
alhp-web/openapi_alhp.yaml

256 lines
7.6 KiB
YAML

openapi: 3.1.0
info:
title: ALHP API
description: |-
The ALHP API allows to retrieve package information and general build statistics.
Useful resources:
- [ALHP Git Repository](https://somegit.dev/ALHP/ALHP.GO)
- [ALHP Web Frontend Repository](https://somegit.dev/ALHP/alhp-web)
version: 1.0.2
servers:
- url: https://api.alhp.dev
tags:
- name: package
description: Endpoints related to package data and metadata
- name: general
description: Endpoints providing overall project status and statistics
paths:
/packages:
get:
tags:
- package
summary: Retrieve package information
description: Fetch packages from the ALHP system. You can filter results using query parameters.
operationId: getPackages
parameters:
- name: status
in: query
description: Filter by package status. Accepts multiple values via repeated parameters.
required: false
schema:
type: array
items:
type: string
enum:
- latest
- failed
- built
- skipped
- delayed
- building
- signing
- unknown
- queued
example: [ "latest", "failed" ]
- name: pkgbase
in: query
description: Filter by the base package name (`pkgbase`). This is often the main identifier of a package group.
required: false
schema:
type: string
example: "linux-zen"
- name: exact
in: query
description: If present, matches the `pkgbase` exactly. If not provided, allows partial matches.
required: false
schema:
type: boolean
default: false
example: true
- name: repo
in: query
description: Filter by repository name.
required: false
schema:
type: string
example: "extra-x86-64-v4"
- name: offset
in: query
description: Number of results to skip (for pagination).
required: true
schema:
type: number
example: 0
- name: limit
in: query
description: Maximum number of results to return.
required: true
schema:
type: number
example: 25
responses:
'200':
description: Package data retrieved successfully
content:
application/json:
schema:
type: object
properties:
packages:
type: array
items:
$ref: '#/components/schemas/Package'
total:
type: integer
format: int64
description: Total number of matching packages
example: 1423
offset:
type: integer
format: int64
example: 0
limit:
type: integer
format: int64
example: 25
'404':
description: No packages found matching the specified filters
'500':
description: Internal server error occurred
/stats:
get:
tags:
- general
summary: Retrieve general build statistics
operationId: getStats
responses:
'200':
description: General statistics retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Stats'
'500':
description: Internal server error occurred
components:
schemas:
Package:
type: object
properties:
pkgbase:
type: string
description: The base name of the package
example: "linux-zen"
repo:
type: string
description: Repository from which the package originates
example: "extra-x86-64-v4"
split_packages:
type: array
description: List of package names split from the base package
items:
type: string
example: [ "linux-zen", "linux-zen-headers", "linux-zen-docs" ]
status:
type: string
description: Current build or repository status of the package
enum:
- latest
- failed
- built
- skipped
- delayed
- building
- signing
- unknown
- queued
example: "latest"
skip_reason:
type: string
description: Reason for skipping the package build (if any)
example: "blacklisted"
lto:
type: string
description: Link Time Optimization (LTO) status for the package
enum:
- enabled
- unknown
- disabled
- auto_disabled
example: "enabled"
debug_symbols:
type: string
description: Availability of debug symbols in the package
enum:
- available
- unknown
- not_available
example: "available"
arch_version:
type: string
description: Version available in the official Arch Linux repositories
example: "1.3.4-2"
repo_version:
type: string
description: Version available in ALHP repositories (may be empty if not built)
example: "1.3.4-2.1"
build_date:
type: string
description: Date and time when the package was built (RFC1123 format)
example: "Fri, 15 Dec 2023 03:43:11 UTC"
peak_mem:
type: string
description: Peak memory usage during the build process (human-readable format)
example: "5 GB"
Stats:
type: object
description: Aggregated statistics across all packages
properties:
failed:
type: integer
format: int64
description: Number of packages that failed to build
example: 17
skipped:
type: integer
format: int64
description: Number of packages that were skipped
example: 29
latest:
type: integer
format: int64
description: Number of packages that are up-to-date
example: 743
queued:
type: integer
format: int64
description: Number of packages currently in the build queue
example: 5
building:
type: integer
format: int64
description: Number of packages currently building
example: 11
last_mirror_timestamp:
type: integer
format: int64
description: Latest mirror timestamp to detect outdated mirrors (Unix timestamp)
example: 1702612991
lto:
type: object
description: LTO status summary across all packages
properties:
enabled:
type: integer
format: int64
description: Number of packages with LTO enabled
example: 532
disabled:
type: integer
format: int64
description: Number of packages with LTO explicitly disabled
example: 203
unknown:
type: integer
format: int64
description: Number of packages with unknown LTO status
example: 11