maincopy-server 0.1.0

Self-hosted publishing server with exact previews and explicit release approval
Documentation
use axum::{Json, response::IntoResponse};
use maincopy_shared::{
    AdminApiCapabilities, AdminApiVersion, Capabilities, CapabilityContractVersion,
    FeatureVersions, SupportedFeatureContracts,
};

#[utoipa::path(
    get,
    path = "/api/admin/capabilities",
    responses(
        (status = OK, description = "Supported admin API and feature contract versions", body = AdminApiCapabilities)
    ),
    tag = "Administration"
)]
pub(super) async fn get_admin_capabilities() -> impl IntoResponse {
    Json(AdminApiCapabilities {
        api_versions: vec![AdminApiVersion::V1],
        feature_contracts: SupportedFeatureContracts {
            capabilities: vec![CapabilityContractVersion::V1],
        },
    })
}

#[utoipa::path(
    get,
    path = "/api/admin/v1/capabilities",
    responses(
        (status = OK, description = "Admin API capabilities", body = Capabilities)
    ),
    tag = "Administration"
)]
pub(super) async fn get_capabilities() -> impl IntoResponse {
    Json(Capabilities {
        api_version: AdminApiVersion::V1,
        features: FeatureVersions {
            capabilities: CapabilityContractVersion::V1,
        },
    })
}