Generates Java model classes and enums from the OpenAPI specification.
Generates domain models (com.coinbase.prime.model) and enums (com.coinbase.prime.model.enums) from the OpenAPI spec. Request/Response classes are excluded and maintained separately in service packages.
The generator implements a three-stage pipeline:
- OpenAPI Generator (
OpenApiGenerator.java) - Generates raw POJOs from the OpenAPI spec using the OpenAPI Generator library - Post-Processor (
PostProcessor.java) - Applies transformations (Web3→Onchain renaming, schema filtering, file routing) - Model Transformer (
ModelTransformer.java) - Uses JavaPoet to generate final models with builder pattern, license headers, and proper annotations
- Java 11+
- Maven 3.6+
- Network access to fetch the OpenAPI spec from
https://api.prime.coinbase.com/v1/openapi.yaml
cd tools/model-generator
mvn clean packagemvn -PgenerateOr using the JAR directly:
java -jar target/model-generator-1.0.0.jarModels:
- Apache 2.0 license headers
- Jackson
@JsonPropertyannotations - Builder pattern
- Standard getters/setters (
isprefix for booleans) - No-arg and builder constructors
Enums: UPPERCASE_WITH_UNDERSCORES naming.
- OpenAPI spec: Fetched automatically from
https://api.prime.coinbase.com/v1/openapi.yamlduring generation
- Models:
src/main/java/com/coinbase/prime/model/ - Enums:
src/main/java/com/coinbase/prime/model/enums/
The .openapi-generator-ignore file excludes:
*Request.java- service-specific requests*Response.java- service-specific responsesGoogle*.java- infrastructure typesRFQ.java- inline schemas*AllOf*.java- composition artifacts
- OpenAPI Generator 7.x
- Palantir JavaPoet (code generation)
- Jackson (JSON annotations)
- SnakeYAML (spec parsing)
The post-processor applies:
- Web3→Onchain: Renames classes/fields containing "Web3" to "Onchain" while preserving
@JsonPropertymappings - Schema filtering: Skips schemas matching ignore patterns
- Package routing: Places enums in
model/enums/, models inmodel/ - Full regeneration: Processes all models from the OpenAPI spec, updating existing files and creating new ones as needed
- Run generator:
mvn -Pgenerate - Review generated files
- Compile:
mvn clean install - Commit changes