{
"name": "axa",
"version": "0.10.0",
"description": "Small shared library for services built directly on Axum.",
"repository": "https://github.com/publicprojects-io/axa/",
"license": "MIT OR Apache-2.0 OR BSD-3-Clause OR GPL-2.0-only OR GPL-3.0-only",
"language": "Rust",
"edition": "2024",
"rust_version": "1.97",
"documentation": {
"readme": "README.md",
"agents": "AGENTS.md",
"specification": "spec/index.md",
"changelog": "CHANGELOG.md",
"guides": [
"help/from-loco-into-axa/index.md",
"help/from-loco-seaorm-into-axa-seaorm/index.md",
"help/idempotency-keys/index.md",
"help/transactional-outbox/index.md",
"help/background-jobs/index.md",
"help/upgrading-to-0.3/index.md"
],
"skills": {
"user": "skill/axa-skill/SKILL.md",
"maintainer": "skill/axa-maintainer-skill/SKILL.md"
}
},
"features": [
{
"name": "sea-orm",
"crate": "axa-seaorm"
},
{
"name": "queue",
"crate": null
},
{
"name": "diesel",
"crate": "axa-diesel"
},
{
"name": "keycloak",
"crate": "axa-keycloak-auth"
},
{
"name": "openapi",
"crate": "axa-openapi-docs"
},
{
"name": "opentelemetry",
"crate": "axa-opentelemetry"
},
{
"name": "outbox",
"crate": "axa-transactional-outbox"
},
{
"name": "outbox-encryption",
"crate": "axa-transactional-outbox"
},
{
"name": "cursor-pagination",
"crate": "axa-cursor-pagination"
},
{
"name": "paseto",
"crate": "axa-paseto-auth"
},
{
"name": "problem",
"crate": "axa-problem-details-for-http-apis"
},
{
"name": "prometheus",
"crate": "axa-prometheus-metrics"
},
{
"name": "redis",
"crate": "axa-redis-cache"
},
{
"name": "session",
"crate": "axa-web-session"
},
{
"name": "sqlx",
"crate": "axa-sqlx"
},
{
"name": "tera",
"crate": "axa-tera-templates"
},
{
"name": "tracing",
"crate": "axa-tracing"
},
{
"name": "idempotency",
"crate": "axa-idempotency-key"
},
{
"name": "ratelimit",
"crate": "axa-request-rate-limit"
},
{
"name": "versioning",
"crate": "axa-accepts-version-negotiation"
}
],
"modules": [
{
"name": "boot",
"purpose": "Test boot helpers, including `TestApp`"
},
{
"name": "cli",
"purpose": "The shared command line"
},
{
"name": "conditional",
"purpose": "`ETag`, `304`, and `If-Match`, as RFC 9110 has them"
},
{
"name": "config",
"purpose": "Configuration from the process environment"
},
{
"name": "context",
"purpose": "`AppContext`, plain Axum state"
},
{
"name": "db",
"purpose": "Database helpers for the context"
},
{
"name": "error",
"purpose": "The error type and its HTTP mapping"
},
{
"name": "extract",
"purpose": "Extractors that reject with a problem saying what was wrong"
},
{
"name": "format",
"purpose": "Response helpers"
},
{
"name": "health",
"purpose": "Health routes"
},
{
"name": "logger",
"purpose": "Logging setup, `init` and `init_with`"
},
{
"name": "middleware",
"purpose": "The standard HTTP middleware stack"
},
{
"name": "prelude",
"purpose": "Common imports"
},
{
"name": "queue",
"purpose": "The Postgres job queue (feature `queue`)"
},
{
"name": "routes",
"purpose": "Route tables that become an ordinary `Router`"
},
{
"name": "server",
"purpose": "Serving, connection limits, and graceful shutdown"
},
{
"name": "store",
"purpose": "Shared in-process store"
},
{
"name": "task",
"purpose": "Command-line tasks"
},
{
"name": "worker",
"purpose": "Background jobs"
}
],
"crates": [
{
"name": "axa-diesel",
"version": "0.2.0",
"description": "Diesel pooling, migrations, and test resets for Axum services, in pure Rust.",
"feature": "diesel",
"readme": "crates/axa-diesel/README.md"
},
{
"name": "axa-environment",
"version": "0.1.1",
"description": "Which environment a service runs in, read one way, with no dependencies.",
"feature": null,
"readme": "crates/axa-environment/README.md"
},
{
"name": "axa-keycloak-auth",
"version": "0.3.0",
"description": "Keycloak bearer authentication and ABAC enforcement for Axum services.",
"feature": "keycloak",
"readme": "crates/axa-keycloak-auth/README.md"
},
{
"name": "axa-openapi-docs",
"version": "0.1.0",
"description": "Serve OpenAPI documents and a pinned Swagger UI from Axum services.",
"feature": "openapi",
"readme": "crates/axa-openapi-docs/README.md"
},
{
"name": "axa-opentelemetry",
"version": "0.1.1",
"description": "OTLP export of traces and request metrics for Axum services.",
"feature": "opentelemetry",
"readme": "crates/axa-opentelemetry/README.md"
},
{
"name": "axa-transactional-outbox",
"version": "0.2.0",
"description": "A transactional outbox and relay on Postgres for Axum services, that keeps a record of what it delivered and refused.",
"feature": "outbox",
"readme": "crates/axa-transactional-outbox/README.md"
},
{
"name": "axa-postgres-job-queue",
"version": "0.2.0",
"description": "A Postgres job queue, worker pool, and recurring schedules for Axum services.",
"feature": "queue",
"readme": "crates/axa-postgres-job-queue/README.md"
},
{
"name": "axa-cursor-pagination",
"version": "0.1.1",
"description": "Signed cursor pagination with Link rel=next and no total, and LIKE escaping, for Axum services.",
"feature": "cursor-pagination",
"readme": "crates/axa-cursor-pagination/README.md"
},
{
"name": "axa-paseto-auth",
"version": "0.5.0",
"description": "PASETO bearer authentication and ABAC enforcement for Axum services.",
"feature": "paseto",
"readme": "crates/axa-paseto-auth/README.md"
},
{
"name": "axa-problem-details-for-http-apis",
"version": "0.1.0",
"description": "RFC 9457 problem details responses for Axum services.",
"feature": null,
"readme": "crates/axa-problem-details-for-http-apis/README.md"
},
{
"name": "axa-prometheus-metrics",
"version": "0.1.0",
"description": "Prometheus text exposition for Axum services.",
"feature": "prometheus",
"readme": "crates/axa-prometheus-metrics/README.md"
},
{
"name": "axa-redis-cache",
"version": "0.1.1",
"description": "A Redis cache with mandatory expiry for Axum services.",
"feature": "redis",
"readme": "crates/axa-redis-cache/README.md"
},
{
"name": "axa-seaorm",
"version": "0.2.1",
"description": "SeaORM connections, migration helpers, and model errors for Axum services, with an easy path from Loco.",
"feature": "sea-orm",
"readme": "crates/axa-seaorm/README.md"
},
{
"name": "axa-web-session",
"version": "0.1.0",
"description": "Web sessions for Axum services over axum_session, with safe defaults.",
"feature": "session",
"readme": "crates/axa-web-session/README.md"
},
{
"name": "axa-sqlx",
"version": "0.1.2",
"description": "PostgreSQL pooling, migrations, and test resets over sqlx for Axum services.",
"feature": "sqlx",
"readme": "crates/axa-sqlx/README.md"
},
{
"name": "axa-test",
"version": "0.1.0",
"description": "Request-level test helpers for axa services, built on axum-test.",
"feature": null,
"readme": "crates/axa-test/README.md"
},
{
"name": "axa-tera-templates",
"version": "0.2.1",
"description": "Tera templates with safe escaping and generic errors for Axum services.",
"feature": "tera",
"readme": "crates/axa-tera-templates/README.md"
},
{
"name": "axa-tracing",
"version": "0.1.0",
"description": "Redaction, request tracking, and asynchronous diagnostics over tracing for Axum services.",
"feature": "tracing",
"readme": "crates/axa-tracing/README.md"
},
{
"name": "axa-idempotency-key",
"version": "0.2.1",
"description": "Idempotency-Key handling over Postgres for Axum services.",
"feature": "idempotency",
"readme": "crates/axa-idempotency-key/README.md"
},
{
"name": "axa-request-rate-limit",
"version": "0.2.0",
"description": "In-process request limits, per client or per key, and failed-login lockout for Axum services.",
"feature": "ratelimit",
"readme": "crates/axa-request-rate-limit/README.md"
},
{
"name": "axa-accepts-version-negotiation",
"version": "0.2.0",
"description": "Header-based API version negotiation for Axum services.",
"feature": "versioning",
"readme": "crates/axa-accepts-version-negotiation/README.md"
}
]
}