- Fixed path to
Enum.swift
on Linux - Added support for objects in query params
- Added support for nullable properties
- Added swift template option
enumUndecodableCase
that adds anundecodable
case to enums when decoding fails #141
- Fixed installing in Swift 5 #139
- Fixed Swift template building in Swift 5 by Alamofire #139
- Updated codebase to Swift 5 and dropped Swift 4.2 #139
- Added support for OpenAPISpec/Swagger 3. Support for Swagger 2 has been removed. For that please use release 3.0.2 or the
swagger_2
branch #118 #121 - Added StencilSwiftKit support for templates #111
- Added
oneOf
andanyOf
with discriminators #121 - Added support for generating inline schemas when they are wrapped in an array #121
- Swagger 3 support #118
- Added generated
Server
#118 - Discriminated
oneOf
andanyOf
enums #121 - Allow both form and path parameters in the same request #118
- Add headers to request #120
- Add framework
Info.plist
#117 - Use
safeArrayDecoding
#117 - Catch
APIClientError
from RequestBehaviour validation #117 - Added
typeAliases
option #117 - Validation error changed from a String to an Error #117
- Improve request description and summary #117
- Change
SecurityRequirement.scope
string toSecurityRequirement.scopes
array #117 - Use
StringCodingKey
instead of enum types #117 - Replace
DateTime
withDate
#117 - Update
Alamofire
dependency to 4.8.1 #123 - Update
Result
dependency to 4.1.0 #123 - Enums conform to Equatable and CaseIterable #124
- Removed support for Swift 4.1 #124
- Only generate
isEqual
in model classes not structs #117 - Fixed path params that don't have swift friendly names #130
- Fixed operations with mutiple success responses and no error responses #127
- Fix nested schemas in subclasses thinking they have a parent #128
- Handle nil
modelProtocol
option #117
- Removed support for Swagger 2 #118
- Removed Swift 4.1 support #134
- Added
example
anddefault
to the generator
- Changed default date formatter in templates to use
yyyy
notYYY
#114 - Fixed date formatting of
DateDay
properties #114 - Fixed encoding of dictionary types #113
- Updated to Swift 4.2
- Updated YAMS, Rainbow and SwiftCLI
- Added new
modelProtocol
template option which defaults toAPIModel
#109
- Fixed crash in Swift template when not using any RequestBehaviours #108
- Added File upload support #103
- Added top level security support #104
- Added
modelType
option to Swift template for class or struct models #94 - Added
modelInheritance
template option #94 - Added
modelNames
andenumNames
template options for overriding names #95 - Added
x-enum-name
property to Swagger for custom enum names #98 - Added operation
summary
to generation and template
- Swift template changes #104
- Renamed
APIError
toAPIClientError
- Removed
APIClient.authorizer
- Added
RequestBehavour.validate
(replacesAPIClient.authorizer
) APIClient.makeRequest
now returns aCancellableRequest
instead ofAlamofire.Request
- A new
APIClient.jsonDecoder
property which is used for json requests - Renamed
queue
tocompletionQueue
inAPIClient.makeRequest
- Replaced
APIError. authorizationError
withAPIClientError. validationError
- Rename
APIService.authorization
toAPIService.securityRequirement
- Renamed
- Generated type changes in Swift template. You will now have to handle or typealias the following types #104
ID
: TheUUID
format. UsuallyUUID
orString
File
: Thefile
format. UsuallyURL
,Data
or a custom type with a mimeType and fileName
- Sort operations in generated Readme
- Better name camel casing #100
- Fix empty string field decoding in YAML #101
- Escape
Protocol
in swift templates
- Added generated Swift template documenation #87
- Fixed nil
AnyCodable
values being encoded as null - Fixed inbuilt templates not being found in Mint installations
- Added support for ASCI encoded swagger specs #80
- Fixed homebrew installation on machines with both Xcode 9.3 and Command line tools installed
- Fixed
UUID
parameter encoding #81
- Separated
date
anddate-time
formats intoDateDay
andDateTime
structs #74 #77 - Added new
modelPrefix
andmodelSuffix
options #75
- Fixed regression where request bodies were not being encoding properly #76
- Fixed
safeOptionalDecoding
not working on optional Arrays - Fixed
date-time
not decoding in some cases #77
- Swift template: added
Codable
support to models #61 - Swift template: added
Equatable
support to models #63 - Swift template: added
mutableModels
option #64 - Swift template: added
safeArrayDecoding
option #71 - Swift template: added
safeOptionalDecoding
option #71 - Bundle templates with installation #65
- New
language
argument which defaults toswift
for now #65 - Default template for language is now used if no template path is specified #65
- Added support for inline anonymous schemas in definitions, body params, and responses #66
- Added UUID support #72
- Added
--silent
flag #68 - Added
--verbose
flag #68 - Added
--version
flag #68
- Swift template: move sources out of now unnessary subdirectory #62
- Swift template: reorganise template #69
- Swift template: updated dependencies
- Swift template: Update to Swift 4.1
- Updated CLI #68
- Improved error output #68
- Make executable lowercase
swaggen
(breaking on linux) #68 - BREAKING generation moved into generate command:
swaggen generate
#68 - BREAKING
--spec
has changed to a required parameter:swaggen generate path_to_spec
#68
- BREAKING Swift template: models no longer have
init(jsonDictionary: JSONDictionary)
orencode() -> JSONDictionary
functions #61 - Swift template: removed
JSONUtilities
dependency #61
- Added
fixedWidthIntegers
option to Swift template. Thanks @martinknabbe - Added support for response references #58
- Fixed Swift 4.0.2 warnings
- Fixed Brew install
- Generate typealias for models with reference and array types #42 thanks @Liquidsoul
- generate typealias for models that only have additional properties
- fixed SPM installation issue
- Swift template: decode response on background queue and then call completion on main thread or new
queue
parameter
- Updated project to Swift 4 #42
- Updated Swift templates to Swift 4 #42
- Homebrew and Make installations
- Enums now also have a raw property to access original json
- Requests in Swift template are final
- Fixed parameters with a file type not being generated
This includes a large rewrite with a lot more test cases so many more specs should be supported
- Integer, Double and Float enums are now generated
- operation now has
hasFileParam
andisFile
#27 Thanks @dangthaison91 spec.operationsByTag
now also includes operations without tags with an empty string name #28 Thanks @dangthaison91- Operations now include common parameters defined in the path #29 Thanks @dangthaison91
- Added a bunch of test specs which are now validated against
- Added a script that generates and then compiles all test specs
- Removed symbols from generated filenames
- Generate Floats as
Float
notDouble
- Fixed some array query parameters not joining their contents with the collectionFormat seperator (uses comma delimeted by default now if none is provided)
- Arrays and dictionaries of enums are now encoded
- Arrays of models are now encoded
- Support for a default response with no schema
- Support for
[String: Any]
responses - Simple type definitions including enums are generated properly
- Fixed generation of operations without tags
- Enums in responses are now generated
- Overall more solid spec support. For example the whole fake petstore example now generates and compiles properly
- Within templates
tags
is now just a list of all tag names. The previous tag dictionary which containsname
andoperations
has been moved tooperationsByTag
- request response enum cases have been renamed
- fixed not building with Swift Package Manager in certain situations
- fixed array bodies being generated as inline classes
- fix compiler error when operations have no default response
- escape built in Swift Foundation types like Error and Data
- escape filenames in different way to class names
- now uses Stencil includes. Paves the way for recursive nested schemas
- changed how operations are decoded. Paves the way for non json responses
- added APIError.name
- made RequestAuthorizer.authorize completed parameter escaping
- add tag to printed request and service descriptions
Added suite of tests for parsing, generating and compiling templates from a list of specs. Will improve stability and help prevent regressions. Still some work to do in this area
- added SuccessType typealias to APIResponseValue. This lets you map from a response to successful value
- Replaced
CustomDebugStringConvertible
withPrettyPrinted
conformance on Models, so you can specify your ownCustomDebugStringConvertible
. Same string is available atmodel.prettyPrinted
- Moved generated request enums and anonymous schema from APIRequest.Request to one level higher in scope
- A request's response now has a responseResult with either
.success(SuccessValue)
or.failure(FailureValue)
. This is only generated if there is a single schema type for successes responses and a single schema type for failure responses
- Added back
successType
in response context for backwards compatibility with old templates - Updated Alamofire to 4.4.0
- Fixed api name not being replaced in
Decoding.swift
anymore
APIClient.makeRequest
now returns an AlamofireRequest
if one was created, so requests can now be cancelled- All operation responses are now generated, not just the successful one, meaning you get access to typed errors
- Properties in a model subclass initialiser will now be ordered so that all required properties come first, instead of parent and then child's properties
- Now provides a
CustomDebugStringConvertible
conformance that pretty prints all nested values
- Each Request now has a typed
Response
enum that includes all it's responses in the spec. Each case has the decoded schema as an associated enum if specified - The actual APIRequest subclass now sits at
MyGetOperation.Request
The APIClient.makeRequest
complete closure parameter has changed from DataResponse
to APIResponse
which:
- replaces result value with the new response enum
- has result error of APIError enum via antitypical/Result which has cases for:
unexpectedStatusCode(statusCode: Int, data: Data)
jsonDeserializationError(JSONUtilsError)
decodingError(DecodingError)
invalidBaseURL(String)
authorizationError(AuthorizationError)
networkError(Error)
unknownError(Error)
Models, Requests, Errors and Responses now have CustomStringConvertible and/or CustomDebugStringConvertible conformances
- Path parameters are no longer also encoded as url parameters in the request template
Improved the generation of complicated specs:
- escape all Swift keywords:
- escape and rename invalid characters
- escape symbols starting with numbers
- better support for deeply nested arrays and dictionaries
- fixed nested enums
- Added generated API Client in Swift template #16
- monitoring and modification of requests via request behaviours
- asynchronous authorization of requests
- central place for api options
- configurable Alamofire SessionManager
- Models now have support for
additionalProperties
#15 - Swift template is now Swift Package Manager compatible #17
- New
clean
CI arguement for ignoring dot files #18
- Names and properties in Swift template are now escaped with `` instead of appending
Type
,Enum
...etc
- Swift names and types are now escaped with a greater range of swift keywords
- Operations with multiple path variables now properly generate an operationId. #11 Thanks @HSchultjan
- Operation parameters that contain anonymous schemas (those that don't reference a definition schema but define a schema inline) are now genererated properly as nested structs within the APIRequest #13
Operation
,Definition
,Property
andParameter
, now have araw
property that can be accessed from templates. This represents the raw data that was in the original spec. This lets you access any custom properties you have in your spec
Property
andParameter
have lost theirrawType
andrawName
properties in favour of the above, so they are nowraw.type
andraw.name
- Upgraded Stencil to 0.9
- First official release