- Disallowed
requiresLengthtrait in output. (#1155, #1152) - Added validation that
codeinhttptrait is between 100 and 999. (#1156) - Added validation that
uriinhttptrait uses ASCII characters. (#1154) - Allowed
jsonNametrait on union members. (#1153) - Improved Dockerfile support. (#1140)
- Added support for conditions and loops to AbstractCodeWriter. (#1144)
- Added a warning for missing
^or$anchors in@patterntrait. (#1141) - Added a validator to catch usage of non-inclusive words. (#931)
- Added new classes for code writing and delegation, which deprecates the
software.amazon.smithy.codegen.core.writerpackage. (#1131) - Added a warning for using
@sensitivetrait on members, which will be removed in IDL 2.0. (#1132)
- Documented the supported OpenAPI version. (#1151)
- Added links to Scala generator and plugin. (#1145)
- Downgraded set type violations from ERROR to WARNING to give consumers more time to convert these sets to lists. These will be upgraded to ERROR again in a future release. (#1125)
- Fixed backwards compatibility of CodeWriter and created a new basic implementation of
AbstractCodeWriternamedSimpleCodeWriter. (#1123) - Fixed a bug in
AbstractCodeWriterwhere indenting the next line would not be preserved after popping a state. (#1129) - Fixed a bug in
AbstractCodeWriterwhere text could sometimes be lost due to lazy StringBuilder construction. (#1128) - Fixed a null pointer exception in
ModelAssemblerafter callingreset(). (#1124)
- Removed examples showing
@sensitiveon structure members, which is deprecated in IDL 2.0. (#1127)
-
Sets can now only contain byte, short, integer, long, bigInteger, bigDecimal, and string shapes. Sets with other types of values are either difficult to implement in various programming languages (for example, sets of floats in Rust), or highly problematic for client/server use cases. Clients that are out of sync with a service model could receive structures or unions from a service, not recognize new members and drop them, causing the hash codes of members of the set to collide, and this would result in the client discarding set entries. For example, a service might return a set of 3 structures, but when clients deserialize them, they drop unknown members, and the set contains fewer than 3 entries.
Existing models that already use a set of other types will need to migrate to use a list rather than a set, and they will need to implement any necessary uniqueness checks server-side as needed. (#1106)
NOTE: This restriction was downgraded to a WARNING in 1.18.1
-
Removed unused
UseShapeWriterObserverand related features. (#1117)
- Added interfaces for Codegen integrations, interceptors, and contexts. (#1109, #1118)
- Added support for typed sections, prependers and appenders, and more explicit newline control to
CodeWriter. (#1110) - Added built-in
SymbolandCallformatters, a typed context, and debug info toCodeWriter. (#1095, #1104) - Added a
DependencyTrackerforSymbols. (#1107) - Rewrote
CodeFormatterto be easier to understand and evolve. (#1104) - Exposed
CodegenWriter'sDocumentationWriter. (#1083) - Improved error messages from
SmithyBuilder. (#1100) - Reduced copies made in
smithy-codegen-coreandsmithy-build. (#1103) - Added non-optional method for
@httpMalformedRequestTesturis. (#1108) - Added multi-code-unit characters to
@lengthvalidation tests. (#1092) - Added malformed request tests for
settypes. (#1094) - Clarified a message for
@httpPayloadbinding errors. (#1113) - Deprecated
onSectionAppendandonSectionPrepend. (#1110)
- Fixed an incorrect warning when the
errorsproperty was set on aservice. (#1120) - Fixed various issues in protocol tests. (#1084, #1040)
- Fixed a failing code path in
SmithyBuild. (#1100)
- Added note about escaping
\in@pattern. (#1091) - Clarified error serialization behavior for
@restJson1. (#1099) - Clarified defaulting behavior of
@httpResponseCode. (#1111) - Clarified behavior of the
sourcesplugin. (#977) - Clarified how
@lengthinteracts with UTF-8 encoding. (#1089) - Fixed an
@idRefexample. (#1087)
- Migrated to using Gradle 7.3.3 to build Smithy. This should have no impactful downstream effects. (#1085)
- Updated
@streamingvalidation for protocols that support@httpPayload. (#1076)
- Added ability to serialize the JMESPath AST. (#1059)
- Update
CodeWriterto add getters and ability to copy settings. (#1067)
- Clarified
outputToken. (#1056) - Removed repeated words. (#1063)
- Clarified server behavior for query parameter deserialization. (#1080)
- Updated traits to preserve the original
Nodevalue from the model. (#1047)
- Removed @internal from the @unitType trait. (#1054)
- Fixed JMESPath and-expression evaluation to correctly provide the result of the left expression when it is falsey. #1053
- Fixed quoted string headers restJson1 response protocol test. #1049
- Renamed
StutteredShapeNamevalidator toRepeatingShapeNameand added anexactMatchconfiguration to let it more precisely prevent problematic models. (#1041) - Reduced the severity of
HttpBindingsMissingevents for services that do not use protocols that support the@httptrait. (#1044) - Added
unwrite()toCodeWriter. (#1038)
- Fixed the
RestJsonInputUnionWithUnitMemberprotocol test. (#1042)
- Updated the documentation for pagination. (#1043)
- Make
smithy.api#Uniteasier to adopt by excluding direct relationships between it and operation inputs and outputs. (#1034)
- Fixed character escaping in a restJson1 protocol test. (#1035)
- Added
smithy.api#Unitand@inputand@outputtraits. (#980, #1005) - Removed support for collection values for
@httpPrefixHeaders. (#1022) - Added a protocol test for handling path segments that contain regex expressions. (#1018)
- Removed
jsonNamefrom theawsJsonprotocol tests and documentation. (#1026) - Reverted changes to timestamp list header serialization protocol tests. (#1023)
- Fixed links in the search results of Smithy's javadocs. (#1009)
- Fixed duplication of validation events for conflicting names. (#999)
- Added links to Kotlin and Swift generators. (#1020)
- Clarified matching of URIs where greedy labels have no matching segment. (#1013)
- Added minor optimizations. (#1028, #1027, #1004)
- Added Apple silicon target for smithy-cli. (#1012)
- Updated smithy-cli to use JDK 17. (#1003)
- Added protocol tests for quoted strings in headers. (#986)
- Fixed
filterSuppressionstransform's handling of members. (#989) - Fixed http-content-type protocol tests. (#993)
- Fixed documentation regarding
@lengthand@authtraits. (#988, #997) - Added documentation for
httpMalformedRequestTests. (#973)
- Upgraded to use version
0.6.0of the Smithy Gradle Plugin. (#996) - Reduced number of copies builders need to make when building up immutable objects. (#995)
- Ensured InputStreams in loader are closed. (#991)
- Updated the
@aws.protocols#httpChecksumtrait to use uppercase algorithm names. (#982)
- Fixed an issue where JSON Schema conversion wouldn't remove out-of-service references before deconflicting. (#978)
- Fixed IAM condition key inference not using the
@aws.iam#iamResourcetrait. (#981)
- Added the
@aws.protocols#httpChecksumtrait to describe checksumming behavior for operations. (#972)
- Fixed a bug that used a JSON pointer instead of names when generating CloudFormation Resource Schema required properties. (#971)
- Clarified parsing of members marked with the
@httpQueryParamstrait. (#957)
- Fixed a bug that caused the
applytransform to not run its projections. (#969)
- Added a
filterSuppressionsmodel transform. (#940) - Updated selector attributes to be stricter. (#946)
- Added support for generating the
requiredproperty when generating CloudFormation Resource Schemas. (#937) - Added support for generating the
handlersproperty when generating CloudFormation Resource Schemas. (#939) - Added the
@aws.iam#iamResourcetrait to indicate properties of a Smithy resource in AWS IAM. (#948) - Added the
@aws.iam#supportedPrincipleTypestrait to indicate which IAM principal types can use a service or operation. (#941) - Updated model serializers to allow for serializing the prelude. (#955)
- Updated JSON Schema conversion to maintain property order. (#932)
- Improved
@httpApiKeyAuthdescription when converting to OpenAPI. (#934) - Updated the error message received when http request body content issues are encountered. (#959)
- Updated request tests for
restJson1query strings. (#933, #958) - Added protocol tests for
restJson1content types. (#924, #945)
- Fixed issues in model loading that required a service
versionproperty. (#936) - Fixed an issue that where CORS headers in OpenAPI conversions were not case-insensitive. (#950)
- Fixed various issues in protocol tests. (#930, #933, #935, #944, #949, #954)
- Clarified host-related settings in the
@httpRequestTeststrait documentation. (#951) - Clarified uri samples and descriptions. (#960)
- Fixed some issues in documentation. (#952)
- Added support for binding common errors to a
serviceshape. (#919) - Loosened the requirement of setting a
versionproperty when defining aservice. (#918) - Updated
smithy-buildto fail when a build plugin cannot be found. (#909) - Added a
changeTypesbuild transform. (#912) - Added support for replacing simple shapes in
ModelTransformer. (#900) - Added a
schemeproperty to the@httpApiKeyAuthtrait. (#893) - Added support for specifying errors in the
@examplestrait. (#888) - Added multi-character newline support in
CodeWriter. (#892) - Updated semantic validation of modeled
OPTIONSoperations. (#890) - Added several malformed request protocol tests. (#879, #882, #881, #898, #901, #905, #908)
- Added protocol tests for path prefixes. (#899)
- Fixed how
NodeMapperhandles generic params. (#912) - Fixed how the CLI logs messages and interacts with logging levels. (#910)
- Updated guidance on ordering of
setshapes. (#875) - Clarify that event streams contain modeled errors. (#891)
- Added an index that lists all traits. (#876)
- Fixed various documentation issues. (#884, #911, #927)
- Updated CORS header configuration when converting to OpenAPI while using
sigv4orrestJson1. (#868) - Added the (unstable)
httpMalformedRequestTeststrait to validate service behavior around malformed requests. (#871) - Added
smithy-differror when an enum entry is inserted. (#873) - Added a
restXmlprotocol test. (#866) - Added a
httpChecksumRequiredprotocol test. (#869)
- Updated
NodeMapperto properly handlesourceLocationfor traits. (#865) - Removed warning when an operation using the HTTP
PATCHmethod is marked with the@idempotenttrait. (#867) - Fixed several issues where a
sourceLocationwasn't propagated for traits. (#864)
- Loosened the requirement of setting an
errorproperty when configuringaws.api#clientEndpointDiscoverytrait. (#850) - Added a
restJson1protocol test. (#845) - Added a warning when using the OpenAPI conversion
jsonAddsetting to alter schemas. (#851) - Added the
httpChecksumtrait. (#843)
- Revert "Tightened substitution pattern for Fn::Sub to match CloudFormation." (#858)
- Fixed an issue where
corstraitadditionalExposedHeaderswere not added to gateway responses. (#852) - Fixed various issues in protocol tests. (#849, #855, #857)
- Clarified behavior for the
aws.api#servicetrait'ssdkIdmember. (#848) - Fixed various typos. (#853, #859)
- Fixed a number of protocol tests related to non-numeric floats. (#844)
- Tightened substitution pattern for Fn::Sub to match CloudFormation. (#842)
- Added a common validation model for use in server SDKs. (#813)
- Added support for cross platform builds of the CLI. (#832)
- Validate the contents of protocol test bodies for known media types. (#822, #835)
- Updated support for non-numeric floating-point values in several places. (#828)
- Added several
restJsonprotocol tests. (#684) - Added several
restXmlprotocol tests. (#804) - Added and updated several
awsQueryandec2Queryprotocol tests. (#815, #833) - Added several
documenttype protocol tests. (#810)
- Fixed a
NullPointerExceptionwhen loading a config and no parent path is present. (#814)
- Added
s3UnwrappedXmlOutputtrait, which defines when an S3 operation does not use the protocol standard XML wrapper. (#839)
- Added an overview of known Smithy implementations and projects. (#830, #831)
- Improved the documentation for the
restXml. (#827) - Improved the documentation for the
awsQuery. (#827) - Improved the documentation for the
ec2Queryprotocol. (#823, #827, #836) - Added more context for documentation types. (#818)
- Fixed several minor documentation issues. (#816, #818, #837, #840)
- Added
awsQueryErrortrait, which defines the value in theCodedistinguishing field. (#807) - Added methods to get shapes by type and trait. (#806)
- Improved performance. (#805)
- Improved percent-encoding tests and doumentation. (#803)
- Added
doubleformat to epoch-seconds timestamps when converting to OpenAPI. (#802) - Improved CLI output. (#800, #801)
- Fixed awsQuery protocol test to show distinction from ignored
@xmlNamespacetrait. (#799)
- Fixed a bug where unions would cause CloudFormation schema conversion to fail. (#794)
- Fixed an incorrect restXml protocol test. (#795)
- Added the
recommendedstructure member trait, which indicates that a structure member SHOULD be set. (#745) - Added support for service renames when using the
flattenNamespacestransformer. (#760) - Set
additionalPropertiestofalsefor CloudFormation objects. (#764) - Improved model validation debugging by stopping validation when an
ERRORoccurs while loading models. (#775) - Added validation warning when a
hostPrefixcontains a label that does not end in a period. (#779) - Added and updated several
@restXmlprotocol test. (#744, #755, #757, #777, #766, #789) - Added and updated several
@restJson1protocol test. (#747, #755, #765, #790)
- Fixed number parsing in the IDL, using BigDecimal or BigInteger where needed. (#766)
- Fixed Gradle 7 builds. (#758)
- Added
Documenttype to list of inherently boxed shapes. (#749) - Reordered
TraitServiceSPI entries for readability. (#742)
- Added missing
nameproperties toaws.iam#ConditionKeyTypeenum. (#759)
- Fixed
selector_expressionandcommentin ABNF for Smithy IDL. (#771, #771) - Documented conflict resolution of HTTP query params. (#783)
- Documented precedence of constraint traits. (#784)
- Upgraded to use version
0.5.3of the Smithy Gradle Plugin. (#791)
- Added the
renameproperty to theserviceshape to disambiguate shape name conflicts in the service closure. (#734) - Added the
httpQueryParamstrait that binds a map of key-value pairs to query string parameters. (#735) - Improved the usability of code for building and running Selectors. (#726)
- Added several protocol tests for behavior around
nullserialization. (#728)
- Added missing documentation for some trait models. (#737)
- Fixed
awsQueryandec2Querylist serialization examples. (#732)
- Added the
renameShapesbuild transform to rename shapes within a model. (#721)
- Fixed several issues in protocol tests around
@endpoint. (#720)
- Added support for checking backwards compatibility for diffs of trait contents. (#716)
- Added support for adding CORS configurations to API Gateway HTTP APIs. (#670)
- Relaxed constraints on the
@httpPayloadtrait, allowing it to targetlist,set, andmapshapes. (#679) - Added validation to ensure a
payloadFormatVersionis set when generating an API Gateway HTTP API. (#688) - Added
vendorParamsShapeto protocol test cases to support validating a test case'svendorParamsvalues are configured properly. (#702) - Added the ability to validate resolved hosts to protocol tests. (#707)
- Added backwards compatibility checking to
smithy-difffor the@paginatedtrait. (#716) - Added
tagsandappliesToto protocol test definitions for better categorization and grouping. (#696) - Added several protocol tests for the
endpointandhostLabeltraits. (#708) - Added several
@restXmlprotocol tests. (#689, #690, #678, #694)
- Fixed an issue that produced duplicate entries in the
securitylist of a converted OpenAPI document. (#687) - Fixed an issue where
alphanumericOnlyRefswas not fully satisfied when generating synthesized shapes. (#695) - Fixed several issues in IDL parsing where duplicate bindings were allowed incorrectly. (#714)
- Fixed several issues in protocol tests around serialization of empty contents. (#692)
- Fixed an issue where parameters in a diff error message were swapped. (#713)
- Fixed an issue in a
restXmlprotocol test. (#715)
- Added a configuration definition for use validating
vendorParamsin AWS protocol tests. (#705) - Added tests and documentation for some required Amazon S3 customizations. (#709)
- Added tests and documentation for required Amazon Glacier customizations. (#704)
- Added a test and documentation for the required Amazon API Gateway customization. (#706)
- Added a test and documentation for the required Amazon Machine Learning customization. (#707)
- Improved the documentation for the
awsJson1_0andawsJson1_1protocols. (#698) - Improved the documentation for the
awsQueryandec2Queryprotocols. (#700) - Clarified that Smithy requires support for fractional seconds for the
http-datevalue of@timestampFormat. (#672) - Added missing shape documentation for some waiters related shapes. (#711)
- Fixed several minor documentation issues. (#681, #693, #697, #701, #708, #717)
- Migrated to using Gradle 6 to build Smithy. This should have no impactful downstream effects. (#194)
- Migrated to using
mainfrommasterfor the default branch. This should have no impactful downstream effects. (#685)
- Fixed several issues related to building and running on Windows. (#671)
- Fixed an issue loading the
jsonAddmap from configuration for thecloudformationplugin. (#673) - Fixed an issue where API Gateway REST APIs would have greedy label parameter names rendered into OpenAPI with
a
+suffix. (#674)
- Added the
endpointPrefixproperty to the@aws.api#servicetrait. (#663) - Added support for
tagsanddeprecatedmembers to@waitabledefinitions. (#652) - Added validation for
@httpHeadertrait values. (#650) - Add
requiredproperty forrequestBodywhen converting to OpenAPI. (#655) - Added more helper methods to
OperationIndex. (#657)
- Ensure that names in the
@waitabletrait are unique in the closure of the service. (#645) - Fixed a regression with
@aws.apigateway#authorizorsbehavior when setting thecustomAuthTypeproperty without having set itstypeproperty. (#613) - Fixed an issue where modeled headers were not populated in to
Access-Control-Expose-Headersin CORS responses. (#659) - Added missing
deprecatedmember to@enumdefinitions in the prelude model. (#651) - Fixed an issue with the conversion of greedy label parameter names in to OpenAPI. (#641)
- Fixed an issue in
CodeWriter.popStatewhere it would not honor custom expression start characters. (#648) - Fixed a potential
NullPointerExceptionwhen validating the@examplestrait. (#642) - Fixed issues with some
@awsQueryand@ec2Queryprotocol test responses. (#653) - Fixed an issue where the
removeTraitDefinitionsbuild transform was not registered with the SPI. (#660) - Fixed an issue where using an environment variable in
smithy-build.jsonwould consume an extra preceding character when performing a replacement. (#662)
- Update
@waitabledocumentation to specify using jitter and account for overflows. (#656) - Added examples and clarified documentation for several HTTP traits, most importantly
@httpLabeland@httpQuery. (#654) - Clarified various aspects of the
@xmlNamespacetrait documentation. (#643) - Clarified
@waitabledocumentation. (#646, #664) - Clarified that the
@patterntrait does not implicitly match an entire string. (#649) - Fixed various examples in the specification. (#639)
- Sort
TopDownIndexcontents to provide deterministic results. (#667) - Improved error messages when an unknown annotation trait is encountered. (#644)
- Added
smithy-differror when the@idempotencyTraittoken is removed from a shape. (#640)
- Added
smithy-jmespath, a dependency-less, JMESPath parser with a rich AST that can be used in code generation, and performs static analysis of expressions. (#621) - Added
smithy-waiters, containing the@waitabletrait. This provides information that clients can use to poll until a desired state is reached, or it is determined that state cannot be reached. (#623) - Added
smithy-aws-cloudformation-traits, containing several (unstable) traits that indicate CloudFormation resources and the additional metadata about their properties. (#579) - Added
smithy-aws-cloudformation, containing the (unstable) "cloudformation" build tool that, given a model decorated with traits fromaws.cloudformation, will generate CloudFormation Resource Schemas. (#622)
- Added support for
patternPropertieswhen generating JSON Schema. (#611) - Added more utility methods to the
CodeWriter. (#624) - Added validation for
@sensitivetrait when applied to members. (#609) - Added support for retrieving full paths to the
outputTokenanditemspagination members. (#628) - Added a warning for
@enumentries without names. (#610) - Added support for generating an
integerOpenAPI type. (#632) - Improved
smithy-diffevaluation of changing member targets. (#630) - Updated pagination tokens to support being
mapshapes. (#629)
- Fixed a bug where URIs would be declared conflicting if the differed through the
@endpointtrait. (#626) - Fixed a bug that would allow the
@aws.auth#sigv4trait'snameproperty to be empty. (#635) - Updated protocol tests for
@sparsetrait. (#620, #631) - Fixed a bug with the interaction of
CodeWriter.writeInlinewith sections. (#617)
- Fixed links for protocol test suites. (#615)
- Added example and test for composing with
CodeWriter. (#619) - Clarified that
@enumvalues cannot be empty. (#633) - Clarified binary data in protocol tests. (#634)
- Lowered severity of validation that a
pageSizemember is marked@required. (#612)
- Added several
CodegenWriterand related abstractions to simplify creating code generators. (#587) - Added the
@sparsetrait to the Prelude. (#599) - Added the
NullableIndexto help check if a shape can be set to null. (#599) - Added support for API Gateway API key usage plans. (#603, #605)
- Added the
sortMembersmodel transform to reorder the members of structures and unions. (#588) - Add
descriptionproperty to operations when converting to OpenAPI. (#589)
- Fixed an issue where the
flattenNamespacesbuild transform was not registered with the SPI. (#593)
- Optimized the reverse
NeighborProviderfor memory usage. (#590) - Optimized model validation event aggregation for memory usage. (#595)
- Clarified that
mapkeys,setvalues, andunionmembers cannot be null. (#596) - Clarified
enumnames and their usage. (#601) - Added an example dependency to OpenAPI conversion. (#594)
- Improve and clean up formatting. (#585, #597, #598)
- Updated
service,resource, andoperationshapes to maintain the order of boundresourceandoperationshapes. (#602) - Updated the
sourcesbuild plugin to create an empty manifest if there are no source models. (#607) - Deprecated the
BoxIndex. (#599) - Added
enumnames forhttpApiKeyLocationin the Prelude. (#606)
- Added information to the
ModelDiff.Resultindicating how events have changed between the diff'd models. (#574) - Added a media type parser and validation for the
@mediaTypetrait. (#582) - Added additional default CORS headers and configuration for OpenAPI conversions. (#583)
- Added the
flattenNamespacesbuild transform to flatten the namespaces of shapes connected to a specified service in a model in to a target namespace. (#572) - Added
runCommandfunctionality tosmithy-utils. (#580) - Added a
TriConsumertosmithy-utils. (#581) - Added support for the
@httpResponseCodetrait in theHttpBindingIndex. (#571) - Added protocol tests for the
@httpResponseCodetrait. (#573)
- Fixed several issues that would cause Smithy to fail when running on Windows. (#575, #576, #577)
- Fixed a bug where a
unionshape marked as an@httpPayloadwould throw an exception when trying to resolve its content-type. (#584) - Fixed a bug in OpenAPI conversions where tags were not passed through unless set in the
supportedTagslist, even when thetagssetting was enabled. (#570)
- Added the
removeTraitDefinitionsbuild transform to remove trait definitions from models but leave instances intact. (#558) - Added payload binding validation to HTTP
DELETEoperations. (#566) - Updated
SmithyDiffto emit events when traits are changed. (#561)
- Fixed an issue where some
StringListTraitinstances could loseSourceLocationinformation. (#564) - Fixed some issues in protocol tests. (#560, #563)
- Model components are now deduplicated based on location and value. (#565)
- Normalize URL import filenames for better deduplication and reporting. (#562)
- Added a reverse-topological knowledge index to aid in code generation for languages that require types to be defined before they are referenced. (#545, #53)
- Added the
@httpResponseCodetrait to indicate that a structure member represents an HTTP response status code. (#546) - Added (unstable) support for generating a "Trace File" to link code generated artifacts back to their modeled source. (#552)
- Added the
:topdownselector that matches shapes hierarchically. (#539) - Added validation for the
cloudTrailEventSourceproperty of the@aws.api#servicetrait. (#550) - Updated shape builders to properly update their member ShapeIds if the ShapeId of the builder changes. (#556)
- Added several more XML related protocol tests. (#547)
- Fixed a bug where the
PaginatedIndexdid not properly support resolving paths. (#554)
- Clarified the documentation for the
cloudTrailEventSourceproperty of the@aws.api#servicetrait. (#550) - Clarified that the
@aws.api#arntrait has no impact on OpenAPI conversions. (#555)
- Added a validation event when a syntactic shape ID is found that does not target an actual shape in the model. (#542)
- Fixed a bug where forward reference resolution would use the incorrect namespace when resolving operation and resource bindings. (#543)
- Deprecated the reflection-based creation pattern for
KnowledgeIndeximplementations. (#541)
- Allow conflicting shape definitions if the fully built shapes are equivalent. (#520)
- Added the
@internaltrait to the prelude. (#531) - Added the
excludeShapesByTraitbuild transform that will remove any shapes marked with one or more of the specified traits. (#531) - Improved support for newlines and indentation in
CodeWriter. (#529) - Added support for configuring the expression starting character in
CodeWriter. (#529) - Added
payloadFormatVersionproperty for API Gateway integrations. (#527) - Add
deprecatedproperty to operations when converting to OpenAPI. (#535) - Added several more protocol tests. (#528, #536)
- Fixed the selector for the
@httpQuerytrait. (#534) - Fixed the selector for the
@httpPrefixHeaderstrait. (#533) - Fixed some issues in protocol tests. (#526)
- Removed the
abbreviationproperty from the@aws.api#servicetrait. (#532) - Simplified prelude model loading. (#524)
- Further simplified overall model loading. (#525)
- Updated
Walkerto provide a stable sort for shapes. (#511) - Improved support for loading
ValidationEvents viaNodeMapper. (#518, #516) - Added the ability to
disableFromNodeviaNodeMapper. (#505)
- Stopped raising validation errors and running validation with
RenameShapestransformer. (#512) - Simplified conflict handling for shapes. (#514)
- Simplified duplicate member detection and handling. (#513)
- Use the
@titletrait to improve generated documentation for JSON Schema unions that use"oneOf". (#485) - Added and updated several protocol tests for
restJson1. (#490) - Added and updated several protocol tests for
awsJson1_1. (#484, #493) - Added protocol tests for
awsJson1_0. (#496)
- Fixed a bug where
passthroughBehaviorwas misspelled aspassThroughBehaviorin APIGateway OpenAPI output for integrations and mock integrations. (#495) - Fixed a bug where only the last line in a multiline doc comment on a member would be successfully parsed. (#498)
- Fixed several issues in protocol tests. (#473, #476, #481, #491)
- Refactored the specification to better explain the semantic model and its representations. (#497, #482)
- Clarified guidance on using
@mediaType. (#500) - Removed outdated namespace guidance. (#487)
- Fixed several minor issues. (#494)
- Disallowed problematic identifiers misusing
_. (#499) - Moved validation of members with the
@httpLabeltrait being marked required to the selector. (#480)
- Update
structureandunionshapes so member order is maintained as part of the contract. (#465) - Add validation for
documenttypes in protocols. (#474) - Provide suggestions for invalid Shape ID targets if a close match is found. (#466)
- Added message templates and trait binding to the
EmitEachSelector. (#467) - Added ability to add traits directly to the
ModelAssembler. (#470) - Convert
awsJson1_1protocol tests to Smithy IDL. (#472) - Update decimal values in protocol tests. (#471)
- Update quick start guide with more examples. (#462)
- Fixed issues allowing
documenttypes in@httpHeaderand@httpPrefixHeaderstraits. (#474)
- Fixed a bug in loading IDL files where resolving a forward reference that needed another forward reference would throw an exception. (#458)
- Fixed a bug where smithy-build imports were not resolved relative to their
smithy-build.json. (#457) - Fixed a bug where the
PREFIX_HEADERSHTTP binding location would not default its timestamp format toHTTP_DATE. (#456)
- Ensure that when a property is removed from a JSON schema object, that a corresponding "required" entry is also removed. (#452)
- Added the (unstable)
@httpChecksumRequiredtrait to indicate an operation requires a checksum in its HTTP request. (#433, #453)
- Fixed a bug in OpenApi conversion where removing authentication for an operation would result in the operation inheriting the global "security" configuration instead of having it set to none. (#451)
- Added examples of building models to various guides. (#449)
- Fixed various documentation issues. (#449)
- Prevent parsing overly deep Node values (#442)
- Fix an issue with the OpenAPI conversion where synthesized structure inputs reference required properties that were removed. (#443)
- Fix an issue that would squash exceptions thrown for invalid suppressions. (#440)
- The
smithy.api#httpPayloadtrait can now target document shapes. (#431) - Updated the IDL grammar to include many previously enforced parsing rules. (#434)
- Added the
selectcommand to the CLI to print out shapes from a model that match a selector. (#430) - Added the
astcommand to the CLI to convert 0 or more Smithy models into a JSON AST. (#435) - Added a Dockerfile for building Smithy as a Docker image. (#427)
- The Smithy IDL parser has been rewritten and optimized. (#434)
- Generate a class data share to speed up the CLI. (#429)
- Fix several ambiguities and issues in the IDL grammar. (#434)
- JSON pretty printing of the AST now uses 4 spaces for indentation. (#435)
- Fix CLI
--helpoutput alignment. (#429)
Note: Changes marked with "[BC]" are breaking changes more accurately described in the specific section. A list of further intended breaking changes have a specific section near the end of this entry.
- The model format version has been updated to
1.0and contains several updates: [BC] (#357, #381)- The JSON AST representation requires describing annotation traits as
{}instead oftrue. - Annotation traits in the IDL are now provided as
@fooor@foo(). Explicit@foo(true)and@foo(null)support was removed.
- The JSON AST representation requires describing annotation traits as
- Smithy models can now be serialized to the IDL. (#284)
- Added a Node-based object mapper to simplify the process of building and using Java components
from Smithy
Nodes. (#301) - Made error messages clearer when encountering duplicate shapes. (#324)
- Model loaders now warn on additional shape properties instead of fail. (#374)
- Added expect* methods to the base
Shape. (#314) - Added
@SmithyUnstableApi,@SmithyInternalApiand@SmithyGeneratedJava annotations. (#297) NodeValidationVisitors are marked as internal and/or unstable. (#375)- The
$versioncontrol statement can now be set to only a major version (e.g., "1") to indicate that an implementation must support a version >= 1 and < 2.$versioncan now be set tomajor.minor(e.g., "1.1") to indicate that an implementation must support a version >= 1.1 and < 2.
- Individual protocols are now defined as individual traits that are annotated with
the
protocolDefinitiontrait. [BC] (#273, #280, #379, #390)- Previously listed AWS protocols now have trait implementations.
- Individual authentication schemes are now defined as individual traits that are annotated with
the
authDefinitiontrait. [BC] (#273, #280)- Previously listed authentication schemes now have trait implementations.
- The
smithy.api#enumtrait is now a list of enum definitions instead of a map of string keys to enum definitions to improve clarity and encourage adding more properties to definitions. [BC] (#326) - The
aws.api#streamingtrait is now applied to shapes directly instead of members. [BC] (#340) - The
smithy.api#eventStreamtrait has been removed. Event streams are now indicated by applying thesmithy.api#streamingtrait to unions. [BC] (#365) - The
smithy.api#requiresLengthtrait has been split out of thesmithy.api#streamingtrait to improve clarity around event stream modeling. [BC] (#368) - The
smithy.api#externalDocumentationtrait is now a map instead of a single string to allow for multiple links per trait. [BC] (#363) - Added the
smithy.api#noReplacetrait to indicate a PUT lifecycle operation cannot replace the existing resource. (#351) - Added the
smithy.api#unstabletrait to indicate a shape MAY change. (#290) - Simplified
aws.api#unsignedPayloadto be an annotation. [BC] (#270) - Annotation traits are now lossless when loaded with additional properties, meaning they will contain those properties when serialized. (#385)
Selectors have received significant updates: (#388)
- Attribute selectors can now evaluate scoped comparisons using
@foo:to define a scope and@{bar}to define a context value. (#391) - And logic, via
&&, has been added to allow multiple attribute comparisons. (#391) - Support for selecting nested trait properties with
|, including list/object values and object keys, was added. - An opt-in
traitrelationship has been added. (#384) - The recursive neighbor selector,
~>, has been added. (#386) - A not equal comparison,
!=, was added. - An exists comparison,
?=, was added. (#391) - Support for numbers in attribute selectors was added.
- Numeric comparisons (
>,>=,<,<=) were added. - The
(length)function property was added. (#391) - Attribute selectors now support CSV values, allowing matching on one or more target values.
- The
:eachselector is now:isfor clarity. [BC] - The
:ofselector is now removed. Use reverse neighbors instead (e.g.,member :test(< structure)). [BC] - The semantics of the
:notselector have changed significantly.:not(list > member > string)now means "do not match list shapes that target strings", whereas this previously meant, "do not match string shapes targeted by lists". [BC] - Shape IDs with members must now be quoted. [BC]
- Selector parsing and evaluating now tolerates unknown relationship types. (#377)
- Services must now contain a closure of shapes that have case-insensitively unique names. [BC] (#337)
suppressionshas been updated to now only suppress validation events that occur for an entire namespace or across the entire model. The@suppresstrait was added to suppress validation events for a specific shape. [BC] (#397).- The
UnreferencedShapevalidator has moved tosmithy-modeland is now always run. [BC] (#319) EmitEachSelectorandEmitNoneSelectorwere moved fromsmithy-lintersintosmithy-model.
The conversion to JSON schema was significantly overhauled. [BC] (#274)
- Configuration for the build plugin was significantly overhauled. [BC] (#364)
- The strategy for shape inlining has been changed. [BC]
- The strategy for naming shapes and handling shape id conflicts has been changed. [BC]
- Output schema error detection was improved.
- The Java API surface has been reduced. [BC]
- Added the ability to select schemas from a document using a JSON pointer.
The conversion to OpenAPI was significantly overhauled. [BC] (#275)
- Configuration for the build plugin was significantly overhauled. [BC] (#364)
- Protocol conversion was updated to utilize the new traits. (#275, #392)
- Schemas are now generated for requests and responses instead of being inlined. [BC]
- Fixed several issues with CORS integrations.
The API Gateway specific OpenAPI mappers have been updated. [BC] (#367)
- The
ApiGatewayMapperinterface was added, allowing mappers to control which API Gateway API type(s) they support. - Fixed several issues with CORS integrations. (#370)
- Added support for JSON Patch-like OpenAPI schema changes based on JSON Pointers. (#293)
- Added support for event streams in OpenAPI conversion. (#334)
- Fixed an issue in JSON schema conversion where member traits were dropped in some scenarios. (#274)
- Fixed an issue where authorization headers were not properly added to CORS configurations. (#328)
- Fixed an issue where operation response headers were being applied to error responses in OpenAPI conversions. (#275)
- Fixed an issue where
applystatements wouldn't resolve target shapes properly in some cases. (#287) - Fixed an issue with the selector for the
smithy.api#titletrait. (#387) - Fixed several issues with the
smithy.api#httpApiKeyAuthtrait and its related conversions. (#291) - Fixed a bug with timestamp validation in specific versions of Java. (#316)
- The
TraitTargetValidatornow performs as few checks on and selections of the entire model. (#389) - The dependency on
jackson-corewas replaced with a vendored version ofminimal-jsonto reduce the chances of dependency conflicts. [BC] (#323) - Sped up model loading time by loading JSON models before IDL models to reduce forward reference lookups. (#287)
All changes listed in this heading and any sub-headings are breaking changes.
- The
BooleanTraitabstract class insmithy-modelwas renamedAnnotationTrait. (#381) - The traits in the
aws.apigatewaynamespace have moved fromsmithy-aws-traitsto thesmithy-aws-apigateway-traitspackage for more granular use. (#322)- Tooling that referenced these traits has also been updated.
- The traits in the
aws.iamnamespace have moved fromsmithy-aws-traitsto thesmithy-aws-iam-traitspackage for more granular use. (#322)- Tooling that referenced these traits has also been updated.
- The
aws.api#ec2QueryNametrait has moved toaws.protocols#ec2QueryName. (#286) - The
aws.api#unsignedPayloadtrait has moved toaws.auth#unsignedPayload. (#286) - The
smithy-codegen-freemarkerpackage has been removed. (#382) - Traits can no longer be applied to public Smithy Prelude shapes. (#317)
- Smithy's
Patternclass is renamed toSmithyPatternto remove the conflict with Java's regexPatternclass. (#315) - Removed the
Tripleclass fromsmithy-utils. (#313) - Normalized class names for OpenAPI
SecurityScemeConverterimplementations. (#291) - Removed alias functionality from
software.amazon.smithy.build.SmithyBuildPluginandsoftware.amazon.smithy.build.ProjectionTransformer. (#409) - Removed
software.amazon.smithy.model.shapes.Shape#visitorandsoftware.amazon.smithy.model.shapes.ShapeVisitor$Builder. Usesoftware.amazon.smithy.model.shapes.ShapeVisitor$Defaultinstead. (#413) software.amazon.smithy.model.Model#getTraitDefinitionsandgetTraitShapeswere removed in favor ofsoftware.amazon.smithy.model.Model#getShapesWithTrait. (#412)
- The deprecated IDL operation syntax has been removed (#373)
- The deprecated
NodeFactoryinterface has been removed. (#265) - The deprecated
ShapeIndexclass and all related APIs have been removed. (#266) - Support for the deprecated
0.4.0model version has been removed. (#267) - The
aws.api#servicetrait no longer supports the deprecatedsdkServiceId,arnService, orproductNameproperties. (#268) - The deprecated
TemplateEngineandDefaultDataTemplateEnginehave been removed. (#268) - The deprecated
smithy.validatorsandsmithy.suppressionsare no longer used as aliases for validators and suppressions. (#268) - The
smithy.api#referencesandsmithy.api#idReftraits no longer support relative shape IDs. (#268)
A significant overhaul of the specification and guides has been completed. This includes a better flow to the spec, more complete guides, deeper documentation of AWS specific components, and a complete redesign. Many direct links to components of the documentation will have changed.
- Add security to individual operations in OpenAPI conversion (#329)
- Fix an issue with header casing for
x-api-keyintegration with API Gateway (#330) - Fix discrepancies in
smithy-aws-protocol-tests(#333, #335, #349)
- Add
RenameShapesmodel transformer (#318) - Build
ValidationEventsare now sorted (#263) - Smithy CLI logging improvements (#263)
- Model builds fail early when syntax errors occur (#264)
- Warn when a deprecated trait is applied to a shape (#279)
- Fix behavior of
schemaDocumentExtensionswhen converting to OpenAPI (#320) - Fix discrepancies in
smithy-aws-protocol-tests(#309, #321) - Properly format test case results (#271)
- Fix dropping one character text block lines (#285)
- Builds run parallel projections in parallel only if there are more than one (#263)
- Run Smithy test suites as parameterized tests (#263)
- Migrate protocol tests to new operation syntax (#260)
- Build protocol tests with the Smithy Gradle plugin (#263)
- Deprecate using explicitly
smithy.apifor trait removal (#306)
- Updated Operation syntax in the Smithy IDL (#253)
- Updated specification for XML traits (#242)
- Add the
@aws.api#ec2QueryName-traittrait (#251) - Add AWS protocol test models (#246, #247, #250, #255, and #258)
- Use URLConnection cache setting in ModelAssembler (#244)
- Use list of string for queryParams in the
httpRequestTeststrait (#240)
- Allow XML maps to be flattened (#205)
- Add and remove shape members to model automatically (#206)
- Deprecate ShapeIndex in favor of Model (#209)
- Allow the sensitive trait to be applied to all but operations, services, and resources (#212)
- Added 0.5.0 IDL and AST format (#213)
- Allow min to equal max in range trait (#216)
- Added validation for length trait values (#217)
- Limit streaming trait to top-level members (#221)
- Added protocol compliance test traits (#226)
- Added ability to configure timestamp validation (#229)
- Moved
TemplateEngineimplementation into FreeMarker implementation (#230) - Added
BoxIndex(#234) - Added more expect methods to
ShapeandModel(#237)
- Update smithy-build to be streaming (#211)
- Prevent bad list, set, and map recursion (#204)
- Properly allow omitting endpoint discovery operation inputs (#220)
- Allow overriding state management in CodeWriter (#186)
- Allow the
xmlFlattenedtrait to be applied to members (#191) - Add helper to determine HTTP-based timestamp formats (#193)
- Allow specifying XML namespace prefixes (#195)
- Add
SymbolContainer, an abstraction overSymbols that enables easily creating and aggregatingSymbols(#202)
- Escape popped state content (#187)
- Make shape ID serialization consistent (#196)
- Exclude private members targeted in JSON schema converters (#199)
- Fix naming collisions in JSON schema output (#200)
- Update
equalsto included typed bag parents (#201)
- Add support for AWS Client Endpoint Discovery (#165)
- Refactor event streams to target members (#171)
- Add support for aliasing referenced
Symbols (#168) - Add support for
Symbols to introduce dependencies (#169) - Add ability to manually escape reserved words in
ReservedWordSymbolProvider(#174) - Add method to gather dependencies for
Symbols (#170) - Add a caching
SymbolProvider(#167) - Improve the usability of
CodeWroter#openBlock(#175) - Improve the usability of
PluginContext(#181)
- Disable URLConnection cache in CLI (#180)
- Fix issue with generated authentication for CORS checks (#179)
- Set the
defaultTimestampFormattoepoch-secondsforaws.rest-jsonprotocols in OpenAPI (#184)
- Clean up
CodeWritermodifiers (#143) - Add typed
ObjectNodemember expectation functions (#144) - Add
expectShapeIdfor fully-qualified shape ID (#147) - Add helper to
EnumTraitto check if it has names (#148) - Add
Symbolreferences (#149) - Add
ReservedWordsbuilder for simpler construction (#150) - Allow using path expressions in paginator outputs (#152)
- Add method to get non-trait shapes (#153)
- Add method to write class resource to manifest (#157)
- Allow
authTypeto be specified (#160)
- Fix collection and gradle doc issues (#145)
- Make
AuthorizerDefinitiondefinition private (#146) - Fix put handling on
ResourceShape(#158) - Fix parse error when
applyis at eof (#159) - Prevent
list/setmember from targeting container (#162) - Allow model assembling from symlink model files / directory (#163)