use axum::{extract::State, response::IntoResponse, Json};
use ontoref_ontology::api::ApiRouteEntry;
use serde_json::json;

use provisioning_orchestrator::SharedState;

pub async fn api_catalog(State(_state): State<SharedState>) -> impl IntoResponse {
    let mut routes: Vec<&'static ApiRouteEntry> = inventory::iter::<ApiRouteEntry>().collect();
    routes.sort_by(|a, b| a.path.cmp(b.path).then(a.method.cmp(b.method)));
    Json(json!({ "service": "orchestrator", "routes": routes }))
}
