Repository navigation
0.69.0
Lists can be filled or appended to, absent members sent as null, and ess generate types writes body types.
13 added, 3 changed, 29 fixed.
Changed
- From
format: ess/31asets:entry may store the empty list[]in a requiredList<…>field, so a view publishing the field can be filled; generated Rust and Go store an empty list. - From
format: ess/31an input ofListtype may carry anexample:, a list of element values (structs included), which synthesis sends at the plain instance where no guard reads into the list; belowess/31it keeps itstype_mismatch, its hint namingess/31. - The specify guide has a page for tagged unions (
guides/specify/unions.md): akind: uniondeclaration withtag:,variants:and a unit variant thatess specify validateaccepts, why a union is always tagged, the wire shape of each variant rendered from the JSON Schemaess generate --kind schemawrites for it, and when to choose a union over a struct of optional fields. - An
ess-http/1route binding a command todeletemay declarerequest: {encoding: query}, as an adopter asked, so a deleting command takes its unmapped input from the query string and reads no body. The OpenAPI projection writes each unmapped field as anin: queryparameter under its wire name with norequestBody, and the generated Rust and Go servers read it from the query string, refusing an unknown key unless the route saysunknown: ignore.ess-http/1andess-http-ir/1stay at their versions;queryonpost,putorpatchis still refused as ESS-HTTP-020, which now namesgetanddelete. - The views guide says how a view parameter is named on the wire, after an adopter asked: its flat
wire:names the query parameter in the OpenAPI document and in the generated Rust and Go servers, which refuse the model name as an unknown key, and a view field's flatwire:names it in each row. A view field refuses the nestednaming: {wire}spelling as an unknown field. A test now holds both generated servers to these names. - An
ess-http/1outcome may answer one field of the command's response bare, as an adopter asked:body: response.<field>writes that field's value alone, a JSON string where the field is aString. The field must be declared and notOptional, on areturns: trueoutcome withouterror; anything else is ESS-HTTP-024. The OpenAPI document describes the body as the field's schema under{command}.{outcome}.Response, and the generated Rust and Go servers write the same bytes. - An
ess-http/1command route may carryerrors:, one answer for every outcome witherrorthatoutcomes:does not list, as an adopter asked, so a binding states anexternal:refusal's status once instead of per outcome and the derived502is replaced. It is held to every check a listed outcome is, once per outcome it covers, reported atroutes[i].errors; on a view or on a route with no unlisted error outcome it is ESS-HTTP-022. A binding using neither form compiles to the bytes it did, and both servers and the OpenAPI document followerrorsas they follow a listed outcome. - 38 more in the changelog.
Every change: CHANGELOG.md § 0.69.0