API Dependencies Management#
APX provides powerful tools for discovering, adding, and managing API dependencies across your organization.
Note
Full per-topic guides are in progress. See sub-pages once available.
Overview#
Dependency management workflow:
Search organization APIs
Browse by domain or format
View available versions
Understand compatibility
Add specific versions
Pin in
apx.lockRecord codegen preferences
Manage transitive deps
Multi-language code generation
Never commit generated code
Reproducible builds
Format-specific generators
Compatible updates (patch/minor)
Major version upgrades
Breaking change analysis
Migration assistance
Quick Reference#
Discovery Commands#
# Search APIs by keyword
apx search payments
# Filter by format, lifecycle, or domain
apx search --format=proto --lifecycle=stable
apx search --domain=payments
# Show full identity and catalog data for an API
apx show proto/payments/ledger/v1
Dependency Management#
# Add at a specific version
apx add proto/payments/ledger/v1@v1.2.3
# Apply compatible minor/patch updates for all dependencies
apx update
# Upgrade a dependency to a new API line
apx upgrade proto/payments/ledger/v1 --to v2
Code Generation#
# Generate for specific language (language argument is required)
apx gen go
apx gen python
apx gen java
Lock File Management#
APX uses apx.lock to ensure reproducible builds:
# apx.lock
version: 1
toolchains:
buf:
version: v1.28.1
checksum: "sha256:abc123..."
dependencies:
proto/payments/ledger/v1:
repo: github.com/myorg/apis
ref: proto/payments/ledger/v1/v1.2.3
modules:
- proto/payments/ledger
proto/users/v1:
repo: github.com/myorg/apis
ref: proto/users/v1/v1.0.5
modules:
- proto/users
Generation Output Structure#
Generated code follows a consistent pattern:
internal/gen/
├── go/
│ ├── proto_payments_ledger_v1@v1.2.3/
│ │ ├── ledger.pb.go
│ │ └── ledger_grpc.pb.go
│ └── proto_users_v1@v1.0.5/
│ ├── users.pb.go
│ └── users_grpc.pb.go
├── python/
│ ├── proto_payments_ledger_v1@v1.2.3/
│ │ └── ledger_pb2.py
│ └── proto_users_v1@v1.0.5/
│ └── users_pb2.py
└── java/
└── proto_payments_ledger_v1@v1.2.3/
└── com/myorg/payments/ledger/v1/
Best Practices#
Version Selection#
Pin specific versions in production
Use latest patch for development
Test major upgrades in feature branches
Coordinate breaking changes across teams
Code Generation#
Never commit generated code (use
.gitignore)Regenerate in CI for consistency
Pin generator versions via
apx.lockValidate imports after generation
Dependency Hygiene#
Review dependencies regularly
Remove unused dependencies
Document breaking changes when upgrading
Test compatibility before upgrading dependents