ManifestOpenApi

The OpenAPI 3.1 document of a service's public routes, from its Manifest alone (.2): the routes wow-http materializes from the same Manifest, with their headers, bodies and problem+json errors.

  • Every route of every command (CommandManifest.routes): with the aggregate id in the path and, for a creation or a mounted command, without it; the Wow headers (Wow-Request-Id, Wow-Wait, Wow-Wait-Timeout, Wow-Scope, Wow-Space, If-Match), the command's schema as the body, the command result as JSON or as server-sent events, one per hop. An internal command (@InternalCommand) is left out, with the schemas only it reaches (PublicCommands): the public port does not serve it.

  • The lifecycle commands each aggregate lists, the state reads and the trace, the query routes of each query model and their descriptors.

  • The framework's endpoints under /wow: the Manifest, this document and the datasets, as OpenApiOptions says the host serves them.

  • Errors as RFC 9457 problems, one response per status listing the codes answered with it (ErrorResponses): the framework's table (wow.storage.unavailable, wow.schedule.not-due, ...) and each context's domain codes.

  • The security schemes of OpenApiOptions.securitySchemes, under components.securitySchemes, and the global security: one requirement naming them all, which a caller presents together; none when the options have none.

  • No jsonSchemaDialect: the schemas are JSON Schema 2020-12 (JSON_SCHEMA_DIALECT), which OpenAPI 3.1's default dialect, https://spec.openapis.org/oas/3.1/dialect/base, extends with OpenAPI's own keywords, so each reads the same under it; declaring 2020-12 instead adds nothing a reader uses, and Swagger UI refuses any dialect but the default.

  • components.schemas: the Manifest's JSON Schemas (SchemaComponents) and the framework's (WowSchemas); the body of a lifecycle command is the Manifest's when its $defs holds it under the command's name (.1c).

The document is a tree of plain values, as me.ahoo.wow.manifest.ManifestTree writes the Manifest: any JSON library writes it. The same Manifest and options always give the same document.

Properties

Link copied to clipboard

The tag of the framework's own endpoints.

Link copied to clipboard

The dialect the document's schemas are written in, the Manifest's. The document does not declare it: OpenAPI 3.1's default dialect extends it.

Link copied to clipboard

The OpenAPI version of the document.

Link copied to clipboard
const val UNVERSIONED: String

The info.version of a document whose Manifest names no service version.

Functions

Link copied to clipboard
fun write(served: Manifest, options: OpenApiOptions = OpenApiOptions()): Map<String, Any?>

The document of manifest's routes, as the host serves them per options: a public document, so its schemas name no JVM class (withoutClassNames).