diff --git a/Sources/SwagGenKit/CodeFormatter.swift b/Sources/SwagGenKit/CodeFormatter.swift
index db3416237..ad852701b 100644
--- a/Sources/SwagGenKit/CodeFormatter.swift
+++ b/Sources/SwagGenKit/CodeFormatter.swift
@@ -27,11 +27,11 @@ public class CodeFormatter {
propertyNames = templateConfig.options["propertyNames"] as? [String: String] ?? [:]
}
- var disallowedNames: [String] {
+ var escapedNames: [String] {
return []
}
- var disallowedTypes: [String] {
+ var escapedTypes: [String] {
return []
}
@@ -479,12 +479,14 @@ public class CodeFormatter {
("#", "hash"),
("@", "alpha"),
("&", "and"),
+ ("-", "_")
]
var escapedString = string
for (symbol, replacement) in replacements {
escapedString = escapedString.replacingOccurrences(of: symbol, with: replacement)
}
- escapedString = String(String.UnicodeScalarView(escapedString.unicodeScalars.filter { CharacterSet.alphanumerics.contains($0) }))
+ let allowedCharacters = CharacterSet.alphanumerics.union(CharacterSet(charactersIn: "_"))
+ escapedString = String(String.UnicodeScalarView(escapedString.unicodeScalars.filter { allowedCharacters.contains($0) }))
// prepend _ strings starting with numbers
if let firstCharacter = escapedString.unicodeScalars.first,
@@ -501,7 +503,7 @@ public class CodeFormatter {
// MARK: name and types
func getName(_ name: String) -> String {
- var name = name.replacingOccurrences(of: "^-(\\d)", with: "_negative$1", options: .regularExpression)
+ var name = name.replacingOccurrences(of: "^-(\\d)", with: "negative$1", options: .regularExpression)
name = name.lowerCamelCased()
return escapeName(name)
}
@@ -529,12 +531,12 @@ public class CodeFormatter {
func escapeName(_ name: String) -> String {
let string = escapeString(name)
- return disallowedNames.contains(string) ? getEscapedName(string) : string
+ return escapedNames.contains(string) ? getEscapedName(string) : string
}
func escapeType(_ type: String) -> String {
let string = escapeString(type)
- return disallowedTypes.contains(string) ? getEscapedType(string) : string
+ return escapedTypes.contains(string) ? getEscapedType(string) : string
}
func getEscapedType(_ type: String) -> String {
diff --git a/Sources/SwagGenKit/SwiftFormatter.swift b/Sources/SwagGenKit/SwiftFormatter.swift
index 0dbae589e..258691799 100644
--- a/Sources/SwagGenKit/SwiftFormatter.swift
+++ b/Sources/SwagGenKit/SwiftFormatter.swift
@@ -3,73 +3,73 @@ import Swagger
public class SwiftFormatter: CodeFormatter {
- var disallowedKeywords: [String] {
- return [
- "Type",
- "Protocol",
- "class",
- "struct",
- "enum",
- "protocol",
- "extension",
- "return",
- "throw",
- "throws",
- "rethrows",
- "public",
- "open",
- "private",
- "fileprivate",
- "internal",
- "let",
- "var",
- "where",
- "guard",
- "associatedtype",
- "deinit",
- "func",
- "import",
- "inout",
- "operator",
- "static",
- "subscript",
- "typealias",
- "case",
- "break",
- "continue",
- "default",
- "defer",
- "do",
- "else",
- "fallthrough",
- "for",
- "if",
- "in",
- "repeat",
- "switch",
- "where",
- "while",
- "as",
- "Any",
- "AnyObject",
- "catch",
- "false",
- "true",
- "is",
- "nil",
- "super",
- "self",
- "Self",
- ]
- }
+ let keywords: [String] = [
+ "Type",
+ "Protocol",
+ "class",
+ "struct",
+ "enum",
+ "protocol",
+ "extension",
+ "return",
+ "throw",
+ "throws",
+ "rethrows",
+ "public",
+ "open",
+ "private",
+ "fileprivate",
+ "internal",
+ "let",
+ "var",
+ "where",
+ "guard",
+ "associatedtype",
+ "deinit",
+ "func",
+ "import",
+ "inout",
+ "operator",
+ "static",
+ "subscript",
+ "typealias",
+ "case",
+ "break",
+ "continue",
+ "default",
+ "defer",
+ "do",
+ "else",
+ "fallthrough",
+ "for",
+ "if",
+ "in",
+ "repeat",
+ "switch",
+ "where",
+ "while",
+ "as",
+ "Any",
+ "AnyObject",
+ "catch",
+ "false",
+ "true",
+ "is",
+ "nil",
+ "super",
+ "self",
+ "Self",
+ ]
- var inbuiltTypes: [String] = [
+ let inbuiltTypes: [String] = [
"Error",
"Data",
]
- override var disallowedNames: [String] { return disallowedKeywords + inbuiltTypes }
- override var disallowedTypes: [String] { return disallowedKeywords + inbuiltTypes }
+ let disallowedNames = ["self"]
+
+ override var escapedNames: [String] { return keywords + inbuiltTypes }
+ override var escapedTypes: [String] { return keywords + inbuiltTypes }
let fixedWidthIntegers: Bool
@@ -258,6 +258,10 @@ public class SwiftFormatter: CodeFormatter {
}
override func getEscapedName(_ name: String) -> String {
- return "`\(name)`"
+ if disallowedNames.contains(name) {
+ return "_\(name)"
+ } else {
+ return "`\(name)`"
+ }
}
}
diff --git a/Sources/SwagGenKit/Utilities.swift b/Sources/SwagGenKit/Utilities.swift
index 9798a77b1..f2d6514e3 100644
--- a/Sources/SwagGenKit/Utilities.swift
+++ b/Sources/SwagGenKit/Utilities.swift
@@ -65,7 +65,7 @@ fileprivate let acronymStrings = ["URL"]
extension String {
private func camelCased(seperator: String) -> String {
-
+ guard !hasPrefix(seperator) else { return self }
var index = 0
let components = self.components(separatedBy: seperator)
if uppercased() == self {
diff --git a/Specs/AppStoreConnect/generated/Swift/AppStoreConnect.podspec b/Specs/AppStoreConnect/generated/Swift/AppStoreConnect.podspec
new file mode 100644
index 000000000..000c360b5
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/AppStoreConnect.podspec
@@ -0,0 +1,14 @@
+Pod::Spec.new do |s|
+ s.source_files = '*.swift'
+ s.name = 'AppStoreConnect'
+ s.authors = 'Yonas Kolb'
+ s.summary = 'A generated API'
+ s.version = '1.2'
+ s.homepage = 'https://github.com/yonaskolb/SwagGen'
+ s.source = { :git => 'git@github.com:https://github.com/yonaskolb/SwagGen.git' }
+ s.ios.deployment_target = '9.0'
+ s.tvos.deployment_target = '9.0'
+ s.osx.deployment_target = '10.9'
+ s.source_files = 'Sources/**/*.swift'
+ s.dependency 'Alamofire', '~> 4.9.0'
+end
diff --git a/Specs/AppStoreConnect/generated/Swift/Cartfile b/Specs/AppStoreConnect/generated/Swift/Cartfile
new file mode 100644
index 000000000..77938bdd2
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Cartfile
@@ -0,0 +1,2 @@
+
+github "Alamofire/Alamofire" ~> 4.9.0
diff --git a/Specs/AppStoreConnect/generated/Swift/Info.plist b/Specs/AppStoreConnect/generated/Swift/Info.plist
new file mode 100644
index 000000000..1007fd9dd
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Info.plist
@@ -0,0 +1,24 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ $(CURRENT_PROJECT_VERSION)
+ NSPrincipalClass
+
+
+
diff --git a/Specs/AppStoreConnect/generated/Swift/Package.swift b/Specs/AppStoreConnect/generated/Swift/Package.swift
new file mode 100644
index 000000000..64e455740
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Package.swift
@@ -0,0 +1,18 @@
+// swift-tools-version:4.0
+
+import PackageDescription
+
+let package = Package(
+ name: "AppStoreConnect",
+ products: [
+ .library(name: "AppStoreConnect", targets: ["AppStoreConnect"])
+ ],
+ dependencies: [
+ .package(url: "https://github.com/Alamofire/Alamofire.git", .exact("4.9.0")),
+ ],
+ targets: [
+ .target(name: "AppStoreConnect", dependencies: [
+ "Alamofire",
+ ], path: "Sources")
+ ]
+)
diff --git a/Specs/AppStoreConnect/generated/Swift/README.md b/Specs/AppStoreConnect/generated/Swift/README.md
new file mode 100644
index 000000000..1ebf3b703
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/README.md
@@ -0,0 +1,697 @@
+# AppStoreConnect
+
+This is an api generated from a OpenAPI 3.0 spec with [SwagGen](https://github.com/yonaskolb/SwagGen)
+
+## Operation
+
+Each operation lives under the `AppStoreConnect` namespace and within an optional tag: `AppStoreConnect(.tagName).operationId`. If an operation doesn't have an operationId one will be generated from the path and method.
+
+Each operation has a nested `Request` and a `Response`, as well as a static `service` property
+
+#### Service
+
+This is the struct that contains the static information about an operation including it's id, tag, method, pre-modified path, and authorization requirements. It has a generic `ResponseType` type which maps to the `Response` type.
+You shouldn't really need to interact with this service type.
+
+#### Request
+
+Each request is a subclass of `APIRequest` and has an `init` with a body param if it has a body, and a `options` struct for other url and path parameters. There is also a convenience init for passing parameters directly.
+The `options` and `body` structs are both mutable so they can be modified before actually sending the request.
+
+#### Response
+
+The response is an enum of all the possible responses the request can return. it also contains getters for the `statusCode`, whether it was `successful`, and the actual decoded optional `success` response. If the operation only has one type of failure type there is also an optional `failure` type.
+
+## Model
+Models that are sent and returned from the API are mutable classes. Each model is `Equatable` and `Codable`.
+
+`Required` properties are non optional and non-required are optional
+
+All properties can be passed into the initializer, with `required` properties being mandatory.
+
+If a model has `additionalProperties` it will have a subscript to access these by string
+
+## APIClient
+The `APIClient` is used to encode, authorize, send, monitor, and decode the requests. There is a `APIClient.default` that uses the default `baseURL` otherwise a custom one can be initialized:
+
+```swift
+public init(baseURL: String, sessionManager: SessionManager = .default, defaultHeaders: [String: String] = [:], behaviours: [RequestBehaviour] = [])
+```
+
+#### APIClient properties
+
+- `baseURL`: The base url that every request `path` will be appended to
+- `behaviours`: A list of [Request Behaviours](#requestbehaviour) to add to every request
+- `sessionManager`: An `Alamofire.SessionManager` that can be customized
+- `defaultHeaders`: Headers that will be applied to every request
+- `decodingQueue`: The `DispatchQueue` to decode responses on
+
+#### Making a request
+To make a request first initialize a [Request](#request) and then pass it to `makeRequest`. The `complete` closure will be called with an `APIResponse`
+
+```swift
+func makeRequest(_ request: APIRequest, behaviours: [RequestBehaviour] = [], queue: DispatchQueue = DispatchQueue.main, complete: @escaping (APIResponse) -> Void) -> Request? {
+```
+
+Example request (that is not neccessarily in this api):
+
+```swift
+
+let getUserRequest = AppStoreConnect.User.GetUser.Request(id: 123)
+let apiClient = APIClient.default
+
+apiClient.makeRequest(getUserRequest) { apiResponse in
+ switch apiResponse {
+ case .result(let apiResponseValue):
+ if let user = apiResponseValue.success {
+ print("GetUser returned user \(user)")
+ } else {
+ print("GetUser returned \(apiResponseValue)")
+ }
+ case .error(let apiError):
+ print("GetUser failed with \(apiError)")
+ }
+}
+```
+
+Each [Request](#request) also has a `makeRequest` convenience function that uses `AppStoreConnect.shared`.
+
+#### APIResponse
+The `APIResponse` that gets passed to the completion closure contains the following properties:
+
+- `request`: The original request
+- `result`: A `Result` type either containing an `APIClientError` or the [Response](#response) of the request
+- `urlRequest`: The `URLRequest` used to send the request
+- `urlResponse`: The `HTTPURLResponse` that was returned by the request
+- `data`: The `Data` returned by the request.
+- `timeline`: The `Alamofire.Timeline` of the request which contains timing information.
+
+#### Encoding and Decoding
+Only JSON requests and responses are supported. These are encoded and decoded by `JSONEncoder` and `JSONDecoder` respectively, using Swift's `Codable` apis.
+There are some options to control how invalid JSON is handled when decoding and these are available as static properties on `AppStoreConnect`:
+
+- `safeOptionalDecoding`: Whether to discard any errors when decoding optional properties. Defaults to `true`.
+- `safeArrayDecoding`: Whether to remove invalid elements instead of throwing when decoding arrays. Defaults to `true`.
+
+Dates are encoded and decoded differently according to the swagger date format. They use different `DateFormatter`'s that you can set.
+- `date-time`
+ - `DateTime.dateEncodingFormatter`: defaults to `yyyy-MM-dd'T'HH:mm:ss.Z`
+ - `DateTime.dateDecodingFormatters`: an array of date formatters. The first one to decode successfully will be used
+- `date`
+ - `DateDay.dateFormatter`: defaults to `yyyy-MM-dd`
+
+#### APIClientError
+This is error enum that `APIResponse.result` may contain:
+
+```swift
+public enum APIClientError: Error {
+ case unexpectedStatusCode(statusCode: Int, data: Data)
+ case decodingError(DecodingError)
+ case requestEncodingError(String)
+ case validationError(String)
+ case networkError(Error)
+ case unknownError(Error)
+}
+```
+
+#### RequestBehaviour
+Request behaviours are used to modify, authorize, monitor or respond to requests. They can be added to the `APIClient.behaviours` for all requests, or they can passed into `makeRequest` for just that single request.
+
+`RequestBehaviour` is a protocol you can conform to with each function being optional. As the behaviours must work across multiple different request types, they only have access to a typed erased `AnyRequest`.
+
+```swift
+public protocol RequestBehaviour {
+
+ /// runs first and allows the requests to be modified. If modifying asynchronously use validate
+ func modifyRequest(request: AnyRequest, urlRequest: URLRequest) -> URLRequest
+
+ /// validates and modifies the request. complete must be called with either .success or .fail
+ func validate(request: AnyRequest, urlRequest: URLRequest, complete: @escaping (RequestValidationResult) -> Void)
+
+ /// called before request is sent
+ func beforeSend(request: AnyRequest)
+
+ /// called when request successfuly returns a 200 range response
+ func onSuccess(request: AnyRequest, result: Any)
+
+ /// called when request fails with an error. This will not be called if the request returns a known response even if the a status code is out of the 200 range
+ func onFailure(request: AnyRequest, error: APIClientError)
+
+ /// called if the request recieves a network response. This is not called if request fails validation or encoding
+ func onResponse(request: AnyRequest, response: AnyResponse)
+}
+```
+
+### Authorization
+Each request has an optional `securityRequirement`. You can create a `RequestBehaviour` that checks this requirement and adds some form of authorization (usually via headers) in `validate` or `modifyRequest`. An alternative way is to set the `APIClient.defaultHeaders` which applies to all requests.
+
+#### Reactive and Promises
+To add support for a specific asynchronous library, just add an extension on `APIClient` and add a function that wraps the `makeRequest` function and converts from a closure based syntax to returning the object of choice (stream, future...ect)
+
+## Models
+
+- **AgeRatingDeclaration**
+- **AgeRatingDeclarationResponse**
+- **AgeRatingDeclarationUpdateRequest**
+- **App**
+- **AppBetaTestersLinkagesRequest**
+- **AppCategoriesResponse**
+- **AppCategory**
+- **AppCategoryResponse**
+- **AppEncryptionDeclaration**
+- **AppEncryptionDeclarationBuildsLinkagesRequest**
+- **AppEncryptionDeclarationResponse**
+- **AppEncryptionDeclarationState**
+- **AppEncryptionDeclarationsResponse**
+- **AppInfo**
+- **AppInfoLocalization**
+- **AppInfoLocalizationCreateRequest**
+- **AppInfoLocalizationResponse**
+- **AppInfoLocalizationUpdateRequest**
+- **AppInfoLocalizationsResponse**
+- **AppInfoResponse**
+- **AppInfoUpdateRequest**
+- **AppInfosResponse**
+- **AppMediaAssetState**
+- **AppMediaStateError**
+- **AppPreOrder**
+- **AppPreOrderCreateRequest**
+- **AppPreOrderResponse**
+- **AppPreOrderUpdateRequest**
+- **AppPreview**
+- **AppPreviewCreateRequest**
+- **AppPreviewResponse**
+- **AppPreviewSet**
+- **AppPreviewSetAppPreviewsLinkagesRequest**
+- **AppPreviewSetAppPreviewsLinkagesResponse**
+- **AppPreviewSetCreateRequest**
+- **AppPreviewSetResponse**
+- **AppPreviewSetsResponse**
+- **AppPreviewUpdateRequest**
+- **AppPreviewsResponse**
+- **AppPrice**
+- **AppPricePoint**
+- **AppPricePointResponse**
+- **AppPricePointsResponse**
+- **AppPriceResponse**
+- **AppPriceTier**
+- **AppPriceTierResponse**
+- **AppPriceTiersResponse**
+- **AppPricesResponse**
+- **AppResponse**
+- **AppScreenshot**
+- **AppScreenshotCreateRequest**
+- **AppScreenshotResponse**
+- **AppScreenshotSet**
+- **AppScreenshotSetAppScreenshotsLinkagesRequest**
+- **AppScreenshotSetAppScreenshotsLinkagesResponse**
+- **AppScreenshotSetCreateRequest**
+- **AppScreenshotSetResponse**
+- **AppScreenshotSetsResponse**
+- **AppScreenshotUpdateRequest**
+- **AppScreenshotsResponse**
+- **AppStoreAgeRating**
+- **AppStoreReviewAttachment**
+- **AppStoreReviewAttachmentCreateRequest**
+- **AppStoreReviewAttachmentResponse**
+- **AppStoreReviewAttachmentUpdateRequest**
+- **AppStoreReviewAttachmentsResponse**
+- **AppStoreReviewDetail**
+- **AppStoreReviewDetailCreateRequest**
+- **AppStoreReviewDetailResponse**
+- **AppStoreReviewDetailUpdateRequest**
+- **AppStoreVersion**
+- **AppStoreVersionBuildLinkageRequest**
+- **AppStoreVersionBuildLinkageResponse**
+- **AppStoreVersionCreateRequest**
+- **AppStoreVersionLocalization**
+- **AppStoreVersionLocalizationCreateRequest**
+- **AppStoreVersionLocalizationResponse**
+- **AppStoreVersionLocalizationUpdateRequest**
+- **AppStoreVersionLocalizationsResponse**
+- **AppStoreVersionPhasedRelease**
+- **AppStoreVersionPhasedReleaseCreateRequest**
+- **AppStoreVersionPhasedReleaseResponse**
+- **AppStoreVersionPhasedReleaseUpdateRequest**
+- **AppStoreVersionResponse**
+- **AppStoreVersionState**
+- **AppStoreVersionSubmission**
+- **AppStoreVersionSubmissionCreateRequest**
+- **AppStoreVersionSubmissionResponse**
+- **AppStoreVersionUpdateRequest**
+- **AppStoreVersionsResponse**
+- **AppUpdateRequest**
+- **AppsResponse**
+- **BetaAppLocalization**
+- **BetaAppLocalizationCreateRequest**
+- **BetaAppLocalizationResponse**
+- **BetaAppLocalizationUpdateRequest**
+- **BetaAppLocalizationsResponse**
+- **BetaAppReviewDetail**
+- **BetaAppReviewDetailResponse**
+- **BetaAppReviewDetailUpdateRequest**
+- **BetaAppReviewDetailsResponse**
+- **BetaAppReviewSubmission**
+- **BetaAppReviewSubmissionCreateRequest**
+- **BetaAppReviewSubmissionResponse**
+- **BetaAppReviewSubmissionsResponse**
+- **BetaBuildLocalization**
+- **BetaBuildLocalizationCreateRequest**
+- **BetaBuildLocalizationResponse**
+- **BetaBuildLocalizationUpdateRequest**
+- **BetaBuildLocalizationsResponse**
+- **BetaGroup**
+- **BetaGroupBetaTestersLinkagesRequest**
+- **BetaGroupBetaTestersLinkagesResponse**
+- **BetaGroupBuildsLinkagesRequest**
+- **BetaGroupBuildsLinkagesResponse**
+- **BetaGroupCreateRequest**
+- **BetaGroupResponse**
+- **BetaGroupUpdateRequest**
+- **BetaGroupsResponse**
+- **BetaInviteType**
+- **BetaLicenseAgreement**
+- **BetaLicenseAgreementResponse**
+- **BetaLicenseAgreementUpdateRequest**
+- **BetaLicenseAgreementsResponse**
+- **BetaReviewState**
+- **BetaTester**
+- **BetaTesterAppsLinkagesRequest**
+- **BetaTesterAppsLinkagesResponse**
+- **BetaTesterBetaGroupsLinkagesRequest**
+- **BetaTesterBetaGroupsLinkagesResponse**
+- **BetaTesterBuildsLinkagesRequest**
+- **BetaTesterBuildsLinkagesResponse**
+- **BetaTesterCreateRequest**
+- **BetaTesterInvitation**
+- **BetaTesterInvitationCreateRequest**
+- **BetaTesterInvitationResponse**
+- **BetaTesterResponse**
+- **BetaTestersResponse**
+- **BrazilAgeRating**
+- **Build**
+- **BuildAppEncryptionDeclarationLinkageRequest**
+- **BuildAppEncryptionDeclarationLinkageResponse**
+- **BuildBetaDetail**
+- **BuildBetaDetailResponse**
+- **BuildBetaDetailUpdateRequest**
+- **BuildBetaDetailsResponse**
+- **BuildBetaGroupsLinkagesRequest**
+- **BuildBetaNotification**
+- **BuildBetaNotificationCreateRequest**
+- **BuildBetaNotificationResponse**
+- **BuildIcon**
+- **BuildIconsResponse**
+- **BuildIndividualTestersLinkagesRequest**
+- **BuildIndividualTestersLinkagesResponse**
+- **BuildResponse**
+- **BuildUpdateRequest**
+- **BuildsResponse**
+- **BundleId**
+- **BundleIdCapabilitiesResponse**
+- **BundleIdCapability**
+- **BundleIdCapabilityCreateRequest**
+- **BundleIdCapabilityResponse**
+- **BundleIdCapabilityUpdateRequest**
+- **BundleIdCreateRequest**
+- **BundleIdPlatform**
+- **BundleIdResponse**
+- **BundleIdUpdateRequest**
+- **BundleIdsResponse**
+- **CapabilityOption**
+- **CapabilitySetting**
+- **CapabilityType**
+- **Certificate**
+- **CertificateCreateRequest**
+- **CertificateResponse**
+- **CertificateType**
+- **CertificatesResponse**
+- **Device**
+- **DeviceCreateRequest**
+- **DeviceResponse**
+- **DeviceUpdateRequest**
+- **DevicesResponse**
+- **DiagnosticLog**
+- **DiagnosticLogsResponse**
+- **DiagnosticSignature**
+- **DiagnosticSignaturesResponse**
+- **DocumentLinks**
+- **EndUserLicenseAgreement**
+- **EndUserLicenseAgreementCreateRequest**
+- **EndUserLicenseAgreementResponse**
+- **EndUserLicenseAgreementUpdateRequest**
+- **ErrorResponse**
+- **ExternalBetaState**
+- **GameCenterEnabledVersion**
+- **GameCenterEnabledVersionCompatibleVersionsLinkagesRequest**
+- **GameCenterEnabledVersionCompatibleVersionsLinkagesResponse**
+- **GameCenterEnabledVersionsResponse**
+- **IconAssetType**
+- **IdfaDeclaration**
+- **IdfaDeclarationCreateRequest**
+- **IdfaDeclarationResponse**
+- **IdfaDeclarationUpdateRequest**
+- **ImageAsset**
+- **InAppPurchase**
+- **InAppPurchaseResponse**
+- **InAppPurchasesResponse**
+- **InternalBetaState**
+- **KidsAgeBand**
+- **PagedDocumentLinks**
+- **PagingInformation**
+- **PerfPowerMetric**
+- **PerfPowerMetricsResponse**
+- **PhasedReleaseState**
+- **Platform**
+- **PreReleaseVersionsResponse**
+- **PrereleaseVersion**
+- **PrereleaseVersionResponse**
+- **PreviewType**
+- **Profile**
+- **ProfileCreateRequest**
+- **ProfileResponse**
+- **ProfilesResponse**
+- **ResourceLinks**
+- **RoutingAppCoverage**
+- **RoutingAppCoverageCreateRequest**
+- **RoutingAppCoverageResponse**
+- **RoutingAppCoverageUpdateRequest**
+- **ScreenshotDisplayType**
+- **TerritoriesResponse**
+- **Territory**
+- **TerritoryResponse**
+- **UploadOperation**
+- **UploadOperationHeader**
+- **User**
+- **UserInvitation**
+- **UserInvitationCreateRequest**
+- **UserInvitationResponse**
+- **UserInvitationsResponse**
+- **UserResponse**
+- **UserRole**
+- **UserUpdateRequest**
+- **UserVisibleAppsLinkagesRequest**
+- **UserVisibleAppsLinkagesResponse**
+- **UsersResponse**
+
+## Requests
+
+- **AppStoreConnect.AgeRatingDeclarations**
+ - **AgeRatingDeclarationsUpdateInstance**: PATCH `/v1/ageratingdeclarations/{id}`
+- **AppStoreConnect.AppCategories**
+ - **AppCategoriesGetCollection**: GET `/v1/appcategories`
+ - **AppCategoriesGetInstance**: GET `/v1/appcategories/{id}`
+ - **AppCategoriesParentGetToOneRelated**: GET `/v1/appcategories/{id}/parent`
+ - **AppCategoriesSubcategoriesGetToManyRelated**: GET `/v1/appcategories/{id}/subcategories`
+- **AppStoreConnect.AppEncryptionDeclarations**
+ - **AppEncryptionDeclarationsAppGetToOneRelated**: GET `/v1/appencryptiondeclarations/{id}/app`
+ - **AppEncryptionDeclarationsBuildsCreateToManyRelationship**: POST `/v1/appencryptiondeclarations/{id}/relationships/builds`
+ - **AppEncryptionDeclarationsGetCollection**: GET `/v1/appencryptiondeclarations`
+ - **AppEncryptionDeclarationsGetInstance**: GET `/v1/appencryptiondeclarations/{id}`
+- **AppStoreConnect.AppInfoLocalizations**
+ - **AppInfoLocalizationsCreateInstance**: POST `/v1/appinfolocalizations`
+ - **AppInfoLocalizationsDeleteInstance**: DELETE `/v1/appinfolocalizations/{id}`
+ - **AppInfoLocalizationsGetInstance**: GET `/v1/appinfolocalizations/{id}`
+ - **AppInfoLocalizationsUpdateInstance**: PATCH `/v1/appinfolocalizations/{id}`
+- **AppStoreConnect.AppInfos**
+ - **AppInfosAppInfoLocalizationsGetToManyRelated**: GET `/v1/appinfos/{id}/appinfolocalizations`
+ - **AppInfosGetInstance**: GET `/v1/appinfos/{id}`
+ - **AppInfosPrimaryCategoryGetToOneRelated**: GET `/v1/appinfos/{id}/primarycategory`
+ - **AppInfosPrimarySubcategoryOneGetToOneRelated**: GET `/v1/appinfos/{id}/primarysubcategoryone`
+ - **AppInfosPrimarySubcategoryTwoGetToOneRelated**: GET `/v1/appinfos/{id}/primarysubcategorytwo`
+ - **AppInfosSecondaryCategoryGetToOneRelated**: GET `/v1/appinfos/{id}/secondarycategory`
+ - **AppInfosSecondarySubcategoryOneGetToOneRelated**: GET `/v1/appinfos/{id}/secondarysubcategoryone`
+ - **AppInfosSecondarySubcategoryTwoGetToOneRelated**: GET `/v1/appinfos/{id}/secondarysubcategorytwo`
+ - **AppInfosUpdateInstance**: PATCH `/v1/appinfos/{id}`
+- **AppStoreConnect.AppPreOrders**
+ - **AppPreOrdersCreateInstance**: POST `/v1/apppreorders`
+ - **AppPreOrdersDeleteInstance**: DELETE `/v1/apppreorders/{id}`
+ - **AppPreOrdersGetInstance**: GET `/v1/apppreorders/{id}`
+ - **AppPreOrdersUpdateInstance**: PATCH `/v1/apppreorders/{id}`
+- **AppStoreConnect.AppPreviews**
+ - **AppPreviewsCreateInstance**: POST `/v1/apppreviews`
+ - **AppPreviewsDeleteInstance**: DELETE `/v1/apppreviews/{id}`
+ - **AppPreviewsGetInstance**: GET `/v1/apppreviews/{id}`
+ - **AppPreviewsUpdateInstance**: PATCH `/v1/apppreviews/{id}`
+- **AppStoreConnect.AppPreviewSets**
+ - **AppPreviewSetsAppPreviewsGetToManyRelated**: GET `/v1/apppreviewsets/{id}/apppreviews`
+ - **AppPreviewSetsAppPreviewsGetToManyRelationship**: GET `/v1/apppreviewsets/{id}/relationships/apppreviews`
+ - **AppPreviewSetsAppPreviewsReplaceToManyRelationship**: PATCH `/v1/apppreviewsets/{id}/relationships/apppreviews`
+ - **AppPreviewSetsCreateInstance**: POST `/v1/apppreviewsets`
+ - **AppPreviewSetsDeleteInstance**: DELETE `/v1/apppreviewsets/{id}`
+ - **AppPreviewSetsGetInstance**: GET `/v1/apppreviewsets/{id}`
+- **AppStoreConnect.AppPricePoints**
+ - **AppPricePointsGetCollection**: GET `/v1/apppricepoints`
+ - **AppPricePointsGetInstance**: GET `/v1/apppricepoints/{id}`
+ - **AppPricePointsTerritoryGetToOneRelated**: GET `/v1/apppricepoints/{id}/territory`
+- **AppStoreConnect.AppPrices**
+ - **AppPricesGetInstance**: GET `/v1/appprices/{id}`
+- **AppStoreConnect.AppPriceTiers**
+ - **AppPriceTiersGetCollection**: GET `/v1/apppricetiers`
+ - **AppPriceTiersGetInstance**: GET `/v1/apppricetiers/{id}`
+ - **AppPriceTiersPricePointsGetToManyRelated**: GET `/v1/apppricetiers/{id}/pricepoints`
+- **AppStoreConnect.Apps**
+ - **AppsAppInfosGetToManyRelated**: GET `/v1/apps/{id}/appinfos`
+ - **AppsAppStoreVersionsGetToManyRelated**: GET `/v1/apps/{id}/appstoreversions`
+ - **AppsAvailableTerritoriesGetToManyRelated**: GET `/v1/apps/{id}/availableterritories`
+ - **AppsBetaAppLocalizationsGetToManyRelated**: GET `/v1/apps/{id}/betaapplocalizations`
+ - **AppsBetaAppReviewDetailGetToOneRelated**: GET `/v1/apps/{id}/betaappreviewdetail`
+ - **AppsBetaGroupsGetToManyRelated**: GET `/v1/apps/{id}/betagroups`
+ - **AppsBetaLicenseAgreementGetToOneRelated**: GET `/v1/apps/{id}/betalicenseagreement`
+ - **AppsBetaTestersDeleteToManyRelationship**: DELETE `/v1/apps/{id}/relationships/betatesters`
+ - **AppsBuildsGetToManyRelated**: GET `/v1/apps/{id}/builds`
+ - **AppsEndUserLicenseAgreementGetToOneRelated**: GET `/v1/apps/{id}/enduserlicenseagreement`
+ - **AppsGameCenterEnabledVersionsGetToManyRelated**: GET `/v1/apps/{id}/gamecenterenabledversions`
+ - **AppsGetCollection**: GET `/v1/apps`
+ - **AppsGetInstance**: GET `/v1/apps/{id}`
+ - **AppsInAppPurchasesGetToManyRelated**: GET `/v1/apps/{id}/inapppurchases`
+ - **AppsPerfPowerMetricsGetToManyRelated**: GET `/v1/apps/{id}/perfpowermetrics`
+ - **AppsPreOrderGetToOneRelated**: GET `/v1/apps/{id}/preorder`
+ - **AppsPreReleaseVersionsGetToManyRelated**: GET `/v1/apps/{id}/prereleaseversions`
+ - **AppsPricesGetToManyRelated**: GET `/v1/apps/{id}/prices`
+ - **AppsUpdateInstance**: PATCH `/v1/apps/{id}`
+- **AppStoreConnect.AppScreenshots**
+ - **AppScreenshotsCreateInstance**: POST `/v1/appscreenshots`
+ - **AppScreenshotsDeleteInstance**: DELETE `/v1/appscreenshots/{id}`
+ - **AppScreenshotsGetInstance**: GET `/v1/appscreenshots/{id}`
+ - **AppScreenshotsUpdateInstance**: PATCH `/v1/appscreenshots/{id}`
+- **AppStoreConnect.AppScreenshotSets**
+ - **AppScreenshotSetsAppScreenshotsGetToManyRelated**: GET `/v1/appscreenshotsets/{id}/appscreenshots`
+ - **AppScreenshotSetsAppScreenshotsGetToManyRelationship**: GET `/v1/appscreenshotsets/{id}/relationships/appscreenshots`
+ - **AppScreenshotSetsAppScreenshotsReplaceToManyRelationship**: PATCH `/v1/appscreenshotsets/{id}/relationships/appscreenshots`
+ - **AppScreenshotSetsCreateInstance**: POST `/v1/appscreenshotsets`
+ - **AppScreenshotSetsDeleteInstance**: DELETE `/v1/appscreenshotsets/{id}`
+ - **AppScreenshotSetsGetInstance**: GET `/v1/appscreenshotsets/{id}`
+- **AppStoreConnect.AppStoreReviewAttachments**
+ - **AppStoreReviewAttachmentsCreateInstance**: POST `/v1/appstorereviewattachments`
+ - **AppStoreReviewAttachmentsDeleteInstance**: DELETE `/v1/appstorereviewattachments/{id}`
+ - **AppStoreReviewAttachmentsGetInstance**: GET `/v1/appstorereviewattachments/{id}`
+ - **AppStoreReviewAttachmentsUpdateInstance**: PATCH `/v1/appstorereviewattachments/{id}`
+- **AppStoreConnect.AppStoreReviewDetails**
+ - **AppStoreReviewDetailsAppStoreReviewAttachmentsGetToManyRelated**: GET `/v1/appstorereviewdetails/{id}/appstorereviewattachments`
+ - **AppStoreReviewDetailsCreateInstance**: POST `/v1/appstorereviewdetails`
+ - **AppStoreReviewDetailsGetInstance**: GET `/v1/appstorereviewdetails/{id}`
+ - **AppStoreReviewDetailsUpdateInstance**: PATCH `/v1/appstorereviewdetails/{id}`
+- **AppStoreConnect.AppStoreVersionLocalizations**
+ - **AppStoreVersionLocalizationsAppPreviewSetsGetToManyRelated**: GET `/v1/appstoreversionlocalizations/{id}/apppreviewsets`
+ - **AppStoreVersionLocalizationsAppScreenshotSetsGetToManyRelated**: GET `/v1/appstoreversionlocalizations/{id}/appscreenshotsets`
+ - **AppStoreVersionLocalizationsCreateInstance**: POST `/v1/appstoreversionlocalizations`
+ - **AppStoreVersionLocalizationsDeleteInstance**: DELETE `/v1/appstoreversionlocalizations/{id}`
+ - **AppStoreVersionLocalizationsGetInstance**: GET `/v1/appstoreversionlocalizations/{id}`
+ - **AppStoreVersionLocalizationsUpdateInstance**: PATCH `/v1/appstoreversionlocalizations/{id}`
+- **AppStoreConnect.AppStoreVersionPhasedReleases**
+ - **AppStoreVersionPhasedReleasesCreateInstance**: POST `/v1/appstoreversionphasedreleases`
+ - **AppStoreVersionPhasedReleasesDeleteInstance**: DELETE `/v1/appstoreversionphasedreleases/{id}`
+ - **AppStoreVersionPhasedReleasesUpdateInstance**: PATCH `/v1/appstoreversionphasedreleases/{id}`
+- **AppStoreConnect.AppStoreVersions**
+ - **AppStoreVersionsAgeRatingDeclarationGetToOneRelated**: GET `/v1/appstoreversions/{id}/ageratingdeclaration`
+ - **AppStoreVersionsAppStoreReviewDetailGetToOneRelated**: GET `/v1/appstoreversions/{id}/appstorereviewdetail`
+ - **AppStoreVersionsAppStoreVersionLocalizationsGetToManyRelated**: GET `/v1/appstoreversions/{id}/appstoreversionlocalizations`
+ - **AppStoreVersionsAppStoreVersionPhasedReleaseGetToOneRelated**: GET `/v1/appstoreversions/{id}/appstoreversionphasedrelease`
+ - **AppStoreVersionsAppStoreVersionSubmissionGetToOneRelated**: GET `/v1/appstoreversions/{id}/appstoreversionsubmission`
+ - **AppStoreVersionsBuildGetToOneRelated**: GET `/v1/appstoreversions/{id}/build`
+ - **AppStoreVersionsBuildGetToOneRelationship**: GET `/v1/appstoreversions/{id}/relationships/build`
+ - **AppStoreVersionsBuildUpdateToOneRelationship**: PATCH `/v1/appstoreversions/{id}/relationships/build`
+ - **AppStoreVersionsCreateInstance**: POST `/v1/appstoreversions`
+ - **AppStoreVersionsDeleteInstance**: DELETE `/v1/appstoreversions/{id}`
+ - **AppStoreVersionsGetInstance**: GET `/v1/appstoreversions/{id}`
+ - **AppStoreVersionsIdfaDeclarationGetToOneRelated**: GET `/v1/appstoreversions/{id}/idfadeclaration`
+ - **AppStoreVersionsRoutingAppCoverageGetToOneRelated**: GET `/v1/appstoreversions/{id}/routingappcoverage`
+ - **AppStoreVersionsUpdateInstance**: PATCH `/v1/appstoreversions/{id}`
+- **AppStoreConnect.AppStoreVersionSubmissions**
+ - **AppStoreVersionSubmissionsCreateInstance**: POST `/v1/appstoreversionsubmissions`
+ - **AppStoreVersionSubmissionsDeleteInstance**: DELETE `/v1/appstoreversionsubmissions/{id}`
+- **AppStoreConnect.BetaAppLocalizations**
+ - **BetaAppLocalizationsAppGetToOneRelated**: GET `/v1/betaapplocalizations/{id}/app`
+ - **BetaAppLocalizationsCreateInstance**: POST `/v1/betaapplocalizations`
+ - **BetaAppLocalizationsDeleteInstance**: DELETE `/v1/betaapplocalizations/{id}`
+ - **BetaAppLocalizationsGetCollection**: GET `/v1/betaapplocalizations`
+ - **BetaAppLocalizationsGetInstance**: GET `/v1/betaapplocalizations/{id}`
+ - **BetaAppLocalizationsUpdateInstance**: PATCH `/v1/betaapplocalizations/{id}`
+- **AppStoreConnect.BetaAppReviewDetails**
+ - **BetaAppReviewDetailsAppGetToOneRelated**: GET `/v1/betaappreviewdetails/{id}/app`
+ - **BetaAppReviewDetailsGetCollection**: GET `/v1/betaappreviewdetails`
+ - **BetaAppReviewDetailsGetInstance**: GET `/v1/betaappreviewdetails/{id}`
+ - **BetaAppReviewDetailsUpdateInstance**: PATCH `/v1/betaappreviewdetails/{id}`
+- **AppStoreConnect.BetaAppReviewSubmissions**
+ - **BetaAppReviewSubmissionsBuildGetToOneRelated**: GET `/v1/betaappreviewsubmissions/{id}/build`
+ - **BetaAppReviewSubmissionsCreateInstance**: POST `/v1/betaappreviewsubmissions`
+ - **BetaAppReviewSubmissionsGetCollection**: GET `/v1/betaappreviewsubmissions`
+ - **BetaAppReviewSubmissionsGetInstance**: GET `/v1/betaappreviewsubmissions/{id}`
+- **AppStoreConnect.BetaBuildLocalizations**
+ - **BetaBuildLocalizationsBuildGetToOneRelated**: GET `/v1/betabuildlocalizations/{id}/build`
+ - **BetaBuildLocalizationsCreateInstance**: POST `/v1/betabuildlocalizations`
+ - **BetaBuildLocalizationsDeleteInstance**: DELETE `/v1/betabuildlocalizations/{id}`
+ - **BetaBuildLocalizationsGetCollection**: GET `/v1/betabuildlocalizations`
+ - **BetaBuildLocalizationsGetInstance**: GET `/v1/betabuildlocalizations/{id}`
+ - **BetaBuildLocalizationsUpdateInstance**: PATCH `/v1/betabuildlocalizations/{id}`
+- **AppStoreConnect.BetaGroups**
+ - **BetaGroupsAppGetToOneRelated**: GET `/v1/betagroups/{id}/app`
+ - **BetaGroupsBetaTestersCreateToManyRelationship**: POST `/v1/betagroups/{id}/relationships/betatesters`
+ - **BetaGroupsBetaTestersDeleteToManyRelationship**: DELETE `/v1/betagroups/{id}/relationships/betatesters`
+ - **BetaGroupsBetaTestersGetToManyRelated**: GET `/v1/betagroups/{id}/betatesters`
+ - **BetaGroupsBetaTestersGetToManyRelationship**: GET `/v1/betagroups/{id}/relationships/betatesters`
+ - **BetaGroupsBuildsCreateToManyRelationship**: POST `/v1/betagroups/{id}/relationships/builds`
+ - **BetaGroupsBuildsDeleteToManyRelationship**: DELETE `/v1/betagroups/{id}/relationships/builds`
+ - **BetaGroupsBuildsGetToManyRelated**: GET `/v1/betagroups/{id}/builds`
+ - **BetaGroupsBuildsGetToManyRelationship**: GET `/v1/betagroups/{id}/relationships/builds`
+ - **BetaGroupsCreateInstance**: POST `/v1/betagroups`
+ - **BetaGroupsDeleteInstance**: DELETE `/v1/betagroups/{id}`
+ - **BetaGroupsGetCollection**: GET `/v1/betagroups`
+ - **BetaGroupsGetInstance**: GET `/v1/betagroups/{id}`
+ - **BetaGroupsUpdateInstance**: PATCH `/v1/betagroups/{id}`
+- **AppStoreConnect.BetaLicenseAgreements**
+ - **BetaLicenseAgreementsAppGetToOneRelated**: GET `/v1/betalicenseagreements/{id}/app`
+ - **BetaLicenseAgreementsGetCollection**: GET `/v1/betalicenseagreements`
+ - **BetaLicenseAgreementsGetInstance**: GET `/v1/betalicenseagreements/{id}`
+ - **BetaLicenseAgreementsUpdateInstance**: PATCH `/v1/betalicenseagreements/{id}`
+- **AppStoreConnect.BetaTesterInvitations**
+ - **BetaTesterInvitationsCreateInstance**: POST `/v1/betatesterinvitations`
+- **AppStoreConnect.BetaTesters**
+ - **BetaTestersAppsDeleteToManyRelationship**: DELETE `/v1/betatesters/{id}/relationships/apps`
+ - **BetaTestersAppsGetToManyRelated**: GET `/v1/betatesters/{id}/apps`
+ - **BetaTestersAppsGetToManyRelationship**: GET `/v1/betatesters/{id}/relationships/apps`
+ - **BetaTestersBetaGroupsCreateToManyRelationship**: POST `/v1/betatesters/{id}/relationships/betagroups`
+ - **BetaTestersBetaGroupsDeleteToManyRelationship**: DELETE `/v1/betatesters/{id}/relationships/betagroups`
+ - **BetaTestersBetaGroupsGetToManyRelated**: GET `/v1/betatesters/{id}/betagroups`
+ - **BetaTestersBetaGroupsGetToManyRelationship**: GET `/v1/betatesters/{id}/relationships/betagroups`
+ - **BetaTestersBuildsCreateToManyRelationship**: POST `/v1/betatesters/{id}/relationships/builds`
+ - **BetaTestersBuildsDeleteToManyRelationship**: DELETE `/v1/betatesters/{id}/relationships/builds`
+ - **BetaTestersBuildsGetToManyRelated**: GET `/v1/betatesters/{id}/builds`
+ - **BetaTestersBuildsGetToManyRelationship**: GET `/v1/betatesters/{id}/relationships/builds`
+ - **BetaTestersCreateInstance**: POST `/v1/betatesters`
+ - **BetaTestersDeleteInstance**: DELETE `/v1/betatesters/{id}`
+ - **BetaTestersGetCollection**: GET `/v1/betatesters`
+ - **BetaTestersGetInstance**: GET `/v1/betatesters/{id}`
+- **AppStoreConnect.BuildBetaDetails**
+ - **BuildBetaDetailsBuildGetToOneRelated**: GET `/v1/buildbetadetails/{id}/build`
+ - **BuildBetaDetailsGetCollection**: GET `/v1/buildbetadetails`
+ - **BuildBetaDetailsGetInstance**: GET `/v1/buildbetadetails/{id}`
+ - **BuildBetaDetailsUpdateInstance**: PATCH `/v1/buildbetadetails/{id}`
+- **AppStoreConnect.BuildBetaNotifications**
+ - **BuildBetaNotificationsCreateInstance**: POST `/v1/buildbetanotifications`
+- **AppStoreConnect.Builds**
+ - **BuildsAppGetToOneRelated**: GET `/v1/builds/{id}/app`
+ - **BuildsAppEncryptionDeclarationGetToOneRelated**: GET `/v1/builds/{id}/appencryptiondeclaration`
+ - **BuildsAppEncryptionDeclarationGetToOneRelationship**: GET `/v1/builds/{id}/relationships/appencryptiondeclaration`
+ - **BuildsAppEncryptionDeclarationUpdateToOneRelationship**: PATCH `/v1/builds/{id}/relationships/appencryptiondeclaration`
+ - **BuildsAppStoreVersionGetToOneRelated**: GET `/v1/builds/{id}/appstoreversion`
+ - **BuildsBetaAppReviewSubmissionGetToOneRelated**: GET `/v1/builds/{id}/betaappreviewsubmission`
+ - **BuildsBetaBuildLocalizationsGetToManyRelated**: GET `/v1/builds/{id}/betabuildlocalizations`
+ - **BuildsBetaGroupsCreateToManyRelationship**: POST `/v1/builds/{id}/relationships/betagroups`
+ - **BuildsBetaGroupsDeleteToManyRelationship**: DELETE `/v1/builds/{id}/relationships/betagroups`
+ - **BuildsBuildBetaDetailGetToOneRelated**: GET `/v1/builds/{id}/buildbetadetail`
+ - **BuildsDiagnosticSignaturesGetToManyRelated**: GET `/v1/builds/{id}/diagnosticsignatures`
+ - **BuildsGetCollection**: GET `/v1/builds`
+ - **BuildsGetInstance**: GET `/v1/builds/{id}`
+ - **BuildsIconsGetToManyRelated**: GET `/v1/builds/{id}/icons`
+ - **BuildsIndividualTestersCreateToManyRelationship**: POST `/v1/builds/{id}/relationships/individualtesters`
+ - **BuildsIndividualTestersDeleteToManyRelationship**: DELETE `/v1/builds/{id}/relationships/individualtesters`
+ - **BuildsIndividualTestersGetToManyRelated**: GET `/v1/builds/{id}/individualtesters`
+ - **BuildsIndividualTestersGetToManyRelationship**: GET `/v1/builds/{id}/relationships/individualtesters`
+ - **BuildsPerfPowerMetricsGetToManyRelated**: GET `/v1/builds/{id}/perfpowermetrics`
+ - **BuildsPreReleaseVersionGetToOneRelated**: GET `/v1/builds/{id}/prereleaseversion`
+ - **BuildsUpdateInstance**: PATCH `/v1/builds/{id}`
+- **AppStoreConnect.BundleIdCapabilities**
+ - **BundleIdCapabilitiesCreateInstance**: POST `/v1/bundleidcapabilities`
+ - **BundleIdCapabilitiesDeleteInstance**: DELETE `/v1/bundleidcapabilities/{id}`
+ - **BundleIdCapabilitiesUpdateInstance**: PATCH `/v1/bundleidcapabilities/{id}`
+- **AppStoreConnect.BundleIds**
+ - **BundleIdsAppGetToOneRelated**: GET `/v1/bundleids/{id}/app`
+ - **BundleIdsBundleIdCapabilitiesGetToManyRelated**: GET `/v1/bundleids/{id}/bundleidcapabilities`
+ - **BundleIdsCreateInstance**: POST `/v1/bundleids`
+ - **BundleIdsDeleteInstance**: DELETE `/v1/bundleids/{id}`
+ - **BundleIdsGetCollection**: GET `/v1/bundleids`
+ - **BundleIdsGetInstance**: GET `/v1/bundleids/{id}`
+ - **BundleIdsProfilesGetToManyRelated**: GET `/v1/bundleids/{id}/profiles`
+ - **BundleIdsUpdateInstance**: PATCH `/v1/bundleids/{id}`
+- **AppStoreConnect.Certificates**
+ - **CertificatesCreateInstance**: POST `/v1/certificates`
+ - **CertificatesDeleteInstance**: DELETE `/v1/certificates/{id}`
+ - **CertificatesGetCollection**: GET `/v1/certificates`
+ - **CertificatesGetInstance**: GET `/v1/certificates/{id}`
+- **AppStoreConnect.Devices**
+ - **DevicesCreateInstance**: POST `/v1/devices`
+ - **DevicesGetCollection**: GET `/v1/devices`
+ - **DevicesGetInstance**: GET `/v1/devices/{id}`
+ - **DevicesUpdateInstance**: PATCH `/v1/devices/{id}`
+- **AppStoreConnect.DiagnosticSignatures**
+ - **DiagnosticSignaturesLogsGetToManyRelated**: GET `/v1/diagnosticsignatures/{id}/logs`
+- **AppStoreConnect.EndUserLicenseAgreements**
+ - **EndUserLicenseAgreementsCreateInstance**: POST `/v1/enduserlicenseagreements`
+ - **EndUserLicenseAgreementsDeleteInstance**: DELETE `/v1/enduserlicenseagreements/{id}`
+ - **EndUserLicenseAgreementsGetInstance**: GET `/v1/enduserlicenseagreements/{id}`
+ - **EndUserLicenseAgreementsTerritoriesGetToManyRelated**: GET `/v1/enduserlicenseagreements/{id}/territories`
+ - **EndUserLicenseAgreementsUpdateInstance**: PATCH `/v1/enduserlicenseagreements/{id}`
+- **AppStoreConnect.FinanceReports**
+ - **FinanceReportsGetCollection**: GET `/v1/financereports`
+- **AppStoreConnect.GameCenterEnabledVersions**
+ - **GameCenterEnabledVersionsCompatibleVersionsCreateToManyRelationship**: POST `/v1/gamecenterenabledversions/{id}/relationships/compatibleversions`
+ - **GameCenterEnabledVersionsCompatibleVersionsDeleteToManyRelationship**: DELETE `/v1/gamecenterenabledversions/{id}/relationships/compatibleversions`
+ - **GameCenterEnabledVersionsCompatibleVersionsGetToManyRelated**: GET `/v1/gamecenterenabledversions/{id}/compatibleversions`
+ - **GameCenterEnabledVersionsCompatibleVersionsGetToManyRelationship**: GET `/v1/gamecenterenabledversions/{id}/relationships/compatibleversions`
+ - **GameCenterEnabledVersionsCompatibleVersionsReplaceToManyRelationship**: PATCH `/v1/gamecenterenabledversions/{id}/relationships/compatibleversions`
+- **AppStoreConnect.IdfaDeclarations**
+ - **IdfaDeclarationsCreateInstance**: POST `/v1/idfadeclarations`
+ - **IdfaDeclarationsDeleteInstance**: DELETE `/v1/idfadeclarations/{id}`
+ - **IdfaDeclarationsUpdateInstance**: PATCH `/v1/idfadeclarations/{id}`
+- **AppStoreConnect.InAppPurchases**
+ - **InAppPurchasesGetInstance**: GET `/v1/inapppurchases/{id}`
+- **AppStoreConnect.PreReleaseVersions**
+ - **PreReleaseVersionsAppGetToOneRelated**: GET `/v1/prereleaseversions/{id}/app`
+ - **PreReleaseVersionsBuildsGetToManyRelated**: GET `/v1/prereleaseversions/{id}/builds`
+ - **PreReleaseVersionsGetCollection**: GET `/v1/prereleaseversions`
+ - **PreReleaseVersionsGetInstance**: GET `/v1/prereleaseversions/{id}`
+- **AppStoreConnect.Profiles**
+ - **ProfilesBundleIdGetToOneRelated**: GET `/v1/profiles/{id}/bundleid`
+ - **ProfilesCertificatesGetToManyRelated**: GET `/v1/profiles/{id}/certificates`
+ - **ProfilesCreateInstance**: POST `/v1/profiles`
+ - **ProfilesDeleteInstance**: DELETE `/v1/profiles/{id}`
+ - **ProfilesDevicesGetToManyRelated**: GET `/v1/profiles/{id}/devices`
+ - **ProfilesGetCollection**: GET `/v1/profiles`
+ - **ProfilesGetInstance**: GET `/v1/profiles/{id}`
+- **AppStoreConnect.RoutingAppCoverages**
+ - **RoutingAppCoveragesCreateInstance**: POST `/v1/routingappcoverages`
+ - **RoutingAppCoveragesDeleteInstance**: DELETE `/v1/routingappcoverages/{id}`
+ - **RoutingAppCoveragesGetInstance**: GET `/v1/routingappcoverages/{id}`
+ - **RoutingAppCoveragesUpdateInstance**: PATCH `/v1/routingappcoverages/{id}`
+- **AppStoreConnect.SalesReports**
+ - **SalesReportsGetCollection**: GET `/v1/salesreports`
+- **AppStoreConnect.Territories**
+ - **TerritoriesGetCollection**: GET `/v1/territories`
+- **AppStoreConnect.UserInvitations**
+ - **UserInvitationsCreateInstance**: POST `/v1/userinvitations`
+ - **UserInvitationsDeleteInstance**: DELETE `/v1/userinvitations/{id}`
+ - **UserInvitationsGetCollection**: GET `/v1/userinvitations`
+ - **UserInvitationsGetInstance**: GET `/v1/userinvitations/{id}`
+ - **UserInvitationsVisibleAppsGetToManyRelated**: GET `/v1/userinvitations/{id}/visibleapps`
+- **AppStoreConnect.Users**
+ - **UsersDeleteInstance**: DELETE `/v1/users/{id}`
+ - **UsersGetCollection**: GET `/v1/users`
+ - **UsersGetInstance**: GET `/v1/users/{id}`
+ - **UsersUpdateInstance**: PATCH `/v1/users/{id}`
+ - **UsersVisibleAppsCreateToManyRelationship**: POST `/v1/users/{id}/relationships/visibleapps`
+ - **UsersVisibleAppsDeleteToManyRelationship**: DELETE `/v1/users/{id}/relationships/visibleapps`
+ - **UsersVisibleAppsGetToManyRelated**: GET `/v1/users/{id}/visibleapps`
+ - **UsersVisibleAppsGetToManyRelationship**: GET `/v1/users/{id}/relationships/visibleapps`
+ - **UsersVisibleAppsReplaceToManyRelationship**: PATCH `/v1/users/{id}/relationships/visibleapps`
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/API.swift b/Specs/AppStoreConnect/generated/Swift/Sources/API.swift
new file mode 100644
index 000000000..27e7a73e3
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/API.swift
@@ -0,0 +1,76 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public struct AppStoreConnect {
+
+ /// Whether to discard any errors when decoding optional properties
+ public static var safeOptionalDecoding = false
+
+ /// Whether to remove invalid elements instead of throwing when decoding arrays
+ public static var safeArrayDecoding = false
+
+ /// Used to encode Dates when uses as string params
+ public static var dateEncodingFormatter = DateFormatter(formatString: "yyyy-MM-dd'T'HH:mm:ssZZZZZ",
+ locale: Locale(identifier: "en_US_POSIX"),
+ calendar: Calendar(identifier: .gregorian))
+
+ public static let version = "1.2"
+
+ public enum AgeRatingDeclarations {}
+ public enum AppCategories {}
+ public enum AppEncryptionDeclarations {}
+ public enum AppInfoLocalizations {}
+ public enum AppInfos {}
+ public enum AppPreOrders {}
+ public enum AppPreviewSets {}
+ public enum AppPreviews {}
+ public enum AppPricePoints {}
+ public enum AppPriceTiers {}
+ public enum AppPrices {}
+ public enum AppScreenshotSets {}
+ public enum AppScreenshots {}
+ public enum AppStoreReviewAttachments {}
+ public enum AppStoreReviewDetails {}
+ public enum AppStoreVersionLocalizations {}
+ public enum AppStoreVersionPhasedReleases {}
+ public enum AppStoreVersionSubmissions {}
+ public enum AppStoreVersions {}
+ public enum Apps {}
+ public enum BetaAppLocalizations {}
+ public enum BetaAppReviewDetails {}
+ public enum BetaAppReviewSubmissions {}
+ public enum BetaBuildLocalizations {}
+ public enum BetaGroups {}
+ public enum BetaLicenseAgreements {}
+ public enum BetaTesterInvitations {}
+ public enum BetaTesters {}
+ public enum BuildBetaDetails {}
+ public enum BuildBetaNotifications {}
+ public enum Builds {}
+ public enum BundleIdCapabilities {}
+ public enum BundleIds {}
+ public enum Certificates {}
+ public enum Devices {}
+ public enum DiagnosticSignatures {}
+ public enum EndUserLicenseAgreements {}
+ public enum FinanceReports {}
+ public enum GameCenterEnabledVersions {}
+ public enum IdfaDeclarations {}
+ public enum InAppPurchases {}
+ public enum PreReleaseVersions {}
+ public enum Profiles {}
+ public enum RoutingAppCoverages {}
+ public enum SalesReports {}
+ public enum Territories {}
+ public enum UserInvitations {}
+ public enum Users {}
+
+ public enum Server {
+
+ public static let main = "https://api.appstoreconnect.apple.com/"
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/APIClient.swift b/Specs/AppStoreConnect/generated/Swift/Sources/APIClient.swift
new file mode 100644
index 000000000..f29e1fda9
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/APIClient.swift
@@ -0,0 +1,252 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+import Alamofire
+
+/// Manages and sends APIRequests
+public class APIClient {
+
+ public static var `default` = APIClient(baseURL: AppStoreConnect.Server.main)
+
+ /// A list of RequestBehaviours that can be used to monitor and alter all requests
+ public var behaviours: [RequestBehaviour] = []
+
+ /// The base url prepended before every request path
+ public var baseURL: String
+
+ /// The Alamofire SessionManager used for each request
+ public var sessionManager: SessionManager
+
+ /// These headers will get added to every request
+ public var defaultHeaders: [String: String]
+
+ public var jsonDecoder = JSONDecoder()
+ public var jsonEncoder = JSONEncoder()
+
+ public var decodingQueue = DispatchQueue(label: "apiClient", qos: .utility, attributes: .concurrent)
+
+ public init(baseURL: String, sessionManager: SessionManager = .default, defaultHeaders: [String: String] = [:], behaviours: [RequestBehaviour] = []) {
+ self.baseURL = baseURL
+ self.sessionManager = sessionManager
+ self.behaviours = behaviours
+ self.defaultHeaders = defaultHeaders
+ jsonDecoder.dateDecodingStrategy = .custom(dateDecoder)
+ jsonEncoder.dateEncodingStrategy = .formatted(AppStoreConnect.dateEncodingFormatter)
+ }
+
+ /// Makes a network request
+ ///
+ /// - Parameters:
+ /// - request: The API request to make
+ /// - behaviours: A list of behaviours that will be run for this request. Merged with APIClient.behaviours
+ /// - completionQueue: The queue that complete will be called on
+ /// - complete: A closure that gets passed the APIResponse
+ /// - Returns: A cancellable request. Not that cancellation will only work after any validation RequestBehaviours have run
+ @discardableResult
+ public func makeRequest(_ request: APIRequest, behaviours: [RequestBehaviour] = [], completionQueue: DispatchQueue = DispatchQueue.main, complete: @escaping (APIResponse) -> Void) -> CancellableRequest? {
+ // create composite behaviour to make it easy to call functions on array of behaviours
+ let requestBehaviour = RequestBehaviourGroup(request: request, behaviours: self.behaviours + behaviours)
+
+ // create the url request from the request
+ var urlRequest: URLRequest
+ do {
+ urlRequest = try request.createURLRequest(baseURL: baseURL, encoder: jsonEncoder)
+ } catch {
+ let error = APIClientError.requestEncodingError(error)
+ requestBehaviour.onFailure(error: error)
+ let response = APIResponse(request: request, result: .failure(error))
+ complete(response)
+ return nil
+ }
+
+ // add the default headers
+ if urlRequest.allHTTPHeaderFields == nil {
+ urlRequest.allHTTPHeaderFields = [:]
+ }
+ for (key, value) in defaultHeaders {
+ urlRequest.allHTTPHeaderFields?[key] = value
+ }
+
+ urlRequest = requestBehaviour.modifyRequest(urlRequest)
+
+ let cancellableRequest = CancellableRequest(request: request.asAny())
+
+ requestBehaviour.validate(urlRequest) { result in
+ switch result {
+ case .success(let urlRequest):
+ self.makeNetworkRequest(request: request, urlRequest: urlRequest, cancellableRequest: cancellableRequest, requestBehaviour: requestBehaviour, completionQueue: completionQueue, complete: complete)
+ case .failure(let error):
+ let error = APIClientError.validationError(error)
+ let response = APIResponse(request: request, result: .failure(error), urlRequest: urlRequest)
+ requestBehaviour.onFailure(error: error)
+ complete(response)
+ }
+ }
+ return cancellableRequest
+ }
+
+ private func makeNetworkRequest(request: APIRequest, urlRequest: URLRequest, cancellableRequest: CancellableRequest, requestBehaviour: RequestBehaviourGroup, completionQueue: DispatchQueue, complete: @escaping (APIResponse) -> Void) {
+ requestBehaviour.beforeSend()
+
+ if request.service.isUpload {
+ sessionManager.upload(
+ multipartFormData: { multipartFormData in
+ for (name, value) in request.formParameters {
+ if let file = value as? UploadFile {
+ switch file.type {
+ case let .url(url):
+ if let fileName = file.fileName, let mimeType = file.mimeType {
+ multipartFormData.append(url, withName: name, fileName: fileName, mimeType: mimeType)
+ } else {
+ multipartFormData.append(url, withName: name)
+ }
+ case let .data(data):
+ if let fileName = file.fileName, let mimeType = file.mimeType {
+ multipartFormData.append(data, withName: name, fileName: fileName, mimeType: mimeType)
+ } else {
+ multipartFormData.append(data, withName: name)
+ }
+ }
+ } else if let url = value as? URL {
+ multipartFormData.append(url, withName: name)
+ } else if let data = value as? Data {
+ multipartFormData.append(data, withName: name)
+ } else if let string = value as? String {
+ multipartFormData.append(Data(string.utf8), withName: name)
+ }
+ }
+ },
+ with: urlRequest,
+ encodingCompletion: { result in
+ switch result {
+ case .success(let uploadRequest, _, _):
+ cancellableRequest.networkRequest = uploadRequest
+ uploadRequest.responseData { dataResponse in
+ self.handleResponse(request: request, requestBehaviour: requestBehaviour, dataResponse: dataResponse, completionQueue: completionQueue, complete: complete)
+ }
+ case .failure(let error):
+ let apiError = APIClientError.requestEncodingError(error)
+ requestBehaviour.onFailure(error: apiError)
+ let response = APIResponse(request: request, result: .failure(apiError))
+
+ completionQueue.async {
+ complete(response)
+ }
+ }
+ })
+ } else {
+ let networkRequest = sessionManager.request(urlRequest)
+ .responseData(queue: decodingQueue) { dataResponse in
+ self.handleResponse(request: request, requestBehaviour: requestBehaviour, dataResponse: dataResponse, completionQueue: completionQueue, complete: complete)
+
+ }
+ cancellableRequest.networkRequest = networkRequest
+ }
+ }
+
+ private func handleResponse(request: APIRequest, requestBehaviour: RequestBehaviourGroup, dataResponse: DataResponse, completionQueue: DispatchQueue, complete: @escaping (APIResponse) -> Void) {
+
+ let result: APIResult
+
+ switch dataResponse.result {
+ case .success(let value):
+ do {
+ let statusCode = dataResponse.response!.statusCode
+ let decoded = try T(statusCode: statusCode, data: value, decoder: jsonDecoder)
+ result = .success(decoded)
+ if decoded.successful {
+ requestBehaviour.onSuccess(result: decoded.response as Any)
+ }
+ } catch let error {
+ let apiError: APIClientError
+ if let error = error as? DecodingError {
+ apiError = APIClientError.decodingError(error)
+ } else if let error = error as? APIClientError {
+ apiError = error
+ } else {
+ apiError = APIClientError.unknownError(error)
+ }
+
+ result = .failure(apiError)
+ requestBehaviour.onFailure(error: apiError)
+ }
+ case .failure(let error):
+ let apiError = APIClientError.networkError(error)
+ result = .failure(apiError)
+ requestBehaviour.onFailure(error: apiError)
+ }
+ let response = APIResponse(request: request, result: result, urlRequest: dataResponse.request, urlResponse: dataResponse.response, data: dataResponse.data, timeline: dataResponse.timeline)
+ requestBehaviour.onResponse(response: response.asAny())
+
+ completionQueue.async {
+ complete(response)
+ }
+ }
+}
+
+public class CancellableRequest {
+ /// The request used to make the actual network request
+ public let request: AnyRequest
+
+ init(request: AnyRequest) {
+ self.request = request
+ }
+ var networkRequest: Request?
+
+ /// cancels the request
+ public func cancel() {
+ if let networkRequest = networkRequest {
+ networkRequest.cancel()
+ }
+ }
+}
+
+// Helper extension for sending requests
+extension APIRequest {
+
+ /// makes a request using the default APIClient. Change your baseURL in APIClient.default.baseURL
+ public func makeRequest(complete: @escaping (APIResponse) -> Void) {
+ APIClient.default.makeRequest(self, complete: complete)
+ }
+}
+
+// Create URLRequest
+extension APIRequest {
+
+ /// pass in an optional baseURL, otherwise URLRequest.url will be relative
+ public func createURLRequest(baseURL: String = "", encoder: RequestEncoder = JSONEncoder()) throws -> URLRequest {
+ let url = URL(string: "\(baseURL)\(path)")!
+ var urlRequest = URLRequest(url: url)
+ urlRequest.httpMethod = service.method
+ urlRequest.allHTTPHeaderFields = headers
+
+ // filter out parameters with empty string value
+ var queryParams: [String: Any] = [:]
+ for (key, value) in queryParameters {
+ if String.init(describing: value) != "" {
+ queryParams[key] = value
+ }
+ }
+ if !queryParams.isEmpty {
+ urlRequest = try URLEncoding.queryString.encode(urlRequest, with: queryParams)
+ }
+
+ var formParams: [String: Any] = [:]
+ for (key, value) in formParameters {
+ if String.init(describing: value) != "" {
+ formParams[key] = value
+ }
+ }
+ if !formParams.isEmpty {
+ urlRequest = try URLEncoding.httpBody.encode(urlRequest, with: formParams)
+ }
+ if let encodeBody = encodeBody {
+ urlRequest.httpBody = try encodeBody(encoder)
+ urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")
+ }
+ return urlRequest
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/APIClientError.swift b/Specs/AppStoreConnect/generated/Swift/Sources/APIClientError.swift
new file mode 100644
index 000000000..82fb6db07
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/APIClientError.swift
@@ -0,0 +1,40 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public enum APIClientError: Error {
+ case unexpectedStatusCode(statusCode: Int, data: Data)
+ case decodingError(DecodingError)
+ case requestEncodingError(Error)
+ case validationError(Error)
+ case networkError(Error)
+ case unknownError(Error)
+
+ public var name:String {
+ switch self {
+ case .unexpectedStatusCode: return "Unexpected status code"
+ case .decodingError: return "Decoding error"
+ case .validationError: return "Request validation failed"
+ case .requestEncodingError: return "Request encoding failed"
+ case .networkError: return "Network error"
+ case .unknownError: return "Unknown error"
+ }
+ }
+}
+
+extension APIClientError: CustomStringConvertible {
+
+ public var description:String {
+ switch self {
+ case .unexpectedStatusCode(let statusCode, _): return "\(name): \(statusCode)"
+ case .decodingError(let error): return "\(name): \(error.localizedDescription)\n\(error)"
+ case .validationError(let error): return "\(name): \(error.localizedDescription)"
+ case .requestEncodingError(let error): return "\(name): \(error)"
+ case .networkError(let error): return "\(name): \(error.localizedDescription)"
+ case .unknownError(let error): return "\(name): \(error.localizedDescription)"
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/APIRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/APIRequest.swift
new file mode 100644
index 000000000..e529d1cb0
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/APIRequest.swift
@@ -0,0 +1,89 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class APIRequest {
+
+ public let service: APIService
+ public private(set) var queryParameters: [String: Any]
+ public private(set) var formParameters: [String: Any]
+ public let encodeBody: ((RequestEncoder) throws -> Data)?
+ private(set) var headerParameters: [String: String]
+ public var customHeaders: [String: String] = [:]
+
+ public var headers: [String: String] {
+ return headerParameters.merging(customHeaders) { param, custom in return custom }
+ }
+
+ public var path: String {
+ return service.path
+ }
+
+ public init(service: APIService,
+ queryParameters: [String: Any] = [:],
+ formParameters: [String: Any] = [:],
+ headers: [String: String] = [:],
+ encodeBody: ((RequestEncoder) throws -> Data)? = nil) {
+ self.service = service
+ self.queryParameters = queryParameters
+ self.formParameters = formParameters
+ self.headerParameters = headers
+ self.encodeBody = encodeBody
+ }
+}
+
+extension APIRequest: CustomStringConvertible {
+
+ public var description: String {
+ var string = "\(service.name): \(service.method) \(path)"
+ if !queryParameters.isEmpty {
+ string += "?" + queryParameters.map {"\($0)=\($1)"}.joined(separator: "&")
+ }
+ return string
+ }
+}
+
+extension APIRequest: CustomDebugStringConvertible {
+
+ public var debugDescription: String {
+ var string = description
+ if let encodeBody = encodeBody,
+ let data = try? encodeBody(JSONEncoder()),
+ let bodyString = String(data: data, encoding: .utf8) {
+ string += "\nbody: \(bodyString)"
+ }
+ return string
+ }
+}
+
+/// A file upload
+public struct UploadFile: Equatable {
+
+ public let type: FileType
+ public let fileName: String?
+ public let mimeType: String?
+
+ public init(type: FileType) {
+ self.type = type
+ self.fileName = nil
+ self.mimeType = nil
+ }
+
+ public init(type: FileType, fileName: String, mimeType: String) {
+ self.type = type
+ self.fileName = fileName
+ self.mimeType = mimeType
+ }
+
+ public enum FileType: Equatable {
+ case data(Data)
+ case url(URL)
+ }
+
+ func encode() -> Any {
+ return self
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/APIResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/APIResponse.swift
new file mode 100644
index 000000000..7514fd74c
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/APIResponse.swift
@@ -0,0 +1,101 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+import Alamofire
+
+public protocol APIResponseValue: CustomDebugStringConvertible, CustomStringConvertible {
+ associatedtype SuccessType
+ var statusCode: Int { get }
+ var successful: Bool { get }
+ var response: Any { get }
+ init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws
+ var success: SuccessType? { get }
+}
+
+public enum APIResponseResult: CustomStringConvertible, CustomDebugStringConvertible {
+ case success(SuccessType)
+ case failure(FailureType)
+
+ public var value: Any {
+ switch self {
+ case .success(let value): return value
+ case .failure(let value): return value
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .success: return true
+ case .failure: return false
+ }
+ }
+
+ public var description: String {
+ return "\(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ return "\(description):\n\(value)"
+ }
+}
+
+public struct APIResponse {
+
+ /// The APIRequest used for this response
+ public let request: APIRequest
+
+ /// The result of the response .
+ public let result: APIResult
+
+ /// The URL request sent to the server.
+ public let urlRequest: URLRequest?
+
+ /// The server's response to the URL request.
+ public let urlResponse: HTTPURLResponse?
+
+ /// The data returned by the server.
+ public let data: Data?
+
+ /// The timeline of the complete lifecycle of the request.
+ public let timeline: Timeline?
+
+ init(request: APIRequest, result: APIResult, urlRequest: URLRequest? = nil, urlResponse: HTTPURLResponse? = nil, data: Data? = nil, timeline: Timeline? = nil) {
+ self.request = request
+ self.result = result
+ self.urlRequest = urlRequest
+ self.urlResponse = urlResponse
+ self.data = data
+ self.timeline = timeline
+ }
+}
+
+extension APIResponse: CustomStringConvertible, CustomDebugStringConvertible {
+
+ public var description:String {
+ var string = "\(request)"
+
+ switch result {
+ case .success(let value):
+ string += " returned \(value.statusCode)"
+ let responseString = "\(type(of: value.response))"
+ if responseString != "()" {
+ string += ": \(responseString)"
+ }
+ case .failure(let error): string += " failed: \(error)"
+ }
+ return string
+ }
+
+ public var debugDescription: String {
+ var string = description
+ if let response = try? result.get().response {
+ if let debugStringConvertible = response as? CustomDebugStringConvertible {
+ string += "\n\(debugStringConvertible.debugDescription)"
+ }
+ }
+ return string
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/APIResult.swift b/Specs/AppStoreConnect/generated/Swift/Sources/APIResult.swift
new file mode 100644
index 000000000..718c5ceb8
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/APIResult.swift
@@ -0,0 +1,6 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+public typealias APIResult = Result
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/APIService.swift b/Specs/AppStoreConnect/generated/Swift/Sources/APIService.swift
new file mode 100644
index 000000000..4cf2264f2
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/APIService.swift
@@ -0,0 +1,47 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+public struct APIService {
+
+ public let id: String
+ public let tag: String
+ public let method: String
+ public let path: String
+ public let hasBody: Bool
+ public let isUpload: Bool
+ public let securityRequirements: [SecurityRequirement]
+
+ public init(id: String, tag: String = "", method:String, path:String, hasBody: Bool, isUpload: Bool = false, securityRequirements: [SecurityRequirement] = []) {
+ self.id = id
+ self.tag = tag
+ self.method = method
+ self.path = path
+ self.hasBody = hasBody
+ self.isUpload = isUpload
+ self.securityRequirements = securityRequirements
+ }
+}
+
+extension APIService: CustomStringConvertible {
+
+ public var name: String {
+ return "\(tag.isEmpty ? "" : "\(tag).")\(id)"
+ }
+
+ public var description: String {
+ return "\(name): \(method) \(path)"
+ }
+}
+
+public struct SecurityRequirement {
+ public let type: String
+ public let scopes: [String]
+
+ public init(type: String, scopes: [String]) {
+ self.type = type
+ self.scopes = scopes
+ }
+}
+
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/AnyCodable.swift b/Specs/AppStoreConnect/generated/Swift/Sources/AnyCodable.swift
new file mode 100644
index 000000000..e263e9005
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/AnyCodable.swift
@@ -0,0 +1,188 @@
+import Foundation
+
+public struct AnyCodable {
+ let value: Any
+
+ init(_ value: T?) {
+ self.value = value ?? ()
+ }
+}
+
+extension AnyCodable: Codable {
+
+ public init(from decoder: Decoder) throws {
+ let container = try decoder.singleValueContainer()
+
+ if container.decodeNil() {
+ self.init(())
+ } else if let bool = try? container.decode(Bool.self) {
+ self.init(bool)
+ } else if let int = try? container.decode(Int.self) {
+ self.init(int)
+ } else if let uint = try? container.decode(UInt.self) {
+ self.init(uint)
+ } else if let double = try? container.decode(Double.self) {
+ self.init(double)
+ } else if let string = try? container.decode(String.self) {
+ self.init(string)
+ } else if let array = try? container.decode([AnyCodable].self) {
+ self.init(array.map { $0.value })
+ } else if let dictionary = try? container.decode([String: AnyCodable].self) {
+ self.init(dictionary.mapValues { $0.value })
+ } else {
+ throw DecodingError.dataCorruptedError(in: container, debugDescription: "AnyCodable value cannot be decoded")
+ }
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.singleValueContainer()
+
+ switch self.value {
+ case is Void:
+ try container.encodeNil()
+ case let bool as Bool:
+ try container.encode(bool)
+ case let int as Int:
+ try container.encode(int)
+ case let int8 as Int8:
+ try container.encode(int8)
+ case let int16 as Int16:
+ try container.encode(int16)
+ case let int32 as Int32:
+ try container.encode(int32)
+ case let int64 as Int64:
+ try container.encode(int64)
+ case let uint as UInt:
+ try container.encode(uint)
+ case let uint8 as UInt8:
+ try container.encode(uint8)
+ case let uint16 as UInt16:
+ try container.encode(uint16)
+ case let uint32 as UInt32:
+ try container.encode(uint32)
+ case let uint64 as UInt64:
+ try container.encode(uint64)
+ case let float as Float:
+ try container.encode(float)
+ case let double as Double:
+ try container.encode(double)
+ case let string as String:
+ try container.encode(string)
+ case let date as Date:
+ try container.encode(date)
+ case let url as URL:
+ try container.encode(url)
+ case let array as [Any?]:
+ try container.encode(array.map { AnyCodable($0) })
+ case let dictionary as [String: Any?]:
+ try container.encode(dictionary.mapValues { AnyCodable($0) })
+ case let object as Encodable:
+ try object.encode(to: encoder)
+ default:
+ let context = EncodingError.Context(codingPath: container.codingPath, debugDescription: "AnyCodable value cannot be encoded")
+ throw EncodingError.invalidValue(self.value, context)
+ }
+ }
+}
+
+extension AnyCodable: Equatable {
+ static public func ==(lhs: AnyCodable, rhs: AnyCodable) -> Bool {
+ switch (lhs.value, rhs.value) {
+ case is (Void, Void):
+ return true
+ case let (lhs as Bool, rhs as Bool):
+ return lhs == rhs
+ case let (lhs as Int, rhs as Int):
+ return lhs == rhs
+ case let (lhs as Int8, rhs as Int8):
+ return lhs == rhs
+ case let (lhs as Int16, rhs as Int16):
+ return lhs == rhs
+ case let (lhs as Int32, rhs as Int32):
+ return lhs == rhs
+ case let (lhs as Int64, rhs as Int64):
+ return lhs == rhs
+ case let (lhs as UInt, rhs as UInt):
+ return lhs == rhs
+ case let (lhs as UInt8, rhs as UInt8):
+ return lhs == rhs
+ case let (lhs as UInt16, rhs as UInt16):
+ return lhs == rhs
+ case let (lhs as UInt32, rhs as UInt32):
+ return lhs == rhs
+ case let (lhs as UInt64, rhs as UInt64):
+ return lhs == rhs
+ case let (lhs as Float, rhs as Float):
+ return lhs == rhs
+ case let (lhs as Double, rhs as Double):
+ return lhs == rhs
+ case let (lhs as String, rhs as String):
+ return lhs == rhs
+ case (let lhs as [String: AnyCodable], let rhs as [String: AnyCodable]):
+ return lhs == rhs
+ case (let lhs as [AnyCodable], let rhs as [AnyCodable]):
+ return lhs == rhs
+ default:
+ return false
+ }
+ }
+}
+
+extension AnyCodable: CustomStringConvertible {
+ public var description: String {
+ switch value {
+ case is Void:
+ return String(describing: nil as Any?)
+ case let value as CustomStringConvertible:
+ return value.description
+ default:
+ return String(describing: value)
+ }
+ }
+}
+
+extension AnyCodable: CustomDebugStringConvertible {
+ public var debugDescription: String {
+ switch value {
+ case let value as CustomDebugStringConvertible:
+ return "AnyCodable(\(value.debugDescription))"
+ default:
+ return "AnyCodable(\(self.description))"
+ }
+ }
+}
+
+extension AnyCodable: ExpressibleByNilLiteral, ExpressibleByBooleanLiteral, ExpressibleByIntegerLiteral, ExpressibleByFloatLiteral, ExpressibleByStringLiteral, ExpressibleByArrayLiteral, ExpressibleByDictionaryLiteral {
+
+ public init(nilLiteral: ()) {
+ self.init(nil as Any?)
+ }
+
+ public init(booleanLiteral value: Bool) {
+ self.init(value)
+ }
+
+ public init(integerLiteral value: Int) {
+ self.init(value)
+ }
+
+ public init(floatLiteral value: Double) {
+ self.init(value)
+ }
+
+ public init(extendedGraphemeClusterLiteral value: String) {
+ self.init(value)
+ }
+
+ public init(stringLiteral value: String) {
+ self.init(value)
+ }
+
+ public init(arrayLiteral elements: Any...) {
+ self.init(elements)
+ }
+
+ public init(dictionaryLiteral elements: (AnyHashable, Any)...) {
+ self.init(Dictionary(elements, uniquingKeysWith: { (first, _) in first }))
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Coding.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Coding.swift
new file mode 100644
index 000000000..5069fff24
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Coding.swift
@@ -0,0 +1,367 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public protocol APIModel: Codable, Equatable { }
+
+public typealias DateTime = Date
+public typealias File = Data
+public typealias ID = UUID
+
+public protocol ResponseDecoder {
+
+ func decode(_ type: T.Type, from: Data) throws -> T
+}
+
+extension JSONDecoder: ResponseDecoder {}
+
+public protocol RequestEncoder {
+
+ func encode(_ value: T) throws -> Data
+}
+
+extension JSONEncoder: RequestEncoder {}
+
+extension APIModel {
+ func encode() -> [String: Any] {
+ guard
+ let jsonData = try? JSONEncoder().encode(self),
+ let jsonValue = try? JSONSerialization.jsonObject(with: jsonData),
+ let jsonDictionary = jsonValue as? [String: Any] else {
+ return [:]
+ }
+ return jsonDictionary
+ }
+}
+
+struct StringCodingKey: CodingKey, ExpressibleByStringLiteral {
+
+ private let string: String
+ private let int: Int?
+
+ var stringValue: String { return string }
+
+ init(string: String) {
+ self.string = string
+ int = nil
+ }
+ init?(stringValue: String) {
+ string = stringValue
+ int = nil
+ }
+
+ var intValue: Int? { return int }
+ init?(intValue: Int) {
+ string = String(describing: intValue)
+ int = intValue
+ }
+
+ init(stringLiteral value: String) {
+ string = value
+ int = nil
+ }
+}
+
+// any json decoding
+extension ResponseDecoder {
+
+ func decodeAny(_ type: T.Type, from data: Data) throws -> T {
+ guard let decoded = try decode(AnyCodable.self, from: data) as? T else {
+ throw DecodingError.typeMismatch(T.self, DecodingError.Context(codingPath: [StringCodingKey(string: "")], debugDescription: "Decoding of \(T.self) failed"))
+ }
+ return decoded
+ }
+}
+
+// any decoding
+extension KeyedDecodingContainer {
+
+ func decodeAny(_ type: T.Type, forKey key: K) throws -> T {
+ guard let value = try decode(AnyCodable.self, forKey: key).value as? T else {
+ throw DecodingError.typeMismatch(T.self, DecodingError.Context(codingPath: codingPath, debugDescription: "Decoding of \(T.self) failed"))
+ }
+ return value
+ }
+
+ func decodeAnyIfPresent(_ type: T.Type, forKey key: K) throws -> T? {
+ return try decodeOptional {
+ guard let value = try decodeIfPresent(AnyCodable.self, forKey: key)?.value else { return nil }
+ if let typedValue = value as? T {
+ return typedValue
+ } else {
+ throw DecodingError.typeMismatch(T.self, DecodingError.Context(codingPath: codingPath, debugDescription: "Decoding of \(T.self) failed"))
+ }
+ }
+ }
+
+ func toDictionary() throws -> [String: Any] {
+ var dictionary: [String: Any] = [:]
+ for key in allKeys {
+ dictionary[key.stringValue] = try decodeAny(key)
+ }
+ return dictionary
+ }
+
+ func decode(_ key: KeyedDecodingContainer.Key) throws -> T where T: Decodable {
+ return try decode(T.self, forKey: key)
+ }
+
+ func decodeIfPresent(_ key: KeyedDecodingContainer.Key) throws -> T? where T: Decodable {
+ return try decodeOptional {
+ try decodeIfPresent(T.self, forKey: key)
+ }
+ }
+
+ func decodeAny(_ key: K) throws -> T {
+ return try decodeAny(T.self, forKey: key)
+ }
+
+ func decodeAnyIfPresent(_ key: K) throws -> T? {
+ return try decodeAnyIfPresent(T.self, forKey: key)
+ }
+
+ public func decodeArray(_ key: K) throws -> [T] {
+ var container: UnkeyedDecodingContainer
+ var array: [T] = []
+
+ do {
+ container = try nestedUnkeyedContainer(forKey: key)
+ } catch {
+ if AppStoreConnect.safeArrayDecoding {
+ return array
+ } else {
+ throw error
+ }
+ }
+
+ while !container.isAtEnd {
+ do {
+ let element = try container.decode(T.self)
+ array.append(element)
+ } catch {
+ if AppStoreConnect.safeArrayDecoding {
+ // hack to advance the current index
+ _ = try? container.decode(AnyCodable.self)
+ } else {
+ throw error
+ }
+ }
+ }
+ return array
+ }
+
+ public func decodeArrayIfPresent(_ key: K) throws -> [T]? {
+ return try decodeOptional {
+ if contains(key) {
+ return try decodeArray(key)
+ } else {
+ return nil
+ }
+ }
+ }
+
+ fileprivate func decodeOptional(_ closure: () throws -> T? ) throws -> T? {
+ if AppStoreConnect.safeOptionalDecoding {
+ do {
+ return try closure()
+ } catch {
+ return nil
+ }
+ } else {
+ return try closure()
+ }
+ }
+}
+
+// any encoding
+extension KeyedEncodingContainer {
+
+ mutating func encodeAnyIfPresent(_ value: T?, forKey key: K) throws {
+ guard let value = value else { return }
+ try encodeIfPresent(AnyCodable(value), forKey: key)
+ }
+
+ mutating func encodeAny(_ value: T, forKey key: K) throws {
+ try encode(AnyCodable(value), forKey: key)
+ }
+}
+
+// Date structs for date and date-time formats
+
+extension DateFormatter {
+
+ convenience init(formatString: String, locale: Locale? = nil, timeZone: TimeZone? = nil, calendar: Calendar? = nil) {
+ self.init()
+ dateFormat = formatString
+ if let locale = locale {
+ self.locale = locale
+ }
+ if let timeZone = timeZone {
+ self.timeZone = timeZone
+ }
+ if let calendar = calendar {
+ self.calendar = calendar
+ }
+ }
+
+ convenience init(dateStyle: DateFormatter.Style, timeStyle: DateFormatter.Style) {
+ self.init()
+ self.dateStyle = dateStyle
+ self.timeStyle = timeStyle
+ }
+}
+
+let dateDecoder: (Decoder) throws -> Date = { decoder in
+ let container = try decoder.singleValueContainer()
+ let string = try container.decode(String.self)
+
+ let formatterWithMilliseconds = DateFormatter()
+ formatterWithMilliseconds.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
+ formatterWithMilliseconds.locale = Locale(identifier: "en_US_POSIX")
+ formatterWithMilliseconds.timeZone = TimeZone(identifier: "UTC")
+ formatterWithMilliseconds.calendar = Calendar(identifier: .gregorian)
+
+ let formatterWithoutMilliseconds = DateFormatter()
+ formatterWithoutMilliseconds.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
+ formatterWithoutMilliseconds.locale = Locale(identifier: "en_US_POSIX")
+ formatterWithoutMilliseconds.timeZone = TimeZone(identifier: "UTC")
+ formatterWithoutMilliseconds.calendar = Calendar(identifier: .gregorian)
+
+ guard let date = formatterWithMilliseconds.date(from: string) ??
+ formatterWithoutMilliseconds.date(from: string) else {
+ throw DecodingError.dataCorruptedError(in: container, debugDescription: "Could not decode date")
+ }
+ return date
+ }
+
+public struct DateDay: Codable, Comparable {
+
+ /// The date formatter used for encoding and decoding
+ public static let dateFormatter: DateFormatter = {
+ let formatter = DateFormatter()
+ formatter.dateFormat = "yyyy-MM-dd"
+ formatter.calendar = .current
+ return formatter
+ }()
+
+ public let date: Date
+ public let year: Int
+ public let month: Int
+ public let day: Int
+
+ public init(date: Date = Date()) {
+ self.date = date
+ let dateComponents = Calendar.current.dateComponents([.day, .month, .year], from: date)
+ guard let year = dateComponents.year,
+ let month = dateComponents.month,
+ let day = dateComponents.day else {
+ fatalError("Date does not contain correct components")
+ }
+ self.year = year
+ self.month = month
+ self.day = day
+ }
+
+ public init(year: Int, month: Int, day: Int) {
+ let dateComponents = DateComponents(calendar: .current, year: year, month: month, day: day)
+ guard let date = dateComponents.date else {
+ fatalError("Could not create date in current calendar")
+ }
+ self.date = date
+ self.year = year
+ self.month = month
+ self.day = day
+ }
+
+ public init(from decoder: Decoder) throws {
+ let container = try decoder.singleValueContainer()
+ let string = try container.decode(String.self)
+ guard let date = DateDay.dateFormatter.date(from: string) else {
+ throw DecodingError.dataCorruptedError(in: container, debugDescription: "Date not in correct format of \(DateDay.dateFormatter.dateFormat ?? "")")
+ }
+ self.init(date: date)
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.singleValueContainer()
+ let string = DateDay.dateFormatter.string(from: date)
+ try container.encode(string)
+ }
+
+ public static func == (lhs: DateDay, rhs: DateDay) -> Bool {
+ return lhs.year == rhs.year &&
+ lhs.month == rhs.month &&
+ lhs.day == rhs.day
+ }
+
+ public static func < (lhs: DateDay, rhs: DateDay) -> Bool {
+ return lhs.date < rhs.date
+ }
+}
+
+extension DateFormatter {
+
+ public func string(from dateDay: DateDay) -> String {
+ return string(from: dateDay.date)
+ }
+}
+
+// for parameter encoding
+
+extension DateDay {
+ func encode() -> Any {
+ return DateDay.dateFormatter.string(from: date)
+ }
+}
+
+extension Date {
+ func encode() -> Any {
+ return AppStoreConnect.dateEncodingFormatter.string(from: self)
+ }
+}
+
+extension URL {
+ func encode() -> Any {
+ return absoluteString
+ }
+}
+
+extension RawRepresentable {
+ func encode() -> Any {
+ return rawValue
+ }
+}
+
+extension Array where Element: RawRepresentable {
+ func encode() -> [Any] {
+ return map { $0.rawValue }
+ }
+}
+
+extension Dictionary where Key == String, Value: RawRepresentable {
+ func encode() -> [String: Any] {
+ return mapValues { $0.rawValue }
+ }
+}
+
+extension UUID {
+ func encode() -> Any {
+ return uuidString
+ }
+}
+
+extension String {
+ func encode() -> Any {
+ return self
+ }
+}
+
+extension Data {
+
+ func encode() -> Any {
+ return self
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AgeRatingDeclaration.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AgeRatingDeclaration.swift
new file mode 100644
index 000000000..7da5e2f2c
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AgeRatingDeclaration.swift
@@ -0,0 +1,234 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AgeRatingDeclaration: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case ageRatingDeclarations = "ageRatingDeclarations"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public enum AlcoholTobaccoOrDrugUseOrReferences: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public enum GamblingSimulated: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public enum HorrorOrFearThemes: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public enum MatureOrSuggestiveThemes: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public enum MedicalOrTreatmentInformation: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public enum ProfanityOrCrudeHumor: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public enum SexualContentGraphicAndNudity: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public enum SexualContentOrNudity: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public enum ViolenceCartoonOrFantasy: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public enum ViolenceRealistic: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public enum ViolenceRealisticProlongedGraphicOrSadistic: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public var alcoholTobaccoOrDrugUseOrReferences: AlcoholTobaccoOrDrugUseOrReferences?
+
+ public var gamblingAndContests: Bool?
+
+ public var gamblingSimulated: GamblingSimulated?
+
+ public var horrorOrFearThemes: HorrorOrFearThemes?
+
+ public var kidsAgeBand: KidsAgeBand?
+
+ public var matureOrSuggestiveThemes: MatureOrSuggestiveThemes?
+
+ public var medicalOrTreatmentInformation: MedicalOrTreatmentInformation?
+
+ public var profanityOrCrudeHumor: ProfanityOrCrudeHumor?
+
+ public var sexualContentGraphicAndNudity: SexualContentGraphicAndNudity?
+
+ public var sexualContentOrNudity: SexualContentOrNudity?
+
+ public var unrestrictedWebAccess: Bool?
+
+ public var violenceCartoonOrFantasy: ViolenceCartoonOrFantasy?
+
+ public var violenceRealistic: ViolenceRealistic?
+
+ public var violenceRealisticProlongedGraphicOrSadistic: ViolenceRealisticProlongedGraphicOrSadistic?
+
+ public init(alcoholTobaccoOrDrugUseOrReferences: AlcoholTobaccoOrDrugUseOrReferences? = nil, gamblingAndContests: Bool? = nil, gamblingSimulated: GamblingSimulated? = nil, horrorOrFearThemes: HorrorOrFearThemes? = nil, kidsAgeBand: KidsAgeBand? = nil, matureOrSuggestiveThemes: MatureOrSuggestiveThemes? = nil, medicalOrTreatmentInformation: MedicalOrTreatmentInformation? = nil, profanityOrCrudeHumor: ProfanityOrCrudeHumor? = nil, sexualContentGraphicAndNudity: SexualContentGraphicAndNudity? = nil, sexualContentOrNudity: SexualContentOrNudity? = nil, unrestrictedWebAccess: Bool? = nil, violenceCartoonOrFantasy: ViolenceCartoonOrFantasy? = nil, violenceRealistic: ViolenceRealistic? = nil, violenceRealisticProlongedGraphicOrSadistic: ViolenceRealisticProlongedGraphicOrSadistic? = nil) {
+ self.alcoholTobaccoOrDrugUseOrReferences = alcoholTobaccoOrDrugUseOrReferences
+ self.gamblingAndContests = gamblingAndContests
+ self.gamblingSimulated = gamblingSimulated
+ self.horrorOrFearThemes = horrorOrFearThemes
+ self.kidsAgeBand = kidsAgeBand
+ self.matureOrSuggestiveThemes = matureOrSuggestiveThemes
+ self.medicalOrTreatmentInformation = medicalOrTreatmentInformation
+ self.profanityOrCrudeHumor = profanityOrCrudeHumor
+ self.sexualContentGraphicAndNudity = sexualContentGraphicAndNudity
+ self.sexualContentOrNudity = sexualContentOrNudity
+ self.unrestrictedWebAccess = unrestrictedWebAccess
+ self.violenceCartoonOrFantasy = violenceCartoonOrFantasy
+ self.violenceRealistic = violenceRealistic
+ self.violenceRealisticProlongedGraphicOrSadistic = violenceRealisticProlongedGraphicOrSadistic
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ alcoholTobaccoOrDrugUseOrReferences = try container.decodeIfPresent("alcoholTobaccoOrDrugUseOrReferences")
+ gamblingAndContests = try container.decodeIfPresent("gamblingAndContests")
+ gamblingSimulated = try container.decodeIfPresent("gamblingSimulated")
+ horrorOrFearThemes = try container.decodeIfPresent("horrorOrFearThemes")
+ kidsAgeBand = try container.decodeIfPresent("kidsAgeBand")
+ matureOrSuggestiveThemes = try container.decodeIfPresent("matureOrSuggestiveThemes")
+ medicalOrTreatmentInformation = try container.decodeIfPresent("medicalOrTreatmentInformation")
+ profanityOrCrudeHumor = try container.decodeIfPresent("profanityOrCrudeHumor")
+ sexualContentGraphicAndNudity = try container.decodeIfPresent("sexualContentGraphicAndNudity")
+ sexualContentOrNudity = try container.decodeIfPresent("sexualContentOrNudity")
+ unrestrictedWebAccess = try container.decodeIfPresent("unrestrictedWebAccess")
+ violenceCartoonOrFantasy = try container.decodeIfPresent("violenceCartoonOrFantasy")
+ violenceRealistic = try container.decodeIfPresent("violenceRealistic")
+ violenceRealisticProlongedGraphicOrSadistic = try container.decodeIfPresent("violenceRealisticProlongedGraphicOrSadistic")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(alcoholTobaccoOrDrugUseOrReferences, forKey: "alcoholTobaccoOrDrugUseOrReferences")
+ try container.encodeIfPresent(gamblingAndContests, forKey: "gamblingAndContests")
+ try container.encodeIfPresent(gamblingSimulated, forKey: "gamblingSimulated")
+ try container.encodeIfPresent(horrorOrFearThemes, forKey: "horrorOrFearThemes")
+ try container.encodeIfPresent(kidsAgeBand, forKey: "kidsAgeBand")
+ try container.encodeIfPresent(matureOrSuggestiveThemes, forKey: "matureOrSuggestiveThemes")
+ try container.encodeIfPresent(medicalOrTreatmentInformation, forKey: "medicalOrTreatmentInformation")
+ try container.encodeIfPresent(profanityOrCrudeHumor, forKey: "profanityOrCrudeHumor")
+ try container.encodeIfPresent(sexualContentGraphicAndNudity, forKey: "sexualContentGraphicAndNudity")
+ try container.encodeIfPresent(sexualContentOrNudity, forKey: "sexualContentOrNudity")
+ try container.encodeIfPresent(unrestrictedWebAccess, forKey: "unrestrictedWebAccess")
+ try container.encodeIfPresent(violenceCartoonOrFantasy, forKey: "violenceCartoonOrFantasy")
+ try container.encodeIfPresent(violenceRealistic, forKey: "violenceRealistic")
+ try container.encodeIfPresent(violenceRealisticProlongedGraphicOrSadistic, forKey: "violenceRealisticProlongedGraphicOrSadistic")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.alcoholTobaccoOrDrugUseOrReferences == object.alcoholTobaccoOrDrugUseOrReferences else { return false }
+ guard self.gamblingAndContests == object.gamblingAndContests else { return false }
+ guard self.gamblingSimulated == object.gamblingSimulated else { return false }
+ guard self.horrorOrFearThemes == object.horrorOrFearThemes else { return false }
+ guard self.kidsAgeBand == object.kidsAgeBand else { return false }
+ guard self.matureOrSuggestiveThemes == object.matureOrSuggestiveThemes else { return false }
+ guard self.medicalOrTreatmentInformation == object.medicalOrTreatmentInformation else { return false }
+ guard self.profanityOrCrudeHumor == object.profanityOrCrudeHumor else { return false }
+ guard self.sexualContentGraphicAndNudity == object.sexualContentGraphicAndNudity else { return false }
+ guard self.sexualContentOrNudity == object.sexualContentOrNudity else { return false }
+ guard self.unrestrictedWebAccess == object.unrestrictedWebAccess else { return false }
+ guard self.violenceCartoonOrFantasy == object.violenceCartoonOrFantasy else { return false }
+ guard self.violenceRealistic == object.violenceRealistic else { return false }
+ guard self.violenceRealisticProlongedGraphicOrSadistic == object.violenceRealisticProlongedGraphicOrSadistic else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AgeRatingDeclaration else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: AgeRatingDeclaration, rhs: AgeRatingDeclaration) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AgeRatingDeclarationResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AgeRatingDeclarationResponse.swift
new file mode 100644
index 000000000..d0cf1befa
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AgeRatingDeclarationResponse.swift
@@ -0,0 +1,43 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AgeRatingDeclarationResponse: APIModel {
+
+ public var data: AgeRatingDeclaration
+
+ public var links: DocumentLinks
+
+ public init(data: AgeRatingDeclaration, links: DocumentLinks) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AgeRatingDeclarationResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AgeRatingDeclarationResponse, rhs: AgeRatingDeclarationResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AgeRatingDeclarationUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AgeRatingDeclarationUpdateRequest.swift
new file mode 100644
index 000000000..aa6b20e2b
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AgeRatingDeclarationUpdateRequest.swift
@@ -0,0 +1,259 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AgeRatingDeclarationUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case ageRatingDeclarations = "ageRatingDeclarations"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public enum AlcoholTobaccoOrDrugUseOrReferences: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public enum GamblingSimulated: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public enum HorrorOrFearThemes: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public enum MatureOrSuggestiveThemes: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public enum MedicalOrTreatmentInformation: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public enum ProfanityOrCrudeHumor: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public enum SexualContentGraphicAndNudity: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public enum SexualContentOrNudity: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public enum ViolenceCartoonOrFantasy: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public enum ViolenceRealistic: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public enum ViolenceRealisticProlongedGraphicOrSadistic: String, Codable, Equatable, CaseIterable {
+ case none = "NONE"
+ case infrequentOrMild = "INFREQUENT_OR_MILD"
+ case frequentOrIntense = "FREQUENT_OR_INTENSE"
+ }
+
+ public var alcoholTobaccoOrDrugUseOrReferences: AlcoholTobaccoOrDrugUseOrReferences?
+
+ public var gamblingAndContests: Bool?
+
+ public var gamblingSimulated: GamblingSimulated?
+
+ public var horrorOrFearThemes: HorrorOrFearThemes?
+
+ public var kidsAgeBand: KidsAgeBand?
+
+ public var matureOrSuggestiveThemes: MatureOrSuggestiveThemes?
+
+ public var medicalOrTreatmentInformation: MedicalOrTreatmentInformation?
+
+ public var profanityOrCrudeHumor: ProfanityOrCrudeHumor?
+
+ public var sexualContentGraphicAndNudity: SexualContentGraphicAndNudity?
+
+ public var sexualContentOrNudity: SexualContentOrNudity?
+
+ public var unrestrictedWebAccess: Bool?
+
+ public var violenceCartoonOrFantasy: ViolenceCartoonOrFantasy?
+
+ public var violenceRealistic: ViolenceRealistic?
+
+ public var violenceRealisticProlongedGraphicOrSadistic: ViolenceRealisticProlongedGraphicOrSadistic?
+
+ public init(alcoholTobaccoOrDrugUseOrReferences: AlcoholTobaccoOrDrugUseOrReferences? = nil, gamblingAndContests: Bool? = nil, gamblingSimulated: GamblingSimulated? = nil, horrorOrFearThemes: HorrorOrFearThemes? = nil, kidsAgeBand: KidsAgeBand? = nil, matureOrSuggestiveThemes: MatureOrSuggestiveThemes? = nil, medicalOrTreatmentInformation: MedicalOrTreatmentInformation? = nil, profanityOrCrudeHumor: ProfanityOrCrudeHumor? = nil, sexualContentGraphicAndNudity: SexualContentGraphicAndNudity? = nil, sexualContentOrNudity: SexualContentOrNudity? = nil, unrestrictedWebAccess: Bool? = nil, violenceCartoonOrFantasy: ViolenceCartoonOrFantasy? = nil, violenceRealistic: ViolenceRealistic? = nil, violenceRealisticProlongedGraphicOrSadistic: ViolenceRealisticProlongedGraphicOrSadistic? = nil) {
+ self.alcoholTobaccoOrDrugUseOrReferences = alcoholTobaccoOrDrugUseOrReferences
+ self.gamblingAndContests = gamblingAndContests
+ self.gamblingSimulated = gamblingSimulated
+ self.horrorOrFearThemes = horrorOrFearThemes
+ self.kidsAgeBand = kidsAgeBand
+ self.matureOrSuggestiveThemes = matureOrSuggestiveThemes
+ self.medicalOrTreatmentInformation = medicalOrTreatmentInformation
+ self.profanityOrCrudeHumor = profanityOrCrudeHumor
+ self.sexualContentGraphicAndNudity = sexualContentGraphicAndNudity
+ self.sexualContentOrNudity = sexualContentOrNudity
+ self.unrestrictedWebAccess = unrestrictedWebAccess
+ self.violenceCartoonOrFantasy = violenceCartoonOrFantasy
+ self.violenceRealistic = violenceRealistic
+ self.violenceRealisticProlongedGraphicOrSadistic = violenceRealisticProlongedGraphicOrSadistic
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ alcoholTobaccoOrDrugUseOrReferences = try container.decodeIfPresent("alcoholTobaccoOrDrugUseOrReferences")
+ gamblingAndContests = try container.decodeIfPresent("gamblingAndContests")
+ gamblingSimulated = try container.decodeIfPresent("gamblingSimulated")
+ horrorOrFearThemes = try container.decodeIfPresent("horrorOrFearThemes")
+ kidsAgeBand = try container.decodeIfPresent("kidsAgeBand")
+ matureOrSuggestiveThemes = try container.decodeIfPresent("matureOrSuggestiveThemes")
+ medicalOrTreatmentInformation = try container.decodeIfPresent("medicalOrTreatmentInformation")
+ profanityOrCrudeHumor = try container.decodeIfPresent("profanityOrCrudeHumor")
+ sexualContentGraphicAndNudity = try container.decodeIfPresent("sexualContentGraphicAndNudity")
+ sexualContentOrNudity = try container.decodeIfPresent("sexualContentOrNudity")
+ unrestrictedWebAccess = try container.decodeIfPresent("unrestrictedWebAccess")
+ violenceCartoonOrFantasy = try container.decodeIfPresent("violenceCartoonOrFantasy")
+ violenceRealistic = try container.decodeIfPresent("violenceRealistic")
+ violenceRealisticProlongedGraphicOrSadistic = try container.decodeIfPresent("violenceRealisticProlongedGraphicOrSadistic")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(alcoholTobaccoOrDrugUseOrReferences, forKey: "alcoholTobaccoOrDrugUseOrReferences")
+ try container.encodeIfPresent(gamblingAndContests, forKey: "gamblingAndContests")
+ try container.encodeIfPresent(gamblingSimulated, forKey: "gamblingSimulated")
+ try container.encodeIfPresent(horrorOrFearThemes, forKey: "horrorOrFearThemes")
+ try container.encodeIfPresent(kidsAgeBand, forKey: "kidsAgeBand")
+ try container.encodeIfPresent(matureOrSuggestiveThemes, forKey: "matureOrSuggestiveThemes")
+ try container.encodeIfPresent(medicalOrTreatmentInformation, forKey: "medicalOrTreatmentInformation")
+ try container.encodeIfPresent(profanityOrCrudeHumor, forKey: "profanityOrCrudeHumor")
+ try container.encodeIfPresent(sexualContentGraphicAndNudity, forKey: "sexualContentGraphicAndNudity")
+ try container.encodeIfPresent(sexualContentOrNudity, forKey: "sexualContentOrNudity")
+ try container.encodeIfPresent(unrestrictedWebAccess, forKey: "unrestrictedWebAccess")
+ try container.encodeIfPresent(violenceCartoonOrFantasy, forKey: "violenceCartoonOrFantasy")
+ try container.encodeIfPresent(violenceRealistic, forKey: "violenceRealistic")
+ try container.encodeIfPresent(violenceRealisticProlongedGraphicOrSadistic, forKey: "violenceRealisticProlongedGraphicOrSadistic")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.alcoholTobaccoOrDrugUseOrReferences == object.alcoholTobaccoOrDrugUseOrReferences else { return false }
+ guard self.gamblingAndContests == object.gamblingAndContests else { return false }
+ guard self.gamblingSimulated == object.gamblingSimulated else { return false }
+ guard self.horrorOrFearThemes == object.horrorOrFearThemes else { return false }
+ guard self.kidsAgeBand == object.kidsAgeBand else { return false }
+ guard self.matureOrSuggestiveThemes == object.matureOrSuggestiveThemes else { return false }
+ guard self.medicalOrTreatmentInformation == object.medicalOrTreatmentInformation else { return false }
+ guard self.profanityOrCrudeHumor == object.profanityOrCrudeHumor else { return false }
+ guard self.sexualContentGraphicAndNudity == object.sexualContentGraphicAndNudity else { return false }
+ guard self.sexualContentOrNudity == object.sexualContentOrNudity else { return false }
+ guard self.unrestrictedWebAccess == object.unrestrictedWebAccess else { return false }
+ guard self.violenceCartoonOrFantasy == object.violenceCartoonOrFantasy else { return false }
+ guard self.violenceRealistic == object.violenceRealistic else { return false }
+ guard self.violenceRealisticProlongedGraphicOrSadistic == object.violenceRealisticProlongedGraphicOrSadistic else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AgeRatingDeclarationUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AgeRatingDeclarationUpdateRequest, rhs: AgeRatingDeclarationUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/App.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/App.swift
new file mode 100644
index 000000000..c060acfcc
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/App.swift
@@ -0,0 +1,1916 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class App: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public enum ContentRightsDeclaration: String, Codable, Equatable, CaseIterable {
+ case doesNotUseThirdPartyContent = "DOES_NOT_USE_THIRD_PARTY_CONTENT"
+ case usesThirdPartyContent = "USES_THIRD_PARTY_CONTENT"
+ }
+
+ public var availableInNewTerritories: Bool?
+
+ public var bundleId: String?
+
+ public var contentRightsDeclaration: ContentRightsDeclaration?
+
+ public var isOrEverWasMadeForKids: Bool?
+
+ public var name: String?
+
+ public var primaryLocale: String?
+
+ public var sku: String?
+
+ public init(availableInNewTerritories: Bool? = nil, bundleId: String? = nil, contentRightsDeclaration: ContentRightsDeclaration? = nil, isOrEverWasMadeForKids: Bool? = nil, name: String? = nil, primaryLocale: String? = nil, sku: String? = nil) {
+ self.availableInNewTerritories = availableInNewTerritories
+ self.bundleId = bundleId
+ self.contentRightsDeclaration = contentRightsDeclaration
+ self.isOrEverWasMadeForKids = isOrEverWasMadeForKids
+ self.name = name
+ self.primaryLocale = primaryLocale
+ self.sku = sku
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ availableInNewTerritories = try container.decodeIfPresent("availableInNewTerritories")
+ bundleId = try container.decodeIfPresent("bundleId")
+ contentRightsDeclaration = try container.decodeIfPresent("contentRightsDeclaration")
+ isOrEverWasMadeForKids = try container.decodeIfPresent("isOrEverWasMadeForKids")
+ name = try container.decodeIfPresent("name")
+ primaryLocale = try container.decodeIfPresent("primaryLocale")
+ sku = try container.decodeIfPresent("sku")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(availableInNewTerritories, forKey: "availableInNewTerritories")
+ try container.encodeIfPresent(bundleId, forKey: "bundleId")
+ try container.encodeIfPresent(contentRightsDeclaration, forKey: "contentRightsDeclaration")
+ try container.encodeIfPresent(isOrEverWasMadeForKids, forKey: "isOrEverWasMadeForKids")
+ try container.encodeIfPresent(name, forKey: "name")
+ try container.encodeIfPresent(primaryLocale, forKey: "primaryLocale")
+ try container.encodeIfPresent(sku, forKey: "sku")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.availableInNewTerritories == object.availableInNewTerritories else { return false }
+ guard self.bundleId == object.bundleId else { return false }
+ guard self.contentRightsDeclaration == object.contentRightsDeclaration else { return false }
+ guard self.isOrEverWasMadeForKids == object.isOrEverWasMadeForKids else { return false }
+ guard self.name == object.name else { return false }
+ guard self.primaryLocale == object.primaryLocale else { return false }
+ guard self.sku == object.sku else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var appInfos: AppInfos?
+
+ public var appStoreVersions: AppStoreVersions?
+
+ public var availableTerritories: AvailableTerritories?
+
+ public var betaAppLocalizations: BetaAppLocalizations?
+
+ public var betaAppReviewDetail: BetaAppReviewDetail?
+
+ public var betaGroups: BetaGroups?
+
+ public var betaLicenseAgreement: BetaLicenseAgreement?
+
+ public var builds: Builds?
+
+ public var endUserLicenseAgreement: EndUserLicenseAgreement?
+
+ public var gameCenterEnabledVersions: GameCenterEnabledVersions?
+
+ public var inAppPurchases: InAppPurchases?
+
+ public var preOrder: PreOrder?
+
+ public var preReleaseVersions: PreReleaseVersions?
+
+ public var prices: Prices?
+
+ public class AppInfos: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appInfos = "appInfos"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppInfos else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppInfos, rhs: AppInfos) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class AppStoreVersions: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersions = "appStoreVersions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersions else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersions, rhs: AppStoreVersions) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class AvailableTerritories: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case territories = "territories"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AvailableTerritories else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AvailableTerritories, rhs: AvailableTerritories) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class BetaAppLocalizations: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaAppLocalizations = "betaAppLocalizations"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaAppLocalizations else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaAppLocalizations, rhs: BetaAppLocalizations) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class BetaAppReviewDetail: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaAppReviewDetails = "betaAppReviewDetails"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaAppReviewDetail else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaAppReviewDetail, rhs: BetaAppReviewDetail) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class BetaGroups: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaGroups = "betaGroups"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaGroups else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaGroups, rhs: BetaGroups) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class BetaLicenseAgreement: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaLicenseAgreements = "betaLicenseAgreements"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaLicenseAgreement else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaLicenseAgreement, rhs: BetaLicenseAgreement) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Builds: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Builds else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: Builds, rhs: Builds) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class EndUserLicenseAgreement: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case endUserLicenseAgreements = "endUserLicenseAgreements"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? EndUserLicenseAgreement else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: EndUserLicenseAgreement, rhs: EndUserLicenseAgreement) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class GameCenterEnabledVersions: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case gameCenterEnabledVersions = "gameCenterEnabledVersions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? GameCenterEnabledVersions else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: GameCenterEnabledVersions, rhs: GameCenterEnabledVersions) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class InAppPurchases: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case inAppPurchases = "inAppPurchases"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? InAppPurchases else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: InAppPurchases, rhs: InAppPurchases) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class PreOrder: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPreOrders = "appPreOrders"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? PreOrder else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: PreOrder, rhs: PreOrder) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class PreReleaseVersions: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case preReleaseVersions = "preReleaseVersions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? PreReleaseVersions else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: PreReleaseVersions, rhs: PreReleaseVersions) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Prices: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPrices = "appPrices"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Prices else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: Prices, rhs: Prices) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appInfos: AppInfos? = nil, appStoreVersions: AppStoreVersions? = nil, availableTerritories: AvailableTerritories? = nil, betaAppLocalizations: BetaAppLocalizations? = nil, betaAppReviewDetail: BetaAppReviewDetail? = nil, betaGroups: BetaGroups? = nil, betaLicenseAgreement: BetaLicenseAgreement? = nil, builds: Builds? = nil, endUserLicenseAgreement: EndUserLicenseAgreement? = nil, gameCenterEnabledVersions: GameCenterEnabledVersions? = nil, inAppPurchases: InAppPurchases? = nil, preOrder: PreOrder? = nil, preReleaseVersions: PreReleaseVersions? = nil, prices: Prices? = nil) {
+ self.appInfos = appInfos
+ self.appStoreVersions = appStoreVersions
+ self.availableTerritories = availableTerritories
+ self.betaAppLocalizations = betaAppLocalizations
+ self.betaAppReviewDetail = betaAppReviewDetail
+ self.betaGroups = betaGroups
+ self.betaLicenseAgreement = betaLicenseAgreement
+ self.builds = builds
+ self.endUserLicenseAgreement = endUserLicenseAgreement
+ self.gameCenterEnabledVersions = gameCenterEnabledVersions
+ self.inAppPurchases = inAppPurchases
+ self.preOrder = preOrder
+ self.preReleaseVersions = preReleaseVersions
+ self.prices = prices
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appInfos = try container.decodeIfPresent("appInfos")
+ appStoreVersions = try container.decodeIfPresent("appStoreVersions")
+ availableTerritories = try container.decodeIfPresent("availableTerritories")
+ betaAppLocalizations = try container.decodeIfPresent("betaAppLocalizations")
+ betaAppReviewDetail = try container.decodeIfPresent("betaAppReviewDetail")
+ betaGroups = try container.decodeIfPresent("betaGroups")
+ betaLicenseAgreement = try container.decodeIfPresent("betaLicenseAgreement")
+ builds = try container.decodeIfPresent("builds")
+ endUserLicenseAgreement = try container.decodeIfPresent("endUserLicenseAgreement")
+ gameCenterEnabledVersions = try container.decodeIfPresent("gameCenterEnabledVersions")
+ inAppPurchases = try container.decodeIfPresent("inAppPurchases")
+ preOrder = try container.decodeIfPresent("preOrder")
+ preReleaseVersions = try container.decodeIfPresent("preReleaseVersions")
+ prices = try container.decodeIfPresent("prices")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(appInfos, forKey: "appInfos")
+ try container.encodeIfPresent(appStoreVersions, forKey: "appStoreVersions")
+ try container.encodeIfPresent(availableTerritories, forKey: "availableTerritories")
+ try container.encodeIfPresent(betaAppLocalizations, forKey: "betaAppLocalizations")
+ try container.encodeIfPresent(betaAppReviewDetail, forKey: "betaAppReviewDetail")
+ try container.encodeIfPresent(betaGroups, forKey: "betaGroups")
+ try container.encodeIfPresent(betaLicenseAgreement, forKey: "betaLicenseAgreement")
+ try container.encodeIfPresent(builds, forKey: "builds")
+ try container.encodeIfPresent(endUserLicenseAgreement, forKey: "endUserLicenseAgreement")
+ try container.encodeIfPresent(gameCenterEnabledVersions, forKey: "gameCenterEnabledVersions")
+ try container.encodeIfPresent(inAppPurchases, forKey: "inAppPurchases")
+ try container.encodeIfPresent(preOrder, forKey: "preOrder")
+ try container.encodeIfPresent(preReleaseVersions, forKey: "preReleaseVersions")
+ try container.encodeIfPresent(prices, forKey: "prices")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appInfos == object.appInfos else { return false }
+ guard self.appStoreVersions == object.appStoreVersions else { return false }
+ guard self.availableTerritories == object.availableTerritories else { return false }
+ guard self.betaAppLocalizations == object.betaAppLocalizations else { return false }
+ guard self.betaAppReviewDetail == object.betaAppReviewDetail else { return false }
+ guard self.betaGroups == object.betaGroups else { return false }
+ guard self.betaLicenseAgreement == object.betaLicenseAgreement else { return false }
+ guard self.builds == object.builds else { return false }
+ guard self.endUserLicenseAgreement == object.endUserLicenseAgreement else { return false }
+ guard self.gameCenterEnabledVersions == object.gameCenterEnabledVersions else { return false }
+ guard self.inAppPurchases == object.inAppPurchases else { return false }
+ guard self.preOrder == object.preOrder else { return false }
+ guard self.preReleaseVersions == object.preReleaseVersions else { return false }
+ guard self.prices == object.prices else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppBetaTestersLinkagesRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppBetaTestersLinkagesRequest.swift
new file mode 100644
index 000000000..c5cdd7c91
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppBetaTestersLinkagesRequest.swift
@@ -0,0 +1,78 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppBetaTestersLinkagesRequest: APIModel {
+
+ public var data: [DataType]
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaTesters = "betaTesters"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppBetaTestersLinkagesRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppBetaTestersLinkagesRequest, rhs: AppBetaTestersLinkagesRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppCategoriesResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppCategoriesResponse.swift
new file mode 100644
index 000000000..ef70b455f
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppCategoriesResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppCategoriesResponse: APIModel {
+
+ public var data: [AppCategory]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [Included]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [AppCategory], links: PagedDocumentLinks, included: [Included]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppCategoriesResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppCategoriesResponse, rhs: AppCategoriesResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppCategory.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppCategory.swift
new file mode 100644
index 000000000..359b22095
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppCategory.swift
@@ -0,0 +1,369 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppCategory: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appCategories = "appCategories"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var platforms: [Platform]?
+
+ public init(platforms: [Platform]? = nil) {
+ self.platforms = platforms
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ platforms = try container.decodeArrayIfPresent("platforms")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(platforms, forKey: "platforms")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.platforms == object.platforms else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var parent: Parent?
+
+ public var subcategories: Subcategories?
+
+ public class Parent: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appCategories = "appCategories"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Parent else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: Parent, rhs: Parent) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Subcategories: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appCategories = "appCategories"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Subcategories else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: Subcategories, rhs: Subcategories) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(parent: Parent? = nil, subcategories: Subcategories? = nil) {
+ self.parent = parent
+ self.subcategories = subcategories
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ parent = try container.decodeIfPresent("parent")
+ subcategories = try container.decodeIfPresent("subcategories")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(parent, forKey: "parent")
+ try container.encodeIfPresent(subcategories, forKey: "subcategories")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.parent == object.parent else { return false }
+ guard self.subcategories == object.subcategories else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppCategory else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppCategory, rhs: AppCategory) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppCategoryResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppCategoryResponse.swift
new file mode 100644
index 000000000..4098f63e9
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppCategoryResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppCategoryResponse: APIModel {
+
+ public var data: AppCategory
+
+ public var links: DocumentLinks
+
+ public var included: [Included]?
+
+ public init(data: AppCategory, links: DocumentLinks, included: [Included]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppCategoryResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppCategoryResponse, rhs: AppCategoryResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppEncryptionDeclaration.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppEncryptionDeclaration.swift
new file mode 100644
index 000000000..65b8f7c8e
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppEncryptionDeclaration.swift
@@ -0,0 +1,308 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppEncryptionDeclaration: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appEncryptionDeclarations = "appEncryptionDeclarations"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var appEncryptionDeclarationState: AppEncryptionDeclarationState?
+
+ public var availableOnFrenchStore: Bool?
+
+ public var codeValue: String?
+
+ public var containsProprietaryCryptography: Bool?
+
+ public var containsThirdPartyCryptography: Bool?
+
+ public var documentName: String?
+
+ public var documentType: String?
+
+ public var documentUrl: String?
+
+ public var exempt: Bool?
+
+ public var platform: Platform?
+
+ public var uploadedDate: DateTime?
+
+ public var usesEncryption: Bool?
+
+ public init(appEncryptionDeclarationState: AppEncryptionDeclarationState? = nil, availableOnFrenchStore: Bool? = nil, codeValue: String? = nil, containsProprietaryCryptography: Bool? = nil, containsThirdPartyCryptography: Bool? = nil, documentName: String? = nil, documentType: String? = nil, documentUrl: String? = nil, exempt: Bool? = nil, platform: Platform? = nil, uploadedDate: DateTime? = nil, usesEncryption: Bool? = nil) {
+ self.appEncryptionDeclarationState = appEncryptionDeclarationState
+ self.availableOnFrenchStore = availableOnFrenchStore
+ self.codeValue = codeValue
+ self.containsProprietaryCryptography = containsProprietaryCryptography
+ self.containsThirdPartyCryptography = containsThirdPartyCryptography
+ self.documentName = documentName
+ self.documentType = documentType
+ self.documentUrl = documentUrl
+ self.exempt = exempt
+ self.platform = platform
+ self.uploadedDate = uploadedDate
+ self.usesEncryption = usesEncryption
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appEncryptionDeclarationState = try container.decodeIfPresent("appEncryptionDeclarationState")
+ availableOnFrenchStore = try container.decodeIfPresent("availableOnFrenchStore")
+ codeValue = try container.decodeIfPresent("codeValue")
+ containsProprietaryCryptography = try container.decodeIfPresent("containsProprietaryCryptography")
+ containsThirdPartyCryptography = try container.decodeIfPresent("containsThirdPartyCryptography")
+ documentName = try container.decodeIfPresent("documentName")
+ documentType = try container.decodeIfPresent("documentType")
+ documentUrl = try container.decodeIfPresent("documentUrl")
+ exempt = try container.decodeIfPresent("exempt")
+ platform = try container.decodeIfPresent("platform")
+ uploadedDate = try container.decodeIfPresent("uploadedDate")
+ usesEncryption = try container.decodeIfPresent("usesEncryption")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(appEncryptionDeclarationState, forKey: "appEncryptionDeclarationState")
+ try container.encodeIfPresent(availableOnFrenchStore, forKey: "availableOnFrenchStore")
+ try container.encodeIfPresent(codeValue, forKey: "codeValue")
+ try container.encodeIfPresent(containsProprietaryCryptography, forKey: "containsProprietaryCryptography")
+ try container.encodeIfPresent(containsThirdPartyCryptography, forKey: "containsThirdPartyCryptography")
+ try container.encodeIfPresent(documentName, forKey: "documentName")
+ try container.encodeIfPresent(documentType, forKey: "documentType")
+ try container.encodeIfPresent(documentUrl, forKey: "documentUrl")
+ try container.encodeIfPresent(exempt, forKey: "exempt")
+ try container.encodeIfPresent(platform, forKey: "platform")
+ try container.encodeIfPresent(uploadedDate, forKey: "uploadedDate")
+ try container.encodeIfPresent(usesEncryption, forKey: "usesEncryption")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.appEncryptionDeclarationState == object.appEncryptionDeclarationState else { return false }
+ guard self.availableOnFrenchStore == object.availableOnFrenchStore else { return false }
+ guard self.codeValue == object.codeValue else { return false }
+ guard self.containsProprietaryCryptography == object.containsProprietaryCryptography else { return false }
+ guard self.containsThirdPartyCryptography == object.containsThirdPartyCryptography else { return false }
+ guard self.documentName == object.documentName else { return false }
+ guard self.documentType == object.documentType else { return false }
+ guard self.documentUrl == object.documentUrl else { return false }
+ guard self.exempt == object.exempt else { return false }
+ guard self.platform == object.platform else { return false }
+ guard self.uploadedDate == object.uploadedDate else { return false }
+ guard self.usesEncryption == object.usesEncryption else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var app: App?
+
+ public class App: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(app: App? = nil) {
+ self.app = app
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ app = try container.decodeIfPresent("app")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(app, forKey: "app")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.app == object.app else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppEncryptionDeclaration else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppEncryptionDeclaration, rhs: AppEncryptionDeclaration) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppEncryptionDeclarationBuildsLinkagesRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppEncryptionDeclarationBuildsLinkagesRequest.swift
new file mode 100644
index 000000000..8ac09fa62
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppEncryptionDeclarationBuildsLinkagesRequest.swift
@@ -0,0 +1,78 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppEncryptionDeclarationBuildsLinkagesRequest: APIModel {
+
+ public var data: [DataType]
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppEncryptionDeclarationBuildsLinkagesRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppEncryptionDeclarationBuildsLinkagesRequest, rhs: AppEncryptionDeclarationBuildsLinkagesRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppEncryptionDeclarationResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppEncryptionDeclarationResponse.swift
new file mode 100644
index 000000000..847eea368
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppEncryptionDeclarationResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppEncryptionDeclarationResponse: APIModel {
+
+ public var data: AppEncryptionDeclaration
+
+ public var links: DocumentLinks
+
+ public var included: [App]?
+
+ public init(data: AppEncryptionDeclaration, links: DocumentLinks, included: [App]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppEncryptionDeclarationResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppEncryptionDeclarationResponse, rhs: AppEncryptionDeclarationResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppEncryptionDeclarationState.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppEncryptionDeclarationState.swift
new file mode 100644
index 000000000..daaa1e606
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppEncryptionDeclarationState.swift
@@ -0,0 +1,14 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public enum AppEncryptionDeclarationState: String, Codable, Equatable, CaseIterable {
+ case inReview = "IN_REVIEW"
+ case approved = "APPROVED"
+ case rejected = "REJECTED"
+ case invalid = "INVALID"
+ case expired = "EXPIRED"
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppEncryptionDeclarationsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppEncryptionDeclarationsResponse.swift
new file mode 100644
index 000000000..7363e4081
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppEncryptionDeclarationsResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppEncryptionDeclarationsResponse: APIModel {
+
+ public var data: [AppEncryptionDeclaration]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [App]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [AppEncryptionDeclaration], links: PagedDocumentLinks, included: [App]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppEncryptionDeclarationsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppEncryptionDeclarationsResponse, rhs: AppEncryptionDeclarationsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfo.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfo.swift
new file mode 100644
index 000000000..92fd713b5
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfo.swift
@@ -0,0 +1,1113 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppInfo: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appInfos = "appInfos"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var appStoreAgeRating: AppStoreAgeRating?
+
+ public var appStoreState: AppStoreVersionState?
+
+ public var brazilAgeRating: BrazilAgeRating?
+
+ public var kidsAgeBand: KidsAgeBand?
+
+ public init(appStoreAgeRating: AppStoreAgeRating? = nil, appStoreState: AppStoreVersionState? = nil, brazilAgeRating: BrazilAgeRating? = nil, kidsAgeBand: KidsAgeBand? = nil) {
+ self.appStoreAgeRating = appStoreAgeRating
+ self.appStoreState = appStoreState
+ self.brazilAgeRating = brazilAgeRating
+ self.kidsAgeBand = kidsAgeBand
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appStoreAgeRating = try container.decodeIfPresent("appStoreAgeRating")
+ appStoreState = try container.decodeIfPresent("appStoreState")
+ brazilAgeRating = try container.decodeIfPresent("brazilAgeRating")
+ kidsAgeBand = try container.decodeIfPresent("kidsAgeBand")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(appStoreAgeRating, forKey: "appStoreAgeRating")
+ try container.encodeIfPresent(appStoreState, forKey: "appStoreState")
+ try container.encodeIfPresent(brazilAgeRating, forKey: "brazilAgeRating")
+ try container.encodeIfPresent(kidsAgeBand, forKey: "kidsAgeBand")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.appStoreAgeRating == object.appStoreAgeRating else { return false }
+ guard self.appStoreState == object.appStoreState else { return false }
+ guard self.brazilAgeRating == object.brazilAgeRating else { return false }
+ guard self.kidsAgeBand == object.kidsAgeBand else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var app: App?
+
+ public var appInfoLocalizations: AppInfoLocalizations?
+
+ public var primaryCategory: PrimaryCategory?
+
+ public var primarySubcategoryOne: PrimarySubcategoryOne?
+
+ public var primarySubcategoryTwo: PrimarySubcategoryTwo?
+
+ public var secondaryCategory: SecondaryCategory?
+
+ public var secondarySubcategoryOne: SecondarySubcategoryOne?
+
+ public var secondarySubcategoryTwo: SecondarySubcategoryTwo?
+
+ public class App: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class AppInfoLocalizations: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appInfoLocalizations = "appInfoLocalizations"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppInfoLocalizations else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppInfoLocalizations, rhs: AppInfoLocalizations) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class PrimaryCategory: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appCategories = "appCategories"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? PrimaryCategory else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: PrimaryCategory, rhs: PrimaryCategory) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class PrimarySubcategoryOne: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appCategories = "appCategories"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? PrimarySubcategoryOne else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: PrimarySubcategoryOne, rhs: PrimarySubcategoryOne) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class PrimarySubcategoryTwo: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appCategories = "appCategories"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? PrimarySubcategoryTwo else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: PrimarySubcategoryTwo, rhs: PrimarySubcategoryTwo) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class SecondaryCategory: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appCategories = "appCategories"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? SecondaryCategory else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: SecondaryCategory, rhs: SecondaryCategory) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class SecondarySubcategoryOne: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appCategories = "appCategories"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? SecondarySubcategoryOne else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: SecondarySubcategoryOne, rhs: SecondarySubcategoryOne) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class SecondarySubcategoryTwo: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appCategories = "appCategories"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? SecondarySubcategoryTwo else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: SecondarySubcategoryTwo, rhs: SecondarySubcategoryTwo) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(app: App? = nil, appInfoLocalizations: AppInfoLocalizations? = nil, primaryCategory: PrimaryCategory? = nil, primarySubcategoryOne: PrimarySubcategoryOne? = nil, primarySubcategoryTwo: PrimarySubcategoryTwo? = nil, secondaryCategory: SecondaryCategory? = nil, secondarySubcategoryOne: SecondarySubcategoryOne? = nil, secondarySubcategoryTwo: SecondarySubcategoryTwo? = nil) {
+ self.app = app
+ self.appInfoLocalizations = appInfoLocalizations
+ self.primaryCategory = primaryCategory
+ self.primarySubcategoryOne = primarySubcategoryOne
+ self.primarySubcategoryTwo = primarySubcategoryTwo
+ self.secondaryCategory = secondaryCategory
+ self.secondarySubcategoryOne = secondarySubcategoryOne
+ self.secondarySubcategoryTwo = secondarySubcategoryTwo
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ app = try container.decodeIfPresent("app")
+ appInfoLocalizations = try container.decodeIfPresent("appInfoLocalizations")
+ primaryCategory = try container.decodeIfPresent("primaryCategory")
+ primarySubcategoryOne = try container.decodeIfPresent("primarySubcategoryOne")
+ primarySubcategoryTwo = try container.decodeIfPresent("primarySubcategoryTwo")
+ secondaryCategory = try container.decodeIfPresent("secondaryCategory")
+ secondarySubcategoryOne = try container.decodeIfPresent("secondarySubcategoryOne")
+ secondarySubcategoryTwo = try container.decodeIfPresent("secondarySubcategoryTwo")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(app, forKey: "app")
+ try container.encodeIfPresent(appInfoLocalizations, forKey: "appInfoLocalizations")
+ try container.encodeIfPresent(primaryCategory, forKey: "primaryCategory")
+ try container.encodeIfPresent(primarySubcategoryOne, forKey: "primarySubcategoryOne")
+ try container.encodeIfPresent(primarySubcategoryTwo, forKey: "primarySubcategoryTwo")
+ try container.encodeIfPresent(secondaryCategory, forKey: "secondaryCategory")
+ try container.encodeIfPresent(secondarySubcategoryOne, forKey: "secondarySubcategoryOne")
+ try container.encodeIfPresent(secondarySubcategoryTwo, forKey: "secondarySubcategoryTwo")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.app == object.app else { return false }
+ guard self.appInfoLocalizations == object.appInfoLocalizations else { return false }
+ guard self.primaryCategory == object.primaryCategory else { return false }
+ guard self.primarySubcategoryOne == object.primarySubcategoryOne else { return false }
+ guard self.primarySubcategoryTwo == object.primarySubcategoryTwo else { return false }
+ guard self.secondaryCategory == object.secondaryCategory else { return false }
+ guard self.secondarySubcategoryOne == object.secondarySubcategoryOne else { return false }
+ guard self.secondarySubcategoryTwo == object.secondarySubcategoryTwo else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppInfo else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppInfo, rhs: AppInfo) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoLocalization.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoLocalization.swift
new file mode 100644
index 000000000..93ec6ec8f
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoLocalization.swift
@@ -0,0 +1,266 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppInfoLocalization: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appInfoLocalizations = "appInfoLocalizations"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var locale: String?
+
+ public var name: String?
+
+ public var privacyPolicyText: String?
+
+ public var privacyPolicyUrl: String?
+
+ public var subtitle: String?
+
+ public init(locale: String? = nil, name: String? = nil, privacyPolicyText: String? = nil, privacyPolicyUrl: String? = nil, subtitle: String? = nil) {
+ self.locale = locale
+ self.name = name
+ self.privacyPolicyText = privacyPolicyText
+ self.privacyPolicyUrl = privacyPolicyUrl
+ self.subtitle = subtitle
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ locale = try container.decodeIfPresent("locale")
+ name = try container.decodeIfPresent("name")
+ privacyPolicyText = try container.decodeIfPresent("privacyPolicyText")
+ privacyPolicyUrl = try container.decodeIfPresent("privacyPolicyUrl")
+ subtitle = try container.decodeIfPresent("subtitle")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(locale, forKey: "locale")
+ try container.encodeIfPresent(name, forKey: "name")
+ try container.encodeIfPresent(privacyPolicyText, forKey: "privacyPolicyText")
+ try container.encodeIfPresent(privacyPolicyUrl, forKey: "privacyPolicyUrl")
+ try container.encodeIfPresent(subtitle, forKey: "subtitle")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.locale == object.locale else { return false }
+ guard self.name == object.name else { return false }
+ guard self.privacyPolicyText == object.privacyPolicyText else { return false }
+ guard self.privacyPolicyUrl == object.privacyPolicyUrl else { return false }
+ guard self.subtitle == object.subtitle else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var appInfo: AppInfo?
+
+ public class AppInfo: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appInfos = "appInfos"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppInfo else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppInfo, rhs: AppInfo) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appInfo: AppInfo? = nil) {
+ self.appInfo = appInfo
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appInfo = try container.decodeIfPresent("appInfo")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(appInfo, forKey: "appInfo")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appInfo == object.appInfo else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppInfoLocalization else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppInfoLocalization, rhs: AppInfoLocalization) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoLocalizationCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoLocalizationCreateRequest.swift
new file mode 100644
index 000000000..0d7280f18
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoLocalizationCreateRequest.swift
@@ -0,0 +1,242 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppInfoLocalizationCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appInfoLocalizations = "appInfoLocalizations"
+ }
+
+ public var relationships: Relationships
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public class Relationships: APIModel {
+
+ public var appInfo: AppInfo
+
+ public class AppInfo: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appInfos = "appInfos"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppInfo else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppInfo, rhs: AppInfo) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appInfo: AppInfo) {
+ self.appInfo = appInfo
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appInfo = try container.decode("appInfo")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(appInfo, forKey: "appInfo")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appInfo == object.appInfo else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Attributes: APIModel {
+
+ public var locale: String
+
+ public var name: String?
+
+ public var privacyPolicyText: String?
+
+ public var privacyPolicyUrl: String?
+
+ public var subtitle: String?
+
+ public init(locale: String, name: String? = nil, privacyPolicyText: String? = nil, privacyPolicyUrl: String? = nil, subtitle: String? = nil) {
+ self.locale = locale
+ self.name = name
+ self.privacyPolicyText = privacyPolicyText
+ self.privacyPolicyUrl = privacyPolicyUrl
+ self.subtitle = subtitle
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ locale = try container.decode("locale")
+ name = try container.decodeIfPresent("name")
+ privacyPolicyText = try container.decodeIfPresent("privacyPolicyText")
+ privacyPolicyUrl = try container.decodeIfPresent("privacyPolicyUrl")
+ subtitle = try container.decodeIfPresent("subtitle")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(locale, forKey: "locale")
+ try container.encodeIfPresent(name, forKey: "name")
+ try container.encodeIfPresent(privacyPolicyText, forKey: "privacyPolicyText")
+ try container.encodeIfPresent(privacyPolicyUrl, forKey: "privacyPolicyUrl")
+ try container.encodeIfPresent(subtitle, forKey: "subtitle")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.locale == object.locale else { return false }
+ guard self.name == object.name else { return false }
+ guard self.privacyPolicyText == object.privacyPolicyText else { return false }
+ guard self.privacyPolicyUrl == object.privacyPolicyUrl else { return false }
+ guard self.subtitle == object.subtitle else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, attributes: Attributes, type: `Type`) {
+ self.relationships = relationships
+ self.attributes = attributes
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppInfoLocalizationCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppInfoLocalizationCreateRequest, rhs: AppInfoLocalizationCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoLocalizationResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoLocalizationResponse.swift
new file mode 100644
index 000000000..80ab3fe5b
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoLocalizationResponse.swift
@@ -0,0 +1,43 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppInfoLocalizationResponse: APIModel {
+
+ public var data: AppInfoLocalization
+
+ public var links: DocumentLinks
+
+ public init(data: AppInfoLocalization, links: DocumentLinks) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppInfoLocalizationResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppInfoLocalizationResponse, rhs: AppInfoLocalizationResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoLocalizationUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoLocalizationUpdateRequest.swift
new file mode 100644
index 000000000..ff12f4930
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoLocalizationUpdateRequest.swift
@@ -0,0 +1,133 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppInfoLocalizationUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appInfoLocalizations = "appInfoLocalizations"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var name: String?
+
+ public var privacyPolicyText: String?
+
+ public var privacyPolicyUrl: String?
+
+ public var subtitle: String?
+
+ public init(name: String? = nil, privacyPolicyText: String? = nil, privacyPolicyUrl: String? = nil, subtitle: String? = nil) {
+ self.name = name
+ self.privacyPolicyText = privacyPolicyText
+ self.privacyPolicyUrl = privacyPolicyUrl
+ self.subtitle = subtitle
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ name = try container.decodeIfPresent("name")
+ privacyPolicyText = try container.decodeIfPresent("privacyPolicyText")
+ privacyPolicyUrl = try container.decodeIfPresent("privacyPolicyUrl")
+ subtitle = try container.decodeIfPresent("subtitle")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(name, forKey: "name")
+ try container.encodeIfPresent(privacyPolicyText, forKey: "privacyPolicyText")
+ try container.encodeIfPresent(privacyPolicyUrl, forKey: "privacyPolicyUrl")
+ try container.encodeIfPresent(subtitle, forKey: "subtitle")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.name == object.name else { return false }
+ guard self.privacyPolicyText == object.privacyPolicyText else { return false }
+ guard self.privacyPolicyUrl == object.privacyPolicyUrl else { return false }
+ guard self.subtitle == object.subtitle else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppInfoLocalizationUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppInfoLocalizationUpdateRequest, rhs: AppInfoLocalizationUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoLocalizationsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoLocalizationsResponse.swift
new file mode 100644
index 000000000..9f91ba3e4
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoLocalizationsResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppInfoLocalizationsResponse: APIModel {
+
+ public var data: [AppInfoLocalization]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public init(data: [AppInfoLocalization], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppInfoLocalizationsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppInfoLocalizationsResponse, rhs: AppInfoLocalizationsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoResponse.swift
new file mode 100644
index 000000000..1ea14a102
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppInfoResponse: APIModel {
+
+ public var data: AppInfo
+
+ public var links: DocumentLinks
+
+ public var included: [Included]?
+
+ public init(data: AppInfo, links: DocumentLinks, included: [Included]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppInfoResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppInfoResponse, rhs: AppInfoResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoUpdateRequest.swift
new file mode 100644
index 000000000..99fe78e2a
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfoUpdateRequest.swift
@@ -0,0 +1,577 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppInfoUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appInfos = "appInfos"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var relationships: Relationships?
+
+ public class Relationships: APIModel {
+
+ public var primaryCategory: PrimaryCategory?
+
+ public var primarySubcategoryOne: PrimarySubcategoryOne?
+
+ public var primarySubcategoryTwo: PrimarySubcategoryTwo?
+
+ public var secondaryCategory: SecondaryCategory?
+
+ public var secondarySubcategoryOne: SecondarySubcategoryOne?
+
+ public var secondarySubcategoryTwo: SecondarySubcategoryTwo?
+
+ public class PrimaryCategory: APIModel {
+
+ public var data: DataType?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appCategories = "appCategories"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? PrimaryCategory else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: PrimaryCategory, rhs: PrimaryCategory) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class PrimarySubcategoryOne: APIModel {
+
+ public var data: DataType?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appCategories = "appCategories"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? PrimarySubcategoryOne else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: PrimarySubcategoryOne, rhs: PrimarySubcategoryOne) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class PrimarySubcategoryTwo: APIModel {
+
+ public var data: DataType?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appCategories = "appCategories"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? PrimarySubcategoryTwo else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: PrimarySubcategoryTwo, rhs: PrimarySubcategoryTwo) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class SecondaryCategory: APIModel {
+
+ public var data: DataType?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appCategories = "appCategories"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? SecondaryCategory else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: SecondaryCategory, rhs: SecondaryCategory) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class SecondarySubcategoryOne: APIModel {
+
+ public var data: DataType?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appCategories = "appCategories"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? SecondarySubcategoryOne else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: SecondarySubcategoryOne, rhs: SecondarySubcategoryOne) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class SecondarySubcategoryTwo: APIModel {
+
+ public var data: DataType?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appCategories = "appCategories"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? SecondarySubcategoryTwo else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: SecondarySubcategoryTwo, rhs: SecondarySubcategoryTwo) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(primaryCategory: PrimaryCategory? = nil, primarySubcategoryOne: PrimarySubcategoryOne? = nil, primarySubcategoryTwo: PrimarySubcategoryTwo? = nil, secondaryCategory: SecondaryCategory? = nil, secondarySubcategoryOne: SecondarySubcategoryOne? = nil, secondarySubcategoryTwo: SecondarySubcategoryTwo? = nil) {
+ self.primaryCategory = primaryCategory
+ self.primarySubcategoryOne = primarySubcategoryOne
+ self.primarySubcategoryTwo = primarySubcategoryTwo
+ self.secondaryCategory = secondaryCategory
+ self.secondarySubcategoryOne = secondarySubcategoryOne
+ self.secondarySubcategoryTwo = secondarySubcategoryTwo
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ primaryCategory = try container.decodeIfPresent("primaryCategory")
+ primarySubcategoryOne = try container.decodeIfPresent("primarySubcategoryOne")
+ primarySubcategoryTwo = try container.decodeIfPresent("primarySubcategoryTwo")
+ secondaryCategory = try container.decodeIfPresent("secondaryCategory")
+ secondarySubcategoryOne = try container.decodeIfPresent("secondarySubcategoryOne")
+ secondarySubcategoryTwo = try container.decodeIfPresent("secondarySubcategoryTwo")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(primaryCategory, forKey: "primaryCategory")
+ try container.encodeIfPresent(primarySubcategoryOne, forKey: "primarySubcategoryOne")
+ try container.encodeIfPresent(primarySubcategoryTwo, forKey: "primarySubcategoryTwo")
+ try container.encodeIfPresent(secondaryCategory, forKey: "secondaryCategory")
+ try container.encodeIfPresent(secondarySubcategoryOne, forKey: "secondarySubcategoryOne")
+ try container.encodeIfPresent(secondarySubcategoryTwo, forKey: "secondarySubcategoryTwo")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.primaryCategory == object.primaryCategory else { return false }
+ guard self.primarySubcategoryOne == object.primarySubcategoryOne else { return false }
+ guard self.primarySubcategoryTwo == object.primarySubcategoryTwo else { return false }
+ guard self.secondaryCategory == object.secondaryCategory else { return false }
+ guard self.secondarySubcategoryOne == object.secondarySubcategoryOne else { return false }
+ guard self.secondarySubcategoryTwo == object.secondarySubcategoryTwo else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, relationships: Relationships? = nil) {
+ self.id = id
+ self.type = type
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppInfoUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppInfoUpdateRequest, rhs: AppInfoUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfosResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfosResponse.swift
new file mode 100644
index 000000000..1e8c03204
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppInfosResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppInfosResponse: APIModel {
+
+ public var data: [AppInfo]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [Included]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [AppInfo], links: PagedDocumentLinks, included: [Included]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppInfosResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppInfosResponse, rhs: AppInfosResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppMediaAssetState.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppMediaAssetState.swift
new file mode 100644
index 000000000..8f16b8e11
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppMediaAssetState.swift
@@ -0,0 +1,56 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppMediaAssetState: APIModel {
+
+ public enum State: String, Codable, Equatable, CaseIterable {
+ case awaitingUpload = "AWAITING_UPLOAD"
+ case uploadComplete = "UPLOAD_COMPLETE"
+ case complete = "COMPLETE"
+ case failed = "FAILED"
+ }
+
+ public var errors: [AppMediaStateError]?
+
+ public var state: State?
+
+ public var warnings: [AppMediaStateError]?
+
+ public init(errors: [AppMediaStateError]? = nil, state: State? = nil, warnings: [AppMediaStateError]? = nil) {
+ self.errors = errors
+ self.state = state
+ self.warnings = warnings
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ errors = try container.decodeArrayIfPresent("errors")
+ state = try container.decodeIfPresent("state")
+ warnings = try container.decodeArrayIfPresent("warnings")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(errors, forKey: "errors")
+ try container.encodeIfPresent(state, forKey: "state")
+ try container.encodeIfPresent(warnings, forKey: "warnings")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppMediaAssetState else { return false }
+ guard self.errors == object.errors else { return false }
+ guard self.state == object.state else { return false }
+ guard self.warnings == object.warnings else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppMediaAssetState, rhs: AppMediaAssetState) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppMediaStateError.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppMediaStateError.swift
new file mode 100644
index 000000000..e34e448a5
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppMediaStateError.swift
@@ -0,0 +1,43 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppMediaStateError: APIModel {
+
+ public var code: String?
+
+ public var description: String?
+
+ public init(code: String? = nil, description: String? = nil) {
+ self.code = code
+ self.description = description
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ code = try container.decodeIfPresent("code")
+ description = try container.decodeIfPresent("description")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(code, forKey: "code")
+ try container.encodeIfPresent(description, forKey: "description")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppMediaStateError else { return false }
+ guard self.code == object.code else { return false }
+ guard self.description == object.description else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppMediaStateError, rhs: AppMediaStateError) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreOrder.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreOrder.swift
new file mode 100644
index 000000000..fe296ec48
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreOrder.swift
@@ -0,0 +1,248 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPreOrder: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPreOrders = "appPreOrders"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var appReleaseDate: DateDay?
+
+ public var preOrderAvailableDate: DateDay?
+
+ public init(appReleaseDate: DateDay? = nil, preOrderAvailableDate: DateDay? = nil) {
+ self.appReleaseDate = appReleaseDate
+ self.preOrderAvailableDate = preOrderAvailableDate
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appReleaseDate = try container.decodeIfPresent("appReleaseDate")
+ preOrderAvailableDate = try container.decodeIfPresent("preOrderAvailableDate")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(appReleaseDate, forKey: "appReleaseDate")
+ try container.encodeIfPresent(preOrderAvailableDate, forKey: "preOrderAvailableDate")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.appReleaseDate == object.appReleaseDate else { return false }
+ guard self.preOrderAvailableDate == object.preOrderAvailableDate else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var app: App?
+
+ public class App: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(app: App? = nil) {
+ self.app = app
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ app = try container.decodeIfPresent("app")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(app, forKey: "app")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.app == object.app else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPreOrder else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPreOrder, rhs: AppPreOrder) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreOrderCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreOrderCreateRequest.swift
new file mode 100644
index 000000000..33805d355
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreOrderCreateRequest.swift
@@ -0,0 +1,218 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPreOrderCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPreOrders = "appPreOrders"
+ }
+
+ public var relationships: Relationships
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Relationships: APIModel {
+
+ public var app: App
+
+ public class App: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(app: App) {
+ self.app = app
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ app = try container.decode("app")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(app, forKey: "app")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.app == object.app else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Attributes: APIModel {
+
+ public var appReleaseDate: DateDay?
+
+ public init(appReleaseDate: DateDay? = nil) {
+ self.appReleaseDate = appReleaseDate
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appReleaseDate = try container.decodeIfPresent("appReleaseDate")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(appReleaseDate, forKey: "appReleaseDate")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.appReleaseDate == object.appReleaseDate else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, type: `Type`, attributes: Attributes? = nil) {
+ self.relationships = relationships
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPreOrderCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPreOrderCreateRequest, rhs: AppPreOrderCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreOrderResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreOrderResponse.swift
new file mode 100644
index 000000000..dc73b9bd7
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreOrderResponse.swift
@@ -0,0 +1,43 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPreOrderResponse: APIModel {
+
+ public var data: AppPreOrder
+
+ public var links: DocumentLinks
+
+ public init(data: AppPreOrder, links: DocumentLinks) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPreOrderResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPreOrderResponse, rhs: AppPreOrderResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreOrderUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreOrderUpdateRequest.swift
new file mode 100644
index 000000000..7e3fa7e32
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreOrderUpdateRequest.swift
@@ -0,0 +1,115 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPreOrderUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPreOrders = "appPreOrders"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var appReleaseDate: DateDay?
+
+ public init(appReleaseDate: DateDay? = nil) {
+ self.appReleaseDate = appReleaseDate
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appReleaseDate = try container.decodeIfPresent("appReleaseDate")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(appReleaseDate, forKey: "appReleaseDate")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.appReleaseDate == object.appReleaseDate else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPreOrderUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPreOrderUpdateRequest, rhs: AppPreOrderUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreview.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreview.swift
new file mode 100644
index 000000000..d7897c85d
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreview.swift
@@ -0,0 +1,290 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPreview: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPreviews = "appPreviews"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var assetDeliveryState: AppMediaAssetState?
+
+ public var fileName: String?
+
+ public var fileSize: Int?
+
+ public var mimeType: String?
+
+ public var previewFrameTimeCode: String?
+
+ public var previewImage: ImageAsset?
+
+ public var sourceFileChecksum: String?
+
+ public var uploadOperations: [UploadOperation]?
+
+ public var videoUrl: String?
+
+ public init(assetDeliveryState: AppMediaAssetState? = nil, fileName: String? = nil, fileSize: Int? = nil, mimeType: String? = nil, previewFrameTimeCode: String? = nil, previewImage: ImageAsset? = nil, sourceFileChecksum: String? = nil, uploadOperations: [UploadOperation]? = nil, videoUrl: String? = nil) {
+ self.assetDeliveryState = assetDeliveryState
+ self.fileName = fileName
+ self.fileSize = fileSize
+ self.mimeType = mimeType
+ self.previewFrameTimeCode = previewFrameTimeCode
+ self.previewImage = previewImage
+ self.sourceFileChecksum = sourceFileChecksum
+ self.uploadOperations = uploadOperations
+ self.videoUrl = videoUrl
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ assetDeliveryState = try container.decodeIfPresent("assetDeliveryState")
+ fileName = try container.decodeIfPresent("fileName")
+ fileSize = try container.decodeIfPresent("fileSize")
+ mimeType = try container.decodeIfPresent("mimeType")
+ previewFrameTimeCode = try container.decodeIfPresent("previewFrameTimeCode")
+ previewImage = try container.decodeIfPresent("previewImage")
+ sourceFileChecksum = try container.decodeIfPresent("sourceFileChecksum")
+ uploadOperations = try container.decodeArrayIfPresent("uploadOperations")
+ videoUrl = try container.decodeIfPresent("videoUrl")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(assetDeliveryState, forKey: "assetDeliveryState")
+ try container.encodeIfPresent(fileName, forKey: "fileName")
+ try container.encodeIfPresent(fileSize, forKey: "fileSize")
+ try container.encodeIfPresent(mimeType, forKey: "mimeType")
+ try container.encodeIfPresent(previewFrameTimeCode, forKey: "previewFrameTimeCode")
+ try container.encodeIfPresent(previewImage, forKey: "previewImage")
+ try container.encodeIfPresent(sourceFileChecksum, forKey: "sourceFileChecksum")
+ try container.encodeIfPresent(uploadOperations, forKey: "uploadOperations")
+ try container.encodeIfPresent(videoUrl, forKey: "videoUrl")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.assetDeliveryState == object.assetDeliveryState else { return false }
+ guard self.fileName == object.fileName else { return false }
+ guard self.fileSize == object.fileSize else { return false }
+ guard self.mimeType == object.mimeType else { return false }
+ guard self.previewFrameTimeCode == object.previewFrameTimeCode else { return false }
+ guard self.previewImage == object.previewImage else { return false }
+ guard self.sourceFileChecksum == object.sourceFileChecksum else { return false }
+ guard self.uploadOperations == object.uploadOperations else { return false }
+ guard self.videoUrl == object.videoUrl else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var appPreviewSet: AppPreviewSet?
+
+ public class AppPreviewSet: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPreviewSets = "appPreviewSets"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPreviewSet else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPreviewSet, rhs: AppPreviewSet) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appPreviewSet: AppPreviewSet? = nil) {
+ self.appPreviewSet = appPreviewSet
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appPreviewSet = try container.decodeIfPresent("appPreviewSet")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(appPreviewSet, forKey: "appPreviewSet")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appPreviewSet == object.appPreviewSet else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPreview else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPreview, rhs: AppPreview) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewCreateRequest.swift
new file mode 100644
index 000000000..7d2043bb0
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewCreateRequest.swift
@@ -0,0 +1,236 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPreviewCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPreviews = "appPreviews"
+ }
+
+ public var relationships: Relationships
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public class Relationships: APIModel {
+
+ public var appPreviewSet: AppPreviewSet
+
+ public class AppPreviewSet: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPreviewSets = "appPreviewSets"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPreviewSet else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPreviewSet, rhs: AppPreviewSet) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appPreviewSet: AppPreviewSet) {
+ self.appPreviewSet = appPreviewSet
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appPreviewSet = try container.decode("appPreviewSet")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(appPreviewSet, forKey: "appPreviewSet")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appPreviewSet == object.appPreviewSet else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Attributes: APIModel {
+
+ public var fileName: String
+
+ public var fileSize: Int
+
+ public var mimeType: String?
+
+ public var previewFrameTimeCode: String?
+
+ public init(fileName: String, fileSize: Int, mimeType: String? = nil, previewFrameTimeCode: String? = nil) {
+ self.fileName = fileName
+ self.fileSize = fileSize
+ self.mimeType = mimeType
+ self.previewFrameTimeCode = previewFrameTimeCode
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ fileName = try container.decode("fileName")
+ fileSize = try container.decode("fileSize")
+ mimeType = try container.decodeIfPresent("mimeType")
+ previewFrameTimeCode = try container.decodeIfPresent("previewFrameTimeCode")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(fileName, forKey: "fileName")
+ try container.encode(fileSize, forKey: "fileSize")
+ try container.encodeIfPresent(mimeType, forKey: "mimeType")
+ try container.encodeIfPresent(previewFrameTimeCode, forKey: "previewFrameTimeCode")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.fileName == object.fileName else { return false }
+ guard self.fileSize == object.fileSize else { return false }
+ guard self.mimeType == object.mimeType else { return false }
+ guard self.previewFrameTimeCode == object.previewFrameTimeCode else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, attributes: Attributes, type: `Type`) {
+ self.relationships = relationships
+ self.attributes = attributes
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPreviewCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPreviewCreateRequest, rhs: AppPreviewCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewResponse.swift
new file mode 100644
index 000000000..0c093084a
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewResponse.swift
@@ -0,0 +1,43 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPreviewResponse: APIModel {
+
+ public var data: AppPreview
+
+ public var links: DocumentLinks
+
+ public init(data: AppPreview, links: DocumentLinks) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPreviewResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPreviewResponse, rhs: AppPreviewResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewSet.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewSet.swift
new file mode 100644
index 000000000..d459144a1
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewSet.swift
@@ -0,0 +1,369 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPreviewSet: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPreviewSets = "appPreviewSets"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var previewType: PreviewType?
+
+ public init(previewType: PreviewType? = nil) {
+ self.previewType = previewType
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ previewType = try container.decodeIfPresent("previewType")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(previewType, forKey: "previewType")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.previewType == object.previewType else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var appPreviews: AppPreviews?
+
+ public var appStoreVersionLocalization: AppStoreVersionLocalization?
+
+ public class AppPreviews: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPreviews = "appPreviews"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPreviews else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPreviews, rhs: AppPreviews) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class AppStoreVersionLocalization: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersionLocalizations = "appStoreVersionLocalizations"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionLocalization else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionLocalization, rhs: AppStoreVersionLocalization) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appPreviews: AppPreviews? = nil, appStoreVersionLocalization: AppStoreVersionLocalization? = nil) {
+ self.appPreviews = appPreviews
+ self.appStoreVersionLocalization = appStoreVersionLocalization
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appPreviews = try container.decodeIfPresent("appPreviews")
+ appStoreVersionLocalization = try container.decodeIfPresent("appStoreVersionLocalization")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(appPreviews, forKey: "appPreviews")
+ try container.encodeIfPresent(appStoreVersionLocalization, forKey: "appStoreVersionLocalization")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appPreviews == object.appPreviews else { return false }
+ guard self.appStoreVersionLocalization == object.appStoreVersionLocalization else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPreviewSet else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPreviewSet, rhs: AppPreviewSet) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewSetAppPreviewsLinkagesRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewSetAppPreviewsLinkagesRequest.swift
new file mode 100644
index 000000000..f3ab477a8
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewSetAppPreviewsLinkagesRequest.swift
@@ -0,0 +1,78 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPreviewSetAppPreviewsLinkagesRequest: APIModel {
+
+ public var data: [DataType]
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPreviews = "appPreviews"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPreviewSetAppPreviewsLinkagesRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPreviewSetAppPreviewsLinkagesRequest, rhs: AppPreviewSetAppPreviewsLinkagesRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewSetAppPreviewsLinkagesResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewSetAppPreviewsLinkagesResponse.swift
new file mode 100644
index 000000000..7abf5c477
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewSetAppPreviewsLinkagesResponse.swift
@@ -0,0 +1,90 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPreviewSetAppPreviewsLinkagesResponse: APIModel {
+
+ public var data: [DataType]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPreviews = "appPreviews"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPreviewSetAppPreviewsLinkagesResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPreviewSetAppPreviewsLinkagesResponse, rhs: AppPreviewSetAppPreviewsLinkagesResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewSetCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewSetCreateRequest.swift
new file mode 100644
index 000000000..65d6f6ccb
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewSetCreateRequest.swift
@@ -0,0 +1,218 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPreviewSetCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPreviewSets = "appPreviewSets"
+ }
+
+ public var relationships: Relationships
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public class Relationships: APIModel {
+
+ public var appStoreVersionLocalization: AppStoreVersionLocalization
+
+ public class AppStoreVersionLocalization: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersionLocalizations = "appStoreVersionLocalizations"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionLocalization else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionLocalization, rhs: AppStoreVersionLocalization) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appStoreVersionLocalization: AppStoreVersionLocalization) {
+ self.appStoreVersionLocalization = appStoreVersionLocalization
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appStoreVersionLocalization = try container.decode("appStoreVersionLocalization")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(appStoreVersionLocalization, forKey: "appStoreVersionLocalization")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appStoreVersionLocalization == object.appStoreVersionLocalization else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Attributes: APIModel {
+
+ public var previewType: PreviewType
+
+ public init(previewType: PreviewType) {
+ self.previewType = previewType
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ previewType = try container.decode("previewType")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(previewType, forKey: "previewType")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.previewType == object.previewType else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, attributes: Attributes, type: `Type`) {
+ self.relationships = relationships
+ self.attributes = attributes
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPreviewSetCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPreviewSetCreateRequest, rhs: AppPreviewSetCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewSetResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewSetResponse.swift
new file mode 100644
index 000000000..235f4db35
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewSetResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPreviewSetResponse: APIModel {
+
+ public var data: AppPreviewSet
+
+ public var links: DocumentLinks
+
+ public var included: [AppPreview]?
+
+ public init(data: AppPreviewSet, links: DocumentLinks, included: [AppPreview]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPreviewSetResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPreviewSetResponse, rhs: AppPreviewSetResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewSetsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewSetsResponse.swift
new file mode 100644
index 000000000..421a1e442
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewSetsResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPreviewSetsResponse: APIModel {
+
+ public var data: [AppPreviewSet]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [AppPreview]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [AppPreviewSet], links: PagedDocumentLinks, included: [AppPreview]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPreviewSetsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPreviewSetsResponse, rhs: AppPreviewSetsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewUpdateRequest.swift
new file mode 100644
index 000000000..cc0522169
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewUpdateRequest.swift
@@ -0,0 +1,127 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPreviewUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPreviews = "appPreviews"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var previewFrameTimeCode: String?
+
+ public var sourceFileChecksum: String?
+
+ public var uploaded: Bool?
+
+ public init(previewFrameTimeCode: String? = nil, sourceFileChecksum: String? = nil, uploaded: Bool? = nil) {
+ self.previewFrameTimeCode = previewFrameTimeCode
+ self.sourceFileChecksum = sourceFileChecksum
+ self.uploaded = uploaded
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ previewFrameTimeCode = try container.decodeIfPresent("previewFrameTimeCode")
+ sourceFileChecksum = try container.decodeIfPresent("sourceFileChecksum")
+ uploaded = try container.decodeIfPresent("uploaded")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(previewFrameTimeCode, forKey: "previewFrameTimeCode")
+ try container.encodeIfPresent(sourceFileChecksum, forKey: "sourceFileChecksum")
+ try container.encodeIfPresent(uploaded, forKey: "uploaded")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.previewFrameTimeCode == object.previewFrameTimeCode else { return false }
+ guard self.sourceFileChecksum == object.sourceFileChecksum else { return false }
+ guard self.uploaded == object.uploaded else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPreviewUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPreviewUpdateRequest, rhs: AppPreviewUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewsResponse.swift
new file mode 100644
index 000000000..35d27ebfc
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPreviewsResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPreviewsResponse: APIModel {
+
+ public var data: [AppPreview]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public init(data: [AppPreview], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPreviewsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPreviewsResponse, rhs: AppPreviewsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPrice.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPrice.swift
new file mode 100644
index 000000000..1089a4855
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPrice.swift
@@ -0,0 +1,326 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPrice: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPrices = "appPrices"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var relationships: Relationships?
+
+ public class Relationships: APIModel {
+
+ public var app: App?
+
+ public var priceTier: PriceTier?
+
+ public class App: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class PriceTier: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPriceTiers = "appPriceTiers"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? PriceTier else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: PriceTier, rhs: PriceTier) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(app: App? = nil, priceTier: PriceTier? = nil) {
+ self.app = app
+ self.priceTier = priceTier
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ app = try container.decodeIfPresent("app")
+ priceTier = try container.decodeIfPresent("priceTier")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(app, forKey: "app")
+ try container.encodeIfPresent(priceTier, forKey: "priceTier")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.app == object.app else { return false }
+ guard self.priceTier == object.priceTier else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPrice else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPrice, rhs: AppPrice) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPricePoint.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPricePoint.swift
new file mode 100644
index 000000000..41b3f20a0
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPricePoint.swift
@@ -0,0 +1,369 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPricePoint: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPricePoints = "appPricePoints"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var customerPrice: String?
+
+ public var proceeds: String?
+
+ public init(customerPrice: String? = nil, proceeds: String? = nil) {
+ self.customerPrice = customerPrice
+ self.proceeds = proceeds
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ customerPrice = try container.decodeIfPresent("customerPrice")
+ proceeds = try container.decodeIfPresent("proceeds")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(customerPrice, forKey: "customerPrice")
+ try container.encodeIfPresent(proceeds, forKey: "proceeds")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.customerPrice == object.customerPrice else { return false }
+ guard self.proceeds == object.proceeds else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var priceTier: PriceTier?
+
+ public var territory: Territory?
+
+ public class PriceTier: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPriceTiers = "appPriceTiers"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? PriceTier else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: PriceTier, rhs: PriceTier) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Territory: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case territories = "territories"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Territory else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: Territory, rhs: Territory) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(priceTier: PriceTier? = nil, territory: Territory? = nil) {
+ self.priceTier = priceTier
+ self.territory = territory
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ priceTier = try container.decodeIfPresent("priceTier")
+ territory = try container.decodeIfPresent("territory")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(priceTier, forKey: "priceTier")
+ try container.encodeIfPresent(territory, forKey: "territory")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.priceTier == object.priceTier else { return false }
+ guard self.territory == object.territory else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPricePoint else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPricePoint, rhs: AppPricePoint) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPricePointResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPricePointResponse.swift
new file mode 100644
index 000000000..fbc9e67ef
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPricePointResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPricePointResponse: APIModel {
+
+ public var data: AppPricePoint
+
+ public var links: DocumentLinks
+
+ public var included: [Territory]?
+
+ public init(data: AppPricePoint, links: DocumentLinks, included: [Territory]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPricePointResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPricePointResponse, rhs: AppPricePointResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPricePointsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPricePointsResponse.swift
new file mode 100644
index 000000000..41d046f4d
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPricePointsResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPricePointsResponse: APIModel {
+
+ public var data: [AppPricePoint]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [Territory]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [AppPricePoint], links: PagedDocumentLinks, included: [Territory]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPricePointsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPricePointsResponse, rhs: AppPricePointsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPriceResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPriceResponse.swift
new file mode 100644
index 000000000..378fa65e6
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPriceResponse.swift
@@ -0,0 +1,43 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPriceResponse: APIModel {
+
+ public var data: AppPrice
+
+ public var links: DocumentLinks
+
+ public init(data: AppPrice, links: DocumentLinks) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPriceResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPriceResponse, rhs: AppPriceResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPriceTier.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPriceTier.swift
new file mode 100644
index 000000000..c9be2f50a
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPriceTier.swift
@@ -0,0 +1,211 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPriceTier: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPriceTiers = "appPriceTiers"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var relationships: Relationships?
+
+ public class Relationships: APIModel {
+
+ public var pricePoints: PricePoints?
+
+ public class PricePoints: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPricePoints = "appPricePoints"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? PricePoints else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: PricePoints, rhs: PricePoints) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(pricePoints: PricePoints? = nil) {
+ self.pricePoints = pricePoints
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ pricePoints = try container.decodeIfPresent("pricePoints")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(pricePoints, forKey: "pricePoints")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.pricePoints == object.pricePoints else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPriceTier else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPriceTier, rhs: AppPriceTier) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPriceTierResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPriceTierResponse.swift
new file mode 100644
index 000000000..96864173c
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPriceTierResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPriceTierResponse: APIModel {
+
+ public var data: AppPriceTier
+
+ public var links: DocumentLinks
+
+ public var included: [AppPricePoint]?
+
+ public init(data: AppPriceTier, links: DocumentLinks, included: [AppPricePoint]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPriceTierResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPriceTierResponse, rhs: AppPriceTierResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPriceTiersResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPriceTiersResponse.swift
new file mode 100644
index 000000000..b7e007f87
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPriceTiersResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPriceTiersResponse: APIModel {
+
+ public var data: [AppPriceTier]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [AppPricePoint]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [AppPriceTier], links: PagedDocumentLinks, included: [AppPricePoint]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPriceTiersResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPriceTiersResponse, rhs: AppPriceTiersResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPricesResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPricesResponse.swift
new file mode 100644
index 000000000..17323ad40
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppPricesResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppPricesResponse: APIModel {
+
+ public var data: [AppPrice]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public init(data: [AppPrice], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPricesResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPricesResponse, rhs: AppPricesResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppResponse.swift
new file mode 100644
index 000000000..b661bd291
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppResponse: APIModel {
+
+ public var data: App
+
+ public var links: DocumentLinks
+
+ public var included: [Included]?
+
+ public init(data: App, links: DocumentLinks, included: [Included]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppResponse, rhs: AppResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshot.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshot.swift
new file mode 100644
index 000000000..5d02bc95b
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshot.swift
@@ -0,0 +1,284 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppScreenshot: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appScreenshots = "appScreenshots"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var assetDeliveryState: AppMediaAssetState?
+
+ public var assetToken: String?
+
+ public var assetType: String?
+
+ public var fileName: String?
+
+ public var fileSize: Int?
+
+ public var imageAsset: ImageAsset?
+
+ public var sourceFileChecksum: String?
+
+ public var uploadOperations: [UploadOperation]?
+
+ public init(assetDeliveryState: AppMediaAssetState? = nil, assetToken: String? = nil, assetType: String? = nil, fileName: String? = nil, fileSize: Int? = nil, imageAsset: ImageAsset? = nil, sourceFileChecksum: String? = nil, uploadOperations: [UploadOperation]? = nil) {
+ self.assetDeliveryState = assetDeliveryState
+ self.assetToken = assetToken
+ self.assetType = assetType
+ self.fileName = fileName
+ self.fileSize = fileSize
+ self.imageAsset = imageAsset
+ self.sourceFileChecksum = sourceFileChecksum
+ self.uploadOperations = uploadOperations
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ assetDeliveryState = try container.decodeIfPresent("assetDeliveryState")
+ assetToken = try container.decodeIfPresent("assetToken")
+ assetType = try container.decodeIfPresent("assetType")
+ fileName = try container.decodeIfPresent("fileName")
+ fileSize = try container.decodeIfPresent("fileSize")
+ imageAsset = try container.decodeIfPresent("imageAsset")
+ sourceFileChecksum = try container.decodeIfPresent("sourceFileChecksum")
+ uploadOperations = try container.decodeArrayIfPresent("uploadOperations")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(assetDeliveryState, forKey: "assetDeliveryState")
+ try container.encodeIfPresent(assetToken, forKey: "assetToken")
+ try container.encodeIfPresent(assetType, forKey: "assetType")
+ try container.encodeIfPresent(fileName, forKey: "fileName")
+ try container.encodeIfPresent(fileSize, forKey: "fileSize")
+ try container.encodeIfPresent(imageAsset, forKey: "imageAsset")
+ try container.encodeIfPresent(sourceFileChecksum, forKey: "sourceFileChecksum")
+ try container.encodeIfPresent(uploadOperations, forKey: "uploadOperations")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.assetDeliveryState == object.assetDeliveryState else { return false }
+ guard self.assetToken == object.assetToken else { return false }
+ guard self.assetType == object.assetType else { return false }
+ guard self.fileName == object.fileName else { return false }
+ guard self.fileSize == object.fileSize else { return false }
+ guard self.imageAsset == object.imageAsset else { return false }
+ guard self.sourceFileChecksum == object.sourceFileChecksum else { return false }
+ guard self.uploadOperations == object.uploadOperations else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var appScreenshotSet: AppScreenshotSet?
+
+ public class AppScreenshotSet: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appScreenshotSets = "appScreenshotSets"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppScreenshotSet else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppScreenshotSet, rhs: AppScreenshotSet) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appScreenshotSet: AppScreenshotSet? = nil) {
+ self.appScreenshotSet = appScreenshotSet
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appScreenshotSet = try container.decodeIfPresent("appScreenshotSet")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(appScreenshotSet, forKey: "appScreenshotSet")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appScreenshotSet == object.appScreenshotSet else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppScreenshot else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppScreenshot, rhs: AppScreenshot) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotCreateRequest.swift
new file mode 100644
index 000000000..32e4336f7
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotCreateRequest.swift
@@ -0,0 +1,224 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppScreenshotCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appScreenshots = "appScreenshots"
+ }
+
+ public var relationships: Relationships
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public class Relationships: APIModel {
+
+ public var appScreenshotSet: AppScreenshotSet
+
+ public class AppScreenshotSet: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appScreenshotSets = "appScreenshotSets"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppScreenshotSet else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppScreenshotSet, rhs: AppScreenshotSet) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appScreenshotSet: AppScreenshotSet) {
+ self.appScreenshotSet = appScreenshotSet
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appScreenshotSet = try container.decode("appScreenshotSet")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(appScreenshotSet, forKey: "appScreenshotSet")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appScreenshotSet == object.appScreenshotSet else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Attributes: APIModel {
+
+ public var fileName: String
+
+ public var fileSize: Int
+
+ public init(fileName: String, fileSize: Int) {
+ self.fileName = fileName
+ self.fileSize = fileSize
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ fileName = try container.decode("fileName")
+ fileSize = try container.decode("fileSize")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(fileName, forKey: "fileName")
+ try container.encode(fileSize, forKey: "fileSize")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.fileName == object.fileName else { return false }
+ guard self.fileSize == object.fileSize else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, attributes: Attributes, type: `Type`) {
+ self.relationships = relationships
+ self.attributes = attributes
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppScreenshotCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppScreenshotCreateRequest, rhs: AppScreenshotCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotResponse.swift
new file mode 100644
index 000000000..b4ce2919c
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotResponse.swift
@@ -0,0 +1,43 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppScreenshotResponse: APIModel {
+
+ public var data: AppScreenshot
+
+ public var links: DocumentLinks
+
+ public init(data: AppScreenshot, links: DocumentLinks) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppScreenshotResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppScreenshotResponse, rhs: AppScreenshotResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotSet.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotSet.swift
new file mode 100644
index 000000000..e05272bc7
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotSet.swift
@@ -0,0 +1,369 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppScreenshotSet: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appScreenshotSets = "appScreenshotSets"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var screenshotDisplayType: ScreenshotDisplayType?
+
+ public init(screenshotDisplayType: ScreenshotDisplayType? = nil) {
+ self.screenshotDisplayType = screenshotDisplayType
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ screenshotDisplayType = try container.decodeIfPresent("screenshotDisplayType")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(screenshotDisplayType, forKey: "screenshotDisplayType")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.screenshotDisplayType == object.screenshotDisplayType else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var appScreenshots: AppScreenshots?
+
+ public var appStoreVersionLocalization: AppStoreVersionLocalization?
+
+ public class AppScreenshots: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appScreenshots = "appScreenshots"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppScreenshots else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppScreenshots, rhs: AppScreenshots) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class AppStoreVersionLocalization: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersionLocalizations = "appStoreVersionLocalizations"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionLocalization else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionLocalization, rhs: AppStoreVersionLocalization) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appScreenshots: AppScreenshots? = nil, appStoreVersionLocalization: AppStoreVersionLocalization? = nil) {
+ self.appScreenshots = appScreenshots
+ self.appStoreVersionLocalization = appStoreVersionLocalization
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appScreenshots = try container.decodeIfPresent("appScreenshots")
+ appStoreVersionLocalization = try container.decodeIfPresent("appStoreVersionLocalization")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(appScreenshots, forKey: "appScreenshots")
+ try container.encodeIfPresent(appStoreVersionLocalization, forKey: "appStoreVersionLocalization")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appScreenshots == object.appScreenshots else { return false }
+ guard self.appStoreVersionLocalization == object.appStoreVersionLocalization else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppScreenshotSet else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppScreenshotSet, rhs: AppScreenshotSet) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotSetAppScreenshotsLinkagesRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotSetAppScreenshotsLinkagesRequest.swift
new file mode 100644
index 000000000..ae8f5e514
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotSetAppScreenshotsLinkagesRequest.swift
@@ -0,0 +1,78 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppScreenshotSetAppScreenshotsLinkagesRequest: APIModel {
+
+ public var data: [DataType]
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appScreenshots = "appScreenshots"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppScreenshotSetAppScreenshotsLinkagesRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppScreenshotSetAppScreenshotsLinkagesRequest, rhs: AppScreenshotSetAppScreenshotsLinkagesRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotSetAppScreenshotsLinkagesResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotSetAppScreenshotsLinkagesResponse.swift
new file mode 100644
index 000000000..5caf9e6c2
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotSetAppScreenshotsLinkagesResponse.swift
@@ -0,0 +1,90 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppScreenshotSetAppScreenshotsLinkagesResponse: APIModel {
+
+ public var data: [DataType]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appScreenshots = "appScreenshots"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppScreenshotSetAppScreenshotsLinkagesResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppScreenshotSetAppScreenshotsLinkagesResponse, rhs: AppScreenshotSetAppScreenshotsLinkagesResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotSetCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotSetCreateRequest.swift
new file mode 100644
index 000000000..a33a3dee9
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotSetCreateRequest.swift
@@ -0,0 +1,218 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppScreenshotSetCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appScreenshotSets = "appScreenshotSets"
+ }
+
+ public var relationships: Relationships
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public class Relationships: APIModel {
+
+ public var appStoreVersionLocalization: AppStoreVersionLocalization
+
+ public class AppStoreVersionLocalization: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersionLocalizations = "appStoreVersionLocalizations"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionLocalization else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionLocalization, rhs: AppStoreVersionLocalization) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appStoreVersionLocalization: AppStoreVersionLocalization) {
+ self.appStoreVersionLocalization = appStoreVersionLocalization
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appStoreVersionLocalization = try container.decode("appStoreVersionLocalization")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(appStoreVersionLocalization, forKey: "appStoreVersionLocalization")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appStoreVersionLocalization == object.appStoreVersionLocalization else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Attributes: APIModel {
+
+ public var screenshotDisplayType: ScreenshotDisplayType
+
+ public init(screenshotDisplayType: ScreenshotDisplayType) {
+ self.screenshotDisplayType = screenshotDisplayType
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ screenshotDisplayType = try container.decode("screenshotDisplayType")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(screenshotDisplayType, forKey: "screenshotDisplayType")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.screenshotDisplayType == object.screenshotDisplayType else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, attributes: Attributes, type: `Type`) {
+ self.relationships = relationships
+ self.attributes = attributes
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppScreenshotSetCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppScreenshotSetCreateRequest, rhs: AppScreenshotSetCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotSetResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotSetResponse.swift
new file mode 100644
index 000000000..86777e37c
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotSetResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppScreenshotSetResponse: APIModel {
+
+ public var data: AppScreenshotSet
+
+ public var links: DocumentLinks
+
+ public var included: [AppScreenshot]?
+
+ public init(data: AppScreenshotSet, links: DocumentLinks, included: [AppScreenshot]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppScreenshotSetResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppScreenshotSetResponse, rhs: AppScreenshotSetResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotSetsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotSetsResponse.swift
new file mode 100644
index 000000000..d0715dc40
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotSetsResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppScreenshotSetsResponse: APIModel {
+
+ public var data: [AppScreenshotSet]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [AppScreenshot]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [AppScreenshotSet], links: PagedDocumentLinks, included: [AppScreenshot]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppScreenshotSetsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppScreenshotSetsResponse, rhs: AppScreenshotSetsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotUpdateRequest.swift
new file mode 100644
index 000000000..fb200b76b
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotUpdateRequest.swift
@@ -0,0 +1,121 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppScreenshotUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appScreenshots = "appScreenshots"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var sourceFileChecksum: String?
+
+ public var uploaded: Bool?
+
+ public init(sourceFileChecksum: String? = nil, uploaded: Bool? = nil) {
+ self.sourceFileChecksum = sourceFileChecksum
+ self.uploaded = uploaded
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ sourceFileChecksum = try container.decodeIfPresent("sourceFileChecksum")
+ uploaded = try container.decodeIfPresent("uploaded")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(sourceFileChecksum, forKey: "sourceFileChecksum")
+ try container.encodeIfPresent(uploaded, forKey: "uploaded")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.sourceFileChecksum == object.sourceFileChecksum else { return false }
+ guard self.uploaded == object.uploaded else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppScreenshotUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppScreenshotUpdateRequest, rhs: AppScreenshotUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotsResponse.swift
new file mode 100644
index 000000000..861aa9154
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppScreenshotsResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppScreenshotsResponse: APIModel {
+
+ public var data: [AppScreenshot]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public init(data: [AppScreenshot], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppScreenshotsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppScreenshotsResponse, rhs: AppScreenshotsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreAgeRating.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreAgeRating.swift
new file mode 100644
index 000000000..cd6a3c55a
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreAgeRating.swift
@@ -0,0 +1,13 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public enum AppStoreAgeRating: String, Codable, Equatable, CaseIterable {
+ case fourPlus = "FOUR_PLUS"
+ case ninePlus = "NINE_PLUS"
+ case twelvePlus = "TWELVE_PLUS"
+ case seventeenPlus = "SEVENTEEN_PLUS"
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewAttachment.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewAttachment.swift
new file mode 100644
index 000000000..6b16ff213
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewAttachment.swift
@@ -0,0 +1,266 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreReviewAttachment: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreReviewAttachments = "appStoreReviewAttachments"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var assetDeliveryState: AppMediaAssetState?
+
+ public var fileName: String?
+
+ public var fileSize: Int?
+
+ public var sourceFileChecksum: String?
+
+ public var uploadOperations: [UploadOperation]?
+
+ public init(assetDeliveryState: AppMediaAssetState? = nil, fileName: String? = nil, fileSize: Int? = nil, sourceFileChecksum: String? = nil, uploadOperations: [UploadOperation]? = nil) {
+ self.assetDeliveryState = assetDeliveryState
+ self.fileName = fileName
+ self.fileSize = fileSize
+ self.sourceFileChecksum = sourceFileChecksum
+ self.uploadOperations = uploadOperations
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ assetDeliveryState = try container.decodeIfPresent("assetDeliveryState")
+ fileName = try container.decodeIfPresent("fileName")
+ fileSize = try container.decodeIfPresent("fileSize")
+ sourceFileChecksum = try container.decodeIfPresent("sourceFileChecksum")
+ uploadOperations = try container.decodeArrayIfPresent("uploadOperations")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(assetDeliveryState, forKey: "assetDeliveryState")
+ try container.encodeIfPresent(fileName, forKey: "fileName")
+ try container.encodeIfPresent(fileSize, forKey: "fileSize")
+ try container.encodeIfPresent(sourceFileChecksum, forKey: "sourceFileChecksum")
+ try container.encodeIfPresent(uploadOperations, forKey: "uploadOperations")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.assetDeliveryState == object.assetDeliveryState else { return false }
+ guard self.fileName == object.fileName else { return false }
+ guard self.fileSize == object.fileSize else { return false }
+ guard self.sourceFileChecksum == object.sourceFileChecksum else { return false }
+ guard self.uploadOperations == object.uploadOperations else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var appStoreReviewDetail: AppStoreReviewDetail?
+
+ public class AppStoreReviewDetail: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreReviewDetails = "appStoreReviewDetails"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreReviewDetail else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreReviewDetail, rhs: AppStoreReviewDetail) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appStoreReviewDetail: AppStoreReviewDetail? = nil) {
+ self.appStoreReviewDetail = appStoreReviewDetail
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appStoreReviewDetail = try container.decodeIfPresent("appStoreReviewDetail")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(appStoreReviewDetail, forKey: "appStoreReviewDetail")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appStoreReviewDetail == object.appStoreReviewDetail else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreReviewAttachment else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreReviewAttachment, rhs: AppStoreReviewAttachment) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewAttachmentCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewAttachmentCreateRequest.swift
new file mode 100644
index 000000000..d1fe05b55
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewAttachmentCreateRequest.swift
@@ -0,0 +1,224 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreReviewAttachmentCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreReviewAttachments = "appStoreReviewAttachments"
+ }
+
+ public var relationships: Relationships
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public class Relationships: APIModel {
+
+ public var appStoreReviewDetail: AppStoreReviewDetail
+
+ public class AppStoreReviewDetail: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreReviewDetails = "appStoreReviewDetails"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreReviewDetail else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreReviewDetail, rhs: AppStoreReviewDetail) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appStoreReviewDetail: AppStoreReviewDetail) {
+ self.appStoreReviewDetail = appStoreReviewDetail
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appStoreReviewDetail = try container.decode("appStoreReviewDetail")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(appStoreReviewDetail, forKey: "appStoreReviewDetail")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appStoreReviewDetail == object.appStoreReviewDetail else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Attributes: APIModel {
+
+ public var fileName: String
+
+ public var fileSize: Int
+
+ public init(fileName: String, fileSize: Int) {
+ self.fileName = fileName
+ self.fileSize = fileSize
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ fileName = try container.decode("fileName")
+ fileSize = try container.decode("fileSize")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(fileName, forKey: "fileName")
+ try container.encode(fileSize, forKey: "fileSize")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.fileName == object.fileName else { return false }
+ guard self.fileSize == object.fileSize else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, attributes: Attributes, type: `Type`) {
+ self.relationships = relationships
+ self.attributes = attributes
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreReviewAttachmentCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreReviewAttachmentCreateRequest, rhs: AppStoreReviewAttachmentCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewAttachmentResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewAttachmentResponse.swift
new file mode 100644
index 000000000..864a1c36f
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewAttachmentResponse.swift
@@ -0,0 +1,43 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreReviewAttachmentResponse: APIModel {
+
+ public var data: AppStoreReviewAttachment
+
+ public var links: DocumentLinks
+
+ public init(data: AppStoreReviewAttachment, links: DocumentLinks) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreReviewAttachmentResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreReviewAttachmentResponse, rhs: AppStoreReviewAttachmentResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewAttachmentUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewAttachmentUpdateRequest.swift
new file mode 100644
index 000000000..0295dbd61
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewAttachmentUpdateRequest.swift
@@ -0,0 +1,121 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreReviewAttachmentUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreReviewAttachments = "appStoreReviewAttachments"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var sourceFileChecksum: String?
+
+ public var uploaded: Bool?
+
+ public init(sourceFileChecksum: String? = nil, uploaded: Bool? = nil) {
+ self.sourceFileChecksum = sourceFileChecksum
+ self.uploaded = uploaded
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ sourceFileChecksum = try container.decodeIfPresent("sourceFileChecksum")
+ uploaded = try container.decodeIfPresent("uploaded")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(sourceFileChecksum, forKey: "sourceFileChecksum")
+ try container.encodeIfPresent(uploaded, forKey: "uploaded")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.sourceFileChecksum == object.sourceFileChecksum else { return false }
+ guard self.uploaded == object.uploaded else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreReviewAttachmentUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreReviewAttachmentUpdateRequest, rhs: AppStoreReviewAttachmentUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewAttachmentsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewAttachmentsResponse.swift
new file mode 100644
index 000000000..5fb0645b7
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewAttachmentsResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreReviewAttachmentsResponse: APIModel {
+
+ public var data: [AppStoreReviewAttachment]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public init(data: [AppStoreReviewAttachment], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreReviewAttachmentsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreReviewAttachmentsResponse, rhs: AppStoreReviewAttachmentsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewDetail.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewDetail.swift
new file mode 100644
index 000000000..55a9be630
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewDetail.swift
@@ -0,0 +1,411 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreReviewDetail: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreReviewDetails = "appStoreReviewDetails"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var contactEmail: String?
+
+ public var contactFirstName: String?
+
+ public var contactLastName: String?
+
+ public var contactPhone: String?
+
+ public var demoAccountName: String?
+
+ public var demoAccountPassword: String?
+
+ public var demoAccountRequired: Bool?
+
+ public var notes: String?
+
+ public init(contactEmail: String? = nil, contactFirstName: String? = nil, contactLastName: String? = nil, contactPhone: String? = nil, demoAccountName: String? = nil, demoAccountPassword: String? = nil, demoAccountRequired: Bool? = nil, notes: String? = nil) {
+ self.contactEmail = contactEmail
+ self.contactFirstName = contactFirstName
+ self.contactLastName = contactLastName
+ self.contactPhone = contactPhone
+ self.demoAccountName = demoAccountName
+ self.demoAccountPassword = demoAccountPassword
+ self.demoAccountRequired = demoAccountRequired
+ self.notes = notes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ contactEmail = try container.decodeIfPresent("contactEmail")
+ contactFirstName = try container.decodeIfPresent("contactFirstName")
+ contactLastName = try container.decodeIfPresent("contactLastName")
+ contactPhone = try container.decodeIfPresent("contactPhone")
+ demoAccountName = try container.decodeIfPresent("demoAccountName")
+ demoAccountPassword = try container.decodeIfPresent("demoAccountPassword")
+ demoAccountRequired = try container.decodeIfPresent("demoAccountRequired")
+ notes = try container.decodeIfPresent("notes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(contactEmail, forKey: "contactEmail")
+ try container.encodeIfPresent(contactFirstName, forKey: "contactFirstName")
+ try container.encodeIfPresent(contactLastName, forKey: "contactLastName")
+ try container.encodeIfPresent(contactPhone, forKey: "contactPhone")
+ try container.encodeIfPresent(demoAccountName, forKey: "demoAccountName")
+ try container.encodeIfPresent(demoAccountPassword, forKey: "demoAccountPassword")
+ try container.encodeIfPresent(demoAccountRequired, forKey: "demoAccountRequired")
+ try container.encodeIfPresent(notes, forKey: "notes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.contactEmail == object.contactEmail else { return false }
+ guard self.contactFirstName == object.contactFirstName else { return false }
+ guard self.contactLastName == object.contactLastName else { return false }
+ guard self.contactPhone == object.contactPhone else { return false }
+ guard self.demoAccountName == object.demoAccountName else { return false }
+ guard self.demoAccountPassword == object.demoAccountPassword else { return false }
+ guard self.demoAccountRequired == object.demoAccountRequired else { return false }
+ guard self.notes == object.notes else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var appStoreReviewAttachments: AppStoreReviewAttachments?
+
+ public var appStoreVersion: AppStoreVersion?
+
+ public class AppStoreReviewAttachments: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreReviewAttachments = "appStoreReviewAttachments"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreReviewAttachments else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreReviewAttachments, rhs: AppStoreReviewAttachments) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class AppStoreVersion: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersions = "appStoreVersions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersion else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersion, rhs: AppStoreVersion) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appStoreReviewAttachments: AppStoreReviewAttachments? = nil, appStoreVersion: AppStoreVersion? = nil) {
+ self.appStoreReviewAttachments = appStoreReviewAttachments
+ self.appStoreVersion = appStoreVersion
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appStoreReviewAttachments = try container.decodeIfPresent("appStoreReviewAttachments")
+ appStoreVersion = try container.decodeIfPresent("appStoreVersion")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(appStoreReviewAttachments, forKey: "appStoreReviewAttachments")
+ try container.encodeIfPresent(appStoreVersion, forKey: "appStoreVersion")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appStoreReviewAttachments == object.appStoreReviewAttachments else { return false }
+ guard self.appStoreVersion == object.appStoreVersion else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreReviewDetail else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreReviewDetail, rhs: AppStoreReviewDetail) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewDetailCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewDetailCreateRequest.swift
new file mode 100644
index 000000000..0251823f3
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewDetailCreateRequest.swift
@@ -0,0 +1,260 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreReviewDetailCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreReviewDetails = "appStoreReviewDetails"
+ }
+
+ public var relationships: Relationships
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Relationships: APIModel {
+
+ public var appStoreVersion: AppStoreVersion
+
+ public class AppStoreVersion: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersions = "appStoreVersions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersion else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersion, rhs: AppStoreVersion) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appStoreVersion: AppStoreVersion) {
+ self.appStoreVersion = appStoreVersion
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appStoreVersion = try container.decode("appStoreVersion")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(appStoreVersion, forKey: "appStoreVersion")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appStoreVersion == object.appStoreVersion else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Attributes: APIModel {
+
+ public var contactEmail: String?
+
+ public var contactFirstName: String?
+
+ public var contactLastName: String?
+
+ public var contactPhone: String?
+
+ public var demoAccountName: String?
+
+ public var demoAccountPassword: String?
+
+ public var demoAccountRequired: Bool?
+
+ public var notes: String?
+
+ public init(contactEmail: String? = nil, contactFirstName: String? = nil, contactLastName: String? = nil, contactPhone: String? = nil, demoAccountName: String? = nil, demoAccountPassword: String? = nil, demoAccountRequired: Bool? = nil, notes: String? = nil) {
+ self.contactEmail = contactEmail
+ self.contactFirstName = contactFirstName
+ self.contactLastName = contactLastName
+ self.contactPhone = contactPhone
+ self.demoAccountName = demoAccountName
+ self.demoAccountPassword = demoAccountPassword
+ self.demoAccountRequired = demoAccountRequired
+ self.notes = notes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ contactEmail = try container.decodeIfPresent("contactEmail")
+ contactFirstName = try container.decodeIfPresent("contactFirstName")
+ contactLastName = try container.decodeIfPresent("contactLastName")
+ contactPhone = try container.decodeIfPresent("contactPhone")
+ demoAccountName = try container.decodeIfPresent("demoAccountName")
+ demoAccountPassword = try container.decodeIfPresent("demoAccountPassword")
+ demoAccountRequired = try container.decodeIfPresent("demoAccountRequired")
+ notes = try container.decodeIfPresent("notes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(contactEmail, forKey: "contactEmail")
+ try container.encodeIfPresent(contactFirstName, forKey: "contactFirstName")
+ try container.encodeIfPresent(contactLastName, forKey: "contactLastName")
+ try container.encodeIfPresent(contactPhone, forKey: "contactPhone")
+ try container.encodeIfPresent(demoAccountName, forKey: "demoAccountName")
+ try container.encodeIfPresent(demoAccountPassword, forKey: "demoAccountPassword")
+ try container.encodeIfPresent(demoAccountRequired, forKey: "demoAccountRequired")
+ try container.encodeIfPresent(notes, forKey: "notes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.contactEmail == object.contactEmail else { return false }
+ guard self.contactFirstName == object.contactFirstName else { return false }
+ guard self.contactLastName == object.contactLastName else { return false }
+ guard self.contactPhone == object.contactPhone else { return false }
+ guard self.demoAccountName == object.demoAccountName else { return false }
+ guard self.demoAccountPassword == object.demoAccountPassword else { return false }
+ guard self.demoAccountRequired == object.demoAccountRequired else { return false }
+ guard self.notes == object.notes else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, type: `Type`, attributes: Attributes? = nil) {
+ self.relationships = relationships
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreReviewDetailCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreReviewDetailCreateRequest, rhs: AppStoreReviewDetailCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewDetailResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewDetailResponse.swift
new file mode 100644
index 000000000..9fa39b890
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewDetailResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreReviewDetailResponse: APIModel {
+
+ public var data: AppStoreReviewDetail
+
+ public var links: DocumentLinks
+
+ public var included: [AppStoreReviewAttachment]?
+
+ public init(data: AppStoreReviewDetail, links: DocumentLinks, included: [AppStoreReviewAttachment]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreReviewDetailResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreReviewDetailResponse, rhs: AppStoreReviewDetailResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewDetailUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewDetailUpdateRequest.swift
new file mode 100644
index 000000000..120a2b0b7
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreReviewDetailUpdateRequest.swift
@@ -0,0 +1,157 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreReviewDetailUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreReviewDetails = "appStoreReviewDetails"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var contactEmail: String?
+
+ public var contactFirstName: String?
+
+ public var contactLastName: String?
+
+ public var contactPhone: String?
+
+ public var demoAccountName: String?
+
+ public var demoAccountPassword: String?
+
+ public var demoAccountRequired: Bool?
+
+ public var notes: String?
+
+ public init(contactEmail: String? = nil, contactFirstName: String? = nil, contactLastName: String? = nil, contactPhone: String? = nil, demoAccountName: String? = nil, demoAccountPassword: String? = nil, demoAccountRequired: Bool? = nil, notes: String? = nil) {
+ self.contactEmail = contactEmail
+ self.contactFirstName = contactFirstName
+ self.contactLastName = contactLastName
+ self.contactPhone = contactPhone
+ self.demoAccountName = demoAccountName
+ self.demoAccountPassword = demoAccountPassword
+ self.demoAccountRequired = demoAccountRequired
+ self.notes = notes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ contactEmail = try container.decodeIfPresent("contactEmail")
+ contactFirstName = try container.decodeIfPresent("contactFirstName")
+ contactLastName = try container.decodeIfPresent("contactLastName")
+ contactPhone = try container.decodeIfPresent("contactPhone")
+ demoAccountName = try container.decodeIfPresent("demoAccountName")
+ demoAccountPassword = try container.decodeIfPresent("demoAccountPassword")
+ demoAccountRequired = try container.decodeIfPresent("demoAccountRequired")
+ notes = try container.decodeIfPresent("notes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(contactEmail, forKey: "contactEmail")
+ try container.encodeIfPresent(contactFirstName, forKey: "contactFirstName")
+ try container.encodeIfPresent(contactLastName, forKey: "contactLastName")
+ try container.encodeIfPresent(contactPhone, forKey: "contactPhone")
+ try container.encodeIfPresent(demoAccountName, forKey: "demoAccountName")
+ try container.encodeIfPresent(demoAccountPassword, forKey: "demoAccountPassword")
+ try container.encodeIfPresent(demoAccountRequired, forKey: "demoAccountRequired")
+ try container.encodeIfPresent(notes, forKey: "notes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.contactEmail == object.contactEmail else { return false }
+ guard self.contactFirstName == object.contactFirstName else { return false }
+ guard self.contactLastName == object.contactLastName else { return false }
+ guard self.contactPhone == object.contactPhone else { return false }
+ guard self.demoAccountName == object.demoAccountName else { return false }
+ guard self.demoAccountPassword == object.demoAccountPassword else { return false }
+ guard self.demoAccountRequired == object.demoAccountRequired else { return false }
+ guard self.notes == object.notes else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreReviewDetailUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreReviewDetailUpdateRequest, rhs: AppStoreReviewDetailUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersion.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersion.swift
new file mode 100644
index 000000000..8f5ffcbbf
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersion.swift
@@ -0,0 +1,1270 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreVersion: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersions = "appStoreVersions"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public enum ReleaseType: String, Codable, Equatable, CaseIterable {
+ case manual = "MANUAL"
+ case afterApproval = "AFTER_APPROVAL"
+ case scheduled = "SCHEDULED"
+ }
+
+ public var appStoreState: AppStoreVersionState?
+
+ public var copyright: String?
+
+ public var createdDate: DateTime?
+
+ public var downloadable: Bool?
+
+ public var earliestReleaseDate: DateTime?
+
+ public var platform: Platform?
+
+ public var releaseType: ReleaseType?
+
+ public var usesIdfa: Bool?
+
+ public var versionString: String?
+
+ public init(appStoreState: AppStoreVersionState? = nil, copyright: String? = nil, createdDate: DateTime? = nil, downloadable: Bool? = nil, earliestReleaseDate: DateTime? = nil, platform: Platform? = nil, releaseType: ReleaseType? = nil, usesIdfa: Bool? = nil, versionString: String? = nil) {
+ self.appStoreState = appStoreState
+ self.copyright = copyright
+ self.createdDate = createdDate
+ self.downloadable = downloadable
+ self.earliestReleaseDate = earliestReleaseDate
+ self.platform = platform
+ self.releaseType = releaseType
+ self.usesIdfa = usesIdfa
+ self.versionString = versionString
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appStoreState = try container.decodeIfPresent("appStoreState")
+ copyright = try container.decodeIfPresent("copyright")
+ createdDate = try container.decodeIfPresent("createdDate")
+ downloadable = try container.decodeIfPresent("downloadable")
+ earliestReleaseDate = try container.decodeIfPresent("earliestReleaseDate")
+ platform = try container.decodeIfPresent("platform")
+ releaseType = try container.decodeIfPresent("releaseType")
+ usesIdfa = try container.decodeIfPresent("usesIdfa")
+ versionString = try container.decodeIfPresent("versionString")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(appStoreState, forKey: "appStoreState")
+ try container.encodeIfPresent(copyright, forKey: "copyright")
+ try container.encodeIfPresent(createdDate, forKey: "createdDate")
+ try container.encodeIfPresent(downloadable, forKey: "downloadable")
+ try container.encodeIfPresent(earliestReleaseDate, forKey: "earliestReleaseDate")
+ try container.encodeIfPresent(platform, forKey: "platform")
+ try container.encodeIfPresent(releaseType, forKey: "releaseType")
+ try container.encodeIfPresent(usesIdfa, forKey: "usesIdfa")
+ try container.encodeIfPresent(versionString, forKey: "versionString")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.appStoreState == object.appStoreState else { return false }
+ guard self.copyright == object.copyright else { return false }
+ guard self.createdDate == object.createdDate else { return false }
+ guard self.downloadable == object.downloadable else { return false }
+ guard self.earliestReleaseDate == object.earliestReleaseDate else { return false }
+ guard self.platform == object.platform else { return false }
+ guard self.releaseType == object.releaseType else { return false }
+ guard self.usesIdfa == object.usesIdfa else { return false }
+ guard self.versionString == object.versionString else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var ageRatingDeclaration: AgeRatingDeclaration?
+
+ public var app: App?
+
+ public var appStoreReviewDetail: AppStoreReviewDetail?
+
+ public var appStoreVersionLocalizations: AppStoreVersionLocalizations?
+
+ public var appStoreVersionPhasedRelease: AppStoreVersionPhasedRelease?
+
+ public var appStoreVersionSubmission: AppStoreVersionSubmission?
+
+ public var build: Build?
+
+ public var idfaDeclaration: IdfaDeclaration?
+
+ public var routingAppCoverage: RoutingAppCoverage?
+
+ public class AgeRatingDeclaration: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case ageRatingDeclarations = "ageRatingDeclarations"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AgeRatingDeclaration else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AgeRatingDeclaration, rhs: AgeRatingDeclaration) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class App: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class AppStoreReviewDetail: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreReviewDetails = "appStoreReviewDetails"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreReviewDetail else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreReviewDetail, rhs: AppStoreReviewDetail) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class AppStoreVersionLocalizations: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersionLocalizations = "appStoreVersionLocalizations"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionLocalizations else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionLocalizations, rhs: AppStoreVersionLocalizations) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class AppStoreVersionPhasedRelease: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersionPhasedReleases = "appStoreVersionPhasedReleases"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionPhasedRelease else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionPhasedRelease, rhs: AppStoreVersionPhasedRelease) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class AppStoreVersionSubmission: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersionSubmissions = "appStoreVersionSubmissions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionSubmission else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionSubmission, rhs: AppStoreVersionSubmission) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Build: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Build else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: Build, rhs: Build) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class IdfaDeclaration: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case idfaDeclarations = "idfaDeclarations"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? IdfaDeclaration else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: IdfaDeclaration, rhs: IdfaDeclaration) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class RoutingAppCoverage: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case routingAppCoverages = "routingAppCoverages"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? RoutingAppCoverage else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: RoutingAppCoverage, rhs: RoutingAppCoverage) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(ageRatingDeclaration: AgeRatingDeclaration? = nil, app: App? = nil, appStoreReviewDetail: AppStoreReviewDetail? = nil, appStoreVersionLocalizations: AppStoreVersionLocalizations? = nil, appStoreVersionPhasedRelease: AppStoreVersionPhasedRelease? = nil, appStoreVersionSubmission: AppStoreVersionSubmission? = nil, build: Build? = nil, idfaDeclaration: IdfaDeclaration? = nil, routingAppCoverage: RoutingAppCoverage? = nil) {
+ self.ageRatingDeclaration = ageRatingDeclaration
+ self.app = app
+ self.appStoreReviewDetail = appStoreReviewDetail
+ self.appStoreVersionLocalizations = appStoreVersionLocalizations
+ self.appStoreVersionPhasedRelease = appStoreVersionPhasedRelease
+ self.appStoreVersionSubmission = appStoreVersionSubmission
+ self.build = build
+ self.idfaDeclaration = idfaDeclaration
+ self.routingAppCoverage = routingAppCoverage
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ ageRatingDeclaration = try container.decodeIfPresent("ageRatingDeclaration")
+ app = try container.decodeIfPresent("app")
+ appStoreReviewDetail = try container.decodeIfPresent("appStoreReviewDetail")
+ appStoreVersionLocalizations = try container.decodeIfPresent("appStoreVersionLocalizations")
+ appStoreVersionPhasedRelease = try container.decodeIfPresent("appStoreVersionPhasedRelease")
+ appStoreVersionSubmission = try container.decodeIfPresent("appStoreVersionSubmission")
+ build = try container.decodeIfPresent("build")
+ idfaDeclaration = try container.decodeIfPresent("idfaDeclaration")
+ routingAppCoverage = try container.decodeIfPresent("routingAppCoverage")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(ageRatingDeclaration, forKey: "ageRatingDeclaration")
+ try container.encodeIfPresent(app, forKey: "app")
+ try container.encodeIfPresent(appStoreReviewDetail, forKey: "appStoreReviewDetail")
+ try container.encodeIfPresent(appStoreVersionLocalizations, forKey: "appStoreVersionLocalizations")
+ try container.encodeIfPresent(appStoreVersionPhasedRelease, forKey: "appStoreVersionPhasedRelease")
+ try container.encodeIfPresent(appStoreVersionSubmission, forKey: "appStoreVersionSubmission")
+ try container.encodeIfPresent(build, forKey: "build")
+ try container.encodeIfPresent(idfaDeclaration, forKey: "idfaDeclaration")
+ try container.encodeIfPresent(routingAppCoverage, forKey: "routingAppCoverage")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.ageRatingDeclaration == object.ageRatingDeclaration else { return false }
+ guard self.app == object.app else { return false }
+ guard self.appStoreReviewDetail == object.appStoreReviewDetail else { return false }
+ guard self.appStoreVersionLocalizations == object.appStoreVersionLocalizations else { return false }
+ guard self.appStoreVersionPhasedRelease == object.appStoreVersionPhasedRelease else { return false }
+ guard self.appStoreVersionSubmission == object.appStoreVersionSubmission else { return false }
+ guard self.build == object.build else { return false }
+ guard self.idfaDeclaration == object.idfaDeclaration else { return false }
+ guard self.routingAppCoverage == object.routingAppCoverage else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersion else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersion, rhs: AppStoreVersion) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionBuildLinkageRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionBuildLinkageRequest.swift
new file mode 100644
index 000000000..823338eaf
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionBuildLinkageRequest.swift
@@ -0,0 +1,78 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreVersionBuildLinkageRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionBuildLinkageRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionBuildLinkageRequest, rhs: AppStoreVersionBuildLinkageRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionBuildLinkageResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionBuildLinkageResponse.swift
new file mode 100644
index 000000000..fe6295017
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionBuildLinkageResponse.swift
@@ -0,0 +1,84 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreVersionBuildLinkageResponse: APIModel {
+
+ public var data: DataType
+
+ public var links: DocumentLinks
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType, links: DocumentLinks) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionBuildLinkageResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionBuildLinkageResponse, rhs: AppStoreVersionBuildLinkageResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionCreateRequest.swift
new file mode 100644
index 000000000..5b9af0877
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionCreateRequest.swift
@@ -0,0 +1,332 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreVersionCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersions = "appStoreVersions"
+ }
+
+ public var relationships: Relationships
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public class Relationships: APIModel {
+
+ public var app: App
+
+ public var build: Build?
+
+ public class App: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Build: APIModel {
+
+ public var data: DataType?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Build else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: Build, rhs: Build) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(app: App, build: Build? = nil) {
+ self.app = app
+ self.build = build
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ app = try container.decode("app")
+ build = try container.decodeIfPresent("build")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(app, forKey: "app")
+ try container.encodeIfPresent(build, forKey: "build")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.app == object.app else { return false }
+ guard self.build == object.build else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Attributes: APIModel {
+
+ public enum ReleaseType: String, Codable, Equatable, CaseIterable {
+ case manual = "MANUAL"
+ case afterApproval = "AFTER_APPROVAL"
+ case scheduled = "SCHEDULED"
+ }
+
+ public var versionString: String
+
+ public var platform: Platform
+
+ public var copyright: String?
+
+ public var earliestReleaseDate: DateTime?
+
+ public var releaseType: ReleaseType?
+
+ public var usesIdfa: Bool?
+
+ public init(versionString: String, platform: Platform, copyright: String? = nil, earliestReleaseDate: DateTime? = nil, releaseType: ReleaseType? = nil, usesIdfa: Bool? = nil) {
+ self.versionString = versionString
+ self.platform = platform
+ self.copyright = copyright
+ self.earliestReleaseDate = earliestReleaseDate
+ self.releaseType = releaseType
+ self.usesIdfa = usesIdfa
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ versionString = try container.decode("versionString")
+ platform = try container.decode("platform")
+ copyright = try container.decodeIfPresent("copyright")
+ earliestReleaseDate = try container.decodeIfPresent("earliestReleaseDate")
+ releaseType = try container.decodeIfPresent("releaseType")
+ usesIdfa = try container.decodeIfPresent("usesIdfa")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(versionString, forKey: "versionString")
+ try container.encode(platform, forKey: "platform")
+ try container.encodeIfPresent(copyright, forKey: "copyright")
+ try container.encodeIfPresent(earliestReleaseDate, forKey: "earliestReleaseDate")
+ try container.encodeIfPresent(releaseType, forKey: "releaseType")
+ try container.encodeIfPresent(usesIdfa, forKey: "usesIdfa")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.versionString == object.versionString else { return false }
+ guard self.platform == object.platform else { return false }
+ guard self.copyright == object.copyright else { return false }
+ guard self.earliestReleaseDate == object.earliestReleaseDate else { return false }
+ guard self.releaseType == object.releaseType else { return false }
+ guard self.usesIdfa == object.usesIdfa else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, attributes: Attributes, type: `Type`) {
+ self.relationships = relationships
+ self.attributes = attributes
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionCreateRequest, rhs: AppStoreVersionCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionLocalization.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionLocalization.swift
new file mode 100644
index 000000000..b88015c18
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionLocalization.swift
@@ -0,0 +1,532 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreVersionLocalization: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersionLocalizations = "appStoreVersionLocalizations"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var description: String?
+
+ public var keywords: String?
+
+ public var locale: String?
+
+ public var marketingUrl: URL?
+
+ public var promotionalText: String?
+
+ public var supportUrl: URL?
+
+ public var whatsNew: String?
+
+ public init(description: String? = nil, keywords: String? = nil, locale: String? = nil, marketingUrl: URL? = nil, promotionalText: String? = nil, supportUrl: URL? = nil, whatsNew: String? = nil) {
+ self.description = description
+ self.keywords = keywords
+ self.locale = locale
+ self.marketingUrl = marketingUrl
+ self.promotionalText = promotionalText
+ self.supportUrl = supportUrl
+ self.whatsNew = whatsNew
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ description = try container.decodeIfPresent("description")
+ keywords = try container.decodeIfPresent("keywords")
+ locale = try container.decodeIfPresent("locale")
+ marketingUrl = try container.decodeIfPresent("marketingUrl")
+ promotionalText = try container.decodeIfPresent("promotionalText")
+ supportUrl = try container.decodeIfPresent("supportUrl")
+ whatsNew = try container.decodeIfPresent("whatsNew")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(description, forKey: "description")
+ try container.encodeIfPresent(keywords, forKey: "keywords")
+ try container.encodeIfPresent(locale, forKey: "locale")
+ try container.encodeIfPresent(marketingUrl, forKey: "marketingUrl")
+ try container.encodeIfPresent(promotionalText, forKey: "promotionalText")
+ try container.encodeIfPresent(supportUrl, forKey: "supportUrl")
+ try container.encodeIfPresent(whatsNew, forKey: "whatsNew")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.description == object.description else { return false }
+ guard self.keywords == object.keywords else { return false }
+ guard self.locale == object.locale else { return false }
+ guard self.marketingUrl == object.marketingUrl else { return false }
+ guard self.promotionalText == object.promotionalText else { return false }
+ guard self.supportUrl == object.supportUrl else { return false }
+ guard self.whatsNew == object.whatsNew else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var appPreviewSets: AppPreviewSets?
+
+ public var appScreenshotSets: AppScreenshotSets?
+
+ public var appStoreVersion: AppStoreVersion?
+
+ public class AppPreviewSets: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPreviewSets = "appPreviewSets"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppPreviewSets else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppPreviewSets, rhs: AppPreviewSets) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class AppScreenshotSets: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appScreenshotSets = "appScreenshotSets"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppScreenshotSets else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppScreenshotSets, rhs: AppScreenshotSets) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class AppStoreVersion: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersions = "appStoreVersions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersion else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersion, rhs: AppStoreVersion) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appPreviewSets: AppPreviewSets? = nil, appScreenshotSets: AppScreenshotSets? = nil, appStoreVersion: AppStoreVersion? = nil) {
+ self.appPreviewSets = appPreviewSets
+ self.appScreenshotSets = appScreenshotSets
+ self.appStoreVersion = appStoreVersion
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appPreviewSets = try container.decodeIfPresent("appPreviewSets")
+ appScreenshotSets = try container.decodeIfPresent("appScreenshotSets")
+ appStoreVersion = try container.decodeIfPresent("appStoreVersion")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(appPreviewSets, forKey: "appPreviewSets")
+ try container.encodeIfPresent(appScreenshotSets, forKey: "appScreenshotSets")
+ try container.encodeIfPresent(appStoreVersion, forKey: "appStoreVersion")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appPreviewSets == object.appPreviewSets else { return false }
+ guard self.appScreenshotSets == object.appScreenshotSets else { return false }
+ guard self.appStoreVersion == object.appStoreVersion else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionLocalization else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionLocalization, rhs: AppStoreVersionLocalization) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionLocalizationCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionLocalizationCreateRequest.swift
new file mode 100644
index 000000000..02709db1f
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionLocalizationCreateRequest.swift
@@ -0,0 +1,254 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreVersionLocalizationCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersionLocalizations = "appStoreVersionLocalizations"
+ }
+
+ public var relationships: Relationships
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public class Relationships: APIModel {
+
+ public var appStoreVersion: AppStoreVersion
+
+ public class AppStoreVersion: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersions = "appStoreVersions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersion else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersion, rhs: AppStoreVersion) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appStoreVersion: AppStoreVersion) {
+ self.appStoreVersion = appStoreVersion
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appStoreVersion = try container.decode("appStoreVersion")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(appStoreVersion, forKey: "appStoreVersion")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appStoreVersion == object.appStoreVersion else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Attributes: APIModel {
+
+ public var locale: String
+
+ public var description: String?
+
+ public var keywords: String?
+
+ public var marketingUrl: URL?
+
+ public var promotionalText: String?
+
+ public var supportUrl: URL?
+
+ public var whatsNew: String?
+
+ public init(locale: String, description: String? = nil, keywords: String? = nil, marketingUrl: URL? = nil, promotionalText: String? = nil, supportUrl: URL? = nil, whatsNew: String? = nil) {
+ self.locale = locale
+ self.description = description
+ self.keywords = keywords
+ self.marketingUrl = marketingUrl
+ self.promotionalText = promotionalText
+ self.supportUrl = supportUrl
+ self.whatsNew = whatsNew
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ locale = try container.decode("locale")
+ description = try container.decodeIfPresent("description")
+ keywords = try container.decodeIfPresent("keywords")
+ marketingUrl = try container.decodeIfPresent("marketingUrl")
+ promotionalText = try container.decodeIfPresent("promotionalText")
+ supportUrl = try container.decodeIfPresent("supportUrl")
+ whatsNew = try container.decodeIfPresent("whatsNew")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(locale, forKey: "locale")
+ try container.encodeIfPresent(description, forKey: "description")
+ try container.encodeIfPresent(keywords, forKey: "keywords")
+ try container.encodeIfPresent(marketingUrl, forKey: "marketingUrl")
+ try container.encodeIfPresent(promotionalText, forKey: "promotionalText")
+ try container.encodeIfPresent(supportUrl, forKey: "supportUrl")
+ try container.encodeIfPresent(whatsNew, forKey: "whatsNew")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.locale == object.locale else { return false }
+ guard self.description == object.description else { return false }
+ guard self.keywords == object.keywords else { return false }
+ guard self.marketingUrl == object.marketingUrl else { return false }
+ guard self.promotionalText == object.promotionalText else { return false }
+ guard self.supportUrl == object.supportUrl else { return false }
+ guard self.whatsNew == object.whatsNew else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, attributes: Attributes, type: `Type`) {
+ self.relationships = relationships
+ self.attributes = attributes
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionLocalizationCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionLocalizationCreateRequest, rhs: AppStoreVersionLocalizationCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionLocalizationResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionLocalizationResponse.swift
new file mode 100644
index 000000000..5b9acdab8
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionLocalizationResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreVersionLocalizationResponse: APIModel {
+
+ public var data: AppStoreVersionLocalization
+
+ public var links: DocumentLinks
+
+ public var included: [Included]?
+
+ public init(data: AppStoreVersionLocalization, links: DocumentLinks, included: [Included]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionLocalizationResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionLocalizationResponse, rhs: AppStoreVersionLocalizationResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionLocalizationUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionLocalizationUpdateRequest.swift
new file mode 100644
index 000000000..648e8c380
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionLocalizationUpdateRequest.swift
@@ -0,0 +1,145 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreVersionLocalizationUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersionLocalizations = "appStoreVersionLocalizations"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var description: String?
+
+ public var keywords: String?
+
+ public var marketingUrl: URL?
+
+ public var promotionalText: String?
+
+ public var supportUrl: URL?
+
+ public var whatsNew: String?
+
+ public init(description: String? = nil, keywords: String? = nil, marketingUrl: URL? = nil, promotionalText: String? = nil, supportUrl: URL? = nil, whatsNew: String? = nil) {
+ self.description = description
+ self.keywords = keywords
+ self.marketingUrl = marketingUrl
+ self.promotionalText = promotionalText
+ self.supportUrl = supportUrl
+ self.whatsNew = whatsNew
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ description = try container.decodeIfPresent("description")
+ keywords = try container.decodeIfPresent("keywords")
+ marketingUrl = try container.decodeIfPresent("marketingUrl")
+ promotionalText = try container.decodeIfPresent("promotionalText")
+ supportUrl = try container.decodeIfPresent("supportUrl")
+ whatsNew = try container.decodeIfPresent("whatsNew")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(description, forKey: "description")
+ try container.encodeIfPresent(keywords, forKey: "keywords")
+ try container.encodeIfPresent(marketingUrl, forKey: "marketingUrl")
+ try container.encodeIfPresent(promotionalText, forKey: "promotionalText")
+ try container.encodeIfPresent(supportUrl, forKey: "supportUrl")
+ try container.encodeIfPresent(whatsNew, forKey: "whatsNew")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.description == object.description else { return false }
+ guard self.keywords == object.keywords else { return false }
+ guard self.marketingUrl == object.marketingUrl else { return false }
+ guard self.promotionalText == object.promotionalText else { return false }
+ guard self.supportUrl == object.supportUrl else { return false }
+ guard self.whatsNew == object.whatsNew else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionLocalizationUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionLocalizationUpdateRequest, rhs: AppStoreVersionLocalizationUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionLocalizationsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionLocalizationsResponse.swift
new file mode 100644
index 000000000..41c66c67f
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionLocalizationsResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreVersionLocalizationsResponse: APIModel {
+
+ public var data: [AppStoreVersionLocalization]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [Included]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [AppStoreVersionLocalization], links: PagedDocumentLinks, included: [Included]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionLocalizationsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionLocalizationsResponse, rhs: AppStoreVersionLocalizationsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionPhasedRelease.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionPhasedRelease.swift
new file mode 100644
index 000000000..a08c68080
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionPhasedRelease.swift
@@ -0,0 +1,108 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreVersionPhasedRelease: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersionPhasedReleases = "appStoreVersionPhasedReleases"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var currentDayNumber: Int?
+
+ public var phasedReleaseState: PhasedReleaseState?
+
+ public var startDate: DateTime?
+
+ public var totalPauseDuration: Int?
+
+ public init(currentDayNumber: Int? = nil, phasedReleaseState: PhasedReleaseState? = nil, startDate: DateTime? = nil, totalPauseDuration: Int? = nil) {
+ self.currentDayNumber = currentDayNumber
+ self.phasedReleaseState = phasedReleaseState
+ self.startDate = startDate
+ self.totalPauseDuration = totalPauseDuration
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ currentDayNumber = try container.decodeIfPresent("currentDayNumber")
+ phasedReleaseState = try container.decodeIfPresent("phasedReleaseState")
+ startDate = try container.decodeIfPresent("startDate")
+ totalPauseDuration = try container.decodeIfPresent("totalPauseDuration")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(currentDayNumber, forKey: "currentDayNumber")
+ try container.encodeIfPresent(phasedReleaseState, forKey: "phasedReleaseState")
+ try container.encodeIfPresent(startDate, forKey: "startDate")
+ try container.encodeIfPresent(totalPauseDuration, forKey: "totalPauseDuration")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.currentDayNumber == object.currentDayNumber else { return false }
+ guard self.phasedReleaseState == object.phasedReleaseState else { return false }
+ guard self.startDate == object.startDate else { return false }
+ guard self.totalPauseDuration == object.totalPauseDuration else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionPhasedRelease else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionPhasedRelease, rhs: AppStoreVersionPhasedRelease) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionPhasedReleaseCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionPhasedReleaseCreateRequest.swift
new file mode 100644
index 000000000..276b30339
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionPhasedReleaseCreateRequest.swift
@@ -0,0 +1,218 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreVersionPhasedReleaseCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersionPhasedReleases = "appStoreVersionPhasedReleases"
+ }
+
+ public var relationships: Relationships
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Relationships: APIModel {
+
+ public var appStoreVersion: AppStoreVersion
+
+ public class AppStoreVersion: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersions = "appStoreVersions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersion else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersion, rhs: AppStoreVersion) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appStoreVersion: AppStoreVersion) {
+ self.appStoreVersion = appStoreVersion
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appStoreVersion = try container.decode("appStoreVersion")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(appStoreVersion, forKey: "appStoreVersion")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appStoreVersion == object.appStoreVersion else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Attributes: APIModel {
+
+ public var phasedReleaseState: PhasedReleaseState?
+
+ public init(phasedReleaseState: PhasedReleaseState? = nil) {
+ self.phasedReleaseState = phasedReleaseState
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ phasedReleaseState = try container.decodeIfPresent("phasedReleaseState")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(phasedReleaseState, forKey: "phasedReleaseState")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.phasedReleaseState == object.phasedReleaseState else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, type: `Type`, attributes: Attributes? = nil) {
+ self.relationships = relationships
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionPhasedReleaseCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionPhasedReleaseCreateRequest, rhs: AppStoreVersionPhasedReleaseCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionPhasedReleaseResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionPhasedReleaseResponse.swift
new file mode 100644
index 000000000..7156e8c24
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionPhasedReleaseResponse.swift
@@ -0,0 +1,43 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreVersionPhasedReleaseResponse: APIModel {
+
+ public var data: AppStoreVersionPhasedRelease
+
+ public var links: DocumentLinks
+
+ public init(data: AppStoreVersionPhasedRelease, links: DocumentLinks) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionPhasedReleaseResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionPhasedReleaseResponse, rhs: AppStoreVersionPhasedReleaseResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionPhasedReleaseUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionPhasedReleaseUpdateRequest.swift
new file mode 100644
index 000000000..157275b59
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionPhasedReleaseUpdateRequest.swift
@@ -0,0 +1,115 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreVersionPhasedReleaseUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersionPhasedReleases = "appStoreVersionPhasedReleases"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var phasedReleaseState: PhasedReleaseState?
+
+ public init(phasedReleaseState: PhasedReleaseState? = nil) {
+ self.phasedReleaseState = phasedReleaseState
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ phasedReleaseState = try container.decodeIfPresent("phasedReleaseState")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(phasedReleaseState, forKey: "phasedReleaseState")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.phasedReleaseState == object.phasedReleaseState else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionPhasedReleaseUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionPhasedReleaseUpdateRequest, rhs: AppStoreVersionPhasedReleaseUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionResponse.swift
new file mode 100644
index 000000000..c56a9cb44
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreVersionResponse: APIModel {
+
+ public var data: AppStoreVersion
+
+ public var links: DocumentLinks
+
+ public var included: [Included]?
+
+ public init(data: AppStoreVersion, links: DocumentLinks, included: [Included]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionResponse, rhs: AppStoreVersionResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionState.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionState.swift
new file mode 100644
index 000000000..49ee35e0e
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionState.swift
@@ -0,0 +1,26 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public enum AppStoreVersionState: String, Codable, Equatable, CaseIterable {
+ case developerRemovedFromSale = "DEVELOPER_REMOVED_FROM_SALE"
+ case developerRejected = "DEVELOPER_REJECTED"
+ case inReview = "IN_REVIEW"
+ case invalidBinary = "INVALID_BINARY"
+ case metadataRejected = "METADATA_REJECTED"
+ case pendingAppleRelease = "PENDING_APPLE_RELEASE"
+ case pendingContract = "PENDING_CONTRACT"
+ case pendingDeveloperRelease = "PENDING_DEVELOPER_RELEASE"
+ case prepareForSubmission = "PREPARE_FOR_SUBMISSION"
+ case preorderReadyForSale = "PREORDER_READY_FOR_SALE"
+ case processingForAppStore = "PROCESSING_FOR_APP_STORE"
+ case readyForSale = "READY_FOR_SALE"
+ case rejected = "REJECTED"
+ case removedFromSale = "REMOVED_FROM_SALE"
+ case waitingForExportCompliance = "WAITING_FOR_EXPORT_COMPLIANCE"
+ case waitingForReview = "WAITING_FOR_REVIEW"
+ case replacedWithNewVersion = "REPLACED_WITH_NEW_VERSION"
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionSubmission.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionSubmission.swift
new file mode 100644
index 000000000..f3f3c2e1e
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionSubmission.swift
@@ -0,0 +1,205 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreVersionSubmission: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersionSubmissions = "appStoreVersionSubmissions"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var relationships: Relationships?
+
+ public class Relationships: APIModel {
+
+ public var appStoreVersion: AppStoreVersion?
+
+ public class AppStoreVersion: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersions = "appStoreVersions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersion else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersion, rhs: AppStoreVersion) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appStoreVersion: AppStoreVersion? = nil) {
+ self.appStoreVersion = appStoreVersion
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appStoreVersion = try container.decodeIfPresent("appStoreVersion")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(appStoreVersion, forKey: "appStoreVersion")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appStoreVersion == object.appStoreVersion else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionSubmission else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionSubmission, rhs: AppStoreVersionSubmission) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionSubmissionCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionSubmissionCreateRequest.swift
new file mode 100644
index 000000000..36f78db36
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionSubmissionCreateRequest.swift
@@ -0,0 +1,181 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreVersionSubmissionCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersionSubmissions = "appStoreVersionSubmissions"
+ }
+
+ public var relationships: Relationships
+
+ public var type: `Type`
+
+ public class Relationships: APIModel {
+
+ public var appStoreVersion: AppStoreVersion
+
+ public class AppStoreVersion: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersions = "appStoreVersions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersion else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersion, rhs: AppStoreVersion) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appStoreVersion: AppStoreVersion) {
+ self.appStoreVersion = appStoreVersion
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appStoreVersion = try container.decode("appStoreVersion")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(appStoreVersion, forKey: "appStoreVersion")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appStoreVersion == object.appStoreVersion else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, type: `Type`) {
+ self.relationships = relationships
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionSubmissionCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionSubmissionCreateRequest, rhs: AppStoreVersionSubmissionCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionSubmissionResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionSubmissionResponse.swift
new file mode 100644
index 000000000..64a1ae5a5
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionSubmissionResponse.swift
@@ -0,0 +1,43 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreVersionSubmissionResponse: APIModel {
+
+ public var data: AppStoreVersionSubmission
+
+ public var links: DocumentLinks
+
+ public init(data: AppStoreVersionSubmission, links: DocumentLinks) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionSubmissionResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionSubmissionResponse, rhs: AppStoreVersionSubmissionResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionUpdateRequest.swift
new file mode 100644
index 000000000..a1c4cfc17
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionUpdateRequest.swift
@@ -0,0 +1,260 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreVersionUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersions = "appStoreVersions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public enum ReleaseType: String, Codable, Equatable, CaseIterable {
+ case manual = "MANUAL"
+ case afterApproval = "AFTER_APPROVAL"
+ case scheduled = "SCHEDULED"
+ }
+
+ public var copyright: String?
+
+ public var downloadable: Bool?
+
+ public var earliestReleaseDate: DateTime?
+
+ public var releaseType: ReleaseType?
+
+ public var usesIdfa: Bool?
+
+ public var versionString: String?
+
+ public init(copyright: String? = nil, downloadable: Bool? = nil, earliestReleaseDate: DateTime? = nil, releaseType: ReleaseType? = nil, usesIdfa: Bool? = nil, versionString: String? = nil) {
+ self.copyright = copyright
+ self.downloadable = downloadable
+ self.earliestReleaseDate = earliestReleaseDate
+ self.releaseType = releaseType
+ self.usesIdfa = usesIdfa
+ self.versionString = versionString
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ copyright = try container.decodeIfPresent("copyright")
+ downloadable = try container.decodeIfPresent("downloadable")
+ earliestReleaseDate = try container.decodeIfPresent("earliestReleaseDate")
+ releaseType = try container.decodeIfPresent("releaseType")
+ usesIdfa = try container.decodeIfPresent("usesIdfa")
+ versionString = try container.decodeIfPresent("versionString")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(copyright, forKey: "copyright")
+ try container.encodeIfPresent(downloadable, forKey: "downloadable")
+ try container.encodeIfPresent(earliestReleaseDate, forKey: "earliestReleaseDate")
+ try container.encodeIfPresent(releaseType, forKey: "releaseType")
+ try container.encodeIfPresent(usesIdfa, forKey: "usesIdfa")
+ try container.encodeIfPresent(versionString, forKey: "versionString")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.copyright == object.copyright else { return false }
+ guard self.downloadable == object.downloadable else { return false }
+ guard self.earliestReleaseDate == object.earliestReleaseDate else { return false }
+ guard self.releaseType == object.releaseType else { return false }
+ guard self.usesIdfa == object.usesIdfa else { return false }
+ guard self.versionString == object.versionString else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var build: Build?
+
+ public class Build: APIModel {
+
+ public var data: DataType?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Build else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: Build, rhs: Build) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(build: Build? = nil) {
+ self.build = build
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ build = try container.decodeIfPresent("build")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(build, forKey: "build")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.build == object.build else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionUpdateRequest, rhs: AppStoreVersionUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionsResponse.swift
new file mode 100644
index 000000000..126604553
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppStoreVersionsResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppStoreVersionsResponse: APIModel {
+
+ public var data: [AppStoreVersion]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [Included]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [AppStoreVersion], links: PagedDocumentLinks, included: [Included]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersionsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersionsResponse, rhs: AppStoreVersionsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppUpdateRequest.swift
new file mode 100644
index 000000000..7baaee671
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppUpdateRequest.swift
@@ -0,0 +1,325 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public enum ContentRightsDeclaration: String, Codable, Equatable, CaseIterable {
+ case doesNotUseThirdPartyContent = "DOES_NOT_USE_THIRD_PARTY_CONTENT"
+ case usesThirdPartyContent = "USES_THIRD_PARTY_CONTENT"
+ }
+
+ public var availableInNewTerritories: Bool?
+
+ public var bundleId: String?
+
+ public var contentRightsDeclaration: ContentRightsDeclaration?
+
+ public var primaryLocale: String?
+
+ public init(availableInNewTerritories: Bool? = nil, bundleId: String? = nil, contentRightsDeclaration: ContentRightsDeclaration? = nil, primaryLocale: String? = nil) {
+ self.availableInNewTerritories = availableInNewTerritories
+ self.bundleId = bundleId
+ self.contentRightsDeclaration = contentRightsDeclaration
+ self.primaryLocale = primaryLocale
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ availableInNewTerritories = try container.decodeIfPresent("availableInNewTerritories")
+ bundleId = try container.decodeIfPresent("bundleId")
+ contentRightsDeclaration = try container.decodeIfPresent("contentRightsDeclaration")
+ primaryLocale = try container.decodeIfPresent("primaryLocale")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(availableInNewTerritories, forKey: "availableInNewTerritories")
+ try container.encodeIfPresent(bundleId, forKey: "bundleId")
+ try container.encodeIfPresent(contentRightsDeclaration, forKey: "contentRightsDeclaration")
+ try container.encodeIfPresent(primaryLocale, forKey: "primaryLocale")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.availableInNewTerritories == object.availableInNewTerritories else { return false }
+ guard self.bundleId == object.bundleId else { return false }
+ guard self.contentRightsDeclaration == object.contentRightsDeclaration else { return false }
+ guard self.primaryLocale == object.primaryLocale else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var availableTerritories: AvailableTerritories?
+
+ public var prices: Prices?
+
+ public class AvailableTerritories: APIModel {
+
+ public var data: [DataType]?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case territories = "territories"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AvailableTerritories else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AvailableTerritories, rhs: AvailableTerritories) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Prices: APIModel {
+
+ public var data: [DataType]?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appPrices = "appPrices"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Prices else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: Prices, rhs: Prices) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(availableTerritories: AvailableTerritories? = nil, prices: Prices? = nil) {
+ self.availableTerritories = availableTerritories
+ self.prices = prices
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ availableTerritories = try container.decodeIfPresent("availableTerritories")
+ prices = try container.decodeIfPresent("prices")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(availableTerritories, forKey: "availableTerritories")
+ try container.encodeIfPresent(prices, forKey: "prices")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.availableTerritories == object.availableTerritories else { return false }
+ guard self.prices == object.prices else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppUpdateRequest, rhs: AppUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppsResponse.swift
new file mode 100644
index 000000000..cf1f92513
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/AppsResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class AppsResponse: APIModel {
+
+ public var data: [App]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [Included]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [App], links: PagedDocumentLinks, included: [Included]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppsResponse, rhs: AppsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppLocalization.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppLocalization.swift
new file mode 100644
index 000000000..5da183509
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppLocalization.swift
@@ -0,0 +1,272 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaAppLocalization: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaAppLocalizations = "betaAppLocalizations"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var description: String?
+
+ public var feedbackEmail: String?
+
+ public var locale: String?
+
+ public var marketingUrl: String?
+
+ public var privacyPolicyUrl: String?
+
+ public var tvOsPrivacyPolicy: String?
+
+ public init(description: String? = nil, feedbackEmail: String? = nil, locale: String? = nil, marketingUrl: String? = nil, privacyPolicyUrl: String? = nil, tvOsPrivacyPolicy: String? = nil) {
+ self.description = description
+ self.feedbackEmail = feedbackEmail
+ self.locale = locale
+ self.marketingUrl = marketingUrl
+ self.privacyPolicyUrl = privacyPolicyUrl
+ self.tvOsPrivacyPolicy = tvOsPrivacyPolicy
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ description = try container.decodeIfPresent("description")
+ feedbackEmail = try container.decodeIfPresent("feedbackEmail")
+ locale = try container.decodeIfPresent("locale")
+ marketingUrl = try container.decodeIfPresent("marketingUrl")
+ privacyPolicyUrl = try container.decodeIfPresent("privacyPolicyUrl")
+ tvOsPrivacyPolicy = try container.decodeIfPresent("tvOsPrivacyPolicy")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(description, forKey: "description")
+ try container.encodeIfPresent(feedbackEmail, forKey: "feedbackEmail")
+ try container.encodeIfPresent(locale, forKey: "locale")
+ try container.encodeIfPresent(marketingUrl, forKey: "marketingUrl")
+ try container.encodeIfPresent(privacyPolicyUrl, forKey: "privacyPolicyUrl")
+ try container.encodeIfPresent(tvOsPrivacyPolicy, forKey: "tvOsPrivacyPolicy")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.description == object.description else { return false }
+ guard self.feedbackEmail == object.feedbackEmail else { return false }
+ guard self.locale == object.locale else { return false }
+ guard self.marketingUrl == object.marketingUrl else { return false }
+ guard self.privacyPolicyUrl == object.privacyPolicyUrl else { return false }
+ guard self.tvOsPrivacyPolicy == object.tvOsPrivacyPolicy else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var app: App?
+
+ public class App: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(app: App? = nil) {
+ self.app = app
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ app = try container.decodeIfPresent("app")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(app, forKey: "app")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.app == object.app else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaAppLocalization else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaAppLocalization, rhs: BetaAppLocalization) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppLocalizationCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppLocalizationCreateRequest.swift
new file mode 100644
index 000000000..1ebac6416
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppLocalizationCreateRequest.swift
@@ -0,0 +1,248 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaAppLocalizationCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaAppLocalizations = "betaAppLocalizations"
+ }
+
+ public var relationships: Relationships
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public class Relationships: APIModel {
+
+ public var app: App
+
+ public class App: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(app: App) {
+ self.app = app
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ app = try container.decode("app")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(app, forKey: "app")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.app == object.app else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Attributes: APIModel {
+
+ public var locale: String
+
+ public var description: String?
+
+ public var feedbackEmail: String?
+
+ public var marketingUrl: String?
+
+ public var privacyPolicyUrl: String?
+
+ public var tvOsPrivacyPolicy: String?
+
+ public init(locale: String, description: String? = nil, feedbackEmail: String? = nil, marketingUrl: String? = nil, privacyPolicyUrl: String? = nil, tvOsPrivacyPolicy: String? = nil) {
+ self.locale = locale
+ self.description = description
+ self.feedbackEmail = feedbackEmail
+ self.marketingUrl = marketingUrl
+ self.privacyPolicyUrl = privacyPolicyUrl
+ self.tvOsPrivacyPolicy = tvOsPrivacyPolicy
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ locale = try container.decode("locale")
+ description = try container.decodeIfPresent("description")
+ feedbackEmail = try container.decodeIfPresent("feedbackEmail")
+ marketingUrl = try container.decodeIfPresent("marketingUrl")
+ privacyPolicyUrl = try container.decodeIfPresent("privacyPolicyUrl")
+ tvOsPrivacyPolicy = try container.decodeIfPresent("tvOsPrivacyPolicy")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(locale, forKey: "locale")
+ try container.encodeIfPresent(description, forKey: "description")
+ try container.encodeIfPresent(feedbackEmail, forKey: "feedbackEmail")
+ try container.encodeIfPresent(marketingUrl, forKey: "marketingUrl")
+ try container.encodeIfPresent(privacyPolicyUrl, forKey: "privacyPolicyUrl")
+ try container.encodeIfPresent(tvOsPrivacyPolicy, forKey: "tvOsPrivacyPolicy")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.locale == object.locale else { return false }
+ guard self.description == object.description else { return false }
+ guard self.feedbackEmail == object.feedbackEmail else { return false }
+ guard self.marketingUrl == object.marketingUrl else { return false }
+ guard self.privacyPolicyUrl == object.privacyPolicyUrl else { return false }
+ guard self.tvOsPrivacyPolicy == object.tvOsPrivacyPolicy else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, attributes: Attributes, type: `Type`) {
+ self.relationships = relationships
+ self.attributes = attributes
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaAppLocalizationCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaAppLocalizationCreateRequest, rhs: BetaAppLocalizationCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppLocalizationResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppLocalizationResponse.swift
new file mode 100644
index 000000000..bdb052aa3
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppLocalizationResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaAppLocalizationResponse: APIModel {
+
+ public var data: BetaAppLocalization
+
+ public var links: DocumentLinks
+
+ public var included: [App]?
+
+ public init(data: BetaAppLocalization, links: DocumentLinks, included: [App]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaAppLocalizationResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaAppLocalizationResponse, rhs: BetaAppLocalizationResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppLocalizationUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppLocalizationUpdateRequest.swift
new file mode 100644
index 000000000..5c393b137
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppLocalizationUpdateRequest.swift
@@ -0,0 +1,139 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaAppLocalizationUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaAppLocalizations = "betaAppLocalizations"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var description: String?
+
+ public var feedbackEmail: String?
+
+ public var marketingUrl: String?
+
+ public var privacyPolicyUrl: String?
+
+ public var tvOsPrivacyPolicy: String?
+
+ public init(description: String? = nil, feedbackEmail: String? = nil, marketingUrl: String? = nil, privacyPolicyUrl: String? = nil, tvOsPrivacyPolicy: String? = nil) {
+ self.description = description
+ self.feedbackEmail = feedbackEmail
+ self.marketingUrl = marketingUrl
+ self.privacyPolicyUrl = privacyPolicyUrl
+ self.tvOsPrivacyPolicy = tvOsPrivacyPolicy
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ description = try container.decodeIfPresent("description")
+ feedbackEmail = try container.decodeIfPresent("feedbackEmail")
+ marketingUrl = try container.decodeIfPresent("marketingUrl")
+ privacyPolicyUrl = try container.decodeIfPresent("privacyPolicyUrl")
+ tvOsPrivacyPolicy = try container.decodeIfPresent("tvOsPrivacyPolicy")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(description, forKey: "description")
+ try container.encodeIfPresent(feedbackEmail, forKey: "feedbackEmail")
+ try container.encodeIfPresent(marketingUrl, forKey: "marketingUrl")
+ try container.encodeIfPresent(privacyPolicyUrl, forKey: "privacyPolicyUrl")
+ try container.encodeIfPresent(tvOsPrivacyPolicy, forKey: "tvOsPrivacyPolicy")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.description == object.description else { return false }
+ guard self.feedbackEmail == object.feedbackEmail else { return false }
+ guard self.marketingUrl == object.marketingUrl else { return false }
+ guard self.privacyPolicyUrl == object.privacyPolicyUrl else { return false }
+ guard self.tvOsPrivacyPolicy == object.tvOsPrivacyPolicy else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaAppLocalizationUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaAppLocalizationUpdateRequest, rhs: BetaAppLocalizationUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppLocalizationsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppLocalizationsResponse.swift
new file mode 100644
index 000000000..32fd078a2
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppLocalizationsResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaAppLocalizationsResponse: APIModel {
+
+ public var data: [BetaAppLocalization]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [App]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [BetaAppLocalization], links: PagedDocumentLinks, included: [App]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaAppLocalizationsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaAppLocalizationsResponse, rhs: BetaAppLocalizationsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewDetail.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewDetail.swift
new file mode 100644
index 000000000..572c734a5
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewDetail.swift
@@ -0,0 +1,284 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaAppReviewDetail: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaAppReviewDetails = "betaAppReviewDetails"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var contactEmail: String?
+
+ public var contactFirstName: String?
+
+ public var contactLastName: String?
+
+ public var contactPhone: String?
+
+ public var demoAccountName: String?
+
+ public var demoAccountPassword: String?
+
+ public var demoAccountRequired: Bool?
+
+ public var notes: String?
+
+ public init(contactEmail: String? = nil, contactFirstName: String? = nil, contactLastName: String? = nil, contactPhone: String? = nil, demoAccountName: String? = nil, demoAccountPassword: String? = nil, demoAccountRequired: Bool? = nil, notes: String? = nil) {
+ self.contactEmail = contactEmail
+ self.contactFirstName = contactFirstName
+ self.contactLastName = contactLastName
+ self.contactPhone = contactPhone
+ self.demoAccountName = demoAccountName
+ self.demoAccountPassword = demoAccountPassword
+ self.demoAccountRequired = demoAccountRequired
+ self.notes = notes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ contactEmail = try container.decodeIfPresent("contactEmail")
+ contactFirstName = try container.decodeIfPresent("contactFirstName")
+ contactLastName = try container.decodeIfPresent("contactLastName")
+ contactPhone = try container.decodeIfPresent("contactPhone")
+ demoAccountName = try container.decodeIfPresent("demoAccountName")
+ demoAccountPassword = try container.decodeIfPresent("demoAccountPassword")
+ demoAccountRequired = try container.decodeIfPresent("demoAccountRequired")
+ notes = try container.decodeIfPresent("notes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(contactEmail, forKey: "contactEmail")
+ try container.encodeIfPresent(contactFirstName, forKey: "contactFirstName")
+ try container.encodeIfPresent(contactLastName, forKey: "contactLastName")
+ try container.encodeIfPresent(contactPhone, forKey: "contactPhone")
+ try container.encodeIfPresent(demoAccountName, forKey: "demoAccountName")
+ try container.encodeIfPresent(demoAccountPassword, forKey: "demoAccountPassword")
+ try container.encodeIfPresent(demoAccountRequired, forKey: "demoAccountRequired")
+ try container.encodeIfPresent(notes, forKey: "notes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.contactEmail == object.contactEmail else { return false }
+ guard self.contactFirstName == object.contactFirstName else { return false }
+ guard self.contactLastName == object.contactLastName else { return false }
+ guard self.contactPhone == object.contactPhone else { return false }
+ guard self.demoAccountName == object.demoAccountName else { return false }
+ guard self.demoAccountPassword == object.demoAccountPassword else { return false }
+ guard self.demoAccountRequired == object.demoAccountRequired else { return false }
+ guard self.notes == object.notes else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var app: App?
+
+ public class App: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(app: App? = nil) {
+ self.app = app
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ app = try container.decodeIfPresent("app")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(app, forKey: "app")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.app == object.app else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaAppReviewDetail else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaAppReviewDetail, rhs: BetaAppReviewDetail) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewDetailResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewDetailResponse.swift
new file mode 100644
index 000000000..31f51c784
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewDetailResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaAppReviewDetailResponse: APIModel {
+
+ public var data: BetaAppReviewDetail
+
+ public var links: DocumentLinks
+
+ public var included: [App]?
+
+ public init(data: BetaAppReviewDetail, links: DocumentLinks, included: [App]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaAppReviewDetailResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaAppReviewDetailResponse, rhs: BetaAppReviewDetailResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewDetailUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewDetailUpdateRequest.swift
new file mode 100644
index 000000000..73bd2aced
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewDetailUpdateRequest.swift
@@ -0,0 +1,157 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaAppReviewDetailUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaAppReviewDetails = "betaAppReviewDetails"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var contactEmail: String?
+
+ public var contactFirstName: String?
+
+ public var contactLastName: String?
+
+ public var contactPhone: String?
+
+ public var demoAccountName: String?
+
+ public var demoAccountPassword: String?
+
+ public var demoAccountRequired: Bool?
+
+ public var notes: String?
+
+ public init(contactEmail: String? = nil, contactFirstName: String? = nil, contactLastName: String? = nil, contactPhone: String? = nil, demoAccountName: String? = nil, demoAccountPassword: String? = nil, demoAccountRequired: Bool? = nil, notes: String? = nil) {
+ self.contactEmail = contactEmail
+ self.contactFirstName = contactFirstName
+ self.contactLastName = contactLastName
+ self.contactPhone = contactPhone
+ self.demoAccountName = demoAccountName
+ self.demoAccountPassword = demoAccountPassword
+ self.demoAccountRequired = demoAccountRequired
+ self.notes = notes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ contactEmail = try container.decodeIfPresent("contactEmail")
+ contactFirstName = try container.decodeIfPresent("contactFirstName")
+ contactLastName = try container.decodeIfPresent("contactLastName")
+ contactPhone = try container.decodeIfPresent("contactPhone")
+ demoAccountName = try container.decodeIfPresent("demoAccountName")
+ demoAccountPassword = try container.decodeIfPresent("demoAccountPassword")
+ demoAccountRequired = try container.decodeIfPresent("demoAccountRequired")
+ notes = try container.decodeIfPresent("notes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(contactEmail, forKey: "contactEmail")
+ try container.encodeIfPresent(contactFirstName, forKey: "contactFirstName")
+ try container.encodeIfPresent(contactLastName, forKey: "contactLastName")
+ try container.encodeIfPresent(contactPhone, forKey: "contactPhone")
+ try container.encodeIfPresent(demoAccountName, forKey: "demoAccountName")
+ try container.encodeIfPresent(demoAccountPassword, forKey: "demoAccountPassword")
+ try container.encodeIfPresent(demoAccountRequired, forKey: "demoAccountRequired")
+ try container.encodeIfPresent(notes, forKey: "notes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.contactEmail == object.contactEmail else { return false }
+ guard self.contactFirstName == object.contactFirstName else { return false }
+ guard self.contactLastName == object.contactLastName else { return false }
+ guard self.contactPhone == object.contactPhone else { return false }
+ guard self.demoAccountName == object.demoAccountName else { return false }
+ guard self.demoAccountPassword == object.demoAccountPassword else { return false }
+ guard self.demoAccountRequired == object.demoAccountRequired else { return false }
+ guard self.notes == object.notes else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaAppReviewDetailUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaAppReviewDetailUpdateRequest, rhs: BetaAppReviewDetailUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewDetailsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewDetailsResponse.swift
new file mode 100644
index 000000000..6ab3da99f
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewDetailsResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaAppReviewDetailsResponse: APIModel {
+
+ public var data: [BetaAppReviewDetail]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [App]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [BetaAppReviewDetail], links: PagedDocumentLinks, included: [App]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaAppReviewDetailsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaAppReviewDetailsResponse, rhs: BetaAppReviewDetailsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewSubmission.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewSubmission.swift
new file mode 100644
index 000000000..a6c11dc3f
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewSubmission.swift
@@ -0,0 +1,242 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaAppReviewSubmission: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaAppReviewSubmissions = "betaAppReviewSubmissions"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var betaReviewState: BetaReviewState?
+
+ public init(betaReviewState: BetaReviewState? = nil) {
+ self.betaReviewState = betaReviewState
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ betaReviewState = try container.decodeIfPresent("betaReviewState")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(betaReviewState, forKey: "betaReviewState")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.betaReviewState == object.betaReviewState else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var build: Build?
+
+ public class Build: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Build else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: Build, rhs: Build) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(build: Build? = nil) {
+ self.build = build
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ build = try container.decodeIfPresent("build")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(build, forKey: "build")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.build == object.build else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaAppReviewSubmission else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaAppReviewSubmission, rhs: BetaAppReviewSubmission) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewSubmissionCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewSubmissionCreateRequest.swift
new file mode 100644
index 000000000..ea471bd20
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewSubmissionCreateRequest.swift
@@ -0,0 +1,181 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaAppReviewSubmissionCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaAppReviewSubmissions = "betaAppReviewSubmissions"
+ }
+
+ public var relationships: Relationships
+
+ public var type: `Type`
+
+ public class Relationships: APIModel {
+
+ public var build: Build
+
+ public class Build: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Build else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: Build, rhs: Build) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(build: Build) {
+ self.build = build
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ build = try container.decode("build")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(build, forKey: "build")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.build == object.build else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, type: `Type`) {
+ self.relationships = relationships
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaAppReviewSubmissionCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaAppReviewSubmissionCreateRequest, rhs: BetaAppReviewSubmissionCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewSubmissionResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewSubmissionResponse.swift
new file mode 100644
index 000000000..66d4a15c6
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewSubmissionResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaAppReviewSubmissionResponse: APIModel {
+
+ public var data: BetaAppReviewSubmission
+
+ public var links: DocumentLinks
+
+ public var included: [Build]?
+
+ public init(data: BetaAppReviewSubmission, links: DocumentLinks, included: [Build]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaAppReviewSubmissionResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaAppReviewSubmissionResponse, rhs: BetaAppReviewSubmissionResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewSubmissionsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewSubmissionsResponse.swift
new file mode 100644
index 000000000..d486a260e
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaAppReviewSubmissionsResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaAppReviewSubmissionsResponse: APIModel {
+
+ public var data: [BetaAppReviewSubmission]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [Build]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [BetaAppReviewSubmission], links: PagedDocumentLinks, included: [Build]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaAppReviewSubmissionsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaAppReviewSubmissionsResponse, rhs: BetaAppReviewSubmissionsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaBuildLocalization.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaBuildLocalization.swift
new file mode 100644
index 000000000..84dcf9004
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaBuildLocalization.swift
@@ -0,0 +1,248 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaBuildLocalization: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaBuildLocalizations = "betaBuildLocalizations"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var locale: String?
+
+ public var whatsNew: String?
+
+ public init(locale: String? = nil, whatsNew: String? = nil) {
+ self.locale = locale
+ self.whatsNew = whatsNew
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ locale = try container.decodeIfPresent("locale")
+ whatsNew = try container.decodeIfPresent("whatsNew")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(locale, forKey: "locale")
+ try container.encodeIfPresent(whatsNew, forKey: "whatsNew")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.locale == object.locale else { return false }
+ guard self.whatsNew == object.whatsNew else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var build: Build?
+
+ public class Build: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Build else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: Build, rhs: Build) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(build: Build? = nil) {
+ self.build = build
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ build = try container.decodeIfPresent("build")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(build, forKey: "build")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.build == object.build else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaBuildLocalization else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaBuildLocalization, rhs: BetaBuildLocalization) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaBuildLocalizationCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaBuildLocalizationCreateRequest.swift
new file mode 100644
index 000000000..80be59bd6
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaBuildLocalizationCreateRequest.swift
@@ -0,0 +1,224 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaBuildLocalizationCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaBuildLocalizations = "betaBuildLocalizations"
+ }
+
+ public var relationships: Relationships
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public class Relationships: APIModel {
+
+ public var build: Build
+
+ public class Build: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Build else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: Build, rhs: Build) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(build: Build) {
+ self.build = build
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ build = try container.decode("build")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(build, forKey: "build")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.build == object.build else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Attributes: APIModel {
+
+ public var locale: String
+
+ public var whatsNew: String?
+
+ public init(locale: String, whatsNew: String? = nil) {
+ self.locale = locale
+ self.whatsNew = whatsNew
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ locale = try container.decode("locale")
+ whatsNew = try container.decodeIfPresent("whatsNew")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(locale, forKey: "locale")
+ try container.encodeIfPresent(whatsNew, forKey: "whatsNew")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.locale == object.locale else { return false }
+ guard self.whatsNew == object.whatsNew else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, attributes: Attributes, type: `Type`) {
+ self.relationships = relationships
+ self.attributes = attributes
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaBuildLocalizationCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaBuildLocalizationCreateRequest, rhs: BetaBuildLocalizationCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaBuildLocalizationResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaBuildLocalizationResponse.swift
new file mode 100644
index 000000000..a8646050d
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaBuildLocalizationResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaBuildLocalizationResponse: APIModel {
+
+ public var data: BetaBuildLocalization
+
+ public var links: DocumentLinks
+
+ public var included: [Build]?
+
+ public init(data: BetaBuildLocalization, links: DocumentLinks, included: [Build]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaBuildLocalizationResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaBuildLocalizationResponse, rhs: BetaBuildLocalizationResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaBuildLocalizationUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaBuildLocalizationUpdateRequest.swift
new file mode 100644
index 000000000..687e44bd1
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaBuildLocalizationUpdateRequest.swift
@@ -0,0 +1,115 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaBuildLocalizationUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaBuildLocalizations = "betaBuildLocalizations"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var whatsNew: String?
+
+ public init(whatsNew: String? = nil) {
+ self.whatsNew = whatsNew
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ whatsNew = try container.decodeIfPresent("whatsNew")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(whatsNew, forKey: "whatsNew")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.whatsNew == object.whatsNew else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaBuildLocalizationUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaBuildLocalizationUpdateRequest, rhs: BetaBuildLocalizationUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaBuildLocalizationsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaBuildLocalizationsResponse.swift
new file mode 100644
index 000000000..47ecfc2e1
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaBuildLocalizationsResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaBuildLocalizationsResponse: APIModel {
+
+ public var data: [BetaBuildLocalization]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [Build]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [BetaBuildLocalization], links: PagedDocumentLinks, included: [Build]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaBuildLocalizationsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaBuildLocalizationsResponse, rhs: BetaBuildLocalizationsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroup.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroup.swift
new file mode 100644
index 000000000..a1e3b51c8
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroup.swift
@@ -0,0 +1,544 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaGroup: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaGroups = "betaGroups"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var createdDate: DateTime?
+
+ public var feedbackEnabled: Bool?
+
+ public var isInternalGroup: Bool?
+
+ public var name: String?
+
+ public var publicLink: String?
+
+ public var publicLinkEnabled: Bool?
+
+ public var publicLinkId: String?
+
+ public var publicLinkLimit: Int?
+
+ public var publicLinkLimitEnabled: Bool?
+
+ public init(createdDate: DateTime? = nil, feedbackEnabled: Bool? = nil, isInternalGroup: Bool? = nil, name: String? = nil, publicLink: String? = nil, publicLinkEnabled: Bool? = nil, publicLinkId: String? = nil, publicLinkLimit: Int? = nil, publicLinkLimitEnabled: Bool? = nil) {
+ self.createdDate = createdDate
+ self.feedbackEnabled = feedbackEnabled
+ self.isInternalGroup = isInternalGroup
+ self.name = name
+ self.publicLink = publicLink
+ self.publicLinkEnabled = publicLinkEnabled
+ self.publicLinkId = publicLinkId
+ self.publicLinkLimit = publicLinkLimit
+ self.publicLinkLimitEnabled = publicLinkLimitEnabled
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ createdDate = try container.decodeIfPresent("createdDate")
+ feedbackEnabled = try container.decodeIfPresent("feedbackEnabled")
+ isInternalGroup = try container.decodeIfPresent("isInternalGroup")
+ name = try container.decodeIfPresent("name")
+ publicLink = try container.decodeIfPresent("publicLink")
+ publicLinkEnabled = try container.decodeIfPresent("publicLinkEnabled")
+ publicLinkId = try container.decodeIfPresent("publicLinkId")
+ publicLinkLimit = try container.decodeIfPresent("publicLinkLimit")
+ publicLinkLimitEnabled = try container.decodeIfPresent("publicLinkLimitEnabled")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(createdDate, forKey: "createdDate")
+ try container.encodeIfPresent(feedbackEnabled, forKey: "feedbackEnabled")
+ try container.encodeIfPresent(isInternalGroup, forKey: "isInternalGroup")
+ try container.encodeIfPresent(name, forKey: "name")
+ try container.encodeIfPresent(publicLink, forKey: "publicLink")
+ try container.encodeIfPresent(publicLinkEnabled, forKey: "publicLinkEnabled")
+ try container.encodeIfPresent(publicLinkId, forKey: "publicLinkId")
+ try container.encodeIfPresent(publicLinkLimit, forKey: "publicLinkLimit")
+ try container.encodeIfPresent(publicLinkLimitEnabled, forKey: "publicLinkLimitEnabled")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.createdDate == object.createdDate else { return false }
+ guard self.feedbackEnabled == object.feedbackEnabled else { return false }
+ guard self.isInternalGroup == object.isInternalGroup else { return false }
+ guard self.name == object.name else { return false }
+ guard self.publicLink == object.publicLink else { return false }
+ guard self.publicLinkEnabled == object.publicLinkEnabled else { return false }
+ guard self.publicLinkId == object.publicLinkId else { return false }
+ guard self.publicLinkLimit == object.publicLinkLimit else { return false }
+ guard self.publicLinkLimitEnabled == object.publicLinkLimitEnabled else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var app: App?
+
+ public var betaTesters: BetaTesters?
+
+ public var builds: Builds?
+
+ public class App: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class BetaTesters: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaTesters = "betaTesters"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaTesters else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaTesters, rhs: BetaTesters) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Builds: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Builds else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: Builds, rhs: Builds) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(app: App? = nil, betaTesters: BetaTesters? = nil, builds: Builds? = nil) {
+ self.app = app
+ self.betaTesters = betaTesters
+ self.builds = builds
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ app = try container.decodeIfPresent("app")
+ betaTesters = try container.decodeIfPresent("betaTesters")
+ builds = try container.decodeIfPresent("builds")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(app, forKey: "app")
+ try container.encodeIfPresent(betaTesters, forKey: "betaTesters")
+ try container.encodeIfPresent(builds, forKey: "builds")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.app == object.app else { return false }
+ guard self.betaTesters == object.betaTesters else { return false }
+ guard self.builds == object.builds else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaGroup else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaGroup, rhs: BetaGroup) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupBetaTestersLinkagesRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupBetaTestersLinkagesRequest.swift
new file mode 100644
index 000000000..bdd011332
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupBetaTestersLinkagesRequest.swift
@@ -0,0 +1,78 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaGroupBetaTestersLinkagesRequest: APIModel {
+
+ public var data: [DataType]
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaTesters = "betaTesters"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaGroupBetaTestersLinkagesRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaGroupBetaTestersLinkagesRequest, rhs: BetaGroupBetaTestersLinkagesRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupBetaTestersLinkagesResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupBetaTestersLinkagesResponse.swift
new file mode 100644
index 000000000..0772bbed8
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupBetaTestersLinkagesResponse.swift
@@ -0,0 +1,90 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaGroupBetaTestersLinkagesResponse: APIModel {
+
+ public var data: [DataType]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaTesters = "betaTesters"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaGroupBetaTestersLinkagesResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaGroupBetaTestersLinkagesResponse, rhs: BetaGroupBetaTestersLinkagesResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupBuildsLinkagesRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupBuildsLinkagesRequest.swift
new file mode 100644
index 000000000..4d843396d
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupBuildsLinkagesRequest.swift
@@ -0,0 +1,78 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaGroupBuildsLinkagesRequest: APIModel {
+
+ public var data: [DataType]
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaGroupBuildsLinkagesRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaGroupBuildsLinkagesRequest, rhs: BetaGroupBuildsLinkagesRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupBuildsLinkagesResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupBuildsLinkagesResponse.swift
new file mode 100644
index 000000000..b0fb0fe0f
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupBuildsLinkagesResponse.swift
@@ -0,0 +1,90 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaGroupBuildsLinkagesResponse: APIModel {
+
+ public var data: [DataType]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaGroupBuildsLinkagesResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaGroupBuildsLinkagesResponse, rhs: BetaGroupBuildsLinkagesResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupCreateRequest.swift
new file mode 100644
index 000000000..516923bb9
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupCreateRequest.swift
@@ -0,0 +1,398 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaGroupCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaGroups = "betaGroups"
+ }
+
+ public var relationships: Relationships
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public class Relationships: APIModel {
+
+ public var app: App
+
+ public var betaTesters: BetaTesters?
+
+ public var builds: Builds?
+
+ public class App: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class BetaTesters: APIModel {
+
+ public var data: [DataType]?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaTesters = "betaTesters"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaTesters else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaTesters, rhs: BetaTesters) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Builds: APIModel {
+
+ public var data: [DataType]?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Builds else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: Builds, rhs: Builds) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(app: App, betaTesters: BetaTesters? = nil, builds: Builds? = nil) {
+ self.app = app
+ self.betaTesters = betaTesters
+ self.builds = builds
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ app = try container.decode("app")
+ betaTesters = try container.decodeIfPresent("betaTesters")
+ builds = try container.decodeIfPresent("builds")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(app, forKey: "app")
+ try container.encodeIfPresent(betaTesters, forKey: "betaTesters")
+ try container.encodeIfPresent(builds, forKey: "builds")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.app == object.app else { return false }
+ guard self.betaTesters == object.betaTesters else { return false }
+ guard self.builds == object.builds else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Attributes: APIModel {
+
+ public var name: String
+
+ public var feedbackEnabled: Bool?
+
+ public var publicLinkEnabled: Bool?
+
+ public var publicLinkLimit: Int?
+
+ public var publicLinkLimitEnabled: Bool?
+
+ public init(name: String, feedbackEnabled: Bool? = nil, publicLinkEnabled: Bool? = nil, publicLinkLimit: Int? = nil, publicLinkLimitEnabled: Bool? = nil) {
+ self.name = name
+ self.feedbackEnabled = feedbackEnabled
+ self.publicLinkEnabled = publicLinkEnabled
+ self.publicLinkLimit = publicLinkLimit
+ self.publicLinkLimitEnabled = publicLinkLimitEnabled
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ name = try container.decode("name")
+ feedbackEnabled = try container.decodeIfPresent("feedbackEnabled")
+ publicLinkEnabled = try container.decodeIfPresent("publicLinkEnabled")
+ publicLinkLimit = try container.decodeIfPresent("publicLinkLimit")
+ publicLinkLimitEnabled = try container.decodeIfPresent("publicLinkLimitEnabled")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(name, forKey: "name")
+ try container.encodeIfPresent(feedbackEnabled, forKey: "feedbackEnabled")
+ try container.encodeIfPresent(publicLinkEnabled, forKey: "publicLinkEnabled")
+ try container.encodeIfPresent(publicLinkLimit, forKey: "publicLinkLimit")
+ try container.encodeIfPresent(publicLinkLimitEnabled, forKey: "publicLinkLimitEnabled")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.name == object.name else { return false }
+ guard self.feedbackEnabled == object.feedbackEnabled else { return false }
+ guard self.publicLinkEnabled == object.publicLinkEnabled else { return false }
+ guard self.publicLinkLimit == object.publicLinkLimit else { return false }
+ guard self.publicLinkLimitEnabled == object.publicLinkLimitEnabled else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, attributes: Attributes, type: `Type`) {
+ self.relationships = relationships
+ self.attributes = attributes
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaGroupCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaGroupCreateRequest, rhs: BetaGroupCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupResponse.swift
new file mode 100644
index 000000000..aac350e59
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaGroupResponse: APIModel {
+
+ public var data: BetaGroup
+
+ public var links: DocumentLinks
+
+ public var included: [Included]?
+
+ public init(data: BetaGroup, links: DocumentLinks, included: [Included]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaGroupResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaGroupResponse, rhs: BetaGroupResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupUpdateRequest.swift
new file mode 100644
index 000000000..27b058b13
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupUpdateRequest.swift
@@ -0,0 +1,139 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaGroupUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaGroups = "betaGroups"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var feedbackEnabled: Bool?
+
+ public var name: String?
+
+ public var publicLinkEnabled: Bool?
+
+ public var publicLinkLimit: Int?
+
+ public var publicLinkLimitEnabled: Bool?
+
+ public init(feedbackEnabled: Bool? = nil, name: String? = nil, publicLinkEnabled: Bool? = nil, publicLinkLimit: Int? = nil, publicLinkLimitEnabled: Bool? = nil) {
+ self.feedbackEnabled = feedbackEnabled
+ self.name = name
+ self.publicLinkEnabled = publicLinkEnabled
+ self.publicLinkLimit = publicLinkLimit
+ self.publicLinkLimitEnabled = publicLinkLimitEnabled
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ feedbackEnabled = try container.decodeIfPresent("feedbackEnabled")
+ name = try container.decodeIfPresent("name")
+ publicLinkEnabled = try container.decodeIfPresent("publicLinkEnabled")
+ publicLinkLimit = try container.decodeIfPresent("publicLinkLimit")
+ publicLinkLimitEnabled = try container.decodeIfPresent("publicLinkLimitEnabled")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(feedbackEnabled, forKey: "feedbackEnabled")
+ try container.encodeIfPresent(name, forKey: "name")
+ try container.encodeIfPresent(publicLinkEnabled, forKey: "publicLinkEnabled")
+ try container.encodeIfPresent(publicLinkLimit, forKey: "publicLinkLimit")
+ try container.encodeIfPresent(publicLinkLimitEnabled, forKey: "publicLinkLimitEnabled")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.feedbackEnabled == object.feedbackEnabled else { return false }
+ guard self.name == object.name else { return false }
+ guard self.publicLinkEnabled == object.publicLinkEnabled else { return false }
+ guard self.publicLinkLimit == object.publicLinkLimit else { return false }
+ guard self.publicLinkLimitEnabled == object.publicLinkLimitEnabled else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaGroupUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaGroupUpdateRequest, rhs: BetaGroupUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupsResponse.swift
new file mode 100644
index 000000000..ada5b6285
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaGroupsResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaGroupsResponse: APIModel {
+
+ public var data: [BetaGroup]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [Included]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [BetaGroup], links: PagedDocumentLinks, included: [Included]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaGroupsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaGroupsResponse, rhs: BetaGroupsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaInviteType.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaInviteType.swift
new file mode 100644
index 000000000..144702213
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaInviteType.swift
@@ -0,0 +1,11 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public enum BetaInviteType: String, Codable, Equatable, CaseIterable {
+ case email = "EMAIL"
+ case publicLink = "PUBLIC_LINK"
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaLicenseAgreement.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaLicenseAgreement.swift
new file mode 100644
index 000000000..403ab0eae
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaLicenseAgreement.swift
@@ -0,0 +1,242 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaLicenseAgreement: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaLicenseAgreements = "betaLicenseAgreements"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var agreementText: String?
+
+ public init(agreementText: String? = nil) {
+ self.agreementText = agreementText
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ agreementText = try container.decodeIfPresent("agreementText")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(agreementText, forKey: "agreementText")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.agreementText == object.agreementText else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var app: App?
+
+ public class App: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(app: App? = nil) {
+ self.app = app
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ app = try container.decodeIfPresent("app")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(app, forKey: "app")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.app == object.app else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaLicenseAgreement else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaLicenseAgreement, rhs: BetaLicenseAgreement) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaLicenseAgreementResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaLicenseAgreementResponse.swift
new file mode 100644
index 000000000..911e9fe28
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaLicenseAgreementResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaLicenseAgreementResponse: APIModel {
+
+ public var data: BetaLicenseAgreement
+
+ public var links: DocumentLinks
+
+ public var included: [App]?
+
+ public init(data: BetaLicenseAgreement, links: DocumentLinks, included: [App]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaLicenseAgreementResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaLicenseAgreementResponse, rhs: BetaLicenseAgreementResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaLicenseAgreementUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaLicenseAgreementUpdateRequest.swift
new file mode 100644
index 000000000..2696795b4
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaLicenseAgreementUpdateRequest.swift
@@ -0,0 +1,115 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaLicenseAgreementUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaLicenseAgreements = "betaLicenseAgreements"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var agreementText: String?
+
+ public init(agreementText: String? = nil) {
+ self.agreementText = agreementText
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ agreementText = try container.decodeIfPresent("agreementText")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(agreementText, forKey: "agreementText")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.agreementText == object.agreementText else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaLicenseAgreementUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaLicenseAgreementUpdateRequest, rhs: BetaLicenseAgreementUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaLicenseAgreementsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaLicenseAgreementsResponse.swift
new file mode 100644
index 000000000..1b1d7b3c2
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaLicenseAgreementsResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaLicenseAgreementsResponse: APIModel {
+
+ public var data: [BetaLicenseAgreement]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [App]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [BetaLicenseAgreement], links: PagedDocumentLinks, included: [App]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaLicenseAgreementsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaLicenseAgreementsResponse, rhs: BetaLicenseAgreementsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaReviewState.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaReviewState.swift
new file mode 100644
index 000000000..037a4388e
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaReviewState.swift
@@ -0,0 +1,13 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public enum BetaReviewState: String, Codable, Equatable, CaseIterable {
+ case waitingForReview = "WAITING_FOR_REVIEW"
+ case inReview = "IN_REVIEW"
+ case rejected = "REJECTED"
+ case approved = "APPROVED"
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTester.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTester.swift
new file mode 100644
index 000000000..f4ce472a2
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTester.swift
@@ -0,0 +1,520 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaTester: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaTesters = "betaTesters"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var email: String?
+
+ public var firstName: String?
+
+ public var inviteType: BetaInviteType?
+
+ public var lastName: String?
+
+ public init(email: String? = nil, firstName: String? = nil, inviteType: BetaInviteType? = nil, lastName: String? = nil) {
+ self.email = email
+ self.firstName = firstName
+ self.inviteType = inviteType
+ self.lastName = lastName
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ email = try container.decodeIfPresent("email")
+ firstName = try container.decodeIfPresent("firstName")
+ inviteType = try container.decodeIfPresent("inviteType")
+ lastName = try container.decodeIfPresent("lastName")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(email, forKey: "email")
+ try container.encodeIfPresent(firstName, forKey: "firstName")
+ try container.encodeIfPresent(inviteType, forKey: "inviteType")
+ try container.encodeIfPresent(lastName, forKey: "lastName")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.email == object.email else { return false }
+ guard self.firstName == object.firstName else { return false }
+ guard self.inviteType == object.inviteType else { return false }
+ guard self.lastName == object.lastName else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var apps: Apps?
+
+ public var betaGroups: BetaGroups?
+
+ public var builds: Builds?
+
+ public class Apps: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Apps else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: Apps, rhs: Apps) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class BetaGroups: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaGroups = "betaGroups"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaGroups else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaGroups, rhs: BetaGroups) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Builds: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Builds else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: Builds, rhs: Builds) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(apps: Apps? = nil, betaGroups: BetaGroups? = nil, builds: Builds? = nil) {
+ self.apps = apps
+ self.betaGroups = betaGroups
+ self.builds = builds
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ apps = try container.decodeIfPresent("apps")
+ betaGroups = try container.decodeIfPresent("betaGroups")
+ builds = try container.decodeIfPresent("builds")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(apps, forKey: "apps")
+ try container.encodeIfPresent(betaGroups, forKey: "betaGroups")
+ try container.encodeIfPresent(builds, forKey: "builds")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.apps == object.apps else { return false }
+ guard self.betaGroups == object.betaGroups else { return false }
+ guard self.builds == object.builds else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaTester else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaTester, rhs: BetaTester) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterAppsLinkagesRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterAppsLinkagesRequest.swift
new file mode 100644
index 000000000..106c2110b
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterAppsLinkagesRequest.swift
@@ -0,0 +1,78 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaTesterAppsLinkagesRequest: APIModel {
+
+ public var data: [DataType]
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaTesterAppsLinkagesRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaTesterAppsLinkagesRequest, rhs: BetaTesterAppsLinkagesRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterAppsLinkagesResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterAppsLinkagesResponse.swift
new file mode 100644
index 000000000..fdc882461
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterAppsLinkagesResponse.swift
@@ -0,0 +1,90 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaTesterAppsLinkagesResponse: APIModel {
+
+ public var data: [DataType]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaTesterAppsLinkagesResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaTesterAppsLinkagesResponse, rhs: BetaTesterAppsLinkagesResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterBetaGroupsLinkagesRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterBetaGroupsLinkagesRequest.swift
new file mode 100644
index 000000000..ccaf8002b
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterBetaGroupsLinkagesRequest.swift
@@ -0,0 +1,78 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaTesterBetaGroupsLinkagesRequest: APIModel {
+
+ public var data: [DataType]
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaGroups = "betaGroups"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaTesterBetaGroupsLinkagesRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaTesterBetaGroupsLinkagesRequest, rhs: BetaTesterBetaGroupsLinkagesRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterBetaGroupsLinkagesResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterBetaGroupsLinkagesResponse.swift
new file mode 100644
index 000000000..785423d01
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterBetaGroupsLinkagesResponse.swift
@@ -0,0 +1,90 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaTesterBetaGroupsLinkagesResponse: APIModel {
+
+ public var data: [DataType]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaGroups = "betaGroups"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaTesterBetaGroupsLinkagesResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaTesterBetaGroupsLinkagesResponse, rhs: BetaTesterBetaGroupsLinkagesResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterBuildsLinkagesRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterBuildsLinkagesRequest.swift
new file mode 100644
index 000000000..35a560ac1
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterBuildsLinkagesRequest.swift
@@ -0,0 +1,78 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaTesterBuildsLinkagesRequest: APIModel {
+
+ public var data: [DataType]
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaTesterBuildsLinkagesRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaTesterBuildsLinkagesRequest, rhs: BetaTesterBuildsLinkagesRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterBuildsLinkagesResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterBuildsLinkagesResponse.swift
new file mode 100644
index 000000000..4d65423d6
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterBuildsLinkagesResponse.swift
@@ -0,0 +1,90 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaTesterBuildsLinkagesResponse: APIModel {
+
+ public var data: [DataType]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaTesterBuildsLinkagesResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaTesterBuildsLinkagesResponse, rhs: BetaTesterBuildsLinkagesResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterCreateRequest.swift
new file mode 100644
index 000000000..e45b0cc4c
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterCreateRequest.swift
@@ -0,0 +1,308 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaTesterCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaTesters = "betaTesters"
+ }
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var email: String
+
+ public var firstName: String?
+
+ public var lastName: String?
+
+ public init(email: String, firstName: String? = nil, lastName: String? = nil) {
+ self.email = email
+ self.firstName = firstName
+ self.lastName = lastName
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ email = try container.decode("email")
+ firstName = try container.decodeIfPresent("firstName")
+ lastName = try container.decodeIfPresent("lastName")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(email, forKey: "email")
+ try container.encodeIfPresent(firstName, forKey: "firstName")
+ try container.encodeIfPresent(lastName, forKey: "lastName")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.email == object.email else { return false }
+ guard self.firstName == object.firstName else { return false }
+ guard self.lastName == object.lastName else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var betaGroups: BetaGroups?
+
+ public var builds: Builds?
+
+ public class BetaGroups: APIModel {
+
+ public var data: [DataType]?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaGroups = "betaGroups"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaGroups else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaGroups, rhs: BetaGroups) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Builds: APIModel {
+
+ public var data: [DataType]?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Builds else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: Builds, rhs: Builds) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(betaGroups: BetaGroups? = nil, builds: Builds? = nil) {
+ self.betaGroups = betaGroups
+ self.builds = builds
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ betaGroups = try container.decodeIfPresent("betaGroups")
+ builds = try container.decodeIfPresent("builds")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(betaGroups, forKey: "betaGroups")
+ try container.encodeIfPresent(builds, forKey: "builds")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.betaGroups == object.betaGroups else { return false }
+ guard self.builds == object.builds else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(attributes: Attributes, type: `Type`, relationships: Relationships? = nil) {
+ self.attributes = attributes
+ self.type = type
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaTesterCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaTesterCreateRequest, rhs: BetaTesterCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterInvitation.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterInvitation.swift
new file mode 100644
index 000000000..99c0bee51
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterInvitation.swift
@@ -0,0 +1,53 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaTesterInvitation: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaTesterInvitations = "betaTesterInvitations"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(links: ResourceLinks, id: String, type: `Type`) {
+ self.links = links
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaTesterInvitation else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaTesterInvitation, rhs: BetaTesterInvitation) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterInvitationCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterInvitationCreateRequest.swift
new file mode 100644
index 000000000..6b52f4583
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterInvitationCreateRequest.swift
@@ -0,0 +1,259 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaTesterInvitationCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaTesterInvitations = "betaTesterInvitations"
+ }
+
+ public var relationships: Relationships
+
+ public var type: `Type`
+
+ public class Relationships: APIModel {
+
+ public var app: App
+
+ public var betaTester: BetaTester
+
+ public class App: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class BetaTester: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaTesters = "betaTesters"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaTester else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaTester, rhs: BetaTester) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(app: App, betaTester: BetaTester) {
+ self.app = app
+ self.betaTester = betaTester
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ app = try container.decode("app")
+ betaTester = try container.decode("betaTester")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(app, forKey: "app")
+ try container.encode(betaTester, forKey: "betaTester")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.app == object.app else { return false }
+ guard self.betaTester == object.betaTester else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, type: `Type`) {
+ self.relationships = relationships
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaTesterInvitationCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaTesterInvitationCreateRequest, rhs: BetaTesterInvitationCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterInvitationResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterInvitationResponse.swift
new file mode 100644
index 000000000..d28adb63d
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterInvitationResponse.swift
@@ -0,0 +1,43 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaTesterInvitationResponse: APIModel {
+
+ public var data: BetaTesterInvitation
+
+ public var links: DocumentLinks
+
+ public init(data: BetaTesterInvitation, links: DocumentLinks) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaTesterInvitationResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaTesterInvitationResponse, rhs: BetaTesterInvitationResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterResponse.swift
new file mode 100644
index 000000000..01cb21da3
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTesterResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaTesterResponse: APIModel {
+
+ public var data: BetaTester
+
+ public var links: DocumentLinks
+
+ public var included: [Included]?
+
+ public init(data: BetaTester, links: DocumentLinks, included: [Included]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaTesterResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaTesterResponse, rhs: BetaTesterResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTestersResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTestersResponse.swift
new file mode 100644
index 000000000..ce361045a
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BetaTestersResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BetaTestersResponse: APIModel {
+
+ public var data: [BetaTester]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [Included]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [BetaTester], links: PagedDocumentLinks, included: [Included]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaTestersResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaTestersResponse, rhs: BetaTestersResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BrazilAgeRating.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BrazilAgeRating.swift
new file mode 100644
index 000000000..cb3909126
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BrazilAgeRating.swift
@@ -0,0 +1,15 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public enum BrazilAgeRating: String, Codable, Equatable, CaseIterable {
+ case l = "L"
+ case ten = "TEN"
+ case twelve = "TWELVE"
+ case fourteen = "FOURTEEN"
+ case sixteen = "SIXTEEN"
+ case eighteen = "EIGHTEEN"
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/Build.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/Build.swift
new file mode 100644
index 000000000..7cd7071d3
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/Build.swift
@@ -0,0 +1,1277 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class Build: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public enum ProcessingState: String, Codable, Equatable, CaseIterable {
+ case processing = "PROCESSING"
+ case failed = "FAILED"
+ case invalid = "INVALID"
+ case valid = "VALID"
+ }
+
+ public var expirationDate: DateTime?
+
+ public var expired: Bool?
+
+ public var iconAssetToken: ImageAsset?
+
+ public var minOsVersion: String?
+
+ public var processingState: ProcessingState?
+
+ public var uploadedDate: DateTime?
+
+ public var usesNonExemptEncryption: Bool?
+
+ public var version: String?
+
+ public init(expirationDate: DateTime? = nil, expired: Bool? = nil, iconAssetToken: ImageAsset? = nil, minOsVersion: String? = nil, processingState: ProcessingState? = nil, uploadedDate: DateTime? = nil, usesNonExemptEncryption: Bool? = nil, version: String? = nil) {
+ self.expirationDate = expirationDate
+ self.expired = expired
+ self.iconAssetToken = iconAssetToken
+ self.minOsVersion = minOsVersion
+ self.processingState = processingState
+ self.uploadedDate = uploadedDate
+ self.usesNonExemptEncryption = usesNonExemptEncryption
+ self.version = version
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ expirationDate = try container.decodeIfPresent("expirationDate")
+ expired = try container.decodeIfPresent("expired")
+ iconAssetToken = try container.decodeIfPresent("iconAssetToken")
+ minOsVersion = try container.decodeIfPresent("minOsVersion")
+ processingState = try container.decodeIfPresent("processingState")
+ uploadedDate = try container.decodeIfPresent("uploadedDate")
+ usesNonExemptEncryption = try container.decodeIfPresent("usesNonExemptEncryption")
+ version = try container.decodeIfPresent("version")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(expirationDate, forKey: "expirationDate")
+ try container.encodeIfPresent(expired, forKey: "expired")
+ try container.encodeIfPresent(iconAssetToken, forKey: "iconAssetToken")
+ try container.encodeIfPresent(minOsVersion, forKey: "minOsVersion")
+ try container.encodeIfPresent(processingState, forKey: "processingState")
+ try container.encodeIfPresent(uploadedDate, forKey: "uploadedDate")
+ try container.encodeIfPresent(usesNonExemptEncryption, forKey: "usesNonExemptEncryption")
+ try container.encodeIfPresent(version, forKey: "version")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.expirationDate == object.expirationDate else { return false }
+ guard self.expired == object.expired else { return false }
+ guard self.iconAssetToken == object.iconAssetToken else { return false }
+ guard self.minOsVersion == object.minOsVersion else { return false }
+ guard self.processingState == object.processingState else { return false }
+ guard self.uploadedDate == object.uploadedDate else { return false }
+ guard self.usesNonExemptEncryption == object.usesNonExemptEncryption else { return false }
+ guard self.version == object.version else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var app: App?
+
+ public var appEncryptionDeclaration: AppEncryptionDeclaration?
+
+ public var appStoreVersion: AppStoreVersion?
+
+ public var betaAppReviewSubmission: BetaAppReviewSubmission?
+
+ public var betaBuildLocalizations: BetaBuildLocalizations?
+
+ public var buildBetaDetail: BuildBetaDetail?
+
+ public var icons: Icons?
+
+ public var individualTesters: IndividualTesters?
+
+ public var preReleaseVersion: PreReleaseVersion?
+
+ public class App: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class AppEncryptionDeclaration: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appEncryptionDeclarations = "appEncryptionDeclarations"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppEncryptionDeclaration else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppEncryptionDeclaration, rhs: AppEncryptionDeclaration) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class AppStoreVersion: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersions = "appStoreVersions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersion else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersion, rhs: AppStoreVersion) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class BetaAppReviewSubmission: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaAppReviewSubmissions = "betaAppReviewSubmissions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaAppReviewSubmission else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaAppReviewSubmission, rhs: BetaAppReviewSubmission) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class BetaBuildLocalizations: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaBuildLocalizations = "betaBuildLocalizations"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BetaBuildLocalizations else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BetaBuildLocalizations, rhs: BetaBuildLocalizations) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class BuildBetaDetail: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case buildBetaDetails = "buildBetaDetails"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BuildBetaDetail else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: BuildBetaDetail, rhs: BuildBetaDetail) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Icons: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case buildIcons = "buildIcons"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Icons else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: Icons, rhs: Icons) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class IndividualTesters: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaTesters = "betaTesters"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? IndividualTesters else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: IndividualTesters, rhs: IndividualTesters) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class PreReleaseVersion: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case preReleaseVersions = "preReleaseVersions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? PreReleaseVersion else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: PreReleaseVersion, rhs: PreReleaseVersion) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(app: App? = nil, appEncryptionDeclaration: AppEncryptionDeclaration? = nil, appStoreVersion: AppStoreVersion? = nil, betaAppReviewSubmission: BetaAppReviewSubmission? = nil, betaBuildLocalizations: BetaBuildLocalizations? = nil, buildBetaDetail: BuildBetaDetail? = nil, icons: Icons? = nil, individualTesters: IndividualTesters? = nil, preReleaseVersion: PreReleaseVersion? = nil) {
+ self.app = app
+ self.appEncryptionDeclaration = appEncryptionDeclaration
+ self.appStoreVersion = appStoreVersion
+ self.betaAppReviewSubmission = betaAppReviewSubmission
+ self.betaBuildLocalizations = betaBuildLocalizations
+ self.buildBetaDetail = buildBetaDetail
+ self.icons = icons
+ self.individualTesters = individualTesters
+ self.preReleaseVersion = preReleaseVersion
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ app = try container.decodeIfPresent("app")
+ appEncryptionDeclaration = try container.decodeIfPresent("appEncryptionDeclaration")
+ appStoreVersion = try container.decodeIfPresent("appStoreVersion")
+ betaAppReviewSubmission = try container.decodeIfPresent("betaAppReviewSubmission")
+ betaBuildLocalizations = try container.decodeIfPresent("betaBuildLocalizations")
+ buildBetaDetail = try container.decodeIfPresent("buildBetaDetail")
+ icons = try container.decodeIfPresent("icons")
+ individualTesters = try container.decodeIfPresent("individualTesters")
+ preReleaseVersion = try container.decodeIfPresent("preReleaseVersion")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(app, forKey: "app")
+ try container.encodeIfPresent(appEncryptionDeclaration, forKey: "appEncryptionDeclaration")
+ try container.encodeIfPresent(appStoreVersion, forKey: "appStoreVersion")
+ try container.encodeIfPresent(betaAppReviewSubmission, forKey: "betaAppReviewSubmission")
+ try container.encodeIfPresent(betaBuildLocalizations, forKey: "betaBuildLocalizations")
+ try container.encodeIfPresent(buildBetaDetail, forKey: "buildBetaDetail")
+ try container.encodeIfPresent(icons, forKey: "icons")
+ try container.encodeIfPresent(individualTesters, forKey: "individualTesters")
+ try container.encodeIfPresent(preReleaseVersion, forKey: "preReleaseVersion")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.app == object.app else { return false }
+ guard self.appEncryptionDeclaration == object.appEncryptionDeclaration else { return false }
+ guard self.appStoreVersion == object.appStoreVersion else { return false }
+ guard self.betaAppReviewSubmission == object.betaAppReviewSubmission else { return false }
+ guard self.betaBuildLocalizations == object.betaBuildLocalizations else { return false }
+ guard self.buildBetaDetail == object.buildBetaDetail else { return false }
+ guard self.icons == object.icons else { return false }
+ guard self.individualTesters == object.individualTesters else { return false }
+ guard self.preReleaseVersion == object.preReleaseVersion else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Build else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: Build, rhs: Build) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildAppEncryptionDeclarationLinkageRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildAppEncryptionDeclarationLinkageRequest.swift
new file mode 100644
index 000000000..0d0b73340
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildAppEncryptionDeclarationLinkageRequest.swift
@@ -0,0 +1,78 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BuildAppEncryptionDeclarationLinkageRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appEncryptionDeclarations = "appEncryptionDeclarations"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BuildAppEncryptionDeclarationLinkageRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BuildAppEncryptionDeclarationLinkageRequest, rhs: BuildAppEncryptionDeclarationLinkageRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildAppEncryptionDeclarationLinkageResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildAppEncryptionDeclarationLinkageResponse.swift
new file mode 100644
index 000000000..ac3ba642e
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildAppEncryptionDeclarationLinkageResponse.swift
@@ -0,0 +1,84 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BuildAppEncryptionDeclarationLinkageResponse: APIModel {
+
+ public var data: DataType
+
+ public var links: DocumentLinks
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appEncryptionDeclarations = "appEncryptionDeclarations"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType, links: DocumentLinks) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BuildAppEncryptionDeclarationLinkageResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: BuildAppEncryptionDeclarationLinkageResponse, rhs: BuildAppEncryptionDeclarationLinkageResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaDetail.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaDetail.swift
new file mode 100644
index 000000000..e5016351c
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaDetail.swift
@@ -0,0 +1,254 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BuildBetaDetail: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case buildBetaDetails = "buildBetaDetails"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var autoNotifyEnabled: Bool?
+
+ public var externalBuildState: ExternalBetaState?
+
+ public var internalBuildState: InternalBetaState?
+
+ public init(autoNotifyEnabled: Bool? = nil, externalBuildState: ExternalBetaState? = nil, internalBuildState: InternalBetaState? = nil) {
+ self.autoNotifyEnabled = autoNotifyEnabled
+ self.externalBuildState = externalBuildState
+ self.internalBuildState = internalBuildState
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ autoNotifyEnabled = try container.decodeIfPresent("autoNotifyEnabled")
+ externalBuildState = try container.decodeIfPresent("externalBuildState")
+ internalBuildState = try container.decodeIfPresent("internalBuildState")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(autoNotifyEnabled, forKey: "autoNotifyEnabled")
+ try container.encodeIfPresent(externalBuildState, forKey: "externalBuildState")
+ try container.encodeIfPresent(internalBuildState, forKey: "internalBuildState")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.autoNotifyEnabled == object.autoNotifyEnabled else { return false }
+ guard self.externalBuildState == object.externalBuildState else { return false }
+ guard self.internalBuildState == object.internalBuildState else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var build: Build?
+
+ public class Build: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Build else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: Build, rhs: Build) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(build: Build? = nil) {
+ self.build = build
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ build = try container.decodeIfPresent("build")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(build, forKey: "build")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.build == object.build else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BuildBetaDetail else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: BuildBetaDetail, rhs: BuildBetaDetail) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaDetailResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaDetailResponse.swift
new file mode 100644
index 000000000..3d2b0318b
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaDetailResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BuildBetaDetailResponse: APIModel {
+
+ public var data: BuildBetaDetail
+
+ public var links: DocumentLinks
+
+ public var included: [Build]?
+
+ public init(data: BuildBetaDetail, links: DocumentLinks, included: [Build]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BuildBetaDetailResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: BuildBetaDetailResponse, rhs: BuildBetaDetailResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaDetailUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaDetailUpdateRequest.swift
new file mode 100644
index 000000000..b44accfdb
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaDetailUpdateRequest.swift
@@ -0,0 +1,115 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BuildBetaDetailUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case buildBetaDetails = "buildBetaDetails"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var autoNotifyEnabled: Bool?
+
+ public init(autoNotifyEnabled: Bool? = nil) {
+ self.autoNotifyEnabled = autoNotifyEnabled
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ autoNotifyEnabled = try container.decodeIfPresent("autoNotifyEnabled")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(autoNotifyEnabled, forKey: "autoNotifyEnabled")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.autoNotifyEnabled == object.autoNotifyEnabled else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BuildBetaDetailUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BuildBetaDetailUpdateRequest, rhs: BuildBetaDetailUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaDetailsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaDetailsResponse.swift
new file mode 100644
index 000000000..67cf757e0
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaDetailsResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BuildBetaDetailsResponse: APIModel {
+
+ public var data: [BuildBetaDetail]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [Build]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [BuildBetaDetail], links: PagedDocumentLinks, included: [Build]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BuildBetaDetailsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BuildBetaDetailsResponse, rhs: BuildBetaDetailsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaGroupsLinkagesRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaGroupsLinkagesRequest.swift
new file mode 100644
index 000000000..5e100ce2d
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaGroupsLinkagesRequest.swift
@@ -0,0 +1,78 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BuildBetaGroupsLinkagesRequest: APIModel {
+
+ public var data: [DataType]
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaGroups = "betaGroups"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BuildBetaGroupsLinkagesRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BuildBetaGroupsLinkagesRequest, rhs: BuildBetaGroupsLinkagesRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaNotification.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaNotification.swift
new file mode 100644
index 000000000..c49b836e9
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaNotification.swift
@@ -0,0 +1,53 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BuildBetaNotification: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case buildBetaNotifications = "buildBetaNotifications"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(links: ResourceLinks, id: String, type: `Type`) {
+ self.links = links
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BuildBetaNotification else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: BuildBetaNotification, rhs: BuildBetaNotification) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaNotificationCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaNotificationCreateRequest.swift
new file mode 100644
index 000000000..710340562
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaNotificationCreateRequest.swift
@@ -0,0 +1,181 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BuildBetaNotificationCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case buildBetaNotifications = "buildBetaNotifications"
+ }
+
+ public var relationships: Relationships
+
+ public var type: `Type`
+
+ public class Relationships: APIModel {
+
+ public var build: Build
+
+ public class Build: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Build else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: Build, rhs: Build) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(build: Build) {
+ self.build = build
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ build = try container.decode("build")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(build, forKey: "build")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.build == object.build else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, type: `Type`) {
+ self.relationships = relationships
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BuildBetaNotificationCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BuildBetaNotificationCreateRequest, rhs: BuildBetaNotificationCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaNotificationResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaNotificationResponse.swift
new file mode 100644
index 000000000..aab4e3748
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildBetaNotificationResponse.swift
@@ -0,0 +1,43 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BuildBetaNotificationResponse: APIModel {
+
+ public var data: BuildBetaNotification
+
+ public var links: DocumentLinks
+
+ public init(data: BuildBetaNotification, links: DocumentLinks) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BuildBetaNotificationResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: BuildBetaNotificationResponse, rhs: BuildBetaNotificationResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildIcon.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildIcon.swift
new file mode 100644
index 000000000..3f4933236
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildIcon.swift
@@ -0,0 +1,96 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BuildIcon: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case buildIcons = "buildIcons"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var iconAsset: ImageAsset?
+
+ public var iconType: IconAssetType?
+
+ public init(iconAsset: ImageAsset? = nil, iconType: IconAssetType? = nil) {
+ self.iconAsset = iconAsset
+ self.iconType = iconType
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ iconAsset = try container.decodeIfPresent("iconAsset")
+ iconType = try container.decodeIfPresent("iconType")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(iconAsset, forKey: "iconAsset")
+ try container.encodeIfPresent(iconType, forKey: "iconType")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.iconAsset == object.iconAsset else { return false }
+ guard self.iconType == object.iconType else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BuildIcon else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: BuildIcon, rhs: BuildIcon) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildIconsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildIconsResponse.swift
new file mode 100644
index 000000000..01c90c650
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildIconsResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BuildIconsResponse: APIModel {
+
+ public var data: [BuildIcon]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public init(data: [BuildIcon], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BuildIconsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BuildIconsResponse, rhs: BuildIconsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildIndividualTestersLinkagesRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildIndividualTestersLinkagesRequest.swift
new file mode 100644
index 000000000..52d1786c5
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildIndividualTestersLinkagesRequest.swift
@@ -0,0 +1,78 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BuildIndividualTestersLinkagesRequest: APIModel {
+
+ public var data: [DataType]
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaTesters = "betaTesters"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BuildIndividualTestersLinkagesRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BuildIndividualTestersLinkagesRequest, rhs: BuildIndividualTestersLinkagesRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildIndividualTestersLinkagesResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildIndividualTestersLinkagesResponse.swift
new file mode 100644
index 000000000..58c1c6f4b
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildIndividualTestersLinkagesResponse.swift
@@ -0,0 +1,90 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BuildIndividualTestersLinkagesResponse: APIModel {
+
+ public var data: [DataType]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case betaTesters = "betaTesters"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BuildIndividualTestersLinkagesResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BuildIndividualTestersLinkagesResponse, rhs: BuildIndividualTestersLinkagesResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildResponse.swift
new file mode 100644
index 000000000..b71fa9875
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BuildResponse: APIModel {
+
+ public var data: Build
+
+ public var links: DocumentLinks
+
+ public var included: [Included]?
+
+ public init(data: Build, links: DocumentLinks, included: [Included]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BuildResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: BuildResponse, rhs: BuildResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildUpdateRequest.swift
new file mode 100644
index 000000000..c98ec9515
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildUpdateRequest.swift
@@ -0,0 +1,230 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BuildUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var expired: Bool?
+
+ public var usesNonExemptEncryption: Bool?
+
+ public init(expired: Bool? = nil, usesNonExemptEncryption: Bool? = nil) {
+ self.expired = expired
+ self.usesNonExemptEncryption = usesNonExemptEncryption
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ expired = try container.decodeIfPresent("expired")
+ usesNonExemptEncryption = try container.decodeIfPresent("usesNonExemptEncryption")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(expired, forKey: "expired")
+ try container.encodeIfPresent(usesNonExemptEncryption, forKey: "usesNonExemptEncryption")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.expired == object.expired else { return false }
+ guard self.usesNonExemptEncryption == object.usesNonExemptEncryption else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var appEncryptionDeclaration: AppEncryptionDeclaration?
+
+ public class AppEncryptionDeclaration: APIModel {
+
+ public var data: DataType?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appEncryptionDeclarations = "appEncryptionDeclarations"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppEncryptionDeclaration else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppEncryptionDeclaration, rhs: AppEncryptionDeclaration) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appEncryptionDeclaration: AppEncryptionDeclaration? = nil) {
+ self.appEncryptionDeclaration = appEncryptionDeclaration
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appEncryptionDeclaration = try container.decodeIfPresent("appEncryptionDeclaration")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(appEncryptionDeclaration, forKey: "appEncryptionDeclaration")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appEncryptionDeclaration == object.appEncryptionDeclaration else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BuildUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BuildUpdateRequest, rhs: BuildUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildsResponse.swift
new file mode 100644
index 000000000..1f49d2e3b
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BuildsResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BuildsResponse: APIModel {
+
+ public var data: [Build]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [Included]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [Build], links: PagedDocumentLinks, included: [Included]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BuildsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BuildsResponse, rhs: BuildsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleId.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleId.swift
new file mode 100644
index 000000000..b1ad3cde7
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleId.swift
@@ -0,0 +1,514 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BundleId: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case bundleIds = "bundleIds"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var identifier: String?
+
+ public var name: String?
+
+ public var platform: BundleIdPlatform?
+
+ public var seedId: String?
+
+ public init(identifier: String? = nil, name: String? = nil, platform: BundleIdPlatform? = nil, seedId: String? = nil) {
+ self.identifier = identifier
+ self.name = name
+ self.platform = platform
+ self.seedId = seedId
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ identifier = try container.decodeIfPresent("identifier")
+ name = try container.decodeIfPresent("name")
+ platform = try container.decodeIfPresent("platform")
+ seedId = try container.decodeIfPresent("seedId")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(identifier, forKey: "identifier")
+ try container.encodeIfPresent(name, forKey: "name")
+ try container.encodeIfPresent(platform, forKey: "platform")
+ try container.encodeIfPresent(seedId, forKey: "seedId")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.identifier == object.identifier else { return false }
+ guard self.name == object.name else { return false }
+ guard self.platform == object.platform else { return false }
+ guard self.seedId == object.seedId else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var app: App?
+
+ public var bundleIdCapabilities: BundleIdCapabilities?
+
+ public var profiles: Profiles?
+
+ public class App: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class BundleIdCapabilities: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case bundleIdCapabilities = "bundleIdCapabilities"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BundleIdCapabilities else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BundleIdCapabilities, rhs: BundleIdCapabilities) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Profiles: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case profiles = "profiles"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Profiles else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: Profiles, rhs: Profiles) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(app: App? = nil, bundleIdCapabilities: BundleIdCapabilities? = nil, profiles: Profiles? = nil) {
+ self.app = app
+ self.bundleIdCapabilities = bundleIdCapabilities
+ self.profiles = profiles
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ app = try container.decodeIfPresent("app")
+ bundleIdCapabilities = try container.decodeIfPresent("bundleIdCapabilities")
+ profiles = try container.decodeIfPresent("profiles")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(app, forKey: "app")
+ try container.encodeIfPresent(bundleIdCapabilities, forKey: "bundleIdCapabilities")
+ try container.encodeIfPresent(profiles, forKey: "profiles")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.app == object.app else { return false }
+ guard self.bundleIdCapabilities == object.bundleIdCapabilities else { return false }
+ guard self.profiles == object.profiles else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BundleId else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: BundleId, rhs: BundleId) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdCapabilitiesResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdCapabilitiesResponse.swift
new file mode 100644
index 000000000..a5da6ffb3
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdCapabilitiesResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BundleIdCapabilitiesResponse: APIModel {
+
+ public var data: [BundleIdCapability]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public init(data: [BundleIdCapability], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BundleIdCapabilitiesResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BundleIdCapabilitiesResponse, rhs: BundleIdCapabilitiesResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdCapability.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdCapability.swift
new file mode 100644
index 000000000..8702e1aee
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdCapability.swift
@@ -0,0 +1,96 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BundleIdCapability: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case bundleIdCapabilities = "bundleIdCapabilities"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var capabilityType: CapabilityType?
+
+ public var settings: [CapabilitySetting]?
+
+ public init(capabilityType: CapabilityType? = nil, settings: [CapabilitySetting]? = nil) {
+ self.capabilityType = capabilityType
+ self.settings = settings
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ capabilityType = try container.decodeIfPresent("capabilityType")
+ settings = try container.decodeArrayIfPresent("settings")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(capabilityType, forKey: "capabilityType")
+ try container.encodeIfPresent(settings, forKey: "settings")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.capabilityType == object.capabilityType else { return false }
+ guard self.settings == object.settings else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BundleIdCapability else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: BundleIdCapability, rhs: BundleIdCapability) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdCapabilityCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdCapabilityCreateRequest.swift
new file mode 100644
index 000000000..f4e42f5f5
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdCapabilityCreateRequest.swift
@@ -0,0 +1,224 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BundleIdCapabilityCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case bundleIdCapabilities = "bundleIdCapabilities"
+ }
+
+ public var relationships: Relationships
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public class Relationships: APIModel {
+
+ public var bundleId: BundleId
+
+ public class BundleId: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case bundleIds = "bundleIds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BundleId else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BundleId, rhs: BundleId) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(bundleId: BundleId) {
+ self.bundleId = bundleId
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ bundleId = try container.decode("bundleId")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(bundleId, forKey: "bundleId")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.bundleId == object.bundleId else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Attributes: APIModel {
+
+ public var capabilityType: CapabilityType
+
+ public var settings: [CapabilitySetting]?
+
+ public init(capabilityType: CapabilityType, settings: [CapabilitySetting]? = nil) {
+ self.capabilityType = capabilityType
+ self.settings = settings
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ capabilityType = try container.decode("capabilityType")
+ settings = try container.decodeArrayIfPresent("settings")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(capabilityType, forKey: "capabilityType")
+ try container.encodeIfPresent(settings, forKey: "settings")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.capabilityType == object.capabilityType else { return false }
+ guard self.settings == object.settings else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, attributes: Attributes, type: `Type`) {
+ self.relationships = relationships
+ self.attributes = attributes
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BundleIdCapabilityCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BundleIdCapabilityCreateRequest, rhs: BundleIdCapabilityCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdCapabilityResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdCapabilityResponse.swift
new file mode 100644
index 000000000..8c431b32a
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdCapabilityResponse.swift
@@ -0,0 +1,43 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BundleIdCapabilityResponse: APIModel {
+
+ public var data: BundleIdCapability
+
+ public var links: DocumentLinks
+
+ public init(data: BundleIdCapability, links: DocumentLinks) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BundleIdCapabilityResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: BundleIdCapabilityResponse, rhs: BundleIdCapabilityResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdCapabilityUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdCapabilityUpdateRequest.swift
new file mode 100644
index 000000000..d958ed833
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdCapabilityUpdateRequest.swift
@@ -0,0 +1,121 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BundleIdCapabilityUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case bundleIdCapabilities = "bundleIdCapabilities"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var capabilityType: CapabilityType?
+
+ public var settings: [CapabilitySetting]?
+
+ public init(capabilityType: CapabilityType? = nil, settings: [CapabilitySetting]? = nil) {
+ self.capabilityType = capabilityType
+ self.settings = settings
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ capabilityType = try container.decodeIfPresent("capabilityType")
+ settings = try container.decodeArrayIfPresent("settings")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(capabilityType, forKey: "capabilityType")
+ try container.encodeIfPresent(settings, forKey: "settings")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.capabilityType == object.capabilityType else { return false }
+ guard self.settings == object.settings else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BundleIdCapabilityUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BundleIdCapabilityUpdateRequest, rhs: BundleIdCapabilityUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdCreateRequest.swift
new file mode 100644
index 000000000..746b54ad0
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdCreateRequest.swift
@@ -0,0 +1,127 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BundleIdCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case bundleIds = "bundleIds"
+ }
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public class Attributes: APIModel {
+
+ public var identifier: String
+
+ public var name: String
+
+ public var platform: BundleIdPlatform
+
+ public var seedId: String?
+
+ public init(identifier: String, name: String, platform: BundleIdPlatform, seedId: String? = nil) {
+ self.identifier = identifier
+ self.name = name
+ self.platform = platform
+ self.seedId = seedId
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ identifier = try container.decode("identifier")
+ name = try container.decode("name")
+ platform = try container.decode("platform")
+ seedId = try container.decodeIfPresent("seedId")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(identifier, forKey: "identifier")
+ try container.encode(name, forKey: "name")
+ try container.encode(platform, forKey: "platform")
+ try container.encodeIfPresent(seedId, forKey: "seedId")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.identifier == object.identifier else { return false }
+ guard self.name == object.name else { return false }
+ guard self.platform == object.platform else { return false }
+ guard self.seedId == object.seedId else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(attributes: Attributes, type: `Type`) {
+ self.attributes = attributes
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BundleIdCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BundleIdCreateRequest, rhs: BundleIdCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdPlatform.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdPlatform.swift
new file mode 100644
index 000000000..dc988c2cd
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdPlatform.swift
@@ -0,0 +1,11 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public enum BundleIdPlatform: String, Codable, Equatable, CaseIterable {
+ case ios = "IOS"
+ case macOs = "MAC_OS"
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdResponse.swift
new file mode 100644
index 000000000..31ee0b2b8
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BundleIdResponse: APIModel {
+
+ public var data: BundleId
+
+ public var links: DocumentLinks
+
+ public var included: [Included]?
+
+ public init(data: BundleId, links: DocumentLinks, included: [Included]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BundleIdResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: BundleIdResponse, rhs: BundleIdResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdUpdateRequest.swift
new file mode 100644
index 000000000..c9f1e1a80
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdUpdateRequest.swift
@@ -0,0 +1,115 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BundleIdUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case bundleIds = "bundleIds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var name: String?
+
+ public init(name: String? = nil) {
+ self.name = name
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ name = try container.decodeIfPresent("name")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(name, forKey: "name")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.name == object.name else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BundleIdUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BundleIdUpdateRequest, rhs: BundleIdUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdsResponse.swift
new file mode 100644
index 000000000..da8f1a652
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/BundleIdsResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class BundleIdsResponse: APIModel {
+
+ public var data: [BundleId]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [Included]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [BundleId], links: PagedDocumentLinks, included: [Included]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BundleIdsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: BundleIdsResponse, rhs: BundleIdsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/CapabilityOption.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/CapabilityOption.swift
new file mode 100644
index 000000000..758acbd4c
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/CapabilityOption.swift
@@ -0,0 +1,76 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class CapabilityOption: APIModel {
+
+ public enum Key: String, Codable, Equatable, CaseIterable {
+ case xcode5 = "XCODE_5"
+ case xcode6 = "XCODE_6"
+ case completeProtection = "COMPLETE_PROTECTION"
+ case protectedUnlessOpen = "PROTECTED_UNLESS_OPEN"
+ case protectedUntilFirstUserAuth = "PROTECTED_UNTIL_FIRST_USER_AUTH"
+ case primaryAppConsent = "PRIMARY_APP_CONSENT"
+ }
+
+ public var description: String?
+
+ public var enabled: Bool?
+
+ public var enabledByDefault: Bool?
+
+ public var key: Key?
+
+ public var name: String?
+
+ public var supportsWildcard: Bool?
+
+ public init(description: String? = nil, enabled: Bool? = nil, enabledByDefault: Bool? = nil, key: Key? = nil, name: String? = nil, supportsWildcard: Bool? = nil) {
+ self.description = description
+ self.enabled = enabled
+ self.enabledByDefault = enabledByDefault
+ self.key = key
+ self.name = name
+ self.supportsWildcard = supportsWildcard
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ description = try container.decodeIfPresent("description")
+ enabled = try container.decodeIfPresent("enabled")
+ enabledByDefault = try container.decodeIfPresent("enabledByDefault")
+ key = try container.decodeIfPresent("key")
+ name = try container.decodeIfPresent("name")
+ supportsWildcard = try container.decodeIfPresent("supportsWildcard")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(description, forKey: "description")
+ try container.encodeIfPresent(enabled, forKey: "enabled")
+ try container.encodeIfPresent(enabledByDefault, forKey: "enabledByDefault")
+ try container.encodeIfPresent(key, forKey: "key")
+ try container.encodeIfPresent(name, forKey: "name")
+ try container.encodeIfPresent(supportsWildcard, forKey: "supportsWildcard")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? CapabilityOption else { return false }
+ guard self.description == object.description else { return false }
+ guard self.enabled == object.enabled else { return false }
+ guard self.enabledByDefault == object.enabledByDefault else { return false }
+ guard self.key == object.key else { return false }
+ guard self.name == object.name else { return false }
+ guard self.supportsWildcard == object.supportsWildcard else { return false }
+ return true
+ }
+
+ public static func == (lhs: CapabilityOption, rhs: CapabilityOption) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/CapabilitySetting.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/CapabilitySetting.swift
new file mode 100644
index 000000000..8ecead7d4
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/CapabilitySetting.swift
@@ -0,0 +1,91 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class CapabilitySetting: APIModel {
+
+ public enum AllowedInstances: String, Codable, Equatable, CaseIterable {
+ case entry = "ENTRY"
+ case single = "SINGLE"
+ case multiple = "MULTIPLE"
+ }
+
+ public enum Key: String, Codable, Equatable, CaseIterable {
+ case icloudVersion = "ICLOUD_VERSION"
+ case dataProtectionPermissionLevel = "DATA_PROTECTION_PERMISSION_LEVEL"
+ case appleIdAuthAppConsent = "APPLE_ID_AUTH_APP_CONSENT"
+ }
+
+ public var allowedInstances: AllowedInstances?
+
+ public var description: String?
+
+ public var enabledByDefault: Bool?
+
+ public var key: Key?
+
+ public var minInstances: Int?
+
+ public var name: String?
+
+ public var options: [CapabilityOption]?
+
+ public var visible: Bool?
+
+ public init(allowedInstances: AllowedInstances? = nil, description: String? = nil, enabledByDefault: Bool? = nil, key: Key? = nil, minInstances: Int? = nil, name: String? = nil, options: [CapabilityOption]? = nil, visible: Bool? = nil) {
+ self.allowedInstances = allowedInstances
+ self.description = description
+ self.enabledByDefault = enabledByDefault
+ self.key = key
+ self.minInstances = minInstances
+ self.name = name
+ self.options = options
+ self.visible = visible
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ allowedInstances = try container.decodeIfPresent("allowedInstances")
+ description = try container.decodeIfPresent("description")
+ enabledByDefault = try container.decodeIfPresent("enabledByDefault")
+ key = try container.decodeIfPresent("key")
+ minInstances = try container.decodeIfPresent("minInstances")
+ name = try container.decodeIfPresent("name")
+ options = try container.decodeArrayIfPresent("options")
+ visible = try container.decodeIfPresent("visible")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(allowedInstances, forKey: "allowedInstances")
+ try container.encodeIfPresent(description, forKey: "description")
+ try container.encodeIfPresent(enabledByDefault, forKey: "enabledByDefault")
+ try container.encodeIfPresent(key, forKey: "key")
+ try container.encodeIfPresent(minInstances, forKey: "minInstances")
+ try container.encodeIfPresent(name, forKey: "name")
+ try container.encodeIfPresent(options, forKey: "options")
+ try container.encodeIfPresent(visible, forKey: "visible")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? CapabilitySetting else { return false }
+ guard self.allowedInstances == object.allowedInstances else { return false }
+ guard self.description == object.description else { return false }
+ guard self.enabledByDefault == object.enabledByDefault else { return false }
+ guard self.key == object.key else { return false }
+ guard self.minInstances == object.minInstances else { return false }
+ guard self.name == object.name else { return false }
+ guard self.options == object.options else { return false }
+ guard self.visible == object.visible else { return false }
+ return true
+ }
+
+ public static func == (lhs: CapabilitySetting, rhs: CapabilitySetting) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/CapabilityType.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/CapabilityType.swift
new file mode 100644
index 000000000..fe4e0d105
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/CapabilityType.swift
@@ -0,0 +1,37 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public enum CapabilityType: String, Codable, Equatable, CaseIterable {
+ case icloud = "ICLOUD"
+ case inAppPurchase = "IN_APP_PURCHASE"
+ case gameCenter = "GAME_CENTER"
+ case pushNotifications = "PUSH_NOTIFICATIONS"
+ case wallet = "WALLET"
+ case interAppAudio = "INTER_APP_AUDIO"
+ case maps = "MAPS"
+ case associatedDomains = "ASSOCIATED_DOMAINS"
+ case personalVpn = "PERSONAL_VPN"
+ case appGroups = "APP_GROUPS"
+ case healthkit = "HEALTHKIT"
+ case homekit = "HOMEKIT"
+ case wirelessAccessoryConfiguration = "WIRELESS_ACCESSORY_CONFIGURATION"
+ case applePay = "APPLE_PAY"
+ case dataProtection = "DATA_PROTECTION"
+ case sirikit = "SIRIKIT"
+ case networkExtensions = "NETWORK_EXTENSIONS"
+ case multipath = "MULTIPATH"
+ case hotSpot = "HOT_SPOT"
+ case nfcTagReading = "NFC_TAG_READING"
+ case classkit = "CLASSKIT"
+ case autofillCredentialProvider = "AUTOFILL_CREDENTIAL_PROVIDER"
+ case accessWifiInformation = "ACCESS_WIFI_INFORMATION"
+ case networkCustomProtocol = "NETWORK_CUSTOM_PROTOCOL"
+ case coremediaHlsLowLatency = "COREMEDIA_HLS_LOW_LATENCY"
+ case systemExtensionInstall = "SYSTEM_EXTENSION_INSTALL"
+ case userManagement = "USER_MANAGEMENT"
+ case appleIdAuth = "APPLE_ID_AUTH"
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/Certificate.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/Certificate.swift
new file mode 100644
index 000000000..286438888
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/Certificate.swift
@@ -0,0 +1,126 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class Certificate: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case certificates = "certificates"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var certificateContent: String?
+
+ public var certificateType: CertificateType?
+
+ public var displayName: String?
+
+ public var expirationDate: DateTime?
+
+ public var name: String?
+
+ public var platform: BundleIdPlatform?
+
+ public var serialNumber: String?
+
+ public init(certificateContent: String? = nil, certificateType: CertificateType? = nil, displayName: String? = nil, expirationDate: DateTime? = nil, name: String? = nil, platform: BundleIdPlatform? = nil, serialNumber: String? = nil) {
+ self.certificateContent = certificateContent
+ self.certificateType = certificateType
+ self.displayName = displayName
+ self.expirationDate = expirationDate
+ self.name = name
+ self.platform = platform
+ self.serialNumber = serialNumber
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ certificateContent = try container.decodeIfPresent("certificateContent")
+ certificateType = try container.decodeIfPresent("certificateType")
+ displayName = try container.decodeIfPresent("displayName")
+ expirationDate = try container.decodeIfPresent("expirationDate")
+ name = try container.decodeIfPresent("name")
+ platform = try container.decodeIfPresent("platform")
+ serialNumber = try container.decodeIfPresent("serialNumber")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(certificateContent, forKey: "certificateContent")
+ try container.encodeIfPresent(certificateType, forKey: "certificateType")
+ try container.encodeIfPresent(displayName, forKey: "displayName")
+ try container.encodeIfPresent(expirationDate, forKey: "expirationDate")
+ try container.encodeIfPresent(name, forKey: "name")
+ try container.encodeIfPresent(platform, forKey: "platform")
+ try container.encodeIfPresent(serialNumber, forKey: "serialNumber")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.certificateContent == object.certificateContent else { return false }
+ guard self.certificateType == object.certificateType else { return false }
+ guard self.displayName == object.displayName else { return false }
+ guard self.expirationDate == object.expirationDate else { return false }
+ guard self.name == object.name else { return false }
+ guard self.platform == object.platform else { return false }
+ guard self.serialNumber == object.serialNumber else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Certificate else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: Certificate, rhs: Certificate) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/CertificateCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/CertificateCreateRequest.swift
new file mode 100644
index 000000000..1aabcc02d
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/CertificateCreateRequest.swift
@@ -0,0 +1,115 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class CertificateCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case certificates = "certificates"
+ }
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public class Attributes: APIModel {
+
+ public var csrContent: String
+
+ public var certificateType: CertificateType
+
+ public init(csrContent: String, certificateType: CertificateType) {
+ self.csrContent = csrContent
+ self.certificateType = certificateType
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ csrContent = try container.decode("csrContent")
+ certificateType = try container.decode("certificateType")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(csrContent, forKey: "csrContent")
+ try container.encode(certificateType, forKey: "certificateType")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.csrContent == object.csrContent else { return false }
+ guard self.certificateType == object.certificateType else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(attributes: Attributes, type: `Type`) {
+ self.attributes = attributes
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? CertificateCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: CertificateCreateRequest, rhs: CertificateCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/CertificateResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/CertificateResponse.swift
new file mode 100644
index 000000000..0470159b6
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/CertificateResponse.swift
@@ -0,0 +1,43 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class CertificateResponse: APIModel {
+
+ public var data: Certificate
+
+ public var links: DocumentLinks
+
+ public init(data: Certificate, links: DocumentLinks) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? CertificateResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: CertificateResponse, rhs: CertificateResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/CertificateType.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/CertificateType.swift
new file mode 100644
index 000000000..9446cdfb2
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/CertificateType.swift
@@ -0,0 +1,18 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public enum CertificateType: String, Codable, Equatable, CaseIterable {
+ case iosDevelopment = "IOS_DEVELOPMENT"
+ case iosDistribution = "IOS_DISTRIBUTION"
+ case macAppDistribution = "MAC_APP_DISTRIBUTION"
+ case macInstallerDistribution = "MAC_INSTALLER_DISTRIBUTION"
+ case macAppDevelopment = "MAC_APP_DEVELOPMENT"
+ case developerIdKext = "DEVELOPER_ID_KEXT"
+ case developerIdApplication = "DEVELOPER_ID_APPLICATION"
+ case development = "DEVELOPMENT"
+ case distribution = "DISTRIBUTION"
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/CertificatesResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/CertificatesResponse.swift
new file mode 100644
index 000000000..e8f607ae3
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/CertificatesResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class CertificatesResponse: APIModel {
+
+ public var data: [Certificate]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public init(data: [Certificate], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? CertificatesResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: CertificatesResponse, rhs: CertificatesResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/Device.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/Device.swift
new file mode 100644
index 000000000..0d3589c90
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/Device.swift
@@ -0,0 +1,140 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class Device: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case devices = "devices"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public enum DeviceClass: String, Codable, Equatable, CaseIterable {
+ case appleWatch = "APPLE_WATCH"
+ case ipad = "IPAD"
+ case iphone = "IPHONE"
+ case ipod = "IPOD"
+ case appleTv = "APPLE_TV"
+ case mac = "MAC"
+ }
+
+ public enum Status: String, Codable, Equatable, CaseIterable {
+ case enabled = "ENABLED"
+ case disabled = "DISABLED"
+ }
+
+ public var addedDate: DateTime?
+
+ public var deviceClass: DeviceClass?
+
+ public var model: String?
+
+ public var name: String?
+
+ public var platform: BundleIdPlatform?
+
+ public var status: Status?
+
+ public var udid: String?
+
+ public init(addedDate: DateTime? = nil, deviceClass: DeviceClass? = nil, model: String? = nil, name: String? = nil, platform: BundleIdPlatform? = nil, status: Status? = nil, udid: String? = nil) {
+ self.addedDate = addedDate
+ self.deviceClass = deviceClass
+ self.model = model
+ self.name = name
+ self.platform = platform
+ self.status = status
+ self.udid = udid
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ addedDate = try container.decodeIfPresent("addedDate")
+ deviceClass = try container.decodeIfPresent("deviceClass")
+ model = try container.decodeIfPresent("model")
+ name = try container.decodeIfPresent("name")
+ platform = try container.decodeIfPresent("platform")
+ status = try container.decodeIfPresent("status")
+ udid = try container.decodeIfPresent("udid")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(addedDate, forKey: "addedDate")
+ try container.encodeIfPresent(deviceClass, forKey: "deviceClass")
+ try container.encodeIfPresent(model, forKey: "model")
+ try container.encodeIfPresent(name, forKey: "name")
+ try container.encodeIfPresent(platform, forKey: "platform")
+ try container.encodeIfPresent(status, forKey: "status")
+ try container.encodeIfPresent(udid, forKey: "udid")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.addedDate == object.addedDate else { return false }
+ guard self.deviceClass == object.deviceClass else { return false }
+ guard self.model == object.model else { return false }
+ guard self.name == object.name else { return false }
+ guard self.platform == object.platform else { return false }
+ guard self.status == object.status else { return false }
+ guard self.udid == object.udid else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Device else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: Device, rhs: Device) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/DeviceCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/DeviceCreateRequest.swift
new file mode 100644
index 000000000..b6dbebd56
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/DeviceCreateRequest.swift
@@ -0,0 +1,121 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class DeviceCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case devices = "devices"
+ }
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public class Attributes: APIModel {
+
+ public var name: String
+
+ public var udid: String
+
+ public var platform: BundleIdPlatform
+
+ public init(name: String, udid: String, platform: BundleIdPlatform) {
+ self.name = name
+ self.udid = udid
+ self.platform = platform
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ name = try container.decode("name")
+ udid = try container.decode("udid")
+ platform = try container.decode("platform")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(name, forKey: "name")
+ try container.encode(udid, forKey: "udid")
+ try container.encode(platform, forKey: "platform")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.name == object.name else { return false }
+ guard self.udid == object.udid else { return false }
+ guard self.platform == object.platform else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(attributes: Attributes, type: `Type`) {
+ self.attributes = attributes
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DeviceCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: DeviceCreateRequest, rhs: DeviceCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/DeviceResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/DeviceResponse.swift
new file mode 100644
index 000000000..77f6572ad
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/DeviceResponse.swift
@@ -0,0 +1,43 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class DeviceResponse: APIModel {
+
+ public var data: Device
+
+ public var links: DocumentLinks
+
+ public init(data: Device, links: DocumentLinks) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DeviceResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: DeviceResponse, rhs: DeviceResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/DeviceUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/DeviceUpdateRequest.swift
new file mode 100644
index 000000000..e59a4b5bc
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/DeviceUpdateRequest.swift
@@ -0,0 +1,126 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class DeviceUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case devices = "devices"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public enum Status: String, Codable, Equatable, CaseIterable {
+ case enabled = "ENABLED"
+ case disabled = "DISABLED"
+ }
+
+ public var name: String?
+
+ public var status: Status?
+
+ public init(name: String? = nil, status: Status? = nil) {
+ self.name = name
+ self.status = status
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ name = try container.decodeIfPresent("name")
+ status = try container.decodeIfPresent("status")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(name, forKey: "name")
+ try container.encodeIfPresent(status, forKey: "status")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.name == object.name else { return false }
+ guard self.status == object.status else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DeviceUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: DeviceUpdateRequest, rhs: DeviceUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/DevicesResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/DevicesResponse.swift
new file mode 100644
index 000000000..70605844e
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/DevicesResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class DevicesResponse: APIModel {
+
+ public var data: [Device]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public init(data: [Device], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DevicesResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: DevicesResponse, rhs: DevicesResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/DiagnosticLog.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/DiagnosticLog.swift
new file mode 100644
index 000000000..37f30fa99
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/DiagnosticLog.swift
@@ -0,0 +1,53 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class DiagnosticLog: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case diagnosticLogs = "diagnosticLogs"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(links: ResourceLinks, id: String, type: `Type`) {
+ self.links = links
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DiagnosticLog else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DiagnosticLog, rhs: DiagnosticLog) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/DiagnosticLogsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/DiagnosticLogsResponse.swift
new file mode 100644
index 000000000..c177e252c
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/DiagnosticLogsResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class DiagnosticLogsResponse: APIModel {
+
+ public var data: [DiagnosticLog]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public init(data: [DiagnosticLog], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DiagnosticLogsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: DiagnosticLogsResponse, rhs: DiagnosticLogsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/DiagnosticSignature.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/DiagnosticSignature.swift
new file mode 100644
index 000000000..af62117d7
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/DiagnosticSignature.swift
@@ -0,0 +1,106 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class DiagnosticSignature: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case diagnosticSignatures = "diagnosticSignatures"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public enum DiagnosticType: String, Codable, Equatable, CaseIterable {
+ case diskWrites = "DISK_WRITES"
+ }
+
+ public var diagnosticType: DiagnosticType?
+
+ public var signature: String?
+
+ public var weight: Double?
+
+ public init(diagnosticType: DiagnosticType? = nil, signature: String? = nil, weight: Double? = nil) {
+ self.diagnosticType = diagnosticType
+ self.signature = signature
+ self.weight = weight
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ diagnosticType = try container.decodeIfPresent("diagnosticType")
+ signature = try container.decodeIfPresent("signature")
+ weight = try container.decodeIfPresent("weight")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(diagnosticType, forKey: "diagnosticType")
+ try container.encodeIfPresent(signature, forKey: "signature")
+ try container.encodeIfPresent(weight, forKey: "weight")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.diagnosticType == object.diagnosticType else { return false }
+ guard self.signature == object.signature else { return false }
+ guard self.weight == object.weight else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DiagnosticSignature else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DiagnosticSignature, rhs: DiagnosticSignature) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/DiagnosticSignaturesResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/DiagnosticSignaturesResponse.swift
new file mode 100644
index 000000000..88652a518
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/DiagnosticSignaturesResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class DiagnosticSignaturesResponse: APIModel {
+
+ public var data: [DiagnosticSignature]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [DiagnosticLog]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [DiagnosticSignature], links: PagedDocumentLinks, included: [DiagnosticLog]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DiagnosticSignaturesResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: DiagnosticSignaturesResponse, rhs: DiagnosticSignaturesResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/DocumentLinks.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/DocumentLinks.swift
new file mode 100644
index 000000000..3d11c1827
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/DocumentLinks.swift
@@ -0,0 +1,37 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class DocumentLinks: APIModel {
+
+ public var _self: String
+
+ public init(_self: String) {
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ _self = try container.decode("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DocumentLinks else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: DocumentLinks, rhs: DocumentLinks) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/EndUserLicenseAgreement.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/EndUserLicenseAgreement.swift
new file mode 100644
index 000000000..1d9df55c4
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/EndUserLicenseAgreement.swift
@@ -0,0 +1,369 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class EndUserLicenseAgreement: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case endUserLicenseAgreements = "endUserLicenseAgreements"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var agreementText: String?
+
+ public init(agreementText: String? = nil) {
+ self.agreementText = agreementText
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ agreementText = try container.decodeIfPresent("agreementText")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(agreementText, forKey: "agreementText")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.agreementText == object.agreementText else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var app: App?
+
+ public var territories: Territories?
+
+ public class App: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Territories: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case territories = "territories"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Territories else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: Territories, rhs: Territories) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(app: App? = nil, territories: Territories? = nil) {
+ self.app = app
+ self.territories = territories
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ app = try container.decodeIfPresent("app")
+ territories = try container.decodeIfPresent("territories")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(app, forKey: "app")
+ try container.encodeIfPresent(territories, forKey: "territories")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.app == object.app else { return false }
+ guard self.territories == object.territories else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? EndUserLicenseAgreement else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: EndUserLicenseAgreement, rhs: EndUserLicenseAgreement) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/EndUserLicenseAgreementCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/EndUserLicenseAgreementCreateRequest.swift
new file mode 100644
index 000000000..b9b92f0bd
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/EndUserLicenseAgreementCreateRequest.swift
@@ -0,0 +1,296 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class EndUserLicenseAgreementCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case endUserLicenseAgreements = "endUserLicenseAgreements"
+ }
+
+ public var relationships: Relationships
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public class Relationships: APIModel {
+
+ public var app: App
+
+ public var territories: Territories
+
+ public class App: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Territories: APIModel {
+
+ public var data: [DataType]
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case territories = "territories"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Territories else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: Territories, rhs: Territories) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(app: App, territories: Territories) {
+ self.app = app
+ self.territories = territories
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ app = try container.decode("app")
+ territories = try container.decode("territories")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(app, forKey: "app")
+ try container.encode(territories, forKey: "territories")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.app == object.app else { return false }
+ guard self.territories == object.territories else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Attributes: APIModel {
+
+ public var agreementText: String
+
+ public init(agreementText: String) {
+ self.agreementText = agreementText
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ agreementText = try container.decode("agreementText")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(agreementText, forKey: "agreementText")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.agreementText == object.agreementText else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, attributes: Attributes, type: `Type`) {
+ self.relationships = relationships
+ self.attributes = attributes
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? EndUserLicenseAgreementCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: EndUserLicenseAgreementCreateRequest, rhs: EndUserLicenseAgreementCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/EndUserLicenseAgreementResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/EndUserLicenseAgreementResponse.swift
new file mode 100644
index 000000000..3cac75cdc
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/EndUserLicenseAgreementResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class EndUserLicenseAgreementResponse: APIModel {
+
+ public var data: EndUserLicenseAgreement
+
+ public var links: DocumentLinks
+
+ public var included: [Territory]?
+
+ public init(data: EndUserLicenseAgreement, links: DocumentLinks, included: [Territory]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? EndUserLicenseAgreementResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: EndUserLicenseAgreementResponse, rhs: EndUserLicenseAgreementResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/EndUserLicenseAgreementUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/EndUserLicenseAgreementUpdateRequest.swift
new file mode 100644
index 000000000..e68aedc9f
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/EndUserLicenseAgreementUpdateRequest.swift
@@ -0,0 +1,224 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class EndUserLicenseAgreementUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case endUserLicenseAgreements = "endUserLicenseAgreements"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var agreementText: String?
+
+ public init(agreementText: String? = nil) {
+ self.agreementText = agreementText
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ agreementText = try container.decodeIfPresent("agreementText")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(agreementText, forKey: "agreementText")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.agreementText == object.agreementText else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var territories: Territories?
+
+ public class Territories: APIModel {
+
+ public var data: [DataType]?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case territories = "territories"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Territories else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: Territories, rhs: Territories) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(territories: Territories? = nil) {
+ self.territories = territories
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ territories = try container.decodeIfPresent("territories")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(territories, forKey: "territories")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.territories == object.territories else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? EndUserLicenseAgreementUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: EndUserLicenseAgreementUpdateRequest, rhs: EndUserLicenseAgreementUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/ErrorResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/ErrorResponse.swift
new file mode 100644
index 000000000..c41375b79
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/ErrorResponse.swift
@@ -0,0 +1,98 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class ErrorResponse: APIModel {
+
+ public var errors: [Errors]?
+
+ public class Errors: APIModel {
+
+ public var code: String
+
+ public var detail: String
+
+ public var title: String
+
+ public var status: String
+
+ public var id: String?
+
+ public var source: Source?
+
+ public init(code: String, detail: String, title: String, status: String, id: String? = nil, source: Source? = nil) {
+ self.code = code
+ self.detail = detail
+ self.title = title
+ self.status = status
+ self.id = id
+ self.source = source
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ code = try container.decode("code")
+ detail = try container.decode("detail")
+ title = try container.decode("title")
+ status = try container.decode("status")
+ id = try container.decodeIfPresent("id")
+ source = try container.decodeIfPresent("source")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(code, forKey: "code")
+ try container.encode(detail, forKey: "detail")
+ try container.encode(title, forKey: "title")
+ try container.encode(status, forKey: "status")
+ try container.encodeIfPresent(id, forKey: "id")
+ try container.encodeIfPresent(source, forKey: "source")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Errors else { return false }
+ guard self.code == object.code else { return false }
+ guard self.detail == object.detail else { return false }
+ guard self.title == object.title else { return false }
+ guard self.status == object.status else { return false }
+ guard self.id == object.id else { return false }
+ guard self.source == object.source else { return false }
+ return true
+ }
+
+ public static func == (lhs: Errors, rhs: Errors) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(errors: [Errors]? = nil) {
+ self.errors = errors
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ errors = try container.decodeArrayIfPresent("errors")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(errors, forKey: "errors")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? ErrorResponse else { return false }
+ guard self.errors == object.errors else { return false }
+ return true
+ }
+
+ public static func == (lhs: ErrorResponse, rhs: ErrorResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/ExternalBetaState.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/ExternalBetaState.swift
new file mode 100644
index 000000000..59160e6d2
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/ExternalBetaState.swift
@@ -0,0 +1,21 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public enum ExternalBetaState: String, Codable, Equatable, CaseIterable {
+ case processing = "PROCESSING"
+ case processingException = "PROCESSING_EXCEPTION"
+ case missingExportCompliance = "MISSING_EXPORT_COMPLIANCE"
+ case readyForBetaTesting = "READY_FOR_BETA_TESTING"
+ case inBetaTesting = "IN_BETA_TESTING"
+ case expired = "EXPIRED"
+ case readyForBetaSubmission = "READY_FOR_BETA_SUBMISSION"
+ case inExportComplianceReview = "IN_EXPORT_COMPLIANCE_REVIEW"
+ case waitingForBetaReview = "WAITING_FOR_BETA_REVIEW"
+ case inBetaReview = "IN_BETA_REVIEW"
+ case betaRejected = "BETA_REJECTED"
+ case betaApproved = "BETA_APPROVED"
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/GameCenterEnabledVersion.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/GameCenterEnabledVersion.swift
new file mode 100644
index 000000000..85c922820
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/GameCenterEnabledVersion.swift
@@ -0,0 +1,381 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class GameCenterEnabledVersion: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case gameCenterEnabledVersions = "gameCenterEnabledVersions"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var iconAsset: ImageAsset?
+
+ public var platform: Platform?
+
+ public var versionString: String?
+
+ public init(iconAsset: ImageAsset? = nil, platform: Platform? = nil, versionString: String? = nil) {
+ self.iconAsset = iconAsset
+ self.platform = platform
+ self.versionString = versionString
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ iconAsset = try container.decodeIfPresent("iconAsset")
+ platform = try container.decodeIfPresent("platform")
+ versionString = try container.decodeIfPresent("versionString")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(iconAsset, forKey: "iconAsset")
+ try container.encodeIfPresent(platform, forKey: "platform")
+ try container.encodeIfPresent(versionString, forKey: "versionString")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.iconAsset == object.iconAsset else { return false }
+ guard self.platform == object.platform else { return false }
+ guard self.versionString == object.versionString else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var app: App?
+
+ public var compatibleVersions: CompatibleVersions?
+
+ public class App: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class CompatibleVersions: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case gameCenterEnabledVersions = "gameCenterEnabledVersions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? CompatibleVersions else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: CompatibleVersions, rhs: CompatibleVersions) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(app: App? = nil, compatibleVersions: CompatibleVersions? = nil) {
+ self.app = app
+ self.compatibleVersions = compatibleVersions
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ app = try container.decodeIfPresent("app")
+ compatibleVersions = try container.decodeIfPresent("compatibleVersions")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(app, forKey: "app")
+ try container.encodeIfPresent(compatibleVersions, forKey: "compatibleVersions")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.app == object.app else { return false }
+ guard self.compatibleVersions == object.compatibleVersions else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? GameCenterEnabledVersion else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: GameCenterEnabledVersion, rhs: GameCenterEnabledVersion) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/GameCenterEnabledVersionCompatibleVersionsLinkagesRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/GameCenterEnabledVersionCompatibleVersionsLinkagesRequest.swift
new file mode 100644
index 000000000..476beb2d3
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/GameCenterEnabledVersionCompatibleVersionsLinkagesRequest.swift
@@ -0,0 +1,78 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class GameCenterEnabledVersionCompatibleVersionsLinkagesRequest: APIModel {
+
+ public var data: [DataType]
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case gameCenterEnabledVersions = "gameCenterEnabledVersions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? GameCenterEnabledVersionCompatibleVersionsLinkagesRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: GameCenterEnabledVersionCompatibleVersionsLinkagesRequest, rhs: GameCenterEnabledVersionCompatibleVersionsLinkagesRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/GameCenterEnabledVersionCompatibleVersionsLinkagesResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/GameCenterEnabledVersionCompatibleVersionsLinkagesResponse.swift
new file mode 100644
index 000000000..e6ea7a13f
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/GameCenterEnabledVersionCompatibleVersionsLinkagesResponse.swift
@@ -0,0 +1,90 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class GameCenterEnabledVersionCompatibleVersionsLinkagesResponse: APIModel {
+
+ public var data: [DataType]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case gameCenterEnabledVersions = "gameCenterEnabledVersions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? GameCenterEnabledVersionCompatibleVersionsLinkagesResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: GameCenterEnabledVersionCompatibleVersionsLinkagesResponse, rhs: GameCenterEnabledVersionCompatibleVersionsLinkagesResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/GameCenterEnabledVersionsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/GameCenterEnabledVersionsResponse.swift
new file mode 100644
index 000000000..79b7fe5c6
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/GameCenterEnabledVersionsResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class GameCenterEnabledVersionsResponse: APIModel {
+
+ public var data: [GameCenterEnabledVersion]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [GameCenterEnabledVersion]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [GameCenterEnabledVersion], links: PagedDocumentLinks, included: [GameCenterEnabledVersion]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? GameCenterEnabledVersionsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: GameCenterEnabledVersionsResponse, rhs: GameCenterEnabledVersionsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/IconAssetType.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/IconAssetType.swift
new file mode 100644
index 000000000..0dc8d84e8
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/IconAssetType.swift
@@ -0,0 +1,14 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public enum IconAssetType: String, Codable, Equatable, CaseIterable {
+ case appStore = "APP_STORE"
+ case messagesAppStore = "MESSAGES_APP_STORE"
+ case watchAppStore = "WATCH_APP_STORE"
+ case tvOsHomeScreen = "TV_OS_HOME_SCREEN"
+ case tvOsTopShelf = "TV_OS_TOP_SHELF"
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/IdfaDeclaration.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/IdfaDeclaration.swift
new file mode 100644
index 000000000..d7d849ead
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/IdfaDeclaration.swift
@@ -0,0 +1,260 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class IdfaDeclaration: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case idfaDeclarations = "idfaDeclarations"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var attributesActionWithPreviousAd: Bool?
+
+ public var attributesAppInstallationToPreviousAd: Bool?
+
+ public var honorsLimitedAdTracking: Bool?
+
+ public var servesAds: Bool?
+
+ public init(attributesActionWithPreviousAd: Bool? = nil, attributesAppInstallationToPreviousAd: Bool? = nil, honorsLimitedAdTracking: Bool? = nil, servesAds: Bool? = nil) {
+ self.attributesActionWithPreviousAd = attributesActionWithPreviousAd
+ self.attributesAppInstallationToPreviousAd = attributesAppInstallationToPreviousAd
+ self.honorsLimitedAdTracking = honorsLimitedAdTracking
+ self.servesAds = servesAds
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ attributesActionWithPreviousAd = try container.decodeIfPresent("attributesActionWithPreviousAd")
+ attributesAppInstallationToPreviousAd = try container.decodeIfPresent("attributesAppInstallationToPreviousAd")
+ honorsLimitedAdTracking = try container.decodeIfPresent("honorsLimitedAdTracking")
+ servesAds = try container.decodeIfPresent("servesAds")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(attributesActionWithPreviousAd, forKey: "attributesActionWithPreviousAd")
+ try container.encodeIfPresent(attributesAppInstallationToPreviousAd, forKey: "attributesAppInstallationToPreviousAd")
+ try container.encodeIfPresent(honorsLimitedAdTracking, forKey: "honorsLimitedAdTracking")
+ try container.encodeIfPresent(servesAds, forKey: "servesAds")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.attributesActionWithPreviousAd == object.attributesActionWithPreviousAd else { return false }
+ guard self.attributesAppInstallationToPreviousAd == object.attributesAppInstallationToPreviousAd else { return false }
+ guard self.honorsLimitedAdTracking == object.honorsLimitedAdTracking else { return false }
+ guard self.servesAds == object.servesAds else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var appStoreVersion: AppStoreVersion?
+
+ public class AppStoreVersion: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersions = "appStoreVersions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersion else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersion, rhs: AppStoreVersion) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appStoreVersion: AppStoreVersion? = nil) {
+ self.appStoreVersion = appStoreVersion
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appStoreVersion = try container.decodeIfPresent("appStoreVersion")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(appStoreVersion, forKey: "appStoreVersion")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appStoreVersion == object.appStoreVersion else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? IdfaDeclaration else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: IdfaDeclaration, rhs: IdfaDeclaration) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/IdfaDeclarationCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/IdfaDeclarationCreateRequest.swift
new file mode 100644
index 000000000..f683ead93
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/IdfaDeclarationCreateRequest.swift
@@ -0,0 +1,236 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class IdfaDeclarationCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case idfaDeclarations = "idfaDeclarations"
+ }
+
+ public var relationships: Relationships
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public class Relationships: APIModel {
+
+ public var appStoreVersion: AppStoreVersion
+
+ public class AppStoreVersion: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersions = "appStoreVersions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersion else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersion, rhs: AppStoreVersion) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appStoreVersion: AppStoreVersion) {
+ self.appStoreVersion = appStoreVersion
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appStoreVersion = try container.decode("appStoreVersion")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(appStoreVersion, forKey: "appStoreVersion")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appStoreVersion == object.appStoreVersion else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Attributes: APIModel {
+
+ public var attributesAppInstallationToPreviousAd: Bool
+
+ public var servesAds: Bool
+
+ public var attributesActionWithPreviousAd: Bool
+
+ public var honorsLimitedAdTracking: Bool
+
+ public init(attributesAppInstallationToPreviousAd: Bool, servesAds: Bool, attributesActionWithPreviousAd: Bool, honorsLimitedAdTracking: Bool) {
+ self.attributesAppInstallationToPreviousAd = attributesAppInstallationToPreviousAd
+ self.servesAds = servesAds
+ self.attributesActionWithPreviousAd = attributesActionWithPreviousAd
+ self.honorsLimitedAdTracking = honorsLimitedAdTracking
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ attributesAppInstallationToPreviousAd = try container.decode("attributesAppInstallationToPreviousAd")
+ servesAds = try container.decode("servesAds")
+ attributesActionWithPreviousAd = try container.decode("attributesActionWithPreviousAd")
+ honorsLimitedAdTracking = try container.decode("honorsLimitedAdTracking")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(attributesAppInstallationToPreviousAd, forKey: "attributesAppInstallationToPreviousAd")
+ try container.encode(servesAds, forKey: "servesAds")
+ try container.encode(attributesActionWithPreviousAd, forKey: "attributesActionWithPreviousAd")
+ try container.encode(honorsLimitedAdTracking, forKey: "honorsLimitedAdTracking")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.attributesAppInstallationToPreviousAd == object.attributesAppInstallationToPreviousAd else { return false }
+ guard self.servesAds == object.servesAds else { return false }
+ guard self.attributesActionWithPreviousAd == object.attributesActionWithPreviousAd else { return false }
+ guard self.honorsLimitedAdTracking == object.honorsLimitedAdTracking else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, attributes: Attributes, type: `Type`) {
+ self.relationships = relationships
+ self.attributes = attributes
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? IdfaDeclarationCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: IdfaDeclarationCreateRequest, rhs: IdfaDeclarationCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/IdfaDeclarationResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/IdfaDeclarationResponse.swift
new file mode 100644
index 000000000..6380d4f34
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/IdfaDeclarationResponse.swift
@@ -0,0 +1,43 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class IdfaDeclarationResponse: APIModel {
+
+ public var data: IdfaDeclaration
+
+ public var links: DocumentLinks
+
+ public init(data: IdfaDeclaration, links: DocumentLinks) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? IdfaDeclarationResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: IdfaDeclarationResponse, rhs: IdfaDeclarationResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/IdfaDeclarationUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/IdfaDeclarationUpdateRequest.swift
new file mode 100644
index 000000000..54e3bb2a8
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/IdfaDeclarationUpdateRequest.swift
@@ -0,0 +1,133 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class IdfaDeclarationUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case idfaDeclarations = "idfaDeclarations"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var attributesActionWithPreviousAd: Bool?
+
+ public var attributesAppInstallationToPreviousAd: Bool?
+
+ public var honorsLimitedAdTracking: Bool?
+
+ public var servesAds: Bool?
+
+ public init(attributesActionWithPreviousAd: Bool? = nil, attributesAppInstallationToPreviousAd: Bool? = nil, honorsLimitedAdTracking: Bool? = nil, servesAds: Bool? = nil) {
+ self.attributesActionWithPreviousAd = attributesActionWithPreviousAd
+ self.attributesAppInstallationToPreviousAd = attributesAppInstallationToPreviousAd
+ self.honorsLimitedAdTracking = honorsLimitedAdTracking
+ self.servesAds = servesAds
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ attributesActionWithPreviousAd = try container.decodeIfPresent("attributesActionWithPreviousAd")
+ attributesAppInstallationToPreviousAd = try container.decodeIfPresent("attributesAppInstallationToPreviousAd")
+ honorsLimitedAdTracking = try container.decodeIfPresent("honorsLimitedAdTracking")
+ servesAds = try container.decodeIfPresent("servesAds")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(attributesActionWithPreviousAd, forKey: "attributesActionWithPreviousAd")
+ try container.encodeIfPresent(attributesAppInstallationToPreviousAd, forKey: "attributesAppInstallationToPreviousAd")
+ try container.encodeIfPresent(honorsLimitedAdTracking, forKey: "honorsLimitedAdTracking")
+ try container.encodeIfPresent(servesAds, forKey: "servesAds")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.attributesActionWithPreviousAd == object.attributesActionWithPreviousAd else { return false }
+ guard self.attributesAppInstallationToPreviousAd == object.attributesAppInstallationToPreviousAd else { return false }
+ guard self.honorsLimitedAdTracking == object.honorsLimitedAdTracking else { return false }
+ guard self.servesAds == object.servesAds else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? IdfaDeclarationUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: IdfaDeclarationUpdateRequest, rhs: IdfaDeclarationUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/ImageAsset.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/ImageAsset.swift
new file mode 100644
index 000000000..d08e97e5d
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/ImageAsset.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class ImageAsset: APIModel {
+
+ public var height: Int?
+
+ public var templateUrl: String?
+
+ public var width: Int?
+
+ public init(height: Int? = nil, templateUrl: String? = nil, width: Int? = nil) {
+ self.height = height
+ self.templateUrl = templateUrl
+ self.width = width
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ height = try container.decodeIfPresent("height")
+ templateUrl = try container.decodeIfPresent("templateUrl")
+ width = try container.decodeIfPresent("width")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(height, forKey: "height")
+ try container.encodeIfPresent(templateUrl, forKey: "templateUrl")
+ try container.encodeIfPresent(width, forKey: "width")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? ImageAsset else { return false }
+ guard self.height == object.height else { return false }
+ guard self.templateUrl == object.templateUrl else { return false }
+ guard self.width == object.width else { return false }
+ return true
+ }
+
+ public static func == (lhs: ImageAsset, rhs: ImageAsset) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/InAppPurchase.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/InAppPurchase.swift
new file mode 100644
index 000000000..b56acef80
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/InAppPurchase.swift
@@ -0,0 +1,296 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class InAppPurchase: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case inAppPurchases = "inAppPurchases"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public enum InAppPurchaseType: String, Codable, Equatable, CaseIterable {
+ case automaticallyRenewableSubscription = "AUTOMATICALLY_RENEWABLE_SUBSCRIPTION"
+ case nonConsumable = "NON_CONSUMABLE"
+ case consumable = "CONSUMABLE"
+ case nonRenewingSubscription = "NON_RENEWING_SUBSCRIPTION"
+ case freeSubscription = "FREE_SUBSCRIPTION"
+ }
+
+ public enum State: String, Codable, Equatable, CaseIterable {
+ case created = "CREATED"
+ case developerSignedOff = "DEVELOPER_SIGNED_OFF"
+ case developerActionNeeded = "DEVELOPER_ACTION_NEEDED"
+ case deletionInProgress = "DELETION_IN_PROGRESS"
+ case approved = "APPROVED"
+ case deleted = "DELETED"
+ case removedFromSale = "REMOVED_FROM_SALE"
+ case developerRemovedFromSale = "DEVELOPER_REMOVED_FROM_SALE"
+ case waitingForUpload = "WAITING_FOR_UPLOAD"
+ case processingContent = "PROCESSING_CONTENT"
+ case replaced = "REPLACED"
+ case rejected = "REJECTED"
+ case waitingForScreenshot = "WAITING_FOR_SCREENSHOT"
+ case prepareForSubmission = "PREPARE_FOR_SUBMISSION"
+ case missingMetadata = "MISSING_METADATA"
+ case readyToSubmit = "READY_TO_SUBMIT"
+ case waitingForReview = "WAITING_FOR_REVIEW"
+ case inReview = "IN_REVIEW"
+ case pendingDeveloperRelease = "PENDING_DEVELOPER_RELEASE"
+ }
+
+ public var inAppPurchaseType: InAppPurchaseType?
+
+ public var productId: String?
+
+ public var referenceName: String?
+
+ public var state: State?
+
+ public init(inAppPurchaseType: InAppPurchaseType? = nil, productId: String? = nil, referenceName: String? = nil, state: State? = nil) {
+ self.inAppPurchaseType = inAppPurchaseType
+ self.productId = productId
+ self.referenceName = referenceName
+ self.state = state
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ inAppPurchaseType = try container.decodeIfPresent("inAppPurchaseType")
+ productId = try container.decodeIfPresent("productId")
+ referenceName = try container.decodeIfPresent("referenceName")
+ state = try container.decodeIfPresent("state")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(inAppPurchaseType, forKey: "inAppPurchaseType")
+ try container.encodeIfPresent(productId, forKey: "productId")
+ try container.encodeIfPresent(referenceName, forKey: "referenceName")
+ try container.encodeIfPresent(state, forKey: "state")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.inAppPurchaseType == object.inAppPurchaseType else { return false }
+ guard self.productId == object.productId else { return false }
+ guard self.referenceName == object.referenceName else { return false }
+ guard self.state == object.state else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var apps: Apps?
+
+ public class Apps: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Apps else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: Apps, rhs: Apps) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(apps: Apps? = nil) {
+ self.apps = apps
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ apps = try container.decodeIfPresent("apps")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(apps, forKey: "apps")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.apps == object.apps else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? InAppPurchase else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: InAppPurchase, rhs: InAppPurchase) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/InAppPurchaseResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/InAppPurchaseResponse.swift
new file mode 100644
index 000000000..65c3ba339
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/InAppPurchaseResponse.swift
@@ -0,0 +1,43 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class InAppPurchaseResponse: APIModel {
+
+ public var data: InAppPurchase
+
+ public var links: DocumentLinks
+
+ public init(data: InAppPurchase, links: DocumentLinks) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? InAppPurchaseResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: InAppPurchaseResponse, rhs: InAppPurchaseResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/InAppPurchasesResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/InAppPurchasesResponse.swift
new file mode 100644
index 000000000..78dcc01c5
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/InAppPurchasesResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class InAppPurchasesResponse: APIModel {
+
+ public var data: [InAppPurchase]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public init(data: [InAppPurchase], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? InAppPurchasesResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: InAppPurchasesResponse, rhs: InAppPurchasesResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/InternalBetaState.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/InternalBetaState.swift
new file mode 100644
index 000000000..da62065bc
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/InternalBetaState.swift
@@ -0,0 +1,16 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public enum InternalBetaState: String, Codable, Equatable, CaseIterable {
+ case processing = "PROCESSING"
+ case processingException = "PROCESSING_EXCEPTION"
+ case missingExportCompliance = "MISSING_EXPORT_COMPLIANCE"
+ case readyForBetaTesting = "READY_FOR_BETA_TESTING"
+ case inBetaTesting = "IN_BETA_TESTING"
+ case expired = "EXPIRED"
+ case inExportComplianceReview = "IN_EXPORT_COMPLIANCE_REVIEW"
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/KidsAgeBand.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/KidsAgeBand.swift
new file mode 100644
index 000000000..a8565a9d1
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/KidsAgeBand.swift
@@ -0,0 +1,12 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public enum KidsAgeBand: String, Codable, Equatable, CaseIterable {
+ case fiveAndUnder = "FIVE_AND_UNDER"
+ case sixToEight = "SIX_TO_EIGHT"
+ case nineToEleven = "NINE_TO_ELEVEN"
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/PagedDocumentLinks.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/PagedDocumentLinks.swift
new file mode 100644
index 000000000..88e9b8904
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/PagedDocumentLinks.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class PagedDocumentLinks: APIModel {
+
+ public var _self: String
+
+ public var first: String?
+
+ public var next: String?
+
+ public init(_self: String, first: String? = nil, next: String? = nil) {
+ self._self = _self
+ self.first = first
+ self.next = next
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ _self = try container.decode("self")
+ first = try container.decodeIfPresent("first")
+ next = try container.decodeIfPresent("next")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(_self, forKey: "self")
+ try container.encodeIfPresent(first, forKey: "first")
+ try container.encodeIfPresent(next, forKey: "next")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? PagedDocumentLinks else { return false }
+ guard self._self == object._self else { return false }
+ guard self.first == object.first else { return false }
+ guard self.next == object.next else { return false }
+ return true
+ }
+
+ public static func == (lhs: PagedDocumentLinks, rhs: PagedDocumentLinks) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/PagingInformation.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/PagingInformation.swift
new file mode 100644
index 000000000..1550b5719
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/PagingInformation.swift
@@ -0,0 +1,74 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class PagingInformation: APIModel {
+
+ public var paging: Paging
+
+ public class Paging: APIModel {
+
+ public var total: Int
+
+ public var limit: Int
+
+ public init(total: Int, limit: Int) {
+ self.total = total
+ self.limit = limit
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ total = try container.decode("total")
+ limit = try container.decode("limit")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(total, forKey: "total")
+ try container.encode(limit, forKey: "limit")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Paging else { return false }
+ guard self.total == object.total else { return false }
+ guard self.limit == object.limit else { return false }
+ return true
+ }
+
+ public static func == (lhs: Paging, rhs: Paging) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(paging: Paging) {
+ self.paging = paging
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ paging = try container.decode("paging")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(paging, forKey: "paging")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? PagingInformation else { return false }
+ guard self.paging == object.paging else { return false }
+ return true
+ }
+
+ public static func == (lhs: PagingInformation, rhs: PagingInformation) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/PerfPowerMetric.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/PerfPowerMetric.swift
new file mode 100644
index 000000000..6cc8cd11c
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/PerfPowerMetric.swift
@@ -0,0 +1,115 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class PerfPowerMetric: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case perfPowerMetrics = "perfPowerMetrics"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public enum MetricType: String, Codable, Equatable, CaseIterable {
+ case disk = "DISK"
+ case hang = "HANG"
+ case battery = "BATTERY"
+ case launch = "LAUNCH"
+ case memory = "MEMORY"
+ case animation = "ANIMATION"
+ }
+
+ public enum Platform: String, Codable, Equatable, CaseIterable {
+ case ios = "IOS"
+ }
+
+ public var deviceType: String?
+
+ public var metricType: MetricType?
+
+ public var platform: Platform?
+
+ public init(deviceType: String? = nil, metricType: MetricType? = nil, platform: Platform? = nil) {
+ self.deviceType = deviceType
+ self.metricType = metricType
+ self.platform = platform
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ deviceType = try container.decodeIfPresent("deviceType")
+ metricType = try container.decodeIfPresent("metricType")
+ platform = try container.decodeIfPresent("platform")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(deviceType, forKey: "deviceType")
+ try container.encodeIfPresent(metricType, forKey: "metricType")
+ try container.encodeIfPresent(platform, forKey: "platform")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.deviceType == object.deviceType else { return false }
+ guard self.metricType == object.metricType else { return false }
+ guard self.platform == object.platform else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? PerfPowerMetric else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: PerfPowerMetric, rhs: PerfPowerMetric) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/PerfPowerMetricsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/PerfPowerMetricsResponse.swift
new file mode 100644
index 000000000..b1b5c0463
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/PerfPowerMetricsResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class PerfPowerMetricsResponse: APIModel {
+
+ public var data: [PerfPowerMetric]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public init(data: [PerfPowerMetric], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? PerfPowerMetricsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: PerfPowerMetricsResponse, rhs: PerfPowerMetricsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/PhasedReleaseState.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/PhasedReleaseState.swift
new file mode 100644
index 000000000..37f282099
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/PhasedReleaseState.swift
@@ -0,0 +1,13 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public enum PhasedReleaseState: String, Codable, Equatable, CaseIterable {
+ case inactive = "INACTIVE"
+ case active = "ACTIVE"
+ case paused = "PAUSED"
+ case complete = "COMPLETE"
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/Platform.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/Platform.swift
new file mode 100644
index 000000000..06caa46a9
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/Platform.swift
@@ -0,0 +1,12 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public enum Platform: String, Codable, Equatable, CaseIterable {
+ case ios = "IOS"
+ case macOs = "MAC_OS"
+ case tvOs = "TV_OS"
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/PreReleaseVersionsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/PreReleaseVersionsResponse.swift
new file mode 100644
index 000000000..686f80469
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/PreReleaseVersionsResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class PreReleaseVersionsResponse: APIModel {
+
+ public var data: [PrereleaseVersion]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [Included]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [PrereleaseVersion], links: PagedDocumentLinks, included: [Included]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? PreReleaseVersionsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: PreReleaseVersionsResponse, rhs: PreReleaseVersionsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/PrereleaseVersion.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/PrereleaseVersion.swift
new file mode 100644
index 000000000..de3aa87cb
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/PrereleaseVersion.swift
@@ -0,0 +1,375 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class PrereleaseVersion: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case preReleaseVersions = "preReleaseVersions"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var platform: Platform?
+
+ public var version: String?
+
+ public init(platform: Platform? = nil, version: String? = nil) {
+ self.platform = platform
+ self.version = version
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ platform = try container.decodeIfPresent("platform")
+ version = try container.decodeIfPresent("version")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(platform, forKey: "platform")
+ try container.encodeIfPresent(version, forKey: "version")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.platform == object.platform else { return false }
+ guard self.version == object.version else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var app: App?
+
+ public var builds: Builds?
+
+ public class App: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? App else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: App, rhs: App) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Builds: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case builds = "builds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Builds else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: Builds, rhs: Builds) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(app: App? = nil, builds: Builds? = nil) {
+ self.app = app
+ self.builds = builds
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ app = try container.decodeIfPresent("app")
+ builds = try container.decodeIfPresent("builds")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(app, forKey: "app")
+ try container.encodeIfPresent(builds, forKey: "builds")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.app == object.app else { return false }
+ guard self.builds == object.builds else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? PrereleaseVersion else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: PrereleaseVersion, rhs: PrereleaseVersion) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/PrereleaseVersionResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/PrereleaseVersionResponse.swift
new file mode 100644
index 000000000..3329f13f3
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/PrereleaseVersionResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class PrereleaseVersionResponse: APIModel {
+
+ public var data: PrereleaseVersion
+
+ public var links: DocumentLinks
+
+ public var included: [Included]?
+
+ public init(data: PrereleaseVersion, links: DocumentLinks, included: [Included]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? PrereleaseVersionResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: PrereleaseVersionResponse, rhs: PrereleaseVersionResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/PreviewType.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/PreviewType.swift
new file mode 100644
index 000000000..749a12fd5
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/PreviewType.swift
@@ -0,0 +1,24 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public enum PreviewType: String, Codable, Equatable, CaseIterable {
+ case iphone65 = "IPHONE_65"
+ case iphone58 = "IPHONE_58"
+ case iphone55 = "IPHONE_55"
+ case iphone47 = "IPHONE_47"
+ case iphone40 = "IPHONE_40"
+ case iphone35 = "IPHONE_35"
+ case ipadPro3gen129 = "IPAD_PRO_3GEN_129"
+ case ipadPro3gen11 = "IPAD_PRO_3GEN_11"
+ case ipadPro129 = "IPAD_PRO_129"
+ case ipad105 = "IPAD_105"
+ case ipad97 = "IPAD_97"
+ case desktop = "DESKTOP"
+ case watchSeries4 = "WATCH_SERIES_4"
+ case watchSeries3 = "WATCH_SERIES_3"
+ case appleTv = "APPLE_TV"
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/Profile.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/Profile.swift
new file mode 100644
index 000000000..e8a8a8b65
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/Profile.swift
@@ -0,0 +1,560 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class Profile: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case profiles = "profiles"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public enum ProfileState: String, Codable, Equatable, CaseIterable {
+ case active = "ACTIVE"
+ case invalid = "INVALID"
+ }
+
+ public enum ProfileType: String, Codable, Equatable, CaseIterable {
+ case iosAppDevelopment = "IOS_APP_DEVELOPMENT"
+ case iosAppStore = "IOS_APP_STORE"
+ case iosAppAdhoc = "IOS_APP_ADHOC"
+ case iosAppInhouse = "IOS_APP_INHOUSE"
+ case macAppDevelopment = "MAC_APP_DEVELOPMENT"
+ case macAppStore = "MAC_APP_STORE"
+ case macAppDirect = "MAC_APP_DIRECT"
+ case tvosAppDevelopment = "TVOS_APP_DEVELOPMENT"
+ case tvosAppStore = "TVOS_APP_STORE"
+ case tvosAppAdhoc = "TVOS_APP_ADHOC"
+ case tvosAppInhouse = "TVOS_APP_INHOUSE"
+ case macCatalystAppDevelopment = "MAC_CATALYST_APP_DEVELOPMENT"
+ case macCatalystAppStore = "MAC_CATALYST_APP_STORE"
+ case macCatalystAppDirect = "MAC_CATALYST_APP_DIRECT"
+ }
+
+ public var createdDate: DateTime?
+
+ public var expirationDate: DateTime?
+
+ public var name: String?
+
+ public var platform: BundleIdPlatform?
+
+ public var profileContent: String?
+
+ public var profileState: ProfileState?
+
+ public var profileType: ProfileType?
+
+ public var uuid: String?
+
+ public init(createdDate: DateTime? = nil, expirationDate: DateTime? = nil, name: String? = nil, platform: BundleIdPlatform? = nil, profileContent: String? = nil, profileState: ProfileState? = nil, profileType: ProfileType? = nil, uuid: String? = nil) {
+ self.createdDate = createdDate
+ self.expirationDate = expirationDate
+ self.name = name
+ self.platform = platform
+ self.profileContent = profileContent
+ self.profileState = profileState
+ self.profileType = profileType
+ self.uuid = uuid
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ createdDate = try container.decodeIfPresent("createdDate")
+ expirationDate = try container.decodeIfPresent("expirationDate")
+ name = try container.decodeIfPresent("name")
+ platform = try container.decodeIfPresent("platform")
+ profileContent = try container.decodeIfPresent("profileContent")
+ profileState = try container.decodeIfPresent("profileState")
+ profileType = try container.decodeIfPresent("profileType")
+ uuid = try container.decodeIfPresent("uuid")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(createdDate, forKey: "createdDate")
+ try container.encodeIfPresent(expirationDate, forKey: "expirationDate")
+ try container.encodeIfPresent(name, forKey: "name")
+ try container.encodeIfPresent(platform, forKey: "platform")
+ try container.encodeIfPresent(profileContent, forKey: "profileContent")
+ try container.encodeIfPresent(profileState, forKey: "profileState")
+ try container.encodeIfPresent(profileType, forKey: "profileType")
+ try container.encodeIfPresent(uuid, forKey: "uuid")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.createdDate == object.createdDate else { return false }
+ guard self.expirationDate == object.expirationDate else { return false }
+ guard self.name == object.name else { return false }
+ guard self.platform == object.platform else { return false }
+ guard self.profileContent == object.profileContent else { return false }
+ guard self.profileState == object.profileState else { return false }
+ guard self.profileType == object.profileType else { return false }
+ guard self.uuid == object.uuid else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var bundleId: BundleId?
+
+ public var certificates: Certificates?
+
+ public var devices: Devices?
+
+ public class BundleId: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case bundleIds = "bundleIds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BundleId else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: BundleId, rhs: BundleId) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Certificates: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case certificates = "certificates"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Certificates else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: Certificates, rhs: Certificates) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Devices: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case devices = "devices"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Devices else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: Devices, rhs: Devices) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(bundleId: BundleId? = nil, certificates: Certificates? = nil, devices: Devices? = nil) {
+ self.bundleId = bundleId
+ self.certificates = certificates
+ self.devices = devices
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ bundleId = try container.decodeIfPresent("bundleId")
+ certificates = try container.decodeIfPresent("certificates")
+ devices = try container.decodeIfPresent("devices")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(bundleId, forKey: "bundleId")
+ try container.encodeIfPresent(certificates, forKey: "certificates")
+ try container.encodeIfPresent(devices, forKey: "devices")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.bundleId == object.bundleId else { return false }
+ guard self.certificates == object.certificates else { return false }
+ guard self.devices == object.devices else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Profile else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: Profile, rhs: Profile) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/ProfileCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/ProfileCreateRequest.swift
new file mode 100644
index 000000000..241bbe727
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/ProfileCreateRequest.swift
@@ -0,0 +1,397 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class ProfileCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case profiles = "profiles"
+ }
+
+ public var relationships: Relationships
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public class Relationships: APIModel {
+
+ public var certificates: Certificates
+
+ public var bundleId: BundleId
+
+ public var devices: Devices?
+
+ public class Certificates: APIModel {
+
+ public var data: [DataType]
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case certificates = "certificates"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Certificates else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: Certificates, rhs: Certificates) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class BundleId: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case bundleIds = "bundleIds"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? BundleId else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: BundleId, rhs: BundleId) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Devices: APIModel {
+
+ public var data: [DataType]?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case devices = "devices"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Devices else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: Devices, rhs: Devices) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(certificates: Certificates, bundleId: BundleId, devices: Devices? = nil) {
+ self.certificates = certificates
+ self.bundleId = bundleId
+ self.devices = devices
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ certificates = try container.decode("certificates")
+ bundleId = try container.decode("bundleId")
+ devices = try container.decodeIfPresent("devices")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(certificates, forKey: "certificates")
+ try container.encode(bundleId, forKey: "bundleId")
+ try container.encodeIfPresent(devices, forKey: "devices")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.certificates == object.certificates else { return false }
+ guard self.bundleId == object.bundleId else { return false }
+ guard self.devices == object.devices else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Attributes: APIModel {
+
+ public enum ProfileType: String, Codable, Equatable, CaseIterable {
+ case iosAppDevelopment = "IOS_APP_DEVELOPMENT"
+ case iosAppStore = "IOS_APP_STORE"
+ case iosAppAdhoc = "IOS_APP_ADHOC"
+ case iosAppInhouse = "IOS_APP_INHOUSE"
+ case macAppDevelopment = "MAC_APP_DEVELOPMENT"
+ case macAppStore = "MAC_APP_STORE"
+ case macAppDirect = "MAC_APP_DIRECT"
+ case tvosAppDevelopment = "TVOS_APP_DEVELOPMENT"
+ case tvosAppStore = "TVOS_APP_STORE"
+ case tvosAppAdhoc = "TVOS_APP_ADHOC"
+ case tvosAppInhouse = "TVOS_APP_INHOUSE"
+ case macCatalystAppDevelopment = "MAC_CATALYST_APP_DEVELOPMENT"
+ case macCatalystAppStore = "MAC_CATALYST_APP_STORE"
+ case macCatalystAppDirect = "MAC_CATALYST_APP_DIRECT"
+ }
+
+ public var profileType: ProfileType
+
+ public var name: String
+
+ public init(profileType: ProfileType, name: String) {
+ self.profileType = profileType
+ self.name = name
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ profileType = try container.decode("profileType")
+ name = try container.decode("name")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(profileType, forKey: "profileType")
+ try container.encode(name, forKey: "name")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.profileType == object.profileType else { return false }
+ guard self.name == object.name else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, attributes: Attributes, type: `Type`) {
+ self.relationships = relationships
+ self.attributes = attributes
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? ProfileCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: ProfileCreateRequest, rhs: ProfileCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/ProfileResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/ProfileResponse.swift
new file mode 100644
index 000000000..7bf6dcbe6
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/ProfileResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class ProfileResponse: APIModel {
+
+ public var data: Profile
+
+ public var links: DocumentLinks
+
+ public var included: [Included]?
+
+ public init(data: Profile, links: DocumentLinks, included: [Included]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? ProfileResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: ProfileResponse, rhs: ProfileResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/ProfilesResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/ProfilesResponse.swift
new file mode 100644
index 000000000..1c879d933
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/ProfilesResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class ProfilesResponse: APIModel {
+
+ public var data: [Profile]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [Included]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [Profile], links: PagedDocumentLinks, included: [Included]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? ProfilesResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: ProfilesResponse, rhs: ProfilesResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/ResourceLinks.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/ResourceLinks.swift
new file mode 100644
index 000000000..8f5e8d818
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/ResourceLinks.swift
@@ -0,0 +1,37 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class ResourceLinks: APIModel {
+
+ public var _self: String
+
+ public init(_self: String) {
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ _self = try container.decode("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? ResourceLinks else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: ResourceLinks, rhs: ResourceLinks) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/RoutingAppCoverage.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/RoutingAppCoverage.swift
new file mode 100644
index 000000000..0f0191bcb
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/RoutingAppCoverage.swift
@@ -0,0 +1,266 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class RoutingAppCoverage: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case routingAppCoverages = "routingAppCoverages"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var assetDeliveryState: AppMediaAssetState?
+
+ public var fileName: String?
+
+ public var fileSize: Int?
+
+ public var sourceFileChecksum: String?
+
+ public var uploadOperations: [UploadOperation]?
+
+ public init(assetDeliveryState: AppMediaAssetState? = nil, fileName: String? = nil, fileSize: Int? = nil, sourceFileChecksum: String? = nil, uploadOperations: [UploadOperation]? = nil) {
+ self.assetDeliveryState = assetDeliveryState
+ self.fileName = fileName
+ self.fileSize = fileSize
+ self.sourceFileChecksum = sourceFileChecksum
+ self.uploadOperations = uploadOperations
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ assetDeliveryState = try container.decodeIfPresent("assetDeliveryState")
+ fileName = try container.decodeIfPresent("fileName")
+ fileSize = try container.decodeIfPresent("fileSize")
+ sourceFileChecksum = try container.decodeIfPresent("sourceFileChecksum")
+ uploadOperations = try container.decodeArrayIfPresent("uploadOperations")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(assetDeliveryState, forKey: "assetDeliveryState")
+ try container.encodeIfPresent(fileName, forKey: "fileName")
+ try container.encodeIfPresent(fileSize, forKey: "fileSize")
+ try container.encodeIfPresent(sourceFileChecksum, forKey: "sourceFileChecksum")
+ try container.encodeIfPresent(uploadOperations, forKey: "uploadOperations")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.assetDeliveryState == object.assetDeliveryState else { return false }
+ guard self.fileName == object.fileName else { return false }
+ guard self.fileSize == object.fileSize else { return false }
+ guard self.sourceFileChecksum == object.sourceFileChecksum else { return false }
+ guard self.uploadOperations == object.uploadOperations else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var appStoreVersion: AppStoreVersion?
+
+ public class AppStoreVersion: APIModel {
+
+ public var data: DataType?
+
+ public var links: Links?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersions = "appStoreVersions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType? = nil, links: Links? = nil) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersion else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersion, rhs: AppStoreVersion) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appStoreVersion: AppStoreVersion? = nil) {
+ self.appStoreVersion = appStoreVersion
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appStoreVersion = try container.decodeIfPresent("appStoreVersion")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(appStoreVersion, forKey: "appStoreVersion")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appStoreVersion == object.appStoreVersion else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? RoutingAppCoverage else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: RoutingAppCoverage, rhs: RoutingAppCoverage) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/RoutingAppCoverageCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/RoutingAppCoverageCreateRequest.swift
new file mode 100644
index 000000000..951516f80
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/RoutingAppCoverageCreateRequest.swift
@@ -0,0 +1,224 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class RoutingAppCoverageCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case routingAppCoverages = "routingAppCoverages"
+ }
+
+ public var relationships: Relationships
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public class Relationships: APIModel {
+
+ public var appStoreVersion: AppStoreVersion
+
+ public class AppStoreVersion: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case appStoreVersions = "appStoreVersions"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? AppStoreVersion else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: AppStoreVersion, rhs: AppStoreVersion) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(appStoreVersion: AppStoreVersion) {
+ self.appStoreVersion = appStoreVersion
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ appStoreVersion = try container.decode("appStoreVersion")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(appStoreVersion, forKey: "appStoreVersion")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.appStoreVersion == object.appStoreVersion else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Attributes: APIModel {
+
+ public var fileName: String
+
+ public var fileSize: Int
+
+ public init(fileName: String, fileSize: Int) {
+ self.fileName = fileName
+ self.fileSize = fileSize
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ fileName = try container.decode("fileName")
+ fileSize = try container.decode("fileSize")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(fileName, forKey: "fileName")
+ try container.encode(fileSize, forKey: "fileSize")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.fileName == object.fileName else { return false }
+ guard self.fileSize == object.fileSize else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(relationships: Relationships, attributes: Attributes, type: `Type`) {
+ self.relationships = relationships
+ self.attributes = attributes
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ relationships = try container.decode("relationships")
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(relationships, forKey: "relationships")
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.relationships == object.relationships else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? RoutingAppCoverageCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: RoutingAppCoverageCreateRequest, rhs: RoutingAppCoverageCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/RoutingAppCoverageResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/RoutingAppCoverageResponse.swift
new file mode 100644
index 000000000..78c2fa8ca
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/RoutingAppCoverageResponse.swift
@@ -0,0 +1,43 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class RoutingAppCoverageResponse: APIModel {
+
+ public var data: RoutingAppCoverage
+
+ public var links: DocumentLinks
+
+ public init(data: RoutingAppCoverage, links: DocumentLinks) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? RoutingAppCoverageResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: RoutingAppCoverageResponse, rhs: RoutingAppCoverageResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/RoutingAppCoverageUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/RoutingAppCoverageUpdateRequest.swift
new file mode 100644
index 000000000..730317d35
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/RoutingAppCoverageUpdateRequest.swift
@@ -0,0 +1,121 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class RoutingAppCoverageUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case routingAppCoverages = "routingAppCoverages"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var sourceFileChecksum: String?
+
+ public var uploaded: Bool?
+
+ public init(sourceFileChecksum: String? = nil, uploaded: Bool? = nil) {
+ self.sourceFileChecksum = sourceFileChecksum
+ self.uploaded = uploaded
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ sourceFileChecksum = try container.decodeIfPresent("sourceFileChecksum")
+ uploaded = try container.decodeIfPresent("uploaded")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(sourceFileChecksum, forKey: "sourceFileChecksum")
+ try container.encodeIfPresent(uploaded, forKey: "uploaded")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.sourceFileChecksum == object.sourceFileChecksum else { return false }
+ guard self.uploaded == object.uploaded else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? RoutingAppCoverageUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: RoutingAppCoverageUpdateRequest, rhs: RoutingAppCoverageUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/ScreenshotDisplayType.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/ScreenshotDisplayType.swift
new file mode 100644
index 000000000..16edda73e
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/ScreenshotDisplayType.swift
@@ -0,0 +1,34 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public enum ScreenshotDisplayType: String, Codable, Equatable, CaseIterable {
+ case appIphone65 = "APP_IPHONE_65"
+ case appIphone58 = "APP_IPHONE_58"
+ case appIphone55 = "APP_IPHONE_55"
+ case appIphone47 = "APP_IPHONE_47"
+ case appIphone40 = "APP_IPHONE_40"
+ case appIphone35 = "APP_IPHONE_35"
+ case appIpadPro3gen129 = "APP_IPAD_PRO_3GEN_129"
+ case appIpadPro3gen11 = "APP_IPAD_PRO_3GEN_11"
+ case appIpadPro129 = "APP_IPAD_PRO_129"
+ case appIpad105 = "APP_IPAD_105"
+ case appIpad97 = "APP_IPAD_97"
+ case appDesktop = "APP_DESKTOP"
+ case appWatchSeries4 = "APP_WATCH_SERIES_4"
+ case appWatchSeries3 = "APP_WATCH_SERIES_3"
+ case appAppleTv = "APP_APPLE_TV"
+ case imessageAppIphone65 = "IMESSAGE_APP_IPHONE_65"
+ case imessageAppIphone58 = "IMESSAGE_APP_IPHONE_58"
+ case imessageAppIphone55 = "IMESSAGE_APP_IPHONE_55"
+ case imessageAppIphone47 = "IMESSAGE_APP_IPHONE_47"
+ case imessageAppIphone40 = "IMESSAGE_APP_IPHONE_40"
+ case imessageAppIpadPro3gen129 = "IMESSAGE_APP_IPAD_PRO_3GEN_129"
+ case imessageAppIpadPro3gen11 = "IMESSAGE_APP_IPAD_PRO_3GEN_11"
+ case imessageAppIpadPro129 = "IMESSAGE_APP_IPAD_PRO_129"
+ case imessageAppIpad105 = "IMESSAGE_APP_IPAD_105"
+ case imessageAppIpad97 = "IMESSAGE_APP_IPAD_97"
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/TerritoriesResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/TerritoriesResponse.swift
new file mode 100644
index 000000000..e63e18cff
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/TerritoriesResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class TerritoriesResponse: APIModel {
+
+ public var data: [Territory]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public init(data: [Territory], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? TerritoriesResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: TerritoriesResponse, rhs: TerritoriesResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/Territory.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/Territory.swift
new file mode 100644
index 000000000..33d64a8bf
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/Territory.swift
@@ -0,0 +1,90 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class Territory: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case territories = "territories"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public class Attributes: APIModel {
+
+ public var currency: String?
+
+ public init(currency: String? = nil) {
+ self.currency = currency
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ currency = try container.decodeIfPresent("currency")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(currency, forKey: "currency")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.currency == object.currency else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Territory else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ return true
+ }
+
+ public static func == (lhs: Territory, rhs: Territory) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/TerritoryResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/TerritoryResponse.swift
new file mode 100644
index 000000000..4dc61f599
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/TerritoryResponse.swift
@@ -0,0 +1,43 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class TerritoryResponse: APIModel {
+
+ public var data: Territory
+
+ public var links: DocumentLinks
+
+ public init(data: Territory, links: DocumentLinks) {
+ self.data = data
+ self.links = links
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? TerritoryResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ return true
+ }
+
+ public static func == (lhs: TerritoryResponse, rhs: TerritoryResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/UploadOperation.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UploadOperation.swift
new file mode 100644
index 000000000..a1f09e067
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UploadOperation.swift
@@ -0,0 +1,61 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class UploadOperation: APIModel {
+
+ public var length: Int?
+
+ public var method: String?
+
+ public var offset: Int?
+
+ public var requestHeaders: [UploadOperationHeader]?
+
+ public var url: String?
+
+ public init(length: Int? = nil, method: String? = nil, offset: Int? = nil, requestHeaders: [UploadOperationHeader]? = nil, url: String? = nil) {
+ self.length = length
+ self.method = method
+ self.offset = offset
+ self.requestHeaders = requestHeaders
+ self.url = url
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ length = try container.decodeIfPresent("length")
+ method = try container.decodeIfPresent("method")
+ offset = try container.decodeIfPresent("offset")
+ requestHeaders = try container.decodeArrayIfPresent("requestHeaders")
+ url = try container.decodeIfPresent("url")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(length, forKey: "length")
+ try container.encodeIfPresent(method, forKey: "method")
+ try container.encodeIfPresent(offset, forKey: "offset")
+ try container.encodeIfPresent(requestHeaders, forKey: "requestHeaders")
+ try container.encodeIfPresent(url, forKey: "url")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? UploadOperation else { return false }
+ guard self.length == object.length else { return false }
+ guard self.method == object.method else { return false }
+ guard self.offset == object.offset else { return false }
+ guard self.requestHeaders == object.requestHeaders else { return false }
+ guard self.url == object.url else { return false }
+ return true
+ }
+
+ public static func == (lhs: UploadOperation, rhs: UploadOperation) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/UploadOperationHeader.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UploadOperationHeader.swift
new file mode 100644
index 000000000..871fe0f83
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UploadOperationHeader.swift
@@ -0,0 +1,43 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class UploadOperationHeader: APIModel {
+
+ public var name: String?
+
+ public var value: String?
+
+ public init(name: String? = nil, value: String? = nil) {
+ self.name = name
+ self.value = value
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ name = try container.decodeIfPresent("name")
+ value = try container.decodeIfPresent("value")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(name, forKey: "name")
+ try container.encodeIfPresent(value, forKey: "value")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? UploadOperationHeader else { return false }
+ guard self.name == object.name else { return false }
+ guard self.value == object.value else { return false }
+ return true
+ }
+
+ public static func == (lhs: UploadOperationHeader, rhs: UploadOperationHeader) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/User.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/User.swift
new file mode 100644
index 000000000..1d927a3e9
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/User.swift
@@ -0,0 +1,278 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class User: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case users = "users"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var allAppsVisible: Bool?
+
+ public var firstName: String?
+
+ public var lastName: String?
+
+ public var provisioningAllowed: Bool?
+
+ public var roles: [UserRole]?
+
+ public var username: String?
+
+ public init(allAppsVisible: Bool? = nil, firstName: String? = nil, lastName: String? = nil, provisioningAllowed: Bool? = nil, roles: [UserRole]? = nil, username: String? = nil) {
+ self.allAppsVisible = allAppsVisible
+ self.firstName = firstName
+ self.lastName = lastName
+ self.provisioningAllowed = provisioningAllowed
+ self.roles = roles
+ self.username = username
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ allAppsVisible = try container.decodeIfPresent("allAppsVisible")
+ firstName = try container.decodeIfPresent("firstName")
+ lastName = try container.decodeIfPresent("lastName")
+ provisioningAllowed = try container.decodeIfPresent("provisioningAllowed")
+ roles = try container.decodeArrayIfPresent("roles")
+ username = try container.decodeIfPresent("username")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(allAppsVisible, forKey: "allAppsVisible")
+ try container.encodeIfPresent(firstName, forKey: "firstName")
+ try container.encodeIfPresent(lastName, forKey: "lastName")
+ try container.encodeIfPresent(provisioningAllowed, forKey: "provisioningAllowed")
+ try container.encodeIfPresent(roles, forKey: "roles")
+ try container.encodeIfPresent(username, forKey: "username")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.allAppsVisible == object.allAppsVisible else { return false }
+ guard self.firstName == object.firstName else { return false }
+ guard self.lastName == object.lastName else { return false }
+ guard self.provisioningAllowed == object.provisioningAllowed else { return false }
+ guard self.roles == object.roles else { return false }
+ guard self.username == object.username else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var visibleApps: VisibleApps?
+
+ public class VisibleApps: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? VisibleApps else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: VisibleApps, rhs: VisibleApps) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(visibleApps: VisibleApps? = nil) {
+ self.visibleApps = visibleApps
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ visibleApps = try container.decodeIfPresent("visibleApps")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(visibleApps, forKey: "visibleApps")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.visibleApps == object.visibleApps else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? User else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: User, rhs: User) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserInvitation.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserInvitation.swift
new file mode 100644
index 000000000..1814ca515
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserInvitation.swift
@@ -0,0 +1,284 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class UserInvitation: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case userInvitations = "userInvitations"
+ }
+
+ public var links: ResourceLinks
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var allAppsVisible: Bool?
+
+ public var email: String?
+
+ public var expirationDate: DateTime?
+
+ public var firstName: String?
+
+ public var lastName: String?
+
+ public var provisioningAllowed: Bool?
+
+ public var roles: [UserRole]?
+
+ public init(allAppsVisible: Bool? = nil, email: String? = nil, expirationDate: DateTime? = nil, firstName: String? = nil, lastName: String? = nil, provisioningAllowed: Bool? = nil, roles: [UserRole]? = nil) {
+ self.allAppsVisible = allAppsVisible
+ self.email = email
+ self.expirationDate = expirationDate
+ self.firstName = firstName
+ self.lastName = lastName
+ self.provisioningAllowed = provisioningAllowed
+ self.roles = roles
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ allAppsVisible = try container.decodeIfPresent("allAppsVisible")
+ email = try container.decodeIfPresent("email")
+ expirationDate = try container.decodeIfPresent("expirationDate")
+ firstName = try container.decodeIfPresent("firstName")
+ lastName = try container.decodeIfPresent("lastName")
+ provisioningAllowed = try container.decodeIfPresent("provisioningAllowed")
+ roles = try container.decodeArrayIfPresent("roles")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(allAppsVisible, forKey: "allAppsVisible")
+ try container.encodeIfPresent(email, forKey: "email")
+ try container.encodeIfPresent(expirationDate, forKey: "expirationDate")
+ try container.encodeIfPresent(firstName, forKey: "firstName")
+ try container.encodeIfPresent(lastName, forKey: "lastName")
+ try container.encodeIfPresent(provisioningAllowed, forKey: "provisioningAllowed")
+ try container.encodeIfPresent(roles, forKey: "roles")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.allAppsVisible == object.allAppsVisible else { return false }
+ guard self.email == object.email else { return false }
+ guard self.expirationDate == object.expirationDate else { return false }
+ guard self.firstName == object.firstName else { return false }
+ guard self.lastName == object.lastName else { return false }
+ guard self.provisioningAllowed == object.provisioningAllowed else { return false }
+ guard self.roles == object.roles else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var visibleApps: VisibleApps?
+
+ public class VisibleApps: APIModel {
+
+ public var data: [DataType]?
+
+ public var links: Links?
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Links: APIModel {
+
+ public var related: String?
+
+ public var _self: String?
+
+ public init(related: String? = nil, _self: String? = nil) {
+ self.related = related
+ self._self = _self
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ related = try container.decodeIfPresent("related")
+ _self = try container.decodeIfPresent("self")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(related, forKey: "related")
+ try container.encodeIfPresent(_self, forKey: "self")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Links else { return false }
+ guard self.related == object.related else { return false }
+ guard self._self == object._self else { return false }
+ return true
+ }
+
+ public static func == (lhs: Links, rhs: Links) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil, links: Links? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ links = try container.decodeIfPresent("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ try container.encodeIfPresent(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? VisibleApps else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: VisibleApps, rhs: VisibleApps) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(visibleApps: VisibleApps? = nil) {
+ self.visibleApps = visibleApps
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ visibleApps = try container.decodeIfPresent("visibleApps")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(visibleApps, forKey: "visibleApps")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.visibleApps == object.visibleApps else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(links: ResourceLinks, id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.links = links
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ links = try container.decode("links")
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(links, forKey: "links")
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? UserInvitation else { return false }
+ guard self.links == object.links else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: UserInvitation, rhs: UserInvitation) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserInvitationCreateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserInvitationCreateRequest.swift
new file mode 100644
index 000000000..07e1fd3c6
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserInvitationCreateRequest.swift
@@ -0,0 +1,248 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class UserInvitationCreateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case userInvitations = "userInvitations"
+ }
+
+ public var attributes: Attributes
+
+ public var type: `Type`
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var firstName: String
+
+ public var lastName: String
+
+ public var roles: [UserRole]
+
+ public var email: String
+
+ public var allAppsVisible: Bool?
+
+ public var provisioningAllowed: Bool?
+
+ public init(firstName: String, lastName: String, roles: [UserRole], email: String, allAppsVisible: Bool? = nil, provisioningAllowed: Bool? = nil) {
+ self.firstName = firstName
+ self.lastName = lastName
+ self.roles = roles
+ self.email = email
+ self.allAppsVisible = allAppsVisible
+ self.provisioningAllowed = provisioningAllowed
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ firstName = try container.decode("firstName")
+ lastName = try container.decode("lastName")
+ roles = try container.decodeArray("roles")
+ email = try container.decode("email")
+ allAppsVisible = try container.decodeIfPresent("allAppsVisible")
+ provisioningAllowed = try container.decodeIfPresent("provisioningAllowed")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(firstName, forKey: "firstName")
+ try container.encode(lastName, forKey: "lastName")
+ try container.encode(roles, forKey: "roles")
+ try container.encode(email, forKey: "email")
+ try container.encodeIfPresent(allAppsVisible, forKey: "allAppsVisible")
+ try container.encodeIfPresent(provisioningAllowed, forKey: "provisioningAllowed")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.firstName == object.firstName else { return false }
+ guard self.lastName == object.lastName else { return false }
+ guard self.roles == object.roles else { return false }
+ guard self.email == object.email else { return false }
+ guard self.allAppsVisible == object.allAppsVisible else { return false }
+ guard self.provisioningAllowed == object.provisioningAllowed else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var visibleApps: VisibleApps?
+
+ public class VisibleApps: APIModel {
+
+ public var data: [DataType]?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? VisibleApps else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: VisibleApps, rhs: VisibleApps) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(visibleApps: VisibleApps? = nil) {
+ self.visibleApps = visibleApps
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ visibleApps = try container.decodeIfPresent("visibleApps")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(visibleApps, forKey: "visibleApps")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.visibleApps == object.visibleApps else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(attributes: Attributes, type: `Type`, relationships: Relationships? = nil) {
+ self.attributes = attributes
+ self.type = type
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ attributes = try container.decode("attributes")
+ type = try container.decode("type")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(attributes, forKey: "attributes")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.type == object.type else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? UserInvitationCreateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: UserInvitationCreateRequest, rhs: UserInvitationCreateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserInvitationResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserInvitationResponse.swift
new file mode 100644
index 000000000..4600da296
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserInvitationResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class UserInvitationResponse: APIModel {
+
+ public var data: UserInvitation
+
+ public var links: DocumentLinks
+
+ public var included: [App]?
+
+ public init(data: UserInvitation, links: DocumentLinks, included: [App]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? UserInvitationResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: UserInvitationResponse, rhs: UserInvitationResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserInvitationsResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserInvitationsResponse.swift
new file mode 100644
index 000000000..9856c860c
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserInvitationsResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class UserInvitationsResponse: APIModel {
+
+ public var data: [UserInvitation]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [App]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [UserInvitation], links: PagedDocumentLinks, included: [App]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? UserInvitationsResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: UserInvitationsResponse, rhs: UserInvitationsResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserResponse.swift
new file mode 100644
index 000000000..e75ab6759
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserResponse.swift
@@ -0,0 +1,49 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class UserResponse: APIModel {
+
+ public var data: User
+
+ public var links: DocumentLinks
+
+ public var included: [App]?
+
+ public init(data: User, links: DocumentLinks, included: [App]? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? UserResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ return true
+ }
+
+ public static func == (lhs: UserResponse, rhs: UserResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserRole.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserRole.swift
new file mode 100644
index 000000000..ff41bb81b
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserRole.swift
@@ -0,0 +1,20 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public enum UserRole: String, Codable, Equatable, CaseIterable {
+ case admin = "ADMIN"
+ case finance = "FINANCE"
+ case technical = "TECHNICAL"
+ case accountHolder = "ACCOUNT_HOLDER"
+ case readOnly = "READ_ONLY"
+ case sales = "SALES"
+ case marketing = "MARKETING"
+ case appManager = "APP_MANAGER"
+ case developer = "DEVELOPER"
+ case accessToReports = "ACCESS_TO_REPORTS"
+ case customerSupport = "CUSTOMER_SUPPORT"
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserUpdateRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserUpdateRequest.swift
new file mode 100644
index 000000000..62185fed1
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserUpdateRequest.swift
@@ -0,0 +1,236 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class UserUpdateRequest: APIModel {
+
+ public var data: DataType
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case users = "users"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public var attributes: Attributes?
+
+ public var relationships: Relationships?
+
+ public class Attributes: APIModel {
+
+ public var allAppsVisible: Bool?
+
+ public var provisioningAllowed: Bool?
+
+ public var roles: [UserRole]?
+
+ public init(allAppsVisible: Bool? = nil, provisioningAllowed: Bool? = nil, roles: [UserRole]? = nil) {
+ self.allAppsVisible = allAppsVisible
+ self.provisioningAllowed = provisioningAllowed
+ self.roles = roles
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ allAppsVisible = try container.decodeIfPresent("allAppsVisible")
+ provisioningAllowed = try container.decodeIfPresent("provisioningAllowed")
+ roles = try container.decodeArrayIfPresent("roles")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(allAppsVisible, forKey: "allAppsVisible")
+ try container.encodeIfPresent(provisioningAllowed, forKey: "provisioningAllowed")
+ try container.encodeIfPresent(roles, forKey: "roles")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Attributes else { return false }
+ guard self.allAppsVisible == object.allAppsVisible else { return false }
+ guard self.provisioningAllowed == object.provisioningAllowed else { return false }
+ guard self.roles == object.roles else { return false }
+ return true
+ }
+
+ public static func == (lhs: Attributes, rhs: Attributes) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public class Relationships: APIModel {
+
+ public var visibleApps: VisibleApps?
+
+ public class VisibleApps: APIModel {
+
+ public var data: [DataType]?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]? = nil) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArrayIfPresent("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? VisibleApps else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: VisibleApps, rhs: VisibleApps) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(visibleApps: VisibleApps? = nil) {
+ self.visibleApps = visibleApps
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ visibleApps = try container.decodeIfPresent("visibleApps")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encodeIfPresent(visibleApps, forKey: "visibleApps")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? Relationships else { return false }
+ guard self.visibleApps == object.visibleApps else { return false }
+ return true
+ }
+
+ public static func == (lhs: Relationships, rhs: Relationships) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(id: String, type: `Type`, attributes: Attributes? = nil, relationships: Relationships? = nil) {
+ self.id = id
+ self.type = type
+ self.attributes = attributes
+ self.relationships = relationships
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ attributes = try container.decodeIfPresent("attributes")
+ relationships = try container.decodeIfPresent("relationships")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ try container.encodeIfPresent(attributes, forKey: "attributes")
+ try container.encodeIfPresent(relationships, forKey: "relationships")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ guard self.attributes == object.attributes else { return false }
+ guard self.relationships == object.relationships else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: DataType) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decode("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? UserUpdateRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: UserUpdateRequest, rhs: UserUpdateRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserVisibleAppsLinkagesRequest.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserVisibleAppsLinkagesRequest.swift
new file mode 100644
index 000000000..a3eb20a78
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserVisibleAppsLinkagesRequest.swift
@@ -0,0 +1,78 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class UserVisibleAppsLinkagesRequest: APIModel {
+
+ public var data: [DataType]
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType]) {
+ self.data = data
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? UserVisibleAppsLinkagesRequest else { return false }
+ guard self.data == object.data else { return false }
+ return true
+ }
+
+ public static func == (lhs: UserVisibleAppsLinkagesRequest, rhs: UserVisibleAppsLinkagesRequest) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserVisibleAppsLinkagesResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserVisibleAppsLinkagesResponse.swift
new file mode 100644
index 000000000..092932b2d
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UserVisibleAppsLinkagesResponse.swift
@@ -0,0 +1,90 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class UserVisibleAppsLinkagesResponse: APIModel {
+
+ public var data: [DataType]
+
+ public var links: PagedDocumentLinks
+
+ public var meta: PagingInformation?
+
+ public class DataType: APIModel {
+
+ public enum `Type`: String, Codable, Equatable, CaseIterable {
+ case apps = "apps"
+ }
+
+ public var id: String
+
+ public var type: `Type`
+
+ public init(id: String, type: `Type`) {
+ self.id = id
+ self.type = type
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ id = try container.decode("id")
+ type = try container.decode("type")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(id, forKey: "id")
+ try container.encode(type, forKey: "type")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? DataType else { return false }
+ guard self.id == object.id else { return false }
+ guard self.type == object.type else { return false }
+ return true
+ }
+
+ public static func == (lhs: DataType, rhs: DataType) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+ }
+
+ public init(data: [DataType], links: PagedDocumentLinks, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? UserVisibleAppsLinkagesResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: UserVisibleAppsLinkagesResponse, rhs: UserVisibleAppsLinkagesResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Models/UsersResponse.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UsersResponse.swift
new file mode 100644
index 000000000..3691a0026
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Models/UsersResponse.swift
@@ -0,0 +1,55 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public class UsersResponse: APIModel {
+
+ public var data: [User]
+
+ public var links: PagedDocumentLinks
+
+ public var included: [App]?
+
+ public var meta: PagingInformation?
+
+ public init(data: [User], links: PagedDocumentLinks, included: [App]? = nil, meta: PagingInformation? = nil) {
+ self.data = data
+ self.links = links
+ self.included = included
+ self.meta = meta
+ }
+
+ public required init(from decoder: Decoder) throws {
+ let container = try decoder.container(keyedBy: StringCodingKey.self)
+
+ data = try container.decodeArray("data")
+ links = try container.decode("links")
+ included = try container.decodeArrayIfPresent("included")
+ meta = try container.decodeIfPresent("meta")
+ }
+
+ public func encode(to encoder: Encoder) throws {
+ var container = encoder.container(keyedBy: StringCodingKey.self)
+
+ try container.encode(data, forKey: "data")
+ try container.encode(links, forKey: "links")
+ try container.encodeIfPresent(included, forKey: "included")
+ try container.encodeIfPresent(meta, forKey: "meta")
+ }
+
+ public func isEqual(to object: Any?) -> Bool {
+ guard let object = object as? UsersResponse else { return false }
+ guard self.data == object.data else { return false }
+ guard self.links == object.links else { return false }
+ guard self.included == object.included else { return false }
+ guard self.meta == object.meta else { return false }
+ return true
+ }
+
+ public static func == (lhs: UsersResponse, rhs: UsersResponse) -> Bool {
+ return lhs.isEqual(to: rhs)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/RequestBehaviour.swift b/Specs/AppStoreConnect/generated/Swift/Sources/RequestBehaviour.swift
new file mode 100644
index 000000000..f3fea767f
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/RequestBehaviour.swift
@@ -0,0 +1,192 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+public protocol RequestBehaviour {
+
+ /// runs first and allows the requests to be modified. If modifying asynchronously use validate
+ func modifyRequest(request: AnyRequest, urlRequest: URLRequest) -> URLRequest
+
+ /// validates and modifies the request. complete must be called with either .success or .fail
+ func validate(request: AnyRequest, urlRequest: URLRequest, complete: @escaping (RequestValidationResult) -> Void)
+
+ /// called before request is sent
+ func beforeSend(request: AnyRequest)
+
+ /// called when request successfuly returns a 200 range response
+ func onSuccess(request: AnyRequest, result: Any)
+
+ /// called when request fails with an error. This will not be called if the request returns a known response even if the a status code is out of the 200 range
+ func onFailure(request: AnyRequest, error: APIClientError)
+
+ /// called if the request recieves a network response. This is not called if request fails validation or encoding
+ func onResponse(request: AnyRequest, response: AnyResponse)
+}
+
+public enum RequestValidationResult {
+ case success(URLRequest)
+ case failure(Error)
+}
+
+// Provides empty defaults so that each function becomes optional
+public extension RequestBehaviour {
+ func modifyRequest(request: AnyRequest, urlRequest: URLRequest) -> URLRequest { return urlRequest }
+ func validate(request: AnyRequest, urlRequest: URLRequest, complete: @escaping (RequestValidationResult) -> Void) {
+ complete(.success(urlRequest))
+ }
+ func beforeSend(request: AnyRequest) {}
+ func onSuccess(request: AnyRequest, result: Any) {}
+ func onFailure(request: AnyRequest, error: APIClientError) {}
+ func onResponse(request: AnyRequest, response: AnyResponse) {}
+}
+
+// Group different RequestBehaviours together
+struct RequestBehaviourGroup {
+
+ let request: AnyRequest
+ let behaviours: [RequestBehaviour]
+
+ init(request: APIRequest, behaviours: [RequestBehaviour]) {
+ self.request = request.asAny()
+ self.behaviours = behaviours
+ }
+
+ func beforeSend() {
+ behaviours.forEach {
+ $0.beforeSend(request: request)
+ }
+ }
+
+ func validate(_ urlRequest: URLRequest, complete: @escaping (RequestValidationResult) -> Void) {
+ if behaviours.isEmpty {
+ complete(.success(urlRequest))
+ return
+ }
+
+ var count = 0
+ var modifiedRequest = urlRequest
+ func validateNext() {
+ let behaviour = behaviours[count]
+ behaviour.validate(request: request, urlRequest: modifiedRequest) { result in
+ count += 1
+ switch result {
+ case .success(let urlRequest):
+ modifiedRequest = urlRequest
+ if count == self.behaviours.count {
+ complete(.success(modifiedRequest))
+ } else {
+ validateNext()
+ }
+ case .failure(let error):
+ complete(.failure(error))
+ }
+ }
+ }
+ validateNext()
+ }
+
+ func onSuccess(result: Any) {
+ behaviours.forEach {
+ $0.onSuccess(request: request, result: result)
+ }
+ }
+
+ func onFailure(error: APIClientError) {
+ behaviours.forEach {
+ $0.onFailure(request: request, error: error)
+ }
+ }
+
+ func onResponse(response: AnyResponse) {
+ behaviours.forEach {
+ $0.onResponse(request: request, response: response)
+ }
+ }
+
+ func modifyRequest(_ urlRequest: URLRequest) -> URLRequest {
+ var urlRequest = urlRequest
+ behaviours.forEach {
+ urlRequest = $0.modifyRequest(request: request, urlRequest: urlRequest)
+ }
+ return urlRequest
+ }
+}
+
+//MARK: Type erased Requests and Responses
+
+public typealias AnyResponse = APIResponse
+
+public class AnyRequest: APIRequest {
+ private let requestPath: String
+
+ override public var path: String {
+ return requestPath
+ }
+
+ init(request: APIRequest) {
+ requestPath = request.path
+ super.init(service: request.service.asAny(), queryParameters: request.queryParameters, formParameters: request.formParameters, headers: request.headers, encodeBody: request.encodeBody)
+ }
+}
+
+public struct AnyResponseValue: APIResponseValue, CustomDebugStringConvertible, CustomStringConvertible {
+
+ public typealias SuccessType = Any
+
+ public let statusCode: Int
+ public let successful: Bool
+ public let response: Any
+ public let responseEnum: Any
+ public let success: Any?
+
+ public init(statusCode: Int, successful: Bool, response: Any, responseEnum: Any, success: Any?) {
+ self.statusCode = statusCode
+ self.successful = successful
+ self.response = response
+ self.responseEnum = responseEnum
+ self.success = success
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ fatalError()
+ }
+
+ public var description:String {
+ return "\(responseEnum)"
+ }
+
+ public var debugDescription: String {
+ if let debugDescription = responseEnum as? CustomDebugStringConvertible {
+ return debugDescription.debugDescription
+ } else {
+ return "\(responseEnum)"
+ }
+ }
+}
+
+extension APIResponseValue {
+ public func asAny() -> AnyResponseValue {
+ return AnyResponseValue(statusCode: statusCode, successful: successful, response: response, responseEnum: self, success: success)
+ }
+}
+
+extension APIResponse {
+ public func asAny() -> APIResponse {
+ return APIResponse(request: request.asAny(), result: result.map{ $0.asAny() }, urlRequest: urlRequest, urlResponse: urlResponse, data: data, timeline: timeline)
+ }
+}
+
+extension APIRequest {
+ public func asAny() -> AnyRequest {
+ return AnyRequest(request: self)
+ }
+}
+
+extension APIService {
+ public func asAny() -> APIService {
+ return APIService(id: id, tag: tag, method: method, path: path, hasBody: hasBody, securityRequirements: securityRequirements)
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AgeRatingDeclarations/AgeRatingDeclarationsUpdateInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AgeRatingDeclarations/AgeRatingDeclarationsUpdateInstance.swift
new file mode 100644
index 000000000..b71fe78f1
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AgeRatingDeclarations/AgeRatingDeclarationsUpdateInstance.swift
@@ -0,0 +1,150 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AgeRatingDeclarations {
+
+ public enum AgeRatingDeclarationsUpdateInstance {
+
+ public static let service = APIService(id: "ageRatingDeclarations-update_instance", tag: "AgeRatingDeclarations", method: "PATCH", path: "/v1/ageRatingDeclarations/{id}", hasBody: true, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ public init(id: String) {
+ self.id = id
+ }
+ }
+
+ public var options: Options
+
+ public var body: AgeRatingDeclarationUpdateRequest
+
+ public init(body: AgeRatingDeclarationUpdateRequest, options: Options, encoder: RequestEncoder? = nil) {
+ self.body = body
+ self.options = options
+ super.init(service: AgeRatingDeclarationsUpdateInstance.service) { defaultEncoder in
+ return try (encoder ?? defaultEncoder).encode(body)
+ }
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, body: AgeRatingDeclarationUpdateRequest) {
+ let options = Options(id: id)
+ self.init(body: body, options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AgeRatingDeclarationResponse
+
+ /** Single AgeRatingDeclaration */
+ case status200(AgeRatingDeclarationResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: AgeRatingDeclarationResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AgeRatingDeclarationResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppCategories/AppCategoriesGetCollection.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppCategories/AppCategoriesGetCollection.swift
new file mode 100644
index 000000000..6d765d651
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppCategories/AppCategoriesGetCollection.swift
@@ -0,0 +1,188 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppCategories {
+
+ public enum AppCategoriesGetCollection {
+
+ public static let service = APIService(id: "appCategories-get_collection", tag: "AppCategories", method: "GET", path: "/v1/appCategories", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** filter by attribute 'platforms' */
+ public enum Filterplatforms: String, Codable, Equatable, CaseIterable {
+ case ios = "IOS"
+ case macOs = "MAC_OS"
+ case tvOs = "TV_OS"
+ }
+
+ /** the fields to include for returned resources of type appCategories */
+ public enum FieldsappCategories: String, Codable, Equatable, CaseIterable {
+ case parent = "parent"
+ case platforms = "platforms"
+ case subcategories = "subcategories"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case parent = "parent"
+ case subcategories = "subcategories"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** filter by attribute 'platforms' */
+ public var filterplatforms: [Filterplatforms]?
+
+ /** filter by existence or non-existence of related 'parent' */
+ public var existsparent: [String]?
+
+ /** the fields to include for returned resources of type appCategories */
+ public var fieldsappCategories: [FieldsappCategories]?
+
+ /** maximum resources per page */
+ public var limit: Int?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ /** maximum number of related subcategories returned (when they are included) */
+ public var limitsubcategories: Int?
+
+ public init(filterplatforms: [Filterplatforms]? = nil, existsparent: [String]? = nil, fieldsappCategories: [FieldsappCategories]? = nil, limit: Int? = nil, include: [Include]? = nil, limitsubcategories: Int? = nil) {
+ self.filterplatforms = filterplatforms
+ self.existsparent = existsparent
+ self.fieldsappCategories = fieldsappCategories
+ self.limit = limit
+ self.include = include
+ self.limitsubcategories = limitsubcategories
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppCategoriesGetCollection.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(filterplatforms: [Filterplatforms]? = nil, existsparent: [String]? = nil, fieldsappCategories: [FieldsappCategories]? = nil, limit: Int? = nil, include: [Include]? = nil, limitsubcategories: Int? = nil) {
+ let options = Options(filterplatforms: filterplatforms, existsparent: existsparent, fieldsappCategories: fieldsappCategories, limit: limit, include: include, limitsubcategories: limitsubcategories)
+ self.init(options: options)
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let filterplatforms = options.filterplatforms?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["filter[platforms]"] = filterplatforms
+ }
+ if let existsparent = options.existsparent?.joined(separator: ",") {
+ params["exists[parent]"] = existsparent
+ }
+ if let fieldsappCategories = options.fieldsappCategories?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appCategories]"] = fieldsappCategories
+ }
+ if let limit = options.limit {
+ params["limit"] = limit
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ if let limitsubcategories = options.limitsubcategories {
+ params["limit[subcategories]"] = limitsubcategories
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppCategoriesResponse
+
+ /** List of AppCategories */
+ case status200(AppCategoriesResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ public var success: AppCategoriesResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppCategoriesResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppCategories/AppCategoriesGetInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppCategories/AppCategoriesGetInstance.swift
new file mode 100644
index 000000000..46202c247
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppCategories/AppCategoriesGetInstance.swift
@@ -0,0 +1,176 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppCategories {
+
+ public enum AppCategoriesGetInstance {
+
+ public static let service = APIService(id: "appCategories-get_instance", tag: "AppCategories", method: "GET", path: "/v1/appCategories/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appCategories */
+ public enum FieldsappCategories: String, Codable, Equatable, CaseIterable {
+ case parent = "parent"
+ case platforms = "platforms"
+ case subcategories = "subcategories"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case parent = "parent"
+ case subcategories = "subcategories"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appCategories */
+ public var fieldsappCategories: [FieldsappCategories]?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ /** maximum number of related subcategories returned (when they are included) */
+ public var limitsubcategories: Int?
+
+ public init(id: String, fieldsappCategories: [FieldsappCategories]? = nil, include: [Include]? = nil, limitsubcategories: Int? = nil) {
+ self.id = id
+ self.fieldsappCategories = fieldsappCategories
+ self.include = include
+ self.limitsubcategories = limitsubcategories
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppCategoriesGetInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappCategories: [FieldsappCategories]? = nil, include: [Include]? = nil, limitsubcategories: Int? = nil) {
+ let options = Options(id: id, fieldsappCategories: fieldsappCategories, include: include, limitsubcategories: limitsubcategories)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappCategories = options.fieldsappCategories?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appCategories]"] = fieldsappCategories
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ if let limitsubcategories = options.limitsubcategories {
+ params["limit[subcategories]"] = limitsubcategories
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppCategoryResponse
+
+ /** Single AppCategory */
+ case status200(AppCategoryResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppCategoryResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppCategoryResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppCategories/AppCategoriesParentGetToOneRelated.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppCategories/AppCategoriesParentGetToOneRelated.swift
new file mode 100644
index 000000000..15d96a5dd
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppCategories/AppCategoriesParentGetToOneRelated.swift
@@ -0,0 +1,156 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppCategories {
+
+ public enum AppCategoriesParentGetToOneRelated {
+
+ public static let service = APIService(id: "appCategories-parent-get_to_one_related", tag: "AppCategories", method: "GET", path: "/v1/appCategories/{id}/parent", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appCategories */
+ public enum FieldsappCategories: String, Codable, Equatable, CaseIterable {
+ case parent = "parent"
+ case platforms = "platforms"
+ case subcategories = "subcategories"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appCategories */
+ public var fieldsappCategories: [FieldsappCategories]?
+
+ public init(id: String, fieldsappCategories: [FieldsappCategories]? = nil) {
+ self.id = id
+ self.fieldsappCategories = fieldsappCategories
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppCategoriesParentGetToOneRelated.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappCategories: [FieldsappCategories]? = nil) {
+ let options = Options(id: id, fieldsappCategories: fieldsappCategories)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappCategories = options.fieldsappCategories?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appCategories]"] = fieldsappCategories
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppCategoryResponse
+
+ /** Related resource */
+ case status200(AppCategoryResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppCategoryResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppCategoryResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppCategories/AppCategoriesSubcategoriesGetToManyRelated.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppCategories/AppCategoriesSubcategoriesGetToManyRelated.swift
new file mode 100644
index 000000000..271d16589
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppCategories/AppCategoriesSubcategoriesGetToManyRelated.swift
@@ -0,0 +1,163 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppCategories {
+
+ public enum AppCategoriesSubcategoriesGetToManyRelated {
+
+ public static let service = APIService(id: "appCategories-subcategories-get_to_many_related", tag: "AppCategories", method: "GET", path: "/v1/appCategories/{id}/subcategories", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appCategories */
+ public enum FieldsappCategories: String, Codable, Equatable, CaseIterable {
+ case parent = "parent"
+ case platforms = "platforms"
+ case subcategories = "subcategories"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appCategories */
+ public var fieldsappCategories: [FieldsappCategories]?
+
+ /** maximum resources per page */
+ public var limit: Int?
+
+ public init(id: String, fieldsappCategories: [FieldsappCategories]? = nil, limit: Int? = nil) {
+ self.id = id
+ self.fieldsappCategories = fieldsappCategories
+ self.limit = limit
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppCategoriesSubcategoriesGetToManyRelated.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappCategories: [FieldsappCategories]? = nil, limit: Int? = nil) {
+ let options = Options(id: id, fieldsappCategories: fieldsappCategories, limit: limit)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappCategories = options.fieldsappCategories?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appCategories]"] = fieldsappCategories
+ }
+ if let limit = options.limit {
+ params["limit"] = limit
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppCategoriesResponse
+
+ /** List of related resources */
+ case status200(AppCategoriesResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppCategoriesResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppCategoriesResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppEncryptionDeclarations/AppEncryptionDeclarationsAppGetToOneRelated.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppEncryptionDeclarations/AppEncryptionDeclarationsAppGetToOneRelated.swift
new file mode 100644
index 000000000..3ddf56a52
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppEncryptionDeclarations/AppEncryptionDeclarationsAppGetToOneRelated.swift
@@ -0,0 +1,176 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppEncryptionDeclarations {
+
+ public enum AppEncryptionDeclarationsAppGetToOneRelated {
+
+ public static let service = APIService(id: "appEncryptionDeclarations-app-get_to_one_related", tag: "AppEncryptionDeclarations", method: "GET", path: "/v1/appEncryptionDeclarations/{id}/app", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type apps */
+ public enum Fieldsapps: String, Codable, Equatable, CaseIterable {
+ case appInfos = "appInfos"
+ case appStoreVersions = "appStoreVersions"
+ case availableInNewTerritories = "availableInNewTerritories"
+ case availableTerritories = "availableTerritories"
+ case betaAppLocalizations = "betaAppLocalizations"
+ case betaAppReviewDetail = "betaAppReviewDetail"
+ case betaGroups = "betaGroups"
+ case betaLicenseAgreement = "betaLicenseAgreement"
+ case betaTesters = "betaTesters"
+ case builds = "builds"
+ case bundleId = "bundleId"
+ case contentRightsDeclaration = "contentRightsDeclaration"
+ case endUserLicenseAgreement = "endUserLicenseAgreement"
+ case gameCenterEnabledVersions = "gameCenterEnabledVersions"
+ case inAppPurchases = "inAppPurchases"
+ case isOrEverWasMadeForKids = "isOrEverWasMadeForKids"
+ case name = "name"
+ case perfPowerMetrics = "perfPowerMetrics"
+ case preOrder = "preOrder"
+ case preReleaseVersions = "preReleaseVersions"
+ case prices = "prices"
+ case primaryLocale = "primaryLocale"
+ case sku = "sku"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type apps */
+ public var fieldsapps: [Fieldsapps]?
+
+ public init(id: String, fieldsapps: [Fieldsapps]? = nil) {
+ self.id = id
+ self.fieldsapps = fieldsapps
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppEncryptionDeclarationsAppGetToOneRelated.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsapps: [Fieldsapps]? = nil) {
+ let options = Options(id: id, fieldsapps: fieldsapps)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsapps = options.fieldsapps?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[apps]"] = fieldsapps
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppResponse
+
+ /** Related resource */
+ case status200(AppResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppEncryptionDeclarations/AppEncryptionDeclarationsBuildsCreateToManyRelationship.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppEncryptionDeclarations/AppEncryptionDeclarationsBuildsCreateToManyRelationship.swift
new file mode 100644
index 000000000..33530026b
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppEncryptionDeclarations/AppEncryptionDeclarationsBuildsCreateToManyRelationship.swift
@@ -0,0 +1,142 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppEncryptionDeclarations {
+
+ public enum AppEncryptionDeclarationsBuildsCreateToManyRelationship {
+
+ public static let service = APIService(id: "appEncryptionDeclarations-builds-create_to_many_relationship", tag: "AppEncryptionDeclarations", method: "POST", path: "/v1/appEncryptionDeclarations/{id}/relationships/builds", hasBody: true, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ public init(id: String) {
+ self.id = id
+ }
+ }
+
+ public var options: Options
+
+ public var body: AppEncryptionDeclarationBuildsLinkagesRequest
+
+ public init(body: AppEncryptionDeclarationBuildsLinkagesRequest, options: Options, encoder: RequestEncoder? = nil) {
+ self.body = body
+ self.options = options
+ super.init(service: AppEncryptionDeclarationsBuildsCreateToManyRelationship.service) { defaultEncoder in
+ return try (encoder ?? defaultEncoder).encode(body)
+ }
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, body: AppEncryptionDeclarationBuildsLinkagesRequest) {
+ let options = Options(id: id)
+ self.init(body: body, options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = Void
+
+ /** Success (no content) */
+ case status204
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: Void? {
+ switch self {
+ case .status204: return ()
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return ()
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status204: return 204
+ case .status403: return 403
+ case .status404: return 404
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status204: return true
+ case .status403: return false
+ case .status404: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 204: self = .status204
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppEncryptionDeclarations/AppEncryptionDeclarationsGetCollection.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppEncryptionDeclarations/AppEncryptionDeclarationsGetCollection.swift
new file mode 100644
index 000000000..ee5b16ff1
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppEncryptionDeclarations/AppEncryptionDeclarationsGetCollection.swift
@@ -0,0 +1,232 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppEncryptionDeclarations {
+
+ public enum AppEncryptionDeclarationsGetCollection {
+
+ public static let service = APIService(id: "appEncryptionDeclarations-get_collection", tag: "AppEncryptionDeclarations", method: "GET", path: "/v1/appEncryptionDeclarations", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** filter by attribute 'platform' */
+ public enum Filterplatform: String, Codable, Equatable, CaseIterable {
+ case ios = "IOS"
+ case macOs = "MAC_OS"
+ case tvOs = "TV_OS"
+ }
+
+ /** the fields to include for returned resources of type appEncryptionDeclarations */
+ public enum FieldsappEncryptionDeclarations: String, Codable, Equatable, CaseIterable {
+ case app = "app"
+ case appEncryptionDeclarationState = "appEncryptionDeclarationState"
+ case availableOnFrenchStore = "availableOnFrenchStore"
+ case builds = "builds"
+ case codeValue = "codeValue"
+ case containsProprietaryCryptography = "containsProprietaryCryptography"
+ case containsThirdPartyCryptography = "containsThirdPartyCryptography"
+ case documentName = "documentName"
+ case documentType = "documentType"
+ case documentUrl = "documentUrl"
+ case exempt = "exempt"
+ case platform = "platform"
+ case uploadedDate = "uploadedDate"
+ case usesEncryption = "usesEncryption"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case app = "app"
+ }
+
+ /** the fields to include for returned resources of type apps */
+ public enum Fieldsapps: String, Codable, Equatable, CaseIterable {
+ case appInfos = "appInfos"
+ case appStoreVersions = "appStoreVersions"
+ case availableInNewTerritories = "availableInNewTerritories"
+ case availableTerritories = "availableTerritories"
+ case betaAppLocalizations = "betaAppLocalizations"
+ case betaAppReviewDetail = "betaAppReviewDetail"
+ case betaGroups = "betaGroups"
+ case betaLicenseAgreement = "betaLicenseAgreement"
+ case betaTesters = "betaTesters"
+ case builds = "builds"
+ case bundleId = "bundleId"
+ case contentRightsDeclaration = "contentRightsDeclaration"
+ case endUserLicenseAgreement = "endUserLicenseAgreement"
+ case gameCenterEnabledVersions = "gameCenterEnabledVersions"
+ case inAppPurchases = "inAppPurchases"
+ case isOrEverWasMadeForKids = "isOrEverWasMadeForKids"
+ case name = "name"
+ case perfPowerMetrics = "perfPowerMetrics"
+ case preOrder = "preOrder"
+ case preReleaseVersions = "preReleaseVersions"
+ case prices = "prices"
+ case primaryLocale = "primaryLocale"
+ case sku = "sku"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** filter by attribute 'platform' */
+ public var filterplatform: [Filterplatform]?
+
+ /** filter by id(s) of related 'app' */
+ public var filterapp: [String]?
+
+ /** filter by id(s) of related 'builds' */
+ public var filterbuilds: [String]?
+
+ /** the fields to include for returned resources of type appEncryptionDeclarations */
+ public var fieldsappEncryptionDeclarations: [FieldsappEncryptionDeclarations]?
+
+ /** maximum resources per page */
+ public var limit: Int?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ /** the fields to include for returned resources of type apps */
+ public var fieldsapps: [Fieldsapps]?
+
+ public init(filterplatform: [Filterplatform]? = nil, filterapp: [String]? = nil, filterbuilds: [String]? = nil, fieldsappEncryptionDeclarations: [FieldsappEncryptionDeclarations]? = nil, limit: Int? = nil, include: [Include]? = nil, fieldsapps: [Fieldsapps]? = nil) {
+ self.filterplatform = filterplatform
+ self.filterapp = filterapp
+ self.filterbuilds = filterbuilds
+ self.fieldsappEncryptionDeclarations = fieldsappEncryptionDeclarations
+ self.limit = limit
+ self.include = include
+ self.fieldsapps = fieldsapps
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppEncryptionDeclarationsGetCollection.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(filterplatform: [Filterplatform]? = nil, filterapp: [String]? = nil, filterbuilds: [String]? = nil, fieldsappEncryptionDeclarations: [FieldsappEncryptionDeclarations]? = nil, limit: Int? = nil, include: [Include]? = nil, fieldsapps: [Fieldsapps]? = nil) {
+ let options = Options(filterplatform: filterplatform, filterapp: filterapp, filterbuilds: filterbuilds, fieldsappEncryptionDeclarations: fieldsappEncryptionDeclarations, limit: limit, include: include, fieldsapps: fieldsapps)
+ self.init(options: options)
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let filterplatform = options.filterplatform?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["filter[platform]"] = filterplatform
+ }
+ if let filterapp = options.filterapp?.joined(separator: ",") {
+ params["filter[app]"] = filterapp
+ }
+ if let filterbuilds = options.filterbuilds?.joined(separator: ",") {
+ params["filter[builds]"] = filterbuilds
+ }
+ if let fieldsappEncryptionDeclarations = options.fieldsappEncryptionDeclarations?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appEncryptionDeclarations]"] = fieldsappEncryptionDeclarations
+ }
+ if let limit = options.limit {
+ params["limit"] = limit
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ if let fieldsapps = options.fieldsapps?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[apps]"] = fieldsapps
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppEncryptionDeclarationsResponse
+
+ /** List of AppEncryptionDeclarations */
+ case status200(AppEncryptionDeclarationsResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ public var success: AppEncryptionDeclarationsResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppEncryptionDeclarationsResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppEncryptionDeclarations/AppEncryptionDeclarationsGetInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppEncryptionDeclarations/AppEncryptionDeclarationsGetInstance.swift
new file mode 100644
index 000000000..63669d46f
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppEncryptionDeclarations/AppEncryptionDeclarationsGetInstance.swift
@@ -0,0 +1,213 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppEncryptionDeclarations {
+
+ public enum AppEncryptionDeclarationsGetInstance {
+
+ public static let service = APIService(id: "appEncryptionDeclarations-get_instance", tag: "AppEncryptionDeclarations", method: "GET", path: "/v1/appEncryptionDeclarations/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appEncryptionDeclarations */
+ public enum FieldsappEncryptionDeclarations: String, Codable, Equatable, CaseIterable {
+ case app = "app"
+ case appEncryptionDeclarationState = "appEncryptionDeclarationState"
+ case availableOnFrenchStore = "availableOnFrenchStore"
+ case builds = "builds"
+ case codeValue = "codeValue"
+ case containsProprietaryCryptography = "containsProprietaryCryptography"
+ case containsThirdPartyCryptography = "containsThirdPartyCryptography"
+ case documentName = "documentName"
+ case documentType = "documentType"
+ case documentUrl = "documentUrl"
+ case exempt = "exempt"
+ case platform = "platform"
+ case uploadedDate = "uploadedDate"
+ case usesEncryption = "usesEncryption"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case app = "app"
+ }
+
+ /** the fields to include for returned resources of type apps */
+ public enum Fieldsapps: String, Codable, Equatable, CaseIterable {
+ case appInfos = "appInfos"
+ case appStoreVersions = "appStoreVersions"
+ case availableInNewTerritories = "availableInNewTerritories"
+ case availableTerritories = "availableTerritories"
+ case betaAppLocalizations = "betaAppLocalizations"
+ case betaAppReviewDetail = "betaAppReviewDetail"
+ case betaGroups = "betaGroups"
+ case betaLicenseAgreement = "betaLicenseAgreement"
+ case betaTesters = "betaTesters"
+ case builds = "builds"
+ case bundleId = "bundleId"
+ case contentRightsDeclaration = "contentRightsDeclaration"
+ case endUserLicenseAgreement = "endUserLicenseAgreement"
+ case gameCenterEnabledVersions = "gameCenterEnabledVersions"
+ case inAppPurchases = "inAppPurchases"
+ case isOrEverWasMadeForKids = "isOrEverWasMadeForKids"
+ case name = "name"
+ case perfPowerMetrics = "perfPowerMetrics"
+ case preOrder = "preOrder"
+ case preReleaseVersions = "preReleaseVersions"
+ case prices = "prices"
+ case primaryLocale = "primaryLocale"
+ case sku = "sku"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appEncryptionDeclarations */
+ public var fieldsappEncryptionDeclarations: [FieldsappEncryptionDeclarations]?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ /** the fields to include for returned resources of type apps */
+ public var fieldsapps: [Fieldsapps]?
+
+ public init(id: String, fieldsappEncryptionDeclarations: [FieldsappEncryptionDeclarations]? = nil, include: [Include]? = nil, fieldsapps: [Fieldsapps]? = nil) {
+ self.id = id
+ self.fieldsappEncryptionDeclarations = fieldsappEncryptionDeclarations
+ self.include = include
+ self.fieldsapps = fieldsapps
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppEncryptionDeclarationsGetInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappEncryptionDeclarations: [FieldsappEncryptionDeclarations]? = nil, include: [Include]? = nil, fieldsapps: [Fieldsapps]? = nil) {
+ let options = Options(id: id, fieldsappEncryptionDeclarations: fieldsappEncryptionDeclarations, include: include, fieldsapps: fieldsapps)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappEncryptionDeclarations = options.fieldsappEncryptionDeclarations?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appEncryptionDeclarations]"] = fieldsappEncryptionDeclarations
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ if let fieldsapps = options.fieldsapps?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[apps]"] = fieldsapps
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppEncryptionDeclarationResponse
+
+ /** Single AppEncryptionDeclaration */
+ case status200(AppEncryptionDeclarationResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppEncryptionDeclarationResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppEncryptionDeclarationResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfoLocalizations/AppInfoLocalizationsCreateInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfoLocalizations/AppInfoLocalizationsCreateInstance.swift
new file mode 100644
index 000000000..5a304d879
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfoLocalizations/AppInfoLocalizationsCreateInstance.swift
@@ -0,0 +1,119 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppInfoLocalizations {
+
+ public enum AppInfoLocalizationsCreateInstance {
+
+ public static let service = APIService(id: "appInfoLocalizations-create_instance", tag: "AppInfoLocalizations", method: "POST", path: "/v1/appInfoLocalizations", hasBody: true, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public var body: AppInfoLocalizationCreateRequest
+
+ public init(body: AppInfoLocalizationCreateRequest, encoder: RequestEncoder? = nil) {
+ self.body = body
+ super.init(service: AppInfoLocalizationsCreateInstance.service) { defaultEncoder in
+ return try (encoder ?? defaultEncoder).encode(body)
+ }
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppInfoLocalizationResponse
+
+ /** Single AppInfoLocalization */
+ case status201(AppInfoLocalizationResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: AppInfoLocalizationResponse? {
+ switch self {
+ case .status201(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status201(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status409(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status201: return 201
+ case .status400: return 400
+ case .status403: return 403
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status201: return true
+ case .status400: return false
+ case .status403: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 201: self = try .status201(decoder.decode(AppInfoLocalizationResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfoLocalizations/AppInfoLocalizationsDeleteInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfoLocalizations/AppInfoLocalizationsDeleteInstance.swift
new file mode 100644
index 000000000..59af48e7b
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfoLocalizations/AppInfoLocalizationsDeleteInstance.swift
@@ -0,0 +1,145 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppInfoLocalizations {
+
+ public enum AppInfoLocalizationsDeleteInstance {
+
+ public static let service = APIService(id: "appInfoLocalizations-delete_instance", tag: "AppInfoLocalizations", method: "DELETE", path: "/v1/appInfoLocalizations/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ public init(id: String) {
+ self.id = id
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppInfoLocalizationsDeleteInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String) {
+ let options = Options(id: id)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = Void
+
+ /** Success (no content) */
+ case status204
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: Void? {
+ switch self {
+ case .status204: return ()
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return ()
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status204: return 204
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status204: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 204: self = .status204
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfoLocalizations/AppInfoLocalizationsGetInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfoLocalizations/AppInfoLocalizationsGetInstance.swift
new file mode 100644
index 000000000..80629fa50
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfoLocalizations/AppInfoLocalizationsGetInstance.swift
@@ -0,0 +1,171 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppInfoLocalizations {
+
+ public enum AppInfoLocalizationsGetInstance {
+
+ public static let service = APIService(id: "appInfoLocalizations-get_instance", tag: "AppInfoLocalizations", method: "GET", path: "/v1/appInfoLocalizations/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appInfoLocalizations */
+ public enum FieldsappInfoLocalizations: String, Codable, Equatable, CaseIterable {
+ case appInfo = "appInfo"
+ case locale = "locale"
+ case name = "name"
+ case privacyPolicyText = "privacyPolicyText"
+ case privacyPolicyUrl = "privacyPolicyUrl"
+ case subtitle = "subtitle"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case appInfo = "appInfo"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appInfoLocalizations */
+ public var fieldsappInfoLocalizations: [FieldsappInfoLocalizations]?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ public init(id: String, fieldsappInfoLocalizations: [FieldsappInfoLocalizations]? = nil, include: [Include]? = nil) {
+ self.id = id
+ self.fieldsappInfoLocalizations = fieldsappInfoLocalizations
+ self.include = include
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppInfoLocalizationsGetInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappInfoLocalizations: [FieldsappInfoLocalizations]? = nil, include: [Include]? = nil) {
+ let options = Options(id: id, fieldsappInfoLocalizations: fieldsappInfoLocalizations, include: include)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappInfoLocalizations = options.fieldsappInfoLocalizations?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appInfoLocalizations]"] = fieldsappInfoLocalizations
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppInfoLocalizationResponse
+
+ /** Single AppInfoLocalization */
+ case status200(AppInfoLocalizationResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppInfoLocalizationResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppInfoLocalizationResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfoLocalizations/AppInfoLocalizationsUpdateInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfoLocalizations/AppInfoLocalizationsUpdateInstance.swift
new file mode 100644
index 000000000..5de08bf0c
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfoLocalizations/AppInfoLocalizationsUpdateInstance.swift
@@ -0,0 +1,150 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppInfoLocalizations {
+
+ public enum AppInfoLocalizationsUpdateInstance {
+
+ public static let service = APIService(id: "appInfoLocalizations-update_instance", tag: "AppInfoLocalizations", method: "PATCH", path: "/v1/appInfoLocalizations/{id}", hasBody: true, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ public init(id: String) {
+ self.id = id
+ }
+ }
+
+ public var options: Options
+
+ public var body: AppInfoLocalizationUpdateRequest
+
+ public init(body: AppInfoLocalizationUpdateRequest, options: Options, encoder: RequestEncoder? = nil) {
+ self.body = body
+ self.options = options
+ super.init(service: AppInfoLocalizationsUpdateInstance.service) { defaultEncoder in
+ return try (encoder ?? defaultEncoder).encode(body)
+ }
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, body: AppInfoLocalizationUpdateRequest) {
+ let options = Options(id: id)
+ self.init(body: body, options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppInfoLocalizationResponse
+
+ /** Single AppInfoLocalization */
+ case status200(AppInfoLocalizationResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: AppInfoLocalizationResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppInfoLocalizationResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosAppInfoLocalizationsGetToManyRelated.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosAppInfoLocalizationsGetToManyRelated.swift
new file mode 100644
index 000000000..24628f66f
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosAppInfoLocalizationsGetToManyRelated.swift
@@ -0,0 +1,208 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppInfos {
+
+ public enum AppInfosAppInfoLocalizationsGetToManyRelated {
+
+ public static let service = APIService(id: "appInfos-appInfoLocalizations-get_to_many_related", tag: "AppInfos", method: "GET", path: "/v1/appInfos/{id}/appInfoLocalizations", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appInfos */
+ public enum FieldsappInfos: String, Codable, Equatable, CaseIterable {
+ case app = "app"
+ case appInfoLocalizations = "appInfoLocalizations"
+ case appStoreAgeRating = "appStoreAgeRating"
+ case appStoreState = "appStoreState"
+ case brazilAgeRating = "brazilAgeRating"
+ case kidsAgeBand = "kidsAgeBand"
+ case primaryCategory = "primaryCategory"
+ case primarySubcategoryOne = "primarySubcategoryOne"
+ case primarySubcategoryTwo = "primarySubcategoryTwo"
+ case secondaryCategory = "secondaryCategory"
+ case secondarySubcategoryOne = "secondarySubcategoryOne"
+ case secondarySubcategoryTwo = "secondarySubcategoryTwo"
+ }
+
+ /** the fields to include for returned resources of type appInfoLocalizations */
+ public enum FieldsappInfoLocalizations: String, Codable, Equatable, CaseIterable {
+ case appInfo = "appInfo"
+ case locale = "locale"
+ case name = "name"
+ case privacyPolicyText = "privacyPolicyText"
+ case privacyPolicyUrl = "privacyPolicyUrl"
+ case subtitle = "subtitle"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case appInfo = "appInfo"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** filter by attribute 'locale' */
+ public var filterlocale: [String]?
+
+ /** the fields to include for returned resources of type appInfos */
+ public var fieldsappInfos: [FieldsappInfos]?
+
+ /** the fields to include for returned resources of type appInfoLocalizations */
+ public var fieldsappInfoLocalizations: [FieldsappInfoLocalizations]?
+
+ /** maximum resources per page */
+ public var limit: Int?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ public init(id: String, filterlocale: [String]? = nil, fieldsappInfos: [FieldsappInfos]? = nil, fieldsappInfoLocalizations: [FieldsappInfoLocalizations]? = nil, limit: Int? = nil, include: [Include]? = nil) {
+ self.id = id
+ self.filterlocale = filterlocale
+ self.fieldsappInfos = fieldsappInfos
+ self.fieldsappInfoLocalizations = fieldsappInfoLocalizations
+ self.limit = limit
+ self.include = include
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppInfosAppInfoLocalizationsGetToManyRelated.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, filterlocale: [String]? = nil, fieldsappInfos: [FieldsappInfos]? = nil, fieldsappInfoLocalizations: [FieldsappInfoLocalizations]? = nil, limit: Int? = nil, include: [Include]? = nil) {
+ let options = Options(id: id, filterlocale: filterlocale, fieldsappInfos: fieldsappInfos, fieldsappInfoLocalizations: fieldsappInfoLocalizations, limit: limit, include: include)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let filterlocale = options.filterlocale?.joined(separator: ",") {
+ params["filter[locale]"] = filterlocale
+ }
+ if let fieldsappInfos = options.fieldsappInfos?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appInfos]"] = fieldsappInfos
+ }
+ if let fieldsappInfoLocalizations = options.fieldsappInfoLocalizations?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appInfoLocalizations]"] = fieldsappInfoLocalizations
+ }
+ if let limit = options.limit {
+ params["limit"] = limit
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppInfoLocalizationsResponse
+
+ /** List of related resources */
+ case status200(AppInfoLocalizationsResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppInfoLocalizationsResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppInfoLocalizationsResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosGetInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosGetInstance.swift
new file mode 100644
index 000000000..cd282eadb
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosGetInstance.swift
@@ -0,0 +1,222 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppInfos {
+
+ public enum AppInfosGetInstance {
+
+ public static let service = APIService(id: "appInfos-get_instance", tag: "AppInfos", method: "GET", path: "/v1/appInfos/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appInfos */
+ public enum FieldsappInfos: String, Codable, Equatable, CaseIterable {
+ case app = "app"
+ case appInfoLocalizations = "appInfoLocalizations"
+ case appStoreAgeRating = "appStoreAgeRating"
+ case appStoreState = "appStoreState"
+ case brazilAgeRating = "brazilAgeRating"
+ case kidsAgeBand = "kidsAgeBand"
+ case primaryCategory = "primaryCategory"
+ case primarySubcategoryOne = "primarySubcategoryOne"
+ case primarySubcategoryTwo = "primarySubcategoryTwo"
+ case secondaryCategory = "secondaryCategory"
+ case secondarySubcategoryOne = "secondarySubcategoryOne"
+ case secondarySubcategoryTwo = "secondarySubcategoryTwo"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case app = "app"
+ case appInfoLocalizations = "appInfoLocalizations"
+ case primaryCategory = "primaryCategory"
+ case primarySubcategoryOne = "primarySubcategoryOne"
+ case primarySubcategoryTwo = "primarySubcategoryTwo"
+ case secondaryCategory = "secondaryCategory"
+ case secondarySubcategoryOne = "secondarySubcategoryOne"
+ case secondarySubcategoryTwo = "secondarySubcategoryTwo"
+ }
+
+ /** the fields to include for returned resources of type appCategories */
+ public enum FieldsappCategories: String, Codable, Equatable, CaseIterable {
+ case parent = "parent"
+ case platforms = "platforms"
+ case subcategories = "subcategories"
+ }
+
+ /** the fields to include for returned resources of type appInfoLocalizations */
+ public enum FieldsappInfoLocalizations: String, Codable, Equatable, CaseIterable {
+ case appInfo = "appInfo"
+ case locale = "locale"
+ case name = "name"
+ case privacyPolicyText = "privacyPolicyText"
+ case privacyPolicyUrl = "privacyPolicyUrl"
+ case subtitle = "subtitle"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appInfos */
+ public var fieldsappInfos: [FieldsappInfos]?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ /** the fields to include for returned resources of type appCategories */
+ public var fieldsappCategories: [FieldsappCategories]?
+
+ /** the fields to include for returned resources of type appInfoLocalizations */
+ public var fieldsappInfoLocalizations: [FieldsappInfoLocalizations]?
+
+ /** maximum number of related appInfoLocalizations returned (when they are included) */
+ public var limitappInfoLocalizations: Int?
+
+ public init(id: String, fieldsappInfos: [FieldsappInfos]? = nil, include: [Include]? = nil, fieldsappCategories: [FieldsappCategories]? = nil, fieldsappInfoLocalizations: [FieldsappInfoLocalizations]? = nil, limitappInfoLocalizations: Int? = nil) {
+ self.id = id
+ self.fieldsappInfos = fieldsappInfos
+ self.include = include
+ self.fieldsappCategories = fieldsappCategories
+ self.fieldsappInfoLocalizations = fieldsappInfoLocalizations
+ self.limitappInfoLocalizations = limitappInfoLocalizations
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppInfosGetInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappInfos: [FieldsappInfos]? = nil, include: [Include]? = nil, fieldsappCategories: [FieldsappCategories]? = nil, fieldsappInfoLocalizations: [FieldsappInfoLocalizations]? = nil, limitappInfoLocalizations: Int? = nil) {
+ let options = Options(id: id, fieldsappInfos: fieldsappInfos, include: include, fieldsappCategories: fieldsappCategories, fieldsappInfoLocalizations: fieldsappInfoLocalizations, limitappInfoLocalizations: limitappInfoLocalizations)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappInfos = options.fieldsappInfos?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appInfos]"] = fieldsappInfos
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ if let fieldsappCategories = options.fieldsappCategories?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appCategories]"] = fieldsappCategories
+ }
+ if let fieldsappInfoLocalizations = options.fieldsappInfoLocalizations?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appInfoLocalizations]"] = fieldsappInfoLocalizations
+ }
+ if let limitappInfoLocalizations = options.limitappInfoLocalizations {
+ params["limit[appInfoLocalizations]"] = limitappInfoLocalizations
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppInfoResponse
+
+ /** Single AppInfo */
+ case status200(AppInfoResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppInfoResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppInfoResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosPrimaryCategoryGetToOneRelated.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosPrimaryCategoryGetToOneRelated.swift
new file mode 100644
index 000000000..033e0297e
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosPrimaryCategoryGetToOneRelated.swift
@@ -0,0 +1,156 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppInfos {
+
+ public enum AppInfosPrimaryCategoryGetToOneRelated {
+
+ public static let service = APIService(id: "appInfos-primaryCategory-get_to_one_related", tag: "AppInfos", method: "GET", path: "/v1/appInfos/{id}/primaryCategory", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appCategories */
+ public enum FieldsappCategories: String, Codable, Equatable, CaseIterable {
+ case parent = "parent"
+ case platforms = "platforms"
+ case subcategories = "subcategories"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appCategories */
+ public var fieldsappCategories: [FieldsappCategories]?
+
+ public init(id: String, fieldsappCategories: [FieldsappCategories]? = nil) {
+ self.id = id
+ self.fieldsappCategories = fieldsappCategories
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppInfosPrimaryCategoryGetToOneRelated.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappCategories: [FieldsappCategories]? = nil) {
+ let options = Options(id: id, fieldsappCategories: fieldsappCategories)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappCategories = options.fieldsappCategories?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appCategories]"] = fieldsappCategories
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppCategoryResponse
+
+ /** Related resource */
+ case status200(AppCategoryResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppCategoryResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppCategoryResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosPrimarySubcategoryOneGetToOneRelated.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosPrimarySubcategoryOneGetToOneRelated.swift
new file mode 100644
index 000000000..a2b4b1bae
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosPrimarySubcategoryOneGetToOneRelated.swift
@@ -0,0 +1,156 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppInfos {
+
+ public enum AppInfosPrimarySubcategoryOneGetToOneRelated {
+
+ public static let service = APIService(id: "appInfos-primarySubcategoryOne-get_to_one_related", tag: "AppInfos", method: "GET", path: "/v1/appInfos/{id}/primarySubcategoryOne", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appCategories */
+ public enum FieldsappCategories: String, Codable, Equatable, CaseIterable {
+ case parent = "parent"
+ case platforms = "platforms"
+ case subcategories = "subcategories"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appCategories */
+ public var fieldsappCategories: [FieldsappCategories]?
+
+ public init(id: String, fieldsappCategories: [FieldsappCategories]? = nil) {
+ self.id = id
+ self.fieldsappCategories = fieldsappCategories
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppInfosPrimarySubcategoryOneGetToOneRelated.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappCategories: [FieldsappCategories]? = nil) {
+ let options = Options(id: id, fieldsappCategories: fieldsappCategories)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappCategories = options.fieldsappCategories?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appCategories]"] = fieldsappCategories
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppCategoryResponse
+
+ /** Related resource */
+ case status200(AppCategoryResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppCategoryResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppCategoryResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosPrimarySubcategoryTwoGetToOneRelated.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosPrimarySubcategoryTwoGetToOneRelated.swift
new file mode 100644
index 000000000..a9a793834
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosPrimarySubcategoryTwoGetToOneRelated.swift
@@ -0,0 +1,156 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppInfos {
+
+ public enum AppInfosPrimarySubcategoryTwoGetToOneRelated {
+
+ public static let service = APIService(id: "appInfos-primarySubcategoryTwo-get_to_one_related", tag: "AppInfos", method: "GET", path: "/v1/appInfos/{id}/primarySubcategoryTwo", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appCategories */
+ public enum FieldsappCategories: String, Codable, Equatable, CaseIterable {
+ case parent = "parent"
+ case platforms = "platforms"
+ case subcategories = "subcategories"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appCategories */
+ public var fieldsappCategories: [FieldsappCategories]?
+
+ public init(id: String, fieldsappCategories: [FieldsappCategories]? = nil) {
+ self.id = id
+ self.fieldsappCategories = fieldsappCategories
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppInfosPrimarySubcategoryTwoGetToOneRelated.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappCategories: [FieldsappCategories]? = nil) {
+ let options = Options(id: id, fieldsappCategories: fieldsappCategories)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappCategories = options.fieldsappCategories?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appCategories]"] = fieldsappCategories
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppCategoryResponse
+
+ /** Related resource */
+ case status200(AppCategoryResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppCategoryResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppCategoryResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosSecondaryCategoryGetToOneRelated.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosSecondaryCategoryGetToOneRelated.swift
new file mode 100644
index 000000000..eda3d96ba
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosSecondaryCategoryGetToOneRelated.swift
@@ -0,0 +1,156 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppInfos {
+
+ public enum AppInfosSecondaryCategoryGetToOneRelated {
+
+ public static let service = APIService(id: "appInfos-secondaryCategory-get_to_one_related", tag: "AppInfos", method: "GET", path: "/v1/appInfos/{id}/secondaryCategory", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appCategories */
+ public enum FieldsappCategories: String, Codable, Equatable, CaseIterable {
+ case parent = "parent"
+ case platforms = "platforms"
+ case subcategories = "subcategories"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appCategories */
+ public var fieldsappCategories: [FieldsappCategories]?
+
+ public init(id: String, fieldsappCategories: [FieldsappCategories]? = nil) {
+ self.id = id
+ self.fieldsappCategories = fieldsappCategories
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppInfosSecondaryCategoryGetToOneRelated.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappCategories: [FieldsappCategories]? = nil) {
+ let options = Options(id: id, fieldsappCategories: fieldsappCategories)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappCategories = options.fieldsappCategories?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appCategories]"] = fieldsappCategories
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppCategoryResponse
+
+ /** Related resource */
+ case status200(AppCategoryResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppCategoryResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppCategoryResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosSecondarySubcategoryOneGetToOneRelated.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosSecondarySubcategoryOneGetToOneRelated.swift
new file mode 100644
index 000000000..fad52b00e
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosSecondarySubcategoryOneGetToOneRelated.swift
@@ -0,0 +1,156 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppInfos {
+
+ public enum AppInfosSecondarySubcategoryOneGetToOneRelated {
+
+ public static let service = APIService(id: "appInfos-secondarySubcategoryOne-get_to_one_related", tag: "AppInfos", method: "GET", path: "/v1/appInfos/{id}/secondarySubcategoryOne", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appCategories */
+ public enum FieldsappCategories: String, Codable, Equatable, CaseIterable {
+ case parent = "parent"
+ case platforms = "platforms"
+ case subcategories = "subcategories"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appCategories */
+ public var fieldsappCategories: [FieldsappCategories]?
+
+ public init(id: String, fieldsappCategories: [FieldsappCategories]? = nil) {
+ self.id = id
+ self.fieldsappCategories = fieldsappCategories
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppInfosSecondarySubcategoryOneGetToOneRelated.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappCategories: [FieldsappCategories]? = nil) {
+ let options = Options(id: id, fieldsappCategories: fieldsappCategories)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappCategories = options.fieldsappCategories?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appCategories]"] = fieldsappCategories
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppCategoryResponse
+
+ /** Related resource */
+ case status200(AppCategoryResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppCategoryResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppCategoryResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosSecondarySubcategoryTwoGetToOneRelated.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosSecondarySubcategoryTwoGetToOneRelated.swift
new file mode 100644
index 000000000..9781318df
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosSecondarySubcategoryTwoGetToOneRelated.swift
@@ -0,0 +1,156 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppInfos {
+
+ public enum AppInfosSecondarySubcategoryTwoGetToOneRelated {
+
+ public static let service = APIService(id: "appInfos-secondarySubcategoryTwo-get_to_one_related", tag: "AppInfos", method: "GET", path: "/v1/appInfos/{id}/secondarySubcategoryTwo", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appCategories */
+ public enum FieldsappCategories: String, Codable, Equatable, CaseIterable {
+ case parent = "parent"
+ case platforms = "platforms"
+ case subcategories = "subcategories"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appCategories */
+ public var fieldsappCategories: [FieldsappCategories]?
+
+ public init(id: String, fieldsappCategories: [FieldsappCategories]? = nil) {
+ self.id = id
+ self.fieldsappCategories = fieldsappCategories
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppInfosSecondarySubcategoryTwoGetToOneRelated.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappCategories: [FieldsappCategories]? = nil) {
+ let options = Options(id: id, fieldsappCategories: fieldsappCategories)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappCategories = options.fieldsappCategories?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appCategories]"] = fieldsappCategories
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppCategoryResponse
+
+ /** Related resource */
+ case status200(AppCategoryResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppCategoryResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppCategoryResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosUpdateInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosUpdateInstance.swift
new file mode 100644
index 000000000..550082b65
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppInfos/AppInfosUpdateInstance.swift
@@ -0,0 +1,150 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppInfos {
+
+ public enum AppInfosUpdateInstance {
+
+ public static let service = APIService(id: "appInfos-update_instance", tag: "AppInfos", method: "PATCH", path: "/v1/appInfos/{id}", hasBody: true, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ public init(id: String) {
+ self.id = id
+ }
+ }
+
+ public var options: Options
+
+ public var body: AppInfoUpdateRequest
+
+ public init(body: AppInfoUpdateRequest, options: Options, encoder: RequestEncoder? = nil) {
+ self.body = body
+ self.options = options
+ super.init(service: AppInfosUpdateInstance.service) { defaultEncoder in
+ return try (encoder ?? defaultEncoder).encode(body)
+ }
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, body: AppInfoUpdateRequest) {
+ let options = Options(id: id)
+ self.init(body: body, options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppInfoResponse
+
+ /** Single AppInfo */
+ case status200(AppInfoResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: AppInfoResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppInfoResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreOrders/AppPreOrdersCreateInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreOrders/AppPreOrdersCreateInstance.swift
new file mode 100644
index 000000000..a96940351
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreOrders/AppPreOrdersCreateInstance.swift
@@ -0,0 +1,119 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPreOrders {
+
+ public enum AppPreOrdersCreateInstance {
+
+ public static let service = APIService(id: "appPreOrders-create_instance", tag: "AppPreOrders", method: "POST", path: "/v1/appPreOrders", hasBody: true, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public var body: AppPreOrderCreateRequest
+
+ public init(body: AppPreOrderCreateRequest, encoder: RequestEncoder? = nil) {
+ self.body = body
+ super.init(service: AppPreOrdersCreateInstance.service) { defaultEncoder in
+ return try (encoder ?? defaultEncoder).encode(body)
+ }
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppPreOrderResponse
+
+ /** Single AppPreOrder */
+ case status201(AppPreOrderResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: AppPreOrderResponse? {
+ switch self {
+ case .status201(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status201(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status409(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status201: return 201
+ case .status400: return 400
+ case .status403: return 403
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status201: return true
+ case .status400: return false
+ case .status403: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 201: self = try .status201(decoder.decode(AppPreOrderResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreOrders/AppPreOrdersDeleteInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreOrders/AppPreOrdersDeleteInstance.swift
new file mode 100644
index 000000000..782d27805
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreOrders/AppPreOrdersDeleteInstance.swift
@@ -0,0 +1,145 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPreOrders {
+
+ public enum AppPreOrdersDeleteInstance {
+
+ public static let service = APIService(id: "appPreOrders-delete_instance", tag: "AppPreOrders", method: "DELETE", path: "/v1/appPreOrders/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ public init(id: String) {
+ self.id = id
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppPreOrdersDeleteInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String) {
+ let options = Options(id: id)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = Void
+
+ /** Success (no content) */
+ case status204
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: Void? {
+ switch self {
+ case .status204: return ()
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return ()
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status204: return 204
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status204: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 204: self = .status204
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreOrders/AppPreOrdersGetInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreOrders/AppPreOrdersGetInstance.swift
new file mode 100644
index 000000000..8936fb4d9
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreOrders/AppPreOrdersGetInstance.swift
@@ -0,0 +1,168 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPreOrders {
+
+ public enum AppPreOrdersGetInstance {
+
+ public static let service = APIService(id: "appPreOrders-get_instance", tag: "AppPreOrders", method: "GET", path: "/v1/appPreOrders/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appPreOrders */
+ public enum FieldsappPreOrders: String, Codable, Equatable, CaseIterable {
+ case app = "app"
+ case appReleaseDate = "appReleaseDate"
+ case preOrderAvailableDate = "preOrderAvailableDate"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case app = "app"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appPreOrders */
+ public var fieldsappPreOrders: [FieldsappPreOrders]?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ public init(id: String, fieldsappPreOrders: [FieldsappPreOrders]? = nil, include: [Include]? = nil) {
+ self.id = id
+ self.fieldsappPreOrders = fieldsappPreOrders
+ self.include = include
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppPreOrdersGetInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappPreOrders: [FieldsappPreOrders]? = nil, include: [Include]? = nil) {
+ let options = Options(id: id, fieldsappPreOrders: fieldsappPreOrders, include: include)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappPreOrders = options.fieldsappPreOrders?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appPreOrders]"] = fieldsappPreOrders
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppPreOrderResponse
+
+ /** Single AppPreOrder */
+ case status200(AppPreOrderResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppPreOrderResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppPreOrderResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreOrders/AppPreOrdersUpdateInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreOrders/AppPreOrdersUpdateInstance.swift
new file mode 100644
index 000000000..e087a0193
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreOrders/AppPreOrdersUpdateInstance.swift
@@ -0,0 +1,150 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPreOrders {
+
+ public enum AppPreOrdersUpdateInstance {
+
+ public static let service = APIService(id: "appPreOrders-update_instance", tag: "AppPreOrders", method: "PATCH", path: "/v1/appPreOrders/{id}", hasBody: true, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ public init(id: String) {
+ self.id = id
+ }
+ }
+
+ public var options: Options
+
+ public var body: AppPreOrderUpdateRequest
+
+ public init(body: AppPreOrderUpdateRequest, options: Options, encoder: RequestEncoder? = nil) {
+ self.body = body
+ self.options = options
+ super.init(service: AppPreOrdersUpdateInstance.service) { defaultEncoder in
+ return try (encoder ?? defaultEncoder).encode(body)
+ }
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, body: AppPreOrderUpdateRequest) {
+ let options = Options(id: id)
+ self.init(body: body, options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppPreOrderResponse
+
+ /** Single AppPreOrder */
+ case status200(AppPreOrderResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: AppPreOrderResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppPreOrderResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviewSets/AppPreviewSetsAppPreviewsGetToManyRelated.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviewSets/AppPreviewSetsAppPreviewsGetToManyRelated.swift
new file mode 100644
index 000000000..c8884f57c
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviewSets/AppPreviewSetsAppPreviewsGetToManyRelated.swift
@@ -0,0 +1,197 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPreviewSets {
+
+ public enum AppPreviewSetsAppPreviewsGetToManyRelated {
+
+ public static let service = APIService(id: "appPreviewSets-appPreviews-get_to_many_related", tag: "AppPreviewSets", method: "GET", path: "/v1/appPreviewSets/{id}/appPreviews", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appPreviews */
+ public enum FieldsappPreviews: String, Codable, Equatable, CaseIterable {
+ case appPreviewSet = "appPreviewSet"
+ case assetDeliveryState = "assetDeliveryState"
+ case fileName = "fileName"
+ case fileSize = "fileSize"
+ case mimeType = "mimeType"
+ case previewFrameTimeCode = "previewFrameTimeCode"
+ case previewImage = "previewImage"
+ case sourceFileChecksum = "sourceFileChecksum"
+ case uploadOperations = "uploadOperations"
+ case uploaded = "uploaded"
+ case videoUrl = "videoUrl"
+ }
+
+ /** the fields to include for returned resources of type appPreviewSets */
+ public enum FieldsappPreviewSets: String, Codable, Equatable, CaseIterable {
+ case appPreviews = "appPreviews"
+ case appStoreVersionLocalization = "appStoreVersionLocalization"
+ case previewType = "previewType"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case appPreviewSet = "appPreviewSet"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appPreviews */
+ public var fieldsappPreviews: [FieldsappPreviews]?
+
+ /** the fields to include for returned resources of type appPreviewSets */
+ public var fieldsappPreviewSets: [FieldsappPreviewSets]?
+
+ /** maximum resources per page */
+ public var limit: Int?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ public init(id: String, fieldsappPreviews: [FieldsappPreviews]? = nil, fieldsappPreviewSets: [FieldsappPreviewSets]? = nil, limit: Int? = nil, include: [Include]? = nil) {
+ self.id = id
+ self.fieldsappPreviews = fieldsappPreviews
+ self.fieldsappPreviewSets = fieldsappPreviewSets
+ self.limit = limit
+ self.include = include
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppPreviewSetsAppPreviewsGetToManyRelated.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappPreviews: [FieldsappPreviews]? = nil, fieldsappPreviewSets: [FieldsappPreviewSets]? = nil, limit: Int? = nil, include: [Include]? = nil) {
+ let options = Options(id: id, fieldsappPreviews: fieldsappPreviews, fieldsappPreviewSets: fieldsappPreviewSets, limit: limit, include: include)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappPreviews = options.fieldsappPreviews?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appPreviews]"] = fieldsappPreviews
+ }
+ if let fieldsappPreviewSets = options.fieldsappPreviewSets?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appPreviewSets]"] = fieldsappPreviewSets
+ }
+ if let limit = options.limit {
+ params["limit"] = limit
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppPreviewsResponse
+
+ /** List of related resources */
+ case status200(AppPreviewsResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppPreviewsResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppPreviewsResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviewSets/AppPreviewSetsAppPreviewsGetToManyRelationship.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviewSets/AppPreviewSetsAppPreviewsGetToManyRelationship.swift
new file mode 100644
index 000000000..c160765c2
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviewSets/AppPreviewSetsAppPreviewsGetToManyRelationship.swift
@@ -0,0 +1,149 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPreviewSets {
+
+ public enum AppPreviewSetsAppPreviewsGetToManyRelationship {
+
+ public static let service = APIService(id: "appPreviewSets-appPreviews-get_to_many_relationship", tag: "AppPreviewSets", method: "GET", path: "/v1/appPreviewSets/{id}/relationships/appPreviews", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** maximum resources per page */
+ public var limit: Int?
+
+ public init(id: String, limit: Int? = nil) {
+ self.id = id
+ self.limit = limit
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppPreviewSetsAppPreviewsGetToManyRelationship.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, limit: Int? = nil) {
+ let options = Options(id: id, limit: limit)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let limit = options.limit {
+ params["limit"] = limit
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppPreviewSetAppPreviewsLinkagesResponse
+
+ /** List of related linkages */
+ case status200(AppPreviewSetAppPreviewsLinkagesResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppPreviewSetAppPreviewsLinkagesResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppPreviewSetAppPreviewsLinkagesResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviewSets/AppPreviewSetsAppPreviewsReplaceToManyRelationship.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviewSets/AppPreviewSetsAppPreviewsReplaceToManyRelationship.swift
new file mode 100644
index 000000000..59ebb1650
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviewSets/AppPreviewSetsAppPreviewsReplaceToManyRelationship.swift
@@ -0,0 +1,142 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPreviewSets {
+
+ public enum AppPreviewSetsAppPreviewsReplaceToManyRelationship {
+
+ public static let service = APIService(id: "appPreviewSets-appPreviews-replace_to_many_relationship", tag: "AppPreviewSets", method: "PATCH", path: "/v1/appPreviewSets/{id}/relationships/appPreviews", hasBody: true, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ public init(id: String) {
+ self.id = id
+ }
+ }
+
+ public var options: Options
+
+ public var body: AppPreviewSetAppPreviewsLinkagesRequest
+
+ public init(body: AppPreviewSetAppPreviewsLinkagesRequest, options: Options, encoder: RequestEncoder? = nil) {
+ self.body = body
+ self.options = options
+ super.init(service: AppPreviewSetsAppPreviewsReplaceToManyRelationship.service) { defaultEncoder in
+ return try (encoder ?? defaultEncoder).encode(body)
+ }
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, body: AppPreviewSetAppPreviewsLinkagesRequest) {
+ let options = Options(id: id)
+ self.init(body: body, options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = Void
+
+ /** Success (no content) */
+ case status204
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: Void? {
+ switch self {
+ case .status204: return ()
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return ()
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status204: return 204
+ case .status403: return 403
+ case .status404: return 404
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status204: return true
+ case .status403: return false
+ case .status404: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 204: self = .status204
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviewSets/AppPreviewSetsCreateInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviewSets/AppPreviewSetsCreateInstance.swift
new file mode 100644
index 000000000..f269e4bc4
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviewSets/AppPreviewSetsCreateInstance.swift
@@ -0,0 +1,119 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPreviewSets {
+
+ public enum AppPreviewSetsCreateInstance {
+
+ public static let service = APIService(id: "appPreviewSets-create_instance", tag: "AppPreviewSets", method: "POST", path: "/v1/appPreviewSets", hasBody: true, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public var body: AppPreviewSetCreateRequest
+
+ public init(body: AppPreviewSetCreateRequest, encoder: RequestEncoder? = nil) {
+ self.body = body
+ super.init(service: AppPreviewSetsCreateInstance.service) { defaultEncoder in
+ return try (encoder ?? defaultEncoder).encode(body)
+ }
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppPreviewSetResponse
+
+ /** Single AppPreviewSet */
+ case status201(AppPreviewSetResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: AppPreviewSetResponse? {
+ switch self {
+ case .status201(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status201(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status409(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status201: return 201
+ case .status400: return 400
+ case .status403: return 403
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status201: return true
+ case .status400: return false
+ case .status403: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 201: self = try .status201(decoder.decode(AppPreviewSetResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviewSets/AppPreviewSetsDeleteInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviewSets/AppPreviewSetsDeleteInstance.swift
new file mode 100644
index 000000000..ecc3bb0c5
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviewSets/AppPreviewSetsDeleteInstance.swift
@@ -0,0 +1,145 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPreviewSets {
+
+ public enum AppPreviewSetsDeleteInstance {
+
+ public static let service = APIService(id: "appPreviewSets-delete_instance", tag: "AppPreviewSets", method: "DELETE", path: "/v1/appPreviewSets/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ public init(id: String) {
+ self.id = id
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppPreviewSetsDeleteInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String) {
+ let options = Options(id: id)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = Void
+
+ /** Success (no content) */
+ case status204
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: Void? {
+ switch self {
+ case .status204: return ()
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return ()
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status204: return 204
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status204: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 204: self = .status204
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviewSets/AppPreviewSetsGetInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviewSets/AppPreviewSetsGetInstance.swift
new file mode 100644
index 000000000..9e1f07450
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviewSets/AppPreviewSetsGetInstance.swift
@@ -0,0 +1,198 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPreviewSets {
+
+ public enum AppPreviewSetsGetInstance {
+
+ public static let service = APIService(id: "appPreviewSets-get_instance", tag: "AppPreviewSets", method: "GET", path: "/v1/appPreviewSets/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appPreviewSets */
+ public enum FieldsappPreviewSets: String, Codable, Equatable, CaseIterable {
+ case appPreviews = "appPreviews"
+ case appStoreVersionLocalization = "appStoreVersionLocalization"
+ case previewType = "previewType"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case appPreviews = "appPreviews"
+ case appStoreVersionLocalization = "appStoreVersionLocalization"
+ }
+
+ /** the fields to include for returned resources of type appPreviews */
+ public enum FieldsappPreviews: String, Codable, Equatable, CaseIterable {
+ case appPreviewSet = "appPreviewSet"
+ case assetDeliveryState = "assetDeliveryState"
+ case fileName = "fileName"
+ case fileSize = "fileSize"
+ case mimeType = "mimeType"
+ case previewFrameTimeCode = "previewFrameTimeCode"
+ case previewImage = "previewImage"
+ case sourceFileChecksum = "sourceFileChecksum"
+ case uploadOperations = "uploadOperations"
+ case uploaded = "uploaded"
+ case videoUrl = "videoUrl"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appPreviewSets */
+ public var fieldsappPreviewSets: [FieldsappPreviewSets]?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ /** the fields to include for returned resources of type appPreviews */
+ public var fieldsappPreviews: [FieldsappPreviews]?
+
+ /** maximum number of related appPreviews returned (when they are included) */
+ public var limitappPreviews: Int?
+
+ public init(id: String, fieldsappPreviewSets: [FieldsappPreviewSets]? = nil, include: [Include]? = nil, fieldsappPreviews: [FieldsappPreviews]? = nil, limitappPreviews: Int? = nil) {
+ self.id = id
+ self.fieldsappPreviewSets = fieldsappPreviewSets
+ self.include = include
+ self.fieldsappPreviews = fieldsappPreviews
+ self.limitappPreviews = limitappPreviews
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppPreviewSetsGetInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappPreviewSets: [FieldsappPreviewSets]? = nil, include: [Include]? = nil, fieldsappPreviews: [FieldsappPreviews]? = nil, limitappPreviews: Int? = nil) {
+ let options = Options(id: id, fieldsappPreviewSets: fieldsappPreviewSets, include: include, fieldsappPreviews: fieldsappPreviews, limitappPreviews: limitappPreviews)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappPreviewSets = options.fieldsappPreviewSets?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appPreviewSets]"] = fieldsappPreviewSets
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ if let fieldsappPreviews = options.fieldsappPreviews?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appPreviews]"] = fieldsappPreviews
+ }
+ if let limitappPreviews = options.limitappPreviews {
+ params["limit[appPreviews]"] = limitappPreviews
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppPreviewSetResponse
+
+ /** Single AppPreviewSet */
+ case status200(AppPreviewSetResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppPreviewSetResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppPreviewSetResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviews/AppPreviewsCreateInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviews/AppPreviewsCreateInstance.swift
new file mode 100644
index 000000000..851ed08ea
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviews/AppPreviewsCreateInstance.swift
@@ -0,0 +1,119 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPreviews {
+
+ public enum AppPreviewsCreateInstance {
+
+ public static let service = APIService(id: "appPreviews-create_instance", tag: "AppPreviews", method: "POST", path: "/v1/appPreviews", hasBody: true, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public var body: AppPreviewCreateRequest
+
+ public init(body: AppPreviewCreateRequest, encoder: RequestEncoder? = nil) {
+ self.body = body
+ super.init(service: AppPreviewsCreateInstance.service) { defaultEncoder in
+ return try (encoder ?? defaultEncoder).encode(body)
+ }
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppPreviewResponse
+
+ /** Single AppPreview */
+ case status201(AppPreviewResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: AppPreviewResponse? {
+ switch self {
+ case .status201(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status201(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status409(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status201: return 201
+ case .status400: return 400
+ case .status403: return 403
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status201: return true
+ case .status400: return false
+ case .status403: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 201: self = try .status201(decoder.decode(AppPreviewResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviews/AppPreviewsDeleteInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviews/AppPreviewsDeleteInstance.swift
new file mode 100644
index 000000000..d4a4f961f
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviews/AppPreviewsDeleteInstance.swift
@@ -0,0 +1,145 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPreviews {
+
+ public enum AppPreviewsDeleteInstance {
+
+ public static let service = APIService(id: "appPreviews-delete_instance", tag: "AppPreviews", method: "DELETE", path: "/v1/appPreviews/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ public init(id: String) {
+ self.id = id
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppPreviewsDeleteInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String) {
+ let options = Options(id: id)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = Void
+
+ /** Success (no content) */
+ case status204
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: Void? {
+ switch self {
+ case .status204: return ()
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return ()
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status204: return 204
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status204: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 204: self = .status204
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviews/AppPreviewsGetInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviews/AppPreviewsGetInstance.swift
new file mode 100644
index 000000000..b402484ca
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviews/AppPreviewsGetInstance.swift
@@ -0,0 +1,176 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPreviews {
+
+ public enum AppPreviewsGetInstance {
+
+ public static let service = APIService(id: "appPreviews-get_instance", tag: "AppPreviews", method: "GET", path: "/v1/appPreviews/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appPreviews */
+ public enum FieldsappPreviews: String, Codable, Equatable, CaseIterable {
+ case appPreviewSet = "appPreviewSet"
+ case assetDeliveryState = "assetDeliveryState"
+ case fileName = "fileName"
+ case fileSize = "fileSize"
+ case mimeType = "mimeType"
+ case previewFrameTimeCode = "previewFrameTimeCode"
+ case previewImage = "previewImage"
+ case sourceFileChecksum = "sourceFileChecksum"
+ case uploadOperations = "uploadOperations"
+ case uploaded = "uploaded"
+ case videoUrl = "videoUrl"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case appPreviewSet = "appPreviewSet"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appPreviews */
+ public var fieldsappPreviews: [FieldsappPreviews]?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ public init(id: String, fieldsappPreviews: [FieldsappPreviews]? = nil, include: [Include]? = nil) {
+ self.id = id
+ self.fieldsappPreviews = fieldsappPreviews
+ self.include = include
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppPreviewsGetInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappPreviews: [FieldsappPreviews]? = nil, include: [Include]? = nil) {
+ let options = Options(id: id, fieldsappPreviews: fieldsappPreviews, include: include)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappPreviews = options.fieldsappPreviews?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appPreviews]"] = fieldsappPreviews
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppPreviewResponse
+
+ /** Single AppPreview */
+ case status200(AppPreviewResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppPreviewResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppPreviewResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviews/AppPreviewsUpdateInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviews/AppPreviewsUpdateInstance.swift
new file mode 100644
index 000000000..4ee94c905
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPreviews/AppPreviewsUpdateInstance.swift
@@ -0,0 +1,150 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPreviews {
+
+ public enum AppPreviewsUpdateInstance {
+
+ public static let service = APIService(id: "appPreviews-update_instance", tag: "AppPreviews", method: "PATCH", path: "/v1/appPreviews/{id}", hasBody: true, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ public init(id: String) {
+ self.id = id
+ }
+ }
+
+ public var options: Options
+
+ public var body: AppPreviewUpdateRequest
+
+ public init(body: AppPreviewUpdateRequest, options: Options, encoder: RequestEncoder? = nil) {
+ self.body = body
+ self.options = options
+ super.init(service: AppPreviewsUpdateInstance.service) { defaultEncoder in
+ return try (encoder ?? defaultEncoder).encode(body)
+ }
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, body: AppPreviewUpdateRequest) {
+ let options = Options(id: id)
+ self.init(body: body, options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppPreviewResponse
+
+ /** Single AppPreview */
+ case status200(AppPreviewResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: AppPreviewResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppPreviewResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPricePoints/AppPricePointsGetCollection.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPricePoints/AppPricePointsGetCollection.swift
new file mode 100644
index 000000000..5f60464c0
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPricePoints/AppPricePointsGetCollection.swift
@@ -0,0 +1,187 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPricePoints {
+
+ public enum AppPricePointsGetCollection {
+
+ public static let service = APIService(id: "appPricePoints-get_collection", tag: "AppPricePoints", method: "GET", path: "/v1/appPricePoints", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appPricePoints */
+ public enum FieldsappPricePoints: String, Codable, Equatable, CaseIterable {
+ case customerPrice = "customerPrice"
+ case priceTier = "priceTier"
+ case proceeds = "proceeds"
+ case territory = "territory"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case priceTier = "priceTier"
+ case territory = "territory"
+ }
+
+ /** the fields to include for returned resources of type territories */
+ public enum Fieldsterritories: String, Codable, Equatable, CaseIterable {
+ case currency = "currency"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** filter by id(s) of related 'priceTier' */
+ public var filterpriceTier: [String]?
+
+ /** filter by id(s) of related 'territory' */
+ public var filterterritory: [String]?
+
+ /** the fields to include for returned resources of type appPricePoints */
+ public var fieldsappPricePoints: [FieldsappPricePoints]?
+
+ /** maximum resources per page */
+ public var limit: Int?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ /** the fields to include for returned resources of type territories */
+ public var fieldsterritories: [Fieldsterritories]?
+
+ public init(filterpriceTier: [String]? = nil, filterterritory: [String]? = nil, fieldsappPricePoints: [FieldsappPricePoints]? = nil, limit: Int? = nil, include: [Include]? = nil, fieldsterritories: [Fieldsterritories]? = nil) {
+ self.filterpriceTier = filterpriceTier
+ self.filterterritory = filterterritory
+ self.fieldsappPricePoints = fieldsappPricePoints
+ self.limit = limit
+ self.include = include
+ self.fieldsterritories = fieldsterritories
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppPricePointsGetCollection.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(filterpriceTier: [String]? = nil, filterterritory: [String]? = nil, fieldsappPricePoints: [FieldsappPricePoints]? = nil, limit: Int? = nil, include: [Include]? = nil, fieldsterritories: [Fieldsterritories]? = nil) {
+ let options = Options(filterpriceTier: filterpriceTier, filterterritory: filterterritory, fieldsappPricePoints: fieldsappPricePoints, limit: limit, include: include, fieldsterritories: fieldsterritories)
+ self.init(options: options)
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let filterpriceTier = options.filterpriceTier?.joined(separator: ",") {
+ params["filter[priceTier]"] = filterpriceTier
+ }
+ if let filterterritory = options.filterterritory?.joined(separator: ",") {
+ params["filter[territory]"] = filterterritory
+ }
+ if let fieldsappPricePoints = options.fieldsappPricePoints?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appPricePoints]"] = fieldsappPricePoints
+ }
+ if let limit = options.limit {
+ params["limit"] = limit
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ if let fieldsterritories = options.fieldsterritories?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[territories]"] = fieldsterritories
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppPricePointsResponse
+
+ /** List of AppPricePoints */
+ case status200(AppPricePointsResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ public var success: AppPricePointsResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppPricePointsResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPricePoints/AppPricePointsGetInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPricePoints/AppPricePointsGetInstance.swift
new file mode 100644
index 000000000..c32ba3266
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPricePoints/AppPricePointsGetInstance.swift
@@ -0,0 +1,182 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPricePoints {
+
+ public enum AppPricePointsGetInstance {
+
+ public static let service = APIService(id: "appPricePoints-get_instance", tag: "AppPricePoints", method: "GET", path: "/v1/appPricePoints/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appPricePoints */
+ public enum FieldsappPricePoints: String, Codable, Equatable, CaseIterable {
+ case customerPrice = "customerPrice"
+ case priceTier = "priceTier"
+ case proceeds = "proceeds"
+ case territory = "territory"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case priceTier = "priceTier"
+ case territory = "territory"
+ }
+
+ /** the fields to include for returned resources of type territories */
+ public enum Fieldsterritories: String, Codable, Equatable, CaseIterable {
+ case currency = "currency"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appPricePoints */
+ public var fieldsappPricePoints: [FieldsappPricePoints]?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ /** the fields to include for returned resources of type territories */
+ public var fieldsterritories: [Fieldsterritories]?
+
+ public init(id: String, fieldsappPricePoints: [FieldsappPricePoints]? = nil, include: [Include]? = nil, fieldsterritories: [Fieldsterritories]? = nil) {
+ self.id = id
+ self.fieldsappPricePoints = fieldsappPricePoints
+ self.include = include
+ self.fieldsterritories = fieldsterritories
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppPricePointsGetInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappPricePoints: [FieldsappPricePoints]? = nil, include: [Include]? = nil, fieldsterritories: [Fieldsterritories]? = nil) {
+ let options = Options(id: id, fieldsappPricePoints: fieldsappPricePoints, include: include, fieldsterritories: fieldsterritories)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappPricePoints = options.fieldsappPricePoints?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appPricePoints]"] = fieldsappPricePoints
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ if let fieldsterritories = options.fieldsterritories?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[territories]"] = fieldsterritories
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppPricePointResponse
+
+ /** Single AppPricePoint */
+ case status200(AppPricePointResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppPricePointResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppPricePointResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPricePoints/AppPricePointsTerritoryGetToOneRelated.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPricePoints/AppPricePointsTerritoryGetToOneRelated.swift
new file mode 100644
index 000000000..8a069c2c7
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPricePoints/AppPricePointsTerritoryGetToOneRelated.swift
@@ -0,0 +1,154 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPricePoints {
+
+ public enum AppPricePointsTerritoryGetToOneRelated {
+
+ public static let service = APIService(id: "appPricePoints-territory-get_to_one_related", tag: "AppPricePoints", method: "GET", path: "/v1/appPricePoints/{id}/territory", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type territories */
+ public enum Fieldsterritories: String, Codable, Equatable, CaseIterable {
+ case currency = "currency"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type territories */
+ public var fieldsterritories: [Fieldsterritories]?
+
+ public init(id: String, fieldsterritories: [Fieldsterritories]? = nil) {
+ self.id = id
+ self.fieldsterritories = fieldsterritories
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppPricePointsTerritoryGetToOneRelated.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsterritories: [Fieldsterritories]? = nil) {
+ let options = Options(id: id, fieldsterritories: fieldsterritories)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsterritories = options.fieldsterritories?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[territories]"] = fieldsterritories
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = TerritoryResponse
+
+ /** Related resource */
+ case status200(TerritoryResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: TerritoryResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(TerritoryResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPriceTiers/AppPriceTiersGetCollection.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPriceTiers/AppPriceTiersGetCollection.swift
new file mode 100644
index 000000000..e27546835
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPriceTiers/AppPriceTiersGetCollection.swift
@@ -0,0 +1,186 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPriceTiers {
+
+ public enum AppPriceTiersGetCollection {
+
+ public static let service = APIService(id: "appPriceTiers-get_collection", tag: "AppPriceTiers", method: "GET", path: "/v1/appPriceTiers", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appPriceTiers */
+ public enum FieldsappPriceTiers: String, Codable, Equatable, CaseIterable {
+ case pricePoints = "pricePoints"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case pricePoints = "pricePoints"
+ }
+
+ /** the fields to include for returned resources of type appPricePoints */
+ public enum FieldsappPricePoints: String, Codable, Equatable, CaseIterable {
+ case customerPrice = "customerPrice"
+ case priceTier = "priceTier"
+ case proceeds = "proceeds"
+ case territory = "territory"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** filter by id(s) */
+ public var filterid: [String]?
+
+ /** the fields to include for returned resources of type appPriceTiers */
+ public var fieldsappPriceTiers: [FieldsappPriceTiers]?
+
+ /** maximum resources per page */
+ public var limit: Int?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ /** the fields to include for returned resources of type appPricePoints */
+ public var fieldsappPricePoints: [FieldsappPricePoints]?
+
+ /** maximum number of related pricePoints returned (when they are included) */
+ public var limitpricePoints: Int?
+
+ public init(filterid: [String]? = nil, fieldsappPriceTiers: [FieldsappPriceTiers]? = nil, limit: Int? = nil, include: [Include]? = nil, fieldsappPricePoints: [FieldsappPricePoints]? = nil, limitpricePoints: Int? = nil) {
+ self.filterid = filterid
+ self.fieldsappPriceTiers = fieldsappPriceTiers
+ self.limit = limit
+ self.include = include
+ self.fieldsappPricePoints = fieldsappPricePoints
+ self.limitpricePoints = limitpricePoints
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppPriceTiersGetCollection.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(filterid: [String]? = nil, fieldsappPriceTiers: [FieldsappPriceTiers]? = nil, limit: Int? = nil, include: [Include]? = nil, fieldsappPricePoints: [FieldsappPricePoints]? = nil, limitpricePoints: Int? = nil) {
+ let options = Options(filterid: filterid, fieldsappPriceTiers: fieldsappPriceTiers, limit: limit, include: include, fieldsappPricePoints: fieldsappPricePoints, limitpricePoints: limitpricePoints)
+ self.init(options: options)
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let filterid = options.filterid?.joined(separator: ",") {
+ params["filter[id]"] = filterid
+ }
+ if let fieldsappPriceTiers = options.fieldsappPriceTiers?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appPriceTiers]"] = fieldsappPriceTiers
+ }
+ if let limit = options.limit {
+ params["limit"] = limit
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ if let fieldsappPricePoints = options.fieldsappPricePoints?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appPricePoints]"] = fieldsappPricePoints
+ }
+ if let limitpricePoints = options.limitpricePoints {
+ params["limit[pricePoints]"] = limitpricePoints
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppPriceTiersResponse
+
+ /** List of AppPriceTiers */
+ case status200(AppPriceTiersResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ public var success: AppPriceTiersResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppPriceTiersResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPriceTiers/AppPriceTiersGetInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPriceTiers/AppPriceTiersGetInstance.swift
new file mode 100644
index 000000000..0bc71dc8f
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPriceTiers/AppPriceTiersGetInstance.swift
@@ -0,0 +1,188 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPriceTiers {
+
+ public enum AppPriceTiersGetInstance {
+
+ public static let service = APIService(id: "appPriceTiers-get_instance", tag: "AppPriceTiers", method: "GET", path: "/v1/appPriceTiers/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appPriceTiers */
+ public enum FieldsappPriceTiers: String, Codable, Equatable, CaseIterable {
+ case pricePoints = "pricePoints"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case pricePoints = "pricePoints"
+ }
+
+ /** the fields to include for returned resources of type appPricePoints */
+ public enum FieldsappPricePoints: String, Codable, Equatable, CaseIterable {
+ case customerPrice = "customerPrice"
+ case priceTier = "priceTier"
+ case proceeds = "proceeds"
+ case territory = "territory"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appPriceTiers */
+ public var fieldsappPriceTiers: [FieldsappPriceTiers]?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ /** the fields to include for returned resources of type appPricePoints */
+ public var fieldsappPricePoints: [FieldsappPricePoints]?
+
+ /** maximum number of related pricePoints returned (when they are included) */
+ public var limitpricePoints: Int?
+
+ public init(id: String, fieldsappPriceTiers: [FieldsappPriceTiers]? = nil, include: [Include]? = nil, fieldsappPricePoints: [FieldsappPricePoints]? = nil, limitpricePoints: Int? = nil) {
+ self.id = id
+ self.fieldsappPriceTiers = fieldsappPriceTiers
+ self.include = include
+ self.fieldsappPricePoints = fieldsappPricePoints
+ self.limitpricePoints = limitpricePoints
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppPriceTiersGetInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappPriceTiers: [FieldsappPriceTiers]? = nil, include: [Include]? = nil, fieldsappPricePoints: [FieldsappPricePoints]? = nil, limitpricePoints: Int? = nil) {
+ let options = Options(id: id, fieldsappPriceTiers: fieldsappPriceTiers, include: include, fieldsappPricePoints: fieldsappPricePoints, limitpricePoints: limitpricePoints)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappPriceTiers = options.fieldsappPriceTiers?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appPriceTiers]"] = fieldsappPriceTiers
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ if let fieldsappPricePoints = options.fieldsappPricePoints?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appPricePoints]"] = fieldsappPricePoints
+ }
+ if let limitpricePoints = options.limitpricePoints {
+ params["limit[pricePoints]"] = limitpricePoints
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppPriceTierResponse
+
+ /** Single AppPriceTier */
+ case status200(AppPriceTierResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppPriceTierResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppPriceTierResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPriceTiers/AppPriceTiersPricePointsGetToManyRelated.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPriceTiers/AppPriceTiersPricePointsGetToManyRelated.swift
new file mode 100644
index 000000000..36756efc8
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPriceTiers/AppPriceTiersPricePointsGetToManyRelated.swift
@@ -0,0 +1,164 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPriceTiers {
+
+ public enum AppPriceTiersPricePointsGetToManyRelated {
+
+ public static let service = APIService(id: "appPriceTiers-pricePoints-get_to_many_related", tag: "AppPriceTiers", method: "GET", path: "/v1/appPriceTiers/{id}/pricePoints", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appPricePoints */
+ public enum FieldsappPricePoints: String, Codable, Equatable, CaseIterable {
+ case customerPrice = "customerPrice"
+ case priceTier = "priceTier"
+ case proceeds = "proceeds"
+ case territory = "territory"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appPricePoints */
+ public var fieldsappPricePoints: [FieldsappPricePoints]?
+
+ /** maximum resources per page */
+ public var limit: Int?
+
+ public init(id: String, fieldsappPricePoints: [FieldsappPricePoints]? = nil, limit: Int? = nil) {
+ self.id = id
+ self.fieldsappPricePoints = fieldsappPricePoints
+ self.limit = limit
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppPriceTiersPricePointsGetToManyRelated.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappPricePoints: [FieldsappPricePoints]? = nil, limit: Int? = nil) {
+ let options = Options(id: id, fieldsappPricePoints: fieldsappPricePoints, limit: limit)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappPricePoints = options.fieldsappPricePoints?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appPricePoints]"] = fieldsappPricePoints
+ }
+ if let limit = options.limit {
+ params["limit"] = limit
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppPricePointsResponse
+
+ /** List of related resources */
+ case status200(AppPricePointsResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppPricePointsResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppPricePointsResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPrices/AppPricesGetInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPrices/AppPricesGetInstance.swift
new file mode 100644
index 000000000..6404037e8
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppPrices/AppPricesGetInstance.swift
@@ -0,0 +1,168 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppPrices {
+
+ public enum AppPricesGetInstance {
+
+ public static let service = APIService(id: "appPrices-get_instance", tag: "AppPrices", method: "GET", path: "/v1/appPrices/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appPrices */
+ public enum FieldsappPrices: String, Codable, Equatable, CaseIterable {
+ case app = "app"
+ case priceTier = "priceTier"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case app = "app"
+ case priceTier = "priceTier"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appPrices */
+ public var fieldsappPrices: [FieldsappPrices]?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ public init(id: String, fieldsappPrices: [FieldsappPrices]? = nil, include: [Include]? = nil) {
+ self.id = id
+ self.fieldsappPrices = fieldsappPrices
+ self.include = include
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppPricesGetInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappPrices: [FieldsappPrices]? = nil, include: [Include]? = nil) {
+ let options = Options(id: id, fieldsappPrices: fieldsappPrices, include: include)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappPrices = options.fieldsappPrices?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appPrices]"] = fieldsappPrices
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppPriceResponse
+
+ /** Single AppPrice */
+ case status200(AppPriceResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppPriceResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppPriceResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshotSets/AppScreenshotSetsAppScreenshotsGetToManyRelated.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshotSets/AppScreenshotSetsAppScreenshotsGetToManyRelated.swift
new file mode 100644
index 000000000..3a0fd1bc9
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshotSets/AppScreenshotSetsAppScreenshotsGetToManyRelated.swift
@@ -0,0 +1,196 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppScreenshotSets {
+
+ public enum AppScreenshotSetsAppScreenshotsGetToManyRelated {
+
+ public static let service = APIService(id: "appScreenshotSets-appScreenshots-get_to_many_related", tag: "AppScreenshotSets", method: "GET", path: "/v1/appScreenshotSets/{id}/appScreenshots", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appScreenshotSets */
+ public enum FieldsappScreenshotSets: String, Codable, Equatable, CaseIterable {
+ case appScreenshots = "appScreenshots"
+ case appStoreVersionLocalization = "appStoreVersionLocalization"
+ case screenshotDisplayType = "screenshotDisplayType"
+ }
+
+ /** the fields to include for returned resources of type appScreenshots */
+ public enum FieldsappScreenshots: String, Codable, Equatable, CaseIterable {
+ case appScreenshotSet = "appScreenshotSet"
+ case assetDeliveryState = "assetDeliveryState"
+ case assetToken = "assetToken"
+ case assetType = "assetType"
+ case fileName = "fileName"
+ case fileSize = "fileSize"
+ case imageAsset = "imageAsset"
+ case sourceFileChecksum = "sourceFileChecksum"
+ case uploadOperations = "uploadOperations"
+ case uploaded = "uploaded"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case appScreenshotSet = "appScreenshotSet"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appScreenshotSets */
+ public var fieldsappScreenshotSets: [FieldsappScreenshotSets]?
+
+ /** the fields to include for returned resources of type appScreenshots */
+ public var fieldsappScreenshots: [FieldsappScreenshots]?
+
+ /** maximum resources per page */
+ public var limit: Int?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ public init(id: String, fieldsappScreenshotSets: [FieldsappScreenshotSets]? = nil, fieldsappScreenshots: [FieldsappScreenshots]? = nil, limit: Int? = nil, include: [Include]? = nil) {
+ self.id = id
+ self.fieldsappScreenshotSets = fieldsappScreenshotSets
+ self.fieldsappScreenshots = fieldsappScreenshots
+ self.limit = limit
+ self.include = include
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppScreenshotSetsAppScreenshotsGetToManyRelated.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappScreenshotSets: [FieldsappScreenshotSets]? = nil, fieldsappScreenshots: [FieldsappScreenshots]? = nil, limit: Int? = nil, include: [Include]? = nil) {
+ let options = Options(id: id, fieldsappScreenshotSets: fieldsappScreenshotSets, fieldsappScreenshots: fieldsappScreenshots, limit: limit, include: include)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappScreenshotSets = options.fieldsappScreenshotSets?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appScreenshotSets]"] = fieldsappScreenshotSets
+ }
+ if let fieldsappScreenshots = options.fieldsappScreenshots?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appScreenshots]"] = fieldsappScreenshots
+ }
+ if let limit = options.limit {
+ params["limit"] = limit
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppScreenshotsResponse
+
+ /** List of related resources */
+ case status200(AppScreenshotsResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppScreenshotsResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppScreenshotsResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshotSets/AppScreenshotSetsAppScreenshotsGetToManyRelationship.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshotSets/AppScreenshotSetsAppScreenshotsGetToManyRelationship.swift
new file mode 100644
index 000000000..5e6075766
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshotSets/AppScreenshotSetsAppScreenshotsGetToManyRelationship.swift
@@ -0,0 +1,149 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppScreenshotSets {
+
+ public enum AppScreenshotSetsAppScreenshotsGetToManyRelationship {
+
+ public static let service = APIService(id: "appScreenshotSets-appScreenshots-get_to_many_relationship", tag: "AppScreenshotSets", method: "GET", path: "/v1/appScreenshotSets/{id}/relationships/appScreenshots", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** maximum resources per page */
+ public var limit: Int?
+
+ public init(id: String, limit: Int? = nil) {
+ self.id = id
+ self.limit = limit
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppScreenshotSetsAppScreenshotsGetToManyRelationship.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, limit: Int? = nil) {
+ let options = Options(id: id, limit: limit)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let limit = options.limit {
+ params["limit"] = limit
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppScreenshotSetAppScreenshotsLinkagesResponse
+
+ /** List of related linkages */
+ case status200(AppScreenshotSetAppScreenshotsLinkagesResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppScreenshotSetAppScreenshotsLinkagesResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppScreenshotSetAppScreenshotsLinkagesResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshotSets/AppScreenshotSetsAppScreenshotsReplaceToManyRelationship.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshotSets/AppScreenshotSetsAppScreenshotsReplaceToManyRelationship.swift
new file mode 100644
index 000000000..583c5149e
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshotSets/AppScreenshotSetsAppScreenshotsReplaceToManyRelationship.swift
@@ -0,0 +1,142 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppScreenshotSets {
+
+ public enum AppScreenshotSetsAppScreenshotsReplaceToManyRelationship {
+
+ public static let service = APIService(id: "appScreenshotSets-appScreenshots-replace_to_many_relationship", tag: "AppScreenshotSets", method: "PATCH", path: "/v1/appScreenshotSets/{id}/relationships/appScreenshots", hasBody: true, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ public init(id: String) {
+ self.id = id
+ }
+ }
+
+ public var options: Options
+
+ public var body: AppScreenshotSetAppScreenshotsLinkagesRequest
+
+ public init(body: AppScreenshotSetAppScreenshotsLinkagesRequest, options: Options, encoder: RequestEncoder? = nil) {
+ self.body = body
+ self.options = options
+ super.init(service: AppScreenshotSetsAppScreenshotsReplaceToManyRelationship.service) { defaultEncoder in
+ return try (encoder ?? defaultEncoder).encode(body)
+ }
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, body: AppScreenshotSetAppScreenshotsLinkagesRequest) {
+ let options = Options(id: id)
+ self.init(body: body, options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = Void
+
+ /** Success (no content) */
+ case status204
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: Void? {
+ switch self {
+ case .status204: return ()
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return ()
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status204: return 204
+ case .status403: return 403
+ case .status404: return 404
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status204: return true
+ case .status403: return false
+ case .status404: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 204: self = .status204
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshotSets/AppScreenshotSetsCreateInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshotSets/AppScreenshotSetsCreateInstance.swift
new file mode 100644
index 000000000..7f3a25366
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshotSets/AppScreenshotSetsCreateInstance.swift
@@ -0,0 +1,119 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppScreenshotSets {
+
+ public enum AppScreenshotSetsCreateInstance {
+
+ public static let service = APIService(id: "appScreenshotSets-create_instance", tag: "AppScreenshotSets", method: "POST", path: "/v1/appScreenshotSets", hasBody: true, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public var body: AppScreenshotSetCreateRequest
+
+ public init(body: AppScreenshotSetCreateRequest, encoder: RequestEncoder? = nil) {
+ self.body = body
+ super.init(service: AppScreenshotSetsCreateInstance.service) { defaultEncoder in
+ return try (encoder ?? defaultEncoder).encode(body)
+ }
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppScreenshotSetResponse
+
+ /** Single AppScreenshotSet */
+ case status201(AppScreenshotSetResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: AppScreenshotSetResponse? {
+ switch self {
+ case .status201(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status201(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status409(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status201: return 201
+ case .status400: return 400
+ case .status403: return 403
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status201: return true
+ case .status400: return false
+ case .status403: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 201: self = try .status201(decoder.decode(AppScreenshotSetResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshotSets/AppScreenshotSetsDeleteInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshotSets/AppScreenshotSetsDeleteInstance.swift
new file mode 100644
index 000000000..cc7f85177
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshotSets/AppScreenshotSetsDeleteInstance.swift
@@ -0,0 +1,145 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppScreenshotSets {
+
+ public enum AppScreenshotSetsDeleteInstance {
+
+ public static let service = APIService(id: "appScreenshotSets-delete_instance", tag: "AppScreenshotSets", method: "DELETE", path: "/v1/appScreenshotSets/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ public init(id: String) {
+ self.id = id
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppScreenshotSetsDeleteInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String) {
+ let options = Options(id: id)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = Void
+
+ /** Success (no content) */
+ case status204
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: Void? {
+ switch self {
+ case .status204: return ()
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return ()
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status204: return 204
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status204: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 204: self = .status204
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshotSets/AppScreenshotSetsGetInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshotSets/AppScreenshotSetsGetInstance.swift
new file mode 100644
index 000000000..67a67fb78
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshotSets/AppScreenshotSetsGetInstance.swift
@@ -0,0 +1,197 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppScreenshotSets {
+
+ public enum AppScreenshotSetsGetInstance {
+
+ public static let service = APIService(id: "appScreenshotSets-get_instance", tag: "AppScreenshotSets", method: "GET", path: "/v1/appScreenshotSets/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appScreenshotSets */
+ public enum FieldsappScreenshotSets: String, Codable, Equatable, CaseIterable {
+ case appScreenshots = "appScreenshots"
+ case appStoreVersionLocalization = "appStoreVersionLocalization"
+ case screenshotDisplayType = "screenshotDisplayType"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case appScreenshots = "appScreenshots"
+ case appStoreVersionLocalization = "appStoreVersionLocalization"
+ }
+
+ /** the fields to include for returned resources of type appScreenshots */
+ public enum FieldsappScreenshots: String, Codable, Equatable, CaseIterable {
+ case appScreenshotSet = "appScreenshotSet"
+ case assetDeliveryState = "assetDeliveryState"
+ case assetToken = "assetToken"
+ case assetType = "assetType"
+ case fileName = "fileName"
+ case fileSize = "fileSize"
+ case imageAsset = "imageAsset"
+ case sourceFileChecksum = "sourceFileChecksum"
+ case uploadOperations = "uploadOperations"
+ case uploaded = "uploaded"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appScreenshotSets */
+ public var fieldsappScreenshotSets: [FieldsappScreenshotSets]?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ /** the fields to include for returned resources of type appScreenshots */
+ public var fieldsappScreenshots: [FieldsappScreenshots]?
+
+ /** maximum number of related appScreenshots returned (when they are included) */
+ public var limitappScreenshots: Int?
+
+ public init(id: String, fieldsappScreenshotSets: [FieldsappScreenshotSets]? = nil, include: [Include]? = nil, fieldsappScreenshots: [FieldsappScreenshots]? = nil, limitappScreenshots: Int? = nil) {
+ self.id = id
+ self.fieldsappScreenshotSets = fieldsappScreenshotSets
+ self.include = include
+ self.fieldsappScreenshots = fieldsappScreenshots
+ self.limitappScreenshots = limitappScreenshots
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppScreenshotSetsGetInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappScreenshotSets: [FieldsappScreenshotSets]? = nil, include: [Include]? = nil, fieldsappScreenshots: [FieldsappScreenshots]? = nil, limitappScreenshots: Int? = nil) {
+ let options = Options(id: id, fieldsappScreenshotSets: fieldsappScreenshotSets, include: include, fieldsappScreenshots: fieldsappScreenshots, limitappScreenshots: limitappScreenshots)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappScreenshotSets = options.fieldsappScreenshotSets?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appScreenshotSets]"] = fieldsappScreenshotSets
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ if let fieldsappScreenshots = options.fieldsappScreenshots?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appScreenshots]"] = fieldsappScreenshots
+ }
+ if let limitappScreenshots = options.limitappScreenshots {
+ params["limit[appScreenshots]"] = limitappScreenshots
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppScreenshotSetResponse
+
+ /** Single AppScreenshotSet */
+ case status200(AppScreenshotSetResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppScreenshotSetResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppScreenshotSetResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshots/AppScreenshotsCreateInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshots/AppScreenshotsCreateInstance.swift
new file mode 100644
index 000000000..7e9928ae0
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshots/AppScreenshotsCreateInstance.swift
@@ -0,0 +1,119 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppScreenshots {
+
+ public enum AppScreenshotsCreateInstance {
+
+ public static let service = APIService(id: "appScreenshots-create_instance", tag: "AppScreenshots", method: "POST", path: "/v1/appScreenshots", hasBody: true, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public var body: AppScreenshotCreateRequest
+
+ public init(body: AppScreenshotCreateRequest, encoder: RequestEncoder? = nil) {
+ self.body = body
+ super.init(service: AppScreenshotsCreateInstance.service) { defaultEncoder in
+ return try (encoder ?? defaultEncoder).encode(body)
+ }
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppScreenshotResponse
+
+ /** Single AppScreenshot */
+ case status201(AppScreenshotResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: AppScreenshotResponse? {
+ switch self {
+ case .status201(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status201(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status409(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status201: return 201
+ case .status400: return 400
+ case .status403: return 403
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status201: return true
+ case .status400: return false
+ case .status403: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 201: self = try .status201(decoder.decode(AppScreenshotResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshots/AppScreenshotsDeleteInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshots/AppScreenshotsDeleteInstance.swift
new file mode 100644
index 000000000..62f68f808
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshots/AppScreenshotsDeleteInstance.swift
@@ -0,0 +1,145 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppScreenshots {
+
+ public enum AppScreenshotsDeleteInstance {
+
+ public static let service = APIService(id: "appScreenshots-delete_instance", tag: "AppScreenshots", method: "DELETE", path: "/v1/appScreenshots/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ public init(id: String) {
+ self.id = id
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppScreenshotsDeleteInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String) {
+ let options = Options(id: id)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = Void
+
+ /** Success (no content) */
+ case status204
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: Void? {
+ switch self {
+ case .status204: return ()
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return ()
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status204: return 204
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status204: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 204: self = .status204
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshots/AppScreenshotsGetInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshots/AppScreenshotsGetInstance.swift
new file mode 100644
index 000000000..9a7a437fb
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshots/AppScreenshotsGetInstance.swift
@@ -0,0 +1,175 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppScreenshots {
+
+ public enum AppScreenshotsGetInstance {
+
+ public static let service = APIService(id: "appScreenshots-get_instance", tag: "AppScreenshots", method: "GET", path: "/v1/appScreenshots/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appScreenshots */
+ public enum FieldsappScreenshots: String, Codable, Equatable, CaseIterable {
+ case appScreenshotSet = "appScreenshotSet"
+ case assetDeliveryState = "assetDeliveryState"
+ case assetToken = "assetToken"
+ case assetType = "assetType"
+ case fileName = "fileName"
+ case fileSize = "fileSize"
+ case imageAsset = "imageAsset"
+ case sourceFileChecksum = "sourceFileChecksum"
+ case uploadOperations = "uploadOperations"
+ case uploaded = "uploaded"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case appScreenshotSet = "appScreenshotSet"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appScreenshots */
+ public var fieldsappScreenshots: [FieldsappScreenshots]?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ public init(id: String, fieldsappScreenshots: [FieldsappScreenshots]? = nil, include: [Include]? = nil) {
+ self.id = id
+ self.fieldsappScreenshots = fieldsappScreenshots
+ self.include = include
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppScreenshotsGetInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappScreenshots: [FieldsappScreenshots]? = nil, include: [Include]? = nil) {
+ let options = Options(id: id, fieldsappScreenshots: fieldsappScreenshots, include: include)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappScreenshots = options.fieldsappScreenshots?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appScreenshots]"] = fieldsappScreenshots
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppScreenshotResponse
+
+ /** Single AppScreenshot */
+ case status200(AppScreenshotResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppScreenshotResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppScreenshotResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshots/AppScreenshotsUpdateInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshots/AppScreenshotsUpdateInstance.swift
new file mode 100644
index 000000000..ec63e3877
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppScreenshots/AppScreenshotsUpdateInstance.swift
@@ -0,0 +1,150 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppScreenshots {
+
+ public enum AppScreenshotsUpdateInstance {
+
+ public static let service = APIService(id: "appScreenshots-update_instance", tag: "AppScreenshots", method: "PATCH", path: "/v1/appScreenshots/{id}", hasBody: true, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ public init(id: String) {
+ self.id = id
+ }
+ }
+
+ public var options: Options
+
+ public var body: AppScreenshotUpdateRequest
+
+ public init(body: AppScreenshotUpdateRequest, options: Options, encoder: RequestEncoder? = nil) {
+ self.body = body
+ self.options = options
+ super.init(service: AppScreenshotsUpdateInstance.service) { defaultEncoder in
+ return try (encoder ?? defaultEncoder).encode(body)
+ }
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, body: AppScreenshotUpdateRequest) {
+ let options = Options(id: id)
+ self.init(body: body, options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppScreenshotResponse
+
+ /** Single AppScreenshot */
+ case status200(AppScreenshotResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: AppScreenshotResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppScreenshotResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewAttachments/AppStoreReviewAttachmentsCreateInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewAttachments/AppStoreReviewAttachmentsCreateInstance.swift
new file mode 100644
index 000000000..2a1f43e29
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewAttachments/AppStoreReviewAttachmentsCreateInstance.swift
@@ -0,0 +1,119 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppStoreReviewAttachments {
+
+ public enum AppStoreReviewAttachmentsCreateInstance {
+
+ public static let service = APIService(id: "appStoreReviewAttachments-create_instance", tag: "AppStoreReviewAttachments", method: "POST", path: "/v1/appStoreReviewAttachments", hasBody: true, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public var body: AppStoreReviewAttachmentCreateRequest
+
+ public init(body: AppStoreReviewAttachmentCreateRequest, encoder: RequestEncoder? = nil) {
+ self.body = body
+ super.init(service: AppStoreReviewAttachmentsCreateInstance.service) { defaultEncoder in
+ return try (encoder ?? defaultEncoder).encode(body)
+ }
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppStoreReviewAttachmentResponse
+
+ /** Single AppStoreReviewAttachment */
+ case status201(AppStoreReviewAttachmentResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: AppStoreReviewAttachmentResponse? {
+ switch self {
+ case .status201(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status201(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status409(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status201: return 201
+ case .status400: return 400
+ case .status403: return 403
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status201: return true
+ case .status400: return false
+ case .status403: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 201: self = try .status201(decoder.decode(AppStoreReviewAttachmentResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewAttachments/AppStoreReviewAttachmentsDeleteInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewAttachments/AppStoreReviewAttachmentsDeleteInstance.swift
new file mode 100644
index 000000000..4d3d20688
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewAttachments/AppStoreReviewAttachmentsDeleteInstance.swift
@@ -0,0 +1,145 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppStoreReviewAttachments {
+
+ public enum AppStoreReviewAttachmentsDeleteInstance {
+
+ public static let service = APIService(id: "appStoreReviewAttachments-delete_instance", tag: "AppStoreReviewAttachments", method: "DELETE", path: "/v1/appStoreReviewAttachments/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ public init(id: String) {
+ self.id = id
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppStoreReviewAttachmentsDeleteInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String) {
+ let options = Options(id: id)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = Void
+
+ /** Success (no content) */
+ case status204
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: Void? {
+ switch self {
+ case .status204: return ()
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return ()
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status204: return 204
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status204: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 204: self = .status204
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewAttachments/AppStoreReviewAttachmentsGetInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewAttachments/AppStoreReviewAttachmentsGetInstance.swift
new file mode 100644
index 000000000..8b49fc4a9
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewAttachments/AppStoreReviewAttachmentsGetInstance.swift
@@ -0,0 +1,172 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppStoreReviewAttachments {
+
+ public enum AppStoreReviewAttachmentsGetInstance {
+
+ public static let service = APIService(id: "appStoreReviewAttachments-get_instance", tag: "AppStoreReviewAttachments", method: "GET", path: "/v1/appStoreReviewAttachments/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appStoreReviewAttachments */
+ public enum FieldsappStoreReviewAttachments: String, Codable, Equatable, CaseIterable {
+ case appStoreReviewDetail = "appStoreReviewDetail"
+ case assetDeliveryState = "assetDeliveryState"
+ case fileName = "fileName"
+ case fileSize = "fileSize"
+ case sourceFileChecksum = "sourceFileChecksum"
+ case uploadOperations = "uploadOperations"
+ case uploaded = "uploaded"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case appStoreReviewDetail = "appStoreReviewDetail"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appStoreReviewAttachments */
+ public var fieldsappStoreReviewAttachments: [FieldsappStoreReviewAttachments]?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ public init(id: String, fieldsappStoreReviewAttachments: [FieldsappStoreReviewAttachments]? = nil, include: [Include]? = nil) {
+ self.id = id
+ self.fieldsappStoreReviewAttachments = fieldsappStoreReviewAttachments
+ self.include = include
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppStoreReviewAttachmentsGetInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappStoreReviewAttachments: [FieldsappStoreReviewAttachments]? = nil, include: [Include]? = nil) {
+ let options = Options(id: id, fieldsappStoreReviewAttachments: fieldsappStoreReviewAttachments, include: include)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappStoreReviewAttachments = options.fieldsappStoreReviewAttachments?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appStoreReviewAttachments]"] = fieldsappStoreReviewAttachments
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppStoreReviewAttachmentResponse
+
+ /** Single AppStoreReviewAttachment */
+ case status200(AppStoreReviewAttachmentResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppStoreReviewAttachmentResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppStoreReviewAttachmentResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewAttachments/AppStoreReviewAttachmentsUpdateInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewAttachments/AppStoreReviewAttachmentsUpdateInstance.swift
new file mode 100644
index 000000000..b45ad3e01
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewAttachments/AppStoreReviewAttachmentsUpdateInstance.swift
@@ -0,0 +1,150 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppStoreReviewAttachments {
+
+ public enum AppStoreReviewAttachmentsUpdateInstance {
+
+ public static let service = APIService(id: "appStoreReviewAttachments-update_instance", tag: "AppStoreReviewAttachments", method: "PATCH", path: "/v1/appStoreReviewAttachments/{id}", hasBody: true, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ public init(id: String) {
+ self.id = id
+ }
+ }
+
+ public var options: Options
+
+ public var body: AppStoreReviewAttachmentUpdateRequest
+
+ public init(body: AppStoreReviewAttachmentUpdateRequest, options: Options, encoder: RequestEncoder? = nil) {
+ self.body = body
+ self.options = options
+ super.init(service: AppStoreReviewAttachmentsUpdateInstance.service) { defaultEncoder in
+ return try (encoder ?? defaultEncoder).encode(body)
+ }
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, body: AppStoreReviewAttachmentUpdateRequest) {
+ let options = Options(id: id)
+ self.init(body: body, options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppStoreReviewAttachmentResponse
+
+ /** Single AppStoreReviewAttachment */
+ case status200(AppStoreReviewAttachmentResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: AppStoreReviewAttachmentResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppStoreReviewAttachmentResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewDetails/AppStoreReviewDetailsAppStoreReviewAttachmentsGetToManyRelated.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewDetails/AppStoreReviewDetailsAppStoreReviewAttachmentsGetToManyRelated.swift
new file mode 100644
index 000000000..dab929939
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewDetails/AppStoreReviewDetailsAppStoreReviewAttachmentsGetToManyRelated.swift
@@ -0,0 +1,200 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppStoreReviewDetails {
+
+ public enum AppStoreReviewDetailsAppStoreReviewAttachmentsGetToManyRelated {
+
+ public static let service = APIService(id: "appStoreReviewDetails-appStoreReviewAttachments-get_to_many_related", tag: "AppStoreReviewDetails", method: "GET", path: "/v1/appStoreReviewDetails/{id}/appStoreReviewAttachments", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appStoreReviewDetails */
+ public enum FieldsappStoreReviewDetails: String, Codable, Equatable, CaseIterable {
+ case appStoreReviewAttachments = "appStoreReviewAttachments"
+ case appStoreVersion = "appStoreVersion"
+ case contactEmail = "contactEmail"
+ case contactFirstName = "contactFirstName"
+ case contactLastName = "contactLastName"
+ case contactPhone = "contactPhone"
+ case demoAccountName = "demoAccountName"
+ case demoAccountPassword = "demoAccountPassword"
+ case demoAccountRequired = "demoAccountRequired"
+ case notes = "notes"
+ }
+
+ /** the fields to include for returned resources of type appStoreReviewAttachments */
+ public enum FieldsappStoreReviewAttachments: String, Codable, Equatable, CaseIterable {
+ case appStoreReviewDetail = "appStoreReviewDetail"
+ case assetDeliveryState = "assetDeliveryState"
+ case fileName = "fileName"
+ case fileSize = "fileSize"
+ case sourceFileChecksum = "sourceFileChecksum"
+ case uploadOperations = "uploadOperations"
+ case uploaded = "uploaded"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case appStoreReviewDetail = "appStoreReviewDetail"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appStoreReviewDetails */
+ public var fieldsappStoreReviewDetails: [FieldsappStoreReviewDetails]?
+
+ /** the fields to include for returned resources of type appStoreReviewAttachments */
+ public var fieldsappStoreReviewAttachments: [FieldsappStoreReviewAttachments]?
+
+ /** maximum resources per page */
+ public var limit: Int?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ public init(id: String, fieldsappStoreReviewDetails: [FieldsappStoreReviewDetails]? = nil, fieldsappStoreReviewAttachments: [FieldsappStoreReviewAttachments]? = nil, limit: Int? = nil, include: [Include]? = nil) {
+ self.id = id
+ self.fieldsappStoreReviewDetails = fieldsappStoreReviewDetails
+ self.fieldsappStoreReviewAttachments = fieldsappStoreReviewAttachments
+ self.limit = limit
+ self.include = include
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppStoreReviewDetailsAppStoreReviewAttachmentsGetToManyRelated.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappStoreReviewDetails: [FieldsappStoreReviewDetails]? = nil, fieldsappStoreReviewAttachments: [FieldsappStoreReviewAttachments]? = nil, limit: Int? = nil, include: [Include]? = nil) {
+ let options = Options(id: id, fieldsappStoreReviewDetails: fieldsappStoreReviewDetails, fieldsappStoreReviewAttachments: fieldsappStoreReviewAttachments, limit: limit, include: include)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappStoreReviewDetails = options.fieldsappStoreReviewDetails?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appStoreReviewDetails]"] = fieldsappStoreReviewDetails
+ }
+ if let fieldsappStoreReviewAttachments = options.fieldsappStoreReviewAttachments?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appStoreReviewAttachments]"] = fieldsappStoreReviewAttachments
+ }
+ if let limit = options.limit {
+ params["limit"] = limit
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppStoreReviewAttachmentsResponse
+
+ /** List of related resources */
+ case status200(AppStoreReviewAttachmentsResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppStoreReviewAttachmentsResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppStoreReviewAttachmentsResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewDetails/AppStoreReviewDetailsCreateInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewDetails/AppStoreReviewDetailsCreateInstance.swift
new file mode 100644
index 000000000..1b9df9a1a
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewDetails/AppStoreReviewDetailsCreateInstance.swift
@@ -0,0 +1,119 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppStoreReviewDetails {
+
+ public enum AppStoreReviewDetailsCreateInstance {
+
+ public static let service = APIService(id: "appStoreReviewDetails-create_instance", tag: "AppStoreReviewDetails", method: "POST", path: "/v1/appStoreReviewDetails", hasBody: true, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public var body: AppStoreReviewDetailCreateRequest
+
+ public init(body: AppStoreReviewDetailCreateRequest, encoder: RequestEncoder? = nil) {
+ self.body = body
+ super.init(service: AppStoreReviewDetailsCreateInstance.service) { defaultEncoder in
+ return try (encoder ?? defaultEncoder).encode(body)
+ }
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppStoreReviewDetailResponse
+
+ /** Single AppStoreReviewDetail */
+ case status201(AppStoreReviewDetailResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: AppStoreReviewDetailResponse? {
+ switch self {
+ case .status201(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status201(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status409(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status201: return 201
+ case .status400: return 400
+ case .status403: return 403
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status201: return true
+ case .status400: return false
+ case .status403: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 201: self = try .status201(decoder.decode(AppStoreReviewDetailResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewDetails/AppStoreReviewDetailsGetInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewDetails/AppStoreReviewDetailsGetInstance.swift
new file mode 100644
index 000000000..20c401555
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewDetails/AppStoreReviewDetailsGetInstance.swift
@@ -0,0 +1,201 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppStoreReviewDetails {
+
+ public enum AppStoreReviewDetailsGetInstance {
+
+ public static let service = APIService(id: "appStoreReviewDetails-get_instance", tag: "AppStoreReviewDetails", method: "GET", path: "/v1/appStoreReviewDetails/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appStoreReviewDetails */
+ public enum FieldsappStoreReviewDetails: String, Codable, Equatable, CaseIterable {
+ case appStoreReviewAttachments = "appStoreReviewAttachments"
+ case appStoreVersion = "appStoreVersion"
+ case contactEmail = "contactEmail"
+ case contactFirstName = "contactFirstName"
+ case contactLastName = "contactLastName"
+ case contactPhone = "contactPhone"
+ case demoAccountName = "demoAccountName"
+ case demoAccountPassword = "demoAccountPassword"
+ case demoAccountRequired = "demoAccountRequired"
+ case notes = "notes"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case appStoreReviewAttachments = "appStoreReviewAttachments"
+ case appStoreVersion = "appStoreVersion"
+ }
+
+ /** the fields to include for returned resources of type appStoreReviewAttachments */
+ public enum FieldsappStoreReviewAttachments: String, Codable, Equatable, CaseIterable {
+ case appStoreReviewDetail = "appStoreReviewDetail"
+ case assetDeliveryState = "assetDeliveryState"
+ case fileName = "fileName"
+ case fileSize = "fileSize"
+ case sourceFileChecksum = "sourceFileChecksum"
+ case uploadOperations = "uploadOperations"
+ case uploaded = "uploaded"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appStoreReviewDetails */
+ public var fieldsappStoreReviewDetails: [FieldsappStoreReviewDetails]?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ /** the fields to include for returned resources of type appStoreReviewAttachments */
+ public var fieldsappStoreReviewAttachments: [FieldsappStoreReviewAttachments]?
+
+ /** maximum number of related appStoreReviewAttachments returned (when they are included) */
+ public var limitappStoreReviewAttachments: Int?
+
+ public init(id: String, fieldsappStoreReviewDetails: [FieldsappStoreReviewDetails]? = nil, include: [Include]? = nil, fieldsappStoreReviewAttachments: [FieldsappStoreReviewAttachments]? = nil, limitappStoreReviewAttachments: Int? = nil) {
+ self.id = id
+ self.fieldsappStoreReviewDetails = fieldsappStoreReviewDetails
+ self.include = include
+ self.fieldsappStoreReviewAttachments = fieldsappStoreReviewAttachments
+ self.limitappStoreReviewAttachments = limitappStoreReviewAttachments
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppStoreReviewDetailsGetInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappStoreReviewDetails: [FieldsappStoreReviewDetails]? = nil, include: [Include]? = nil, fieldsappStoreReviewAttachments: [FieldsappStoreReviewAttachments]? = nil, limitappStoreReviewAttachments: Int? = nil) {
+ let options = Options(id: id, fieldsappStoreReviewDetails: fieldsappStoreReviewDetails, include: include, fieldsappStoreReviewAttachments: fieldsappStoreReviewAttachments, limitappStoreReviewAttachments: limitappStoreReviewAttachments)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappStoreReviewDetails = options.fieldsappStoreReviewDetails?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appStoreReviewDetails]"] = fieldsappStoreReviewDetails
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ if let fieldsappStoreReviewAttachments = options.fieldsappStoreReviewAttachments?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appStoreReviewAttachments]"] = fieldsappStoreReviewAttachments
+ }
+ if let limitappStoreReviewAttachments = options.limitappStoreReviewAttachments {
+ params["limit[appStoreReviewAttachments]"] = limitappStoreReviewAttachments
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppStoreReviewDetailResponse
+
+ /** Single AppStoreReviewDetail */
+ case status200(AppStoreReviewDetailResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppStoreReviewDetailResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppStoreReviewDetailResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewDetails/AppStoreReviewDetailsUpdateInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewDetails/AppStoreReviewDetailsUpdateInstance.swift
new file mode 100644
index 000000000..dc62970c0
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreReviewDetails/AppStoreReviewDetailsUpdateInstance.swift
@@ -0,0 +1,150 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppStoreReviewDetails {
+
+ public enum AppStoreReviewDetailsUpdateInstance {
+
+ public static let service = APIService(id: "appStoreReviewDetails-update_instance", tag: "AppStoreReviewDetails", method: "PATCH", path: "/v1/appStoreReviewDetails/{id}", hasBody: true, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ public init(id: String) {
+ self.id = id
+ }
+ }
+
+ public var options: Options
+
+ public var body: AppStoreReviewDetailUpdateRequest
+
+ public init(body: AppStoreReviewDetailUpdateRequest, options: Options, encoder: RequestEncoder? = nil) {
+ self.body = body
+ self.options = options
+ super.init(service: AppStoreReviewDetailsUpdateInstance.service) { defaultEncoder in
+ return try (encoder ?? defaultEncoder).encode(body)
+ }
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, body: AppStoreReviewDetailUpdateRequest) {
+ let options = Options(id: id)
+ self.init(body: body, options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppStoreReviewDetailResponse
+
+ /** Single AppStoreReviewDetail */
+ case status200(AppStoreReviewDetailResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: AppStoreReviewDetailResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppStoreReviewDetailResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreVersionLocalizations/AppStoreVersionLocalizationsAppPreviewSetsGetToManyRelated.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreVersionLocalizations/AppStoreVersionLocalizationsAppPreviewSetsGetToManyRelated.swift
new file mode 100644
index 000000000..45ddaf2e1
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreVersionLocalizations/AppStoreVersionLocalizationsAppPreviewSetsGetToManyRelated.swift
@@ -0,0 +1,245 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppStoreVersionLocalizations {
+
+ public enum AppStoreVersionLocalizationsAppPreviewSetsGetToManyRelated {
+
+ public static let service = APIService(id: "appStoreVersionLocalizations-appPreviewSets-get_to_many_related", tag: "AppStoreVersionLocalizations", method: "GET", path: "/v1/appStoreVersionLocalizations/{id}/appPreviewSets", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** filter by attribute 'previewType' */
+ public enum FilterpreviewType: String, Codable, Equatable, CaseIterable {
+ case iphone65 = "IPHONE_65"
+ case iphone58 = "IPHONE_58"
+ case iphone55 = "IPHONE_55"
+ case iphone47 = "IPHONE_47"
+ case iphone40 = "IPHONE_40"
+ case iphone35 = "IPHONE_35"
+ case ipadPro3gen129 = "IPAD_PRO_3GEN_129"
+ case ipadPro3gen11 = "IPAD_PRO_3GEN_11"
+ case ipadPro129 = "IPAD_PRO_129"
+ case ipad105 = "IPAD_105"
+ case ipad97 = "IPAD_97"
+ case desktop = "DESKTOP"
+ case watchSeries4 = "WATCH_SERIES_4"
+ case watchSeries3 = "WATCH_SERIES_3"
+ case appleTv = "APPLE_TV"
+ }
+
+ /** the fields to include for returned resources of type appStoreVersionLocalizations */
+ public enum FieldsappStoreVersionLocalizations: String, Codable, Equatable, CaseIterable {
+ case appPreviewSets = "appPreviewSets"
+ case appScreenshotSets = "appScreenshotSets"
+ case appStoreVersion = "appStoreVersion"
+ case description = "description"
+ case keywords = "keywords"
+ case locale = "locale"
+ case marketingUrl = "marketingUrl"
+ case promotionalText = "promotionalText"
+ case supportUrl = "supportUrl"
+ case whatsNew = "whatsNew"
+ }
+
+ /** the fields to include for returned resources of type appPreviews */
+ public enum FieldsappPreviews: String, Codable, Equatable, CaseIterable {
+ case appPreviewSet = "appPreviewSet"
+ case assetDeliveryState = "assetDeliveryState"
+ case fileName = "fileName"
+ case fileSize = "fileSize"
+ case mimeType = "mimeType"
+ case previewFrameTimeCode = "previewFrameTimeCode"
+ case previewImage = "previewImage"
+ case sourceFileChecksum = "sourceFileChecksum"
+ case uploadOperations = "uploadOperations"
+ case uploaded = "uploaded"
+ case videoUrl = "videoUrl"
+ }
+
+ /** the fields to include for returned resources of type appPreviewSets */
+ public enum FieldsappPreviewSets: String, Codable, Equatable, CaseIterable {
+ case appPreviews = "appPreviews"
+ case appStoreVersionLocalization = "appStoreVersionLocalization"
+ case previewType = "previewType"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case appPreviews = "appPreviews"
+ case appStoreVersionLocalization = "appStoreVersionLocalization"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** filter by attribute 'previewType' */
+ public var filterpreviewType: [FilterpreviewType]?
+
+ /** the fields to include for returned resources of type appStoreVersionLocalizations */
+ public var fieldsappStoreVersionLocalizations: [FieldsappStoreVersionLocalizations]?
+
+ /** the fields to include for returned resources of type appPreviews */
+ public var fieldsappPreviews: [FieldsappPreviews]?
+
+ /** the fields to include for returned resources of type appPreviewSets */
+ public var fieldsappPreviewSets: [FieldsappPreviewSets]?
+
+ /** maximum resources per page */
+ public var limit: Int?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ public init(id: String, filterpreviewType: [FilterpreviewType]? = nil, fieldsappStoreVersionLocalizations: [FieldsappStoreVersionLocalizations]? = nil, fieldsappPreviews: [FieldsappPreviews]? = nil, fieldsappPreviewSets: [FieldsappPreviewSets]? = nil, limit: Int? = nil, include: [Include]? = nil) {
+ self.id = id
+ self.filterpreviewType = filterpreviewType
+ self.fieldsappStoreVersionLocalizations = fieldsappStoreVersionLocalizations
+ self.fieldsappPreviews = fieldsappPreviews
+ self.fieldsappPreviewSets = fieldsappPreviewSets
+ self.limit = limit
+ self.include = include
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppStoreVersionLocalizationsAppPreviewSetsGetToManyRelated.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, filterpreviewType: [FilterpreviewType]? = nil, fieldsappStoreVersionLocalizations: [FieldsappStoreVersionLocalizations]? = nil, fieldsappPreviews: [FieldsappPreviews]? = nil, fieldsappPreviewSets: [FieldsappPreviewSets]? = nil, limit: Int? = nil, include: [Include]? = nil) {
+ let options = Options(id: id, filterpreviewType: filterpreviewType, fieldsappStoreVersionLocalizations: fieldsappStoreVersionLocalizations, fieldsappPreviews: fieldsappPreviews, fieldsappPreviewSets: fieldsappPreviewSets, limit: limit, include: include)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let filterpreviewType = options.filterpreviewType?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["filter[previewType]"] = filterpreviewType
+ }
+ if let fieldsappStoreVersionLocalizations = options.fieldsappStoreVersionLocalizations?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appStoreVersionLocalizations]"] = fieldsappStoreVersionLocalizations
+ }
+ if let fieldsappPreviews = options.fieldsappPreviews?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appPreviews]"] = fieldsappPreviews
+ }
+ if let fieldsappPreviewSets = options.fieldsappPreviewSets?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appPreviewSets]"] = fieldsappPreviewSets
+ }
+ if let limit = options.limit {
+ params["limit"] = limit
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppPreviewSetsResponse
+
+ /** List of related resources */
+ case status200(AppPreviewSetsResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppPreviewSetsResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppPreviewSetsResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreVersionLocalizations/AppStoreVersionLocalizationsAppScreenshotSetsGetToManyRelated.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreVersionLocalizations/AppStoreVersionLocalizationsAppScreenshotSetsGetToManyRelated.swift
new file mode 100644
index 000000000..71edd4d4c
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreVersionLocalizations/AppStoreVersionLocalizationsAppScreenshotSetsGetToManyRelated.swift
@@ -0,0 +1,254 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppStoreVersionLocalizations {
+
+ public enum AppStoreVersionLocalizationsAppScreenshotSetsGetToManyRelated {
+
+ public static let service = APIService(id: "appStoreVersionLocalizations-appScreenshotSets-get_to_many_related", tag: "AppStoreVersionLocalizations", method: "GET", path: "/v1/appStoreVersionLocalizations/{id}/appScreenshotSets", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** filter by attribute 'screenshotDisplayType' */
+ public enum FilterscreenshotDisplayType: String, Codable, Equatable, CaseIterable {
+ case appIphone65 = "APP_IPHONE_65"
+ case appIphone58 = "APP_IPHONE_58"
+ case appIphone55 = "APP_IPHONE_55"
+ case appIphone47 = "APP_IPHONE_47"
+ case appIphone40 = "APP_IPHONE_40"
+ case appIphone35 = "APP_IPHONE_35"
+ case appIpadPro3gen129 = "APP_IPAD_PRO_3GEN_129"
+ case appIpadPro3gen11 = "APP_IPAD_PRO_3GEN_11"
+ case appIpadPro129 = "APP_IPAD_PRO_129"
+ case appIpad105 = "APP_IPAD_105"
+ case appIpad97 = "APP_IPAD_97"
+ case appDesktop = "APP_DESKTOP"
+ case appWatchSeries4 = "APP_WATCH_SERIES_4"
+ case appWatchSeries3 = "APP_WATCH_SERIES_3"
+ case appAppleTv = "APP_APPLE_TV"
+ case imessageAppIphone65 = "IMESSAGE_APP_IPHONE_65"
+ case imessageAppIphone58 = "IMESSAGE_APP_IPHONE_58"
+ case imessageAppIphone55 = "IMESSAGE_APP_IPHONE_55"
+ case imessageAppIphone47 = "IMESSAGE_APP_IPHONE_47"
+ case imessageAppIphone40 = "IMESSAGE_APP_IPHONE_40"
+ case imessageAppIpadPro3gen129 = "IMESSAGE_APP_IPAD_PRO_3GEN_129"
+ case imessageAppIpadPro3gen11 = "IMESSAGE_APP_IPAD_PRO_3GEN_11"
+ case imessageAppIpadPro129 = "IMESSAGE_APP_IPAD_PRO_129"
+ case imessageAppIpad105 = "IMESSAGE_APP_IPAD_105"
+ case imessageAppIpad97 = "IMESSAGE_APP_IPAD_97"
+ }
+
+ /** the fields to include for returned resources of type appStoreVersionLocalizations */
+ public enum FieldsappStoreVersionLocalizations: String, Codable, Equatable, CaseIterable {
+ case appPreviewSets = "appPreviewSets"
+ case appScreenshotSets = "appScreenshotSets"
+ case appStoreVersion = "appStoreVersion"
+ case description = "description"
+ case keywords = "keywords"
+ case locale = "locale"
+ case marketingUrl = "marketingUrl"
+ case promotionalText = "promotionalText"
+ case supportUrl = "supportUrl"
+ case whatsNew = "whatsNew"
+ }
+
+ /** the fields to include for returned resources of type appScreenshotSets */
+ public enum FieldsappScreenshotSets: String, Codable, Equatable, CaseIterable {
+ case appScreenshots = "appScreenshots"
+ case appStoreVersionLocalization = "appStoreVersionLocalization"
+ case screenshotDisplayType = "screenshotDisplayType"
+ }
+
+ /** the fields to include for returned resources of type appScreenshots */
+ public enum FieldsappScreenshots: String, Codable, Equatable, CaseIterable {
+ case appScreenshotSet = "appScreenshotSet"
+ case assetDeliveryState = "assetDeliveryState"
+ case assetToken = "assetToken"
+ case assetType = "assetType"
+ case fileName = "fileName"
+ case fileSize = "fileSize"
+ case imageAsset = "imageAsset"
+ case sourceFileChecksum = "sourceFileChecksum"
+ case uploadOperations = "uploadOperations"
+ case uploaded = "uploaded"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case appScreenshots = "appScreenshots"
+ case appStoreVersionLocalization = "appStoreVersionLocalization"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** filter by attribute 'screenshotDisplayType' */
+ public var filterscreenshotDisplayType: [FilterscreenshotDisplayType]?
+
+ /** the fields to include for returned resources of type appStoreVersionLocalizations */
+ public var fieldsappStoreVersionLocalizations: [FieldsappStoreVersionLocalizations]?
+
+ /** the fields to include for returned resources of type appScreenshotSets */
+ public var fieldsappScreenshotSets: [FieldsappScreenshotSets]?
+
+ /** the fields to include for returned resources of type appScreenshots */
+ public var fieldsappScreenshots: [FieldsappScreenshots]?
+
+ /** maximum resources per page */
+ public var limit: Int?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ public init(id: String, filterscreenshotDisplayType: [FilterscreenshotDisplayType]? = nil, fieldsappStoreVersionLocalizations: [FieldsappStoreVersionLocalizations]? = nil, fieldsappScreenshotSets: [FieldsappScreenshotSets]? = nil, fieldsappScreenshots: [FieldsappScreenshots]? = nil, limit: Int? = nil, include: [Include]? = nil) {
+ self.id = id
+ self.filterscreenshotDisplayType = filterscreenshotDisplayType
+ self.fieldsappStoreVersionLocalizations = fieldsappStoreVersionLocalizations
+ self.fieldsappScreenshotSets = fieldsappScreenshotSets
+ self.fieldsappScreenshots = fieldsappScreenshots
+ self.limit = limit
+ self.include = include
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppStoreVersionLocalizationsAppScreenshotSetsGetToManyRelated.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, filterscreenshotDisplayType: [FilterscreenshotDisplayType]? = nil, fieldsappStoreVersionLocalizations: [FieldsappStoreVersionLocalizations]? = nil, fieldsappScreenshotSets: [FieldsappScreenshotSets]? = nil, fieldsappScreenshots: [FieldsappScreenshots]? = nil, limit: Int? = nil, include: [Include]? = nil) {
+ let options = Options(id: id, filterscreenshotDisplayType: filterscreenshotDisplayType, fieldsappStoreVersionLocalizations: fieldsappStoreVersionLocalizations, fieldsappScreenshotSets: fieldsappScreenshotSets, fieldsappScreenshots: fieldsappScreenshots, limit: limit, include: include)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let filterscreenshotDisplayType = options.filterscreenshotDisplayType?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["filter[screenshotDisplayType]"] = filterscreenshotDisplayType
+ }
+ if let fieldsappStoreVersionLocalizations = options.fieldsappStoreVersionLocalizations?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appStoreVersionLocalizations]"] = fieldsappStoreVersionLocalizations
+ }
+ if let fieldsappScreenshotSets = options.fieldsappScreenshotSets?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appScreenshotSets]"] = fieldsappScreenshotSets
+ }
+ if let fieldsappScreenshots = options.fieldsappScreenshots?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appScreenshots]"] = fieldsappScreenshots
+ }
+ if let limit = options.limit {
+ params["limit"] = limit
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppScreenshotSetsResponse
+
+ /** List of related resources */
+ case status200(AppScreenshotSetsResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppScreenshotSetsResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status200(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status200: return 200
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status200: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 200: self = try .status200(decoder.decode(AppScreenshotSetsResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreVersionLocalizations/AppStoreVersionLocalizationsCreateInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreVersionLocalizations/AppStoreVersionLocalizationsCreateInstance.swift
new file mode 100644
index 000000000..0e03f4ab9
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreVersionLocalizations/AppStoreVersionLocalizationsCreateInstance.swift
@@ -0,0 +1,119 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppStoreVersionLocalizations {
+
+ public enum AppStoreVersionLocalizationsCreateInstance {
+
+ public static let service = APIService(id: "appStoreVersionLocalizations-create_instance", tag: "AppStoreVersionLocalizations", method: "POST", path: "/v1/appStoreVersionLocalizations", hasBody: true, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public var body: AppStoreVersionLocalizationCreateRequest
+
+ public init(body: AppStoreVersionLocalizationCreateRequest, encoder: RequestEncoder? = nil) {
+ self.body = body
+ super.init(service: AppStoreVersionLocalizationsCreateInstance.service) { defaultEncoder in
+ return try (encoder ?? defaultEncoder).encode(body)
+ }
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppStoreVersionLocalizationResponse
+
+ /** Single AppStoreVersionLocalization */
+ case status201(AppStoreVersionLocalizationResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: AppStoreVersionLocalizationResponse? {
+ switch self {
+ case .status201(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status201(let response): return response
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status409(let response): return response
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status201: return 201
+ case .status400: return 400
+ case .status403: return 403
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status201: return true
+ case .status400: return false
+ case .status403: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 201: self = try .status201(decoder.decode(AppStoreVersionLocalizationResponse.self, from: data))
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreVersionLocalizations/AppStoreVersionLocalizationsDeleteInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreVersionLocalizations/AppStoreVersionLocalizationsDeleteInstance.swift
new file mode 100644
index 000000000..e80eb1b5b
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreVersionLocalizations/AppStoreVersionLocalizationsDeleteInstance.swift
@@ -0,0 +1,145 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppStoreVersionLocalizations {
+
+ public enum AppStoreVersionLocalizationsDeleteInstance {
+
+ public static let service = APIService(id: "appStoreVersionLocalizations-delete_instance", tag: "AppStoreVersionLocalizations", method: "DELETE", path: "/v1/appStoreVersionLocalizations/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ public init(id: String) {
+ self.id = id
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppStoreVersionLocalizationsDeleteInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String) {
+ let options = Options(id: id)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = Void
+
+ /** Success (no content) */
+ case status204
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ /** Request entity error(s) */
+ case status409(ErrorResponse)
+
+ public var success: Void? {
+ switch self {
+ case .status204: return ()
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult {
+ if let successValue = success {
+ return .success(successValue)
+ } else if let failureValue = failure {
+ return .failure(failureValue)
+ } else {
+ fatalError("Response does not have success or failure response")
+ }
+ }
+
+ public var response: Any {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ case .status409(let response): return response
+ default: return ()
+ }
+ }
+
+ public var statusCode: Int {
+ switch self {
+ case .status204: return 204
+ case .status400: return 400
+ case .status403: return 403
+ case .status404: return 404
+ case .status409: return 409
+ }
+ }
+
+ public var successful: Bool {
+ switch self {
+ case .status204: return true
+ case .status400: return false
+ case .status403: return false
+ case .status404: return false
+ case .status409: return false
+ }
+ }
+
+ public init(statusCode: Int, data: Data, decoder: ResponseDecoder) throws {
+ switch statusCode {
+ case 204: self = .status204
+ case 400: self = try .status400(decoder.decode(ErrorResponse.self, from: data))
+ case 403: self = try .status403(decoder.decode(ErrorResponse.self, from: data))
+ case 404: self = try .status404(decoder.decode(ErrorResponse.self, from: data))
+ case 409: self = try .status409(decoder.decode(ErrorResponse.self, from: data))
+ default: throw APIClientError.unexpectedStatusCode(statusCode: statusCode, data: data)
+ }
+ }
+
+ public var description: String {
+ return "\(statusCode) \(successful ? "success" : "failure")"
+ }
+
+ public var debugDescription: String {
+ var string = description
+ let responseString = "\(response)"
+ if responseString != "()" {
+ string += "\n\(responseString)"
+ }
+ return string
+ }
+ }
+ }
+}
diff --git a/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreVersionLocalizations/AppStoreVersionLocalizationsGetInstance.swift b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreVersionLocalizations/AppStoreVersionLocalizationsGetInstance.swift
new file mode 100644
index 000000000..d8c7e619d
--- /dev/null
+++ b/Specs/AppStoreConnect/generated/Swift/Sources/Requests/AppStoreVersionLocalizations/AppStoreVersionLocalizationsGetInstance.swift
@@ -0,0 +1,219 @@
+//
+// Generated by SwagGen
+// https://github.com/yonaskolb/SwagGen
+//
+
+import Foundation
+
+extension AppStoreConnect.AppStoreVersionLocalizations {
+
+ public enum AppStoreVersionLocalizationsGetInstance {
+
+ public static let service = APIService(id: "appStoreVersionLocalizations-get_instance", tag: "AppStoreVersionLocalizations", method: "GET", path: "/v1/appStoreVersionLocalizations/{id}", hasBody: false, securityRequirements: [SecurityRequirement(type: "itc-bearer-token", scopes: [])])
+
+ /** the fields to include for returned resources of type appStoreVersionLocalizations */
+ public enum FieldsappStoreVersionLocalizations: String, Codable, Equatable, CaseIterable {
+ case appPreviewSets = "appPreviewSets"
+ case appScreenshotSets = "appScreenshotSets"
+ case appStoreVersion = "appStoreVersion"
+ case description = "description"
+ case keywords = "keywords"
+ case locale = "locale"
+ case marketingUrl = "marketingUrl"
+ case promotionalText = "promotionalText"
+ case supportUrl = "supportUrl"
+ case whatsNew = "whatsNew"
+ }
+
+ /** comma-separated list of relationships to include */
+ public enum Include: String, Codable, Equatable, CaseIterable {
+ case appPreviewSets = "appPreviewSets"
+ case appScreenshotSets = "appScreenshotSets"
+ case appStoreVersion = "appStoreVersion"
+ }
+
+ /** the fields to include for returned resources of type appScreenshotSets */
+ public enum FieldsappScreenshotSets: String, Codable, Equatable, CaseIterable {
+ case appScreenshots = "appScreenshots"
+ case appStoreVersionLocalization = "appStoreVersionLocalization"
+ case screenshotDisplayType = "screenshotDisplayType"
+ }
+
+ /** the fields to include for returned resources of type appPreviewSets */
+ public enum FieldsappPreviewSets: String, Codable, Equatable, CaseIterable {
+ case appPreviews = "appPreviews"
+ case appStoreVersionLocalization = "appStoreVersionLocalization"
+ case previewType = "previewType"
+ }
+
+ public final class Request: APIRequest {
+
+ public struct Options {
+
+ /** the id of the requested resource */
+ public var id: String
+
+ /** the fields to include for returned resources of type appStoreVersionLocalizations */
+ public var fieldsappStoreVersionLocalizations: [FieldsappStoreVersionLocalizations]?
+
+ /** comma-separated list of relationships to include */
+ public var include: [Include]?
+
+ /** the fields to include for returned resources of type appScreenshotSets */
+ public var fieldsappScreenshotSets: [FieldsappScreenshotSets]?
+
+ /** the fields to include for returned resources of type appPreviewSets */
+ public var fieldsappPreviewSets: [FieldsappPreviewSets]?
+
+ /** maximum number of related appPreviewSets returned (when they are included) */
+ public var limitappPreviewSets: Int?
+
+ /** maximum number of related appScreenshotSets returned (when they are included) */
+ public var limitappScreenshotSets: Int?
+
+ public init(id: String, fieldsappStoreVersionLocalizations: [FieldsappStoreVersionLocalizations]? = nil, include: [Include]? = nil, fieldsappScreenshotSets: [FieldsappScreenshotSets]? = nil, fieldsappPreviewSets: [FieldsappPreviewSets]? = nil, limitappPreviewSets: Int? = nil, limitappScreenshotSets: Int? = nil) {
+ self.id = id
+ self.fieldsappStoreVersionLocalizations = fieldsappStoreVersionLocalizations
+ self.include = include
+ self.fieldsappScreenshotSets = fieldsappScreenshotSets
+ self.fieldsappPreviewSets = fieldsappPreviewSets
+ self.limitappPreviewSets = limitappPreviewSets
+ self.limitappScreenshotSets = limitappScreenshotSets
+ }
+ }
+
+ public var options: Options
+
+ public init(options: Options) {
+ self.options = options
+ super.init(service: AppStoreVersionLocalizationsGetInstance.service)
+ }
+
+ /// convenience initialiser so an Option doesn't have to be created
+ public convenience init(id: String, fieldsappStoreVersionLocalizations: [FieldsappStoreVersionLocalizations]? = nil, include: [Include]? = nil, fieldsappScreenshotSets: [FieldsappScreenshotSets]? = nil, fieldsappPreviewSets: [FieldsappPreviewSets]? = nil, limitappPreviewSets: Int? = nil, limitappScreenshotSets: Int? = nil) {
+ let options = Options(id: id, fieldsappStoreVersionLocalizations: fieldsappStoreVersionLocalizations, include: include, fieldsappScreenshotSets: fieldsappScreenshotSets, fieldsappPreviewSets: fieldsappPreviewSets, limitappPreviewSets: limitappPreviewSets, limitappScreenshotSets: limitappScreenshotSets)
+ self.init(options: options)
+ }
+
+ public override var path: String {
+ return super.path.replacingOccurrences(of: "{" + "id" + "}", with: "\(self.options.id)")
+ }
+
+ public override var queryParameters: [String: Any] {
+ var params: [String: Any] = [:]
+ if let fieldsappStoreVersionLocalizations = options.fieldsappStoreVersionLocalizations?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appStoreVersionLocalizations]"] = fieldsappStoreVersionLocalizations
+ }
+ if let include = options.include?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["include"] = include
+ }
+ if let fieldsappScreenshotSets = options.fieldsappScreenshotSets?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appScreenshotSets]"] = fieldsappScreenshotSets
+ }
+ if let fieldsappPreviewSets = options.fieldsappPreviewSets?.encode().map({ String(describing: $0) }).joined(separator: ",") {
+ params["fields[appPreviewSets]"] = fieldsappPreviewSets
+ }
+ if let limitappPreviewSets = options.limitappPreviewSets {
+ params["limit[appPreviewSets]"] = limitappPreviewSets
+ }
+ if let limitappScreenshotSets = options.limitappScreenshotSets {
+ params["limit[appScreenshotSets]"] = limitappScreenshotSets
+ }
+ return params
+ }
+ }
+
+ public enum Response: APIResponseValue, CustomStringConvertible, CustomDebugStringConvertible {
+ public typealias SuccessType = AppStoreVersionLocalizationResponse
+
+ /** Single AppStoreVersionLocalization */
+ case status200(AppStoreVersionLocalizationResponse)
+
+ /** Parameter error(s) */
+ case status400(ErrorResponse)
+
+ /** Forbidden error */
+ case status403(ErrorResponse)
+
+ /** Not found error */
+ case status404(ErrorResponse)
+
+ public var success: AppStoreVersionLocalizationResponse? {
+ switch self {
+ case .status200(let response): return response
+ default: return nil
+ }
+ }
+
+ public var failure: ErrorResponse? {
+ switch self {
+ case .status400(let response): return response
+ case .status403(let response): return response
+ case .status404(let response): return response
+ default: return nil
+ }
+ }
+
+ /// either success or failure value. Success is anything in the 200..<300 status code range
+ public var responseResult: APIResponseResult