Commit Graph
6 Commits
Author SHA1 Message Date
javier 0431fb5133 Overhauled the library with several new features (#5)
## Summary

Updates the library to v4.5.1 of the App Store Connect API, and ships it as a breaking 2.0.0 release with pagination, API key authentication, rate limiting, and a lighter install for consumers.

## Breaking changes

- **Minimum platforms:** iOS 14, macOS 11, tvOS 14, watchOS 7, and visionOS 1.
- **Toolchain:** Swift 6.0+ (Xcode 16+). The package builds in the Swift 6 language mode.
- **Runtime:** requires `swift-openapi-runtime` 1.11.0 or later.

## Changes

- **API:** updated the OpenAPI specification to v4.5.1, covering 1,303 operations and 1,473 schemas.
- **Pagination:** the spec patch adds the undocumented `cursor` query parameter to the 465 paged operations. `PagedDocumentLinks.nextCursor` reads the cursor from a page, and `PagedSequence` iterates every page.
- **Authentication:** `APIKeyTokenProvider` signs ES256 tokens from an API key and reuses each one until a minute before it expires. `BearerAuthMiddleware` now accepts a token provider.
- **Rate limiting:** `RateLimitMiddleware` retries `429` responses, waiting for `Retry-After` or backing off exponentially.
- **Generated code:** committed to `Sources/ASConnectService/Sources/Public/Generated` instead of generated by a build plugin. Consumers now resolve 4 packages instead of 12, and Xcode no longer asks to trust a plugin.
- **Tooling:**
  - `make oas-download` now downloads, patches, generates, and checks the docs in one go.
  - New `make oas-generate`, `make oas-validate`, and `make doc-check` targets.
  - The generator is pinned in `Tools/`, and the DocC plugin is only resolved by the documentation targets.
- **Documentation:** the DocC catalog now lists every operation and schema in the spec, and the catalog and README are rewritten for the new APIs.
- **Housekeeping:** Apache 2.0 license headers on every Swift file, including `Package.swift` and the tests.

Reviewed-on: #5
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
v2.0.0
2026-10-25 17:52:37 +00:00
javier 3aaf5cd7a5 Overall update and improvements (#4)
This PR contains all the work done to update the App Store Connect OpenAPI specification document to its latest version, plus the implementation of the `BearerAuthMiddleware` middleware, and several other improvements to the setup of the library, the `Makefile` file, and the documentation.

Reviewed-on: #4
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
Co-committed-by: Javier Cicchelli <javier@rock-n-code.com>
v1.0.0
2026-03-26 01:07:23 +00:00
javier e884fcf8a4 Update license to Apache v2.0 (#3)
This PR contains the work done to update the license of this project to *Apache v2.0* and also, fixed some small issues encountered in the `Open API specification` documentation downloaded from the [App Store Connect API documentation](https://developer.apple.com/documentation/appstoreconnectapi/) website.

Reviewed-on: #3
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
Co-committed-by: Javier Cicchelli <javier@rock-n-code.com>
2025-10-07 23:20:01 +00:00
javier 825e9e8e7c OpenAPI client (#2)
This PR contains the work done to add the `Open API` dependencies into the library, plus to configure a dynamically generated client based on the latest [App Store Connect OAS document](https://developer.apple.com/sample-code/app-store-connect/app-store-connect-openapi-specification.zip), downloaded from the [App Store Connect documentation](https://developer.apple.com/documentation/appstoreconnectapi/) website.

Reviewed-on: #2
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
Co-committed-by: Javier Cicchelli <javier@rock-n-code.com>
2025-10-06 14:51:36 +00:00
javier 7812e0f11c Library setup (#1)
This PR contains the work done to setup this library.
* Improved the configuration, products, dependencies, and targets for the `Package` file;
* Restructured the folder structure of the library and test targets to start development work;
* Implemented the library, package, documentation and IDE tasks for the `Makefile` file.
* Created the `DocC` documentation catalog in the library target;
* Added the `CONTRIBUTORS` and `LICENSE` files;
* Added `README` file.

Reviewed-on: #1
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
Co-committed-by: Javier Cicchelli <javier@rock-n-code.com>
2025-10-05 23:16:54 +00:00
javier 817cf9fe95 Initial Commit 2025-10-06 00:45:21 +02:00