.repost schema into a typed Java client: immutable models, a webhooks.<catalog>.<member>() method tree, synchronous and CompletionStage sends, and a shared runtime that handles retries, idempotency, and delivery reconciliation. The same schema and wire format back the TypeScript, Go, Python, and Kotlin SDKs, pinned by a cross-language conformance suite.
The runtime is published to Maven Central under the sh.repost group and is server-side only — it holds a publish credential and must not ship in an Android app or any untrusted client.
The published runtime is version
1.0.18 and the schema engine is 0.9.0. Every coordinate on this page resolves from Maven Central. Kotlin projects should follow the Kotlin quickstart instead.1
Install the plugin and BOM
Import the The plugin resolves and runs a signed, platform-specific schema engine (
repost-bom to keep every Repost artifact on one version, depend on repost-client, and add the repost-maven-plugin to generate on every build. A complete working project lives in the repo under examples/java.pom.xml
sh.repost:repost-schema-engine:0.9.0) — nothing else to install. It adds no transitive HTTP, JSON, or logging libraries to your classpath — the transport is a source-verified, relocated Apache HttpClient baseline inside repost-client, so it cannot collide with your own Jackson, SLF4J, or OkHttp versions.2
Define the schema
repost schema init --language java --output ./src/main/java scaffolds a repost/ directory. Declare your events and a Java generator block:repost/schema.repost
3
Generate the client
The plugin binds to the
generate-sources phase, so a normal compile already produces your client. To run generation on its own:Your first send
The client isAutoCloseable. Open it in a try-with-resources; create() reads the credential and endpoint from the environment. Send synchronously, or asynchronously with a CompletionStage, passing an idempotency key you control:
SendResult whose getDeliveryState() is ACCEPTED; any failure throws a RepostException subclass — Reliability covers the full outcome model. close() returns every owned thread and connection to baseline — always close a client you created.
Continue
Code generation
The generator block, the
repost:check CI gate, and multi-module builds.Configuration
Credentials, timeouts, retries, and transport options with production defaults.
Reliability
Idempotency, the five delivery states, cancellation, and backpressure.