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>
This commit was merged in pull request #5.
This commit is contained in:
1 parent
3aaf5cd7a5
commit
0431fb5133
27 files changed
+1046471
-284
No files matched your search
+116
-10
@@ -1,20 +1,28 @@
|
||||
# ``APIProtocol``
|
||||
|
||||
A protocol defining the available operations for the App Store Connect API.
|
||||
The operations of the App Store Connect API.
|
||||
|
||||
## Overview
|
||||
|
||||
The ``APIProtocol`` protocol declares the complete set of operations available through the App Store Connect API. Each method corresponds to an HTTP endpoint and follows a consistent naming pattern:
|
||||
Each method calls one endpoint, and is named after its resource followed by its action:
|
||||
|
||||
- `<resource>GetCollection` — List resources (HTTP `GET` on a collection)
|
||||
- `<resource>CreateInstance` — Create a resource (HTTP `POST`)
|
||||
- `<resource>GetInstance` — Get a single resource by ID (HTTP `GET`)
|
||||
- `<resource>UpdateInstance` — Update a resource (HTTP `PATCH`)
|
||||
- `<resource>DeleteInstance` — Delete a resource (HTTP `DELETE`)
|
||||
- `<resource>GetToManyRelated` — Fetch related resources
|
||||
- `<resource>GetToOneRelated` — Fetch a related resource
|
||||
| Suffix | HTTP method | Action |
|
||||
| --- | --- | --- |
|
||||
| `GetCollection` | `GET` | List resources |
|
||||
| `GetInstance` | `GET` | Get a resource by ID |
|
||||
| `CreateInstance` | `POST` | Create a resource |
|
||||
| `UpdateInstance` | `PATCH` | Update a resource |
|
||||
| `DeleteInstance` | `DELETE` | Delete a resource |
|
||||
| `GetToOneRelated`, `GetToManyRelated` | `GET` | Get related resources |
|
||||
| `GetToOneRelationship`, `GetToManyRelationship` | `GET` | Get the IDs of related resources |
|
||||
| `CreateToManyRelationship` | `POST` | Add relationships |
|
||||
| `UpdateToOneRelationship`, `ReplaceToManyRelationship` | `PATCH` | Replace relationships |
|
||||
| `DeleteToManyRelationship` | `DELETE` | Remove relationships |
|
||||
| `GetMetrics` | `GET` | Get metrics |
|
||||
|
||||
The ``Client`` type conforms to this protocol and provides the concrete implementation for making HTTP requests.
|
||||
For example, ``appsGetCollection(_:)`` lists apps, and ``appsBuildsGetToManyRelated(_:)`` lists the builds of an app.
|
||||
|
||||
Every method also has an overload that takes the `path`, `query`, `headers`, and `body` of its `Input` as separate arguments. ``Client`` provides the implementation.
|
||||
|
||||
## Topics
|
||||
|
||||
@@ -106,6 +114,9 @@ The ``Client`` type conforms to this protocol and provides the concrete implemen
|
||||
- ``appsSubscriptionGracePeriodGetToOneRelated(_:)``
|
||||
- ``appsSubscriptionGroupsGetToManyRelated(_:)``
|
||||
- ``appsWebhooksGetToManyRelated(_:)``
|
||||
- ``appsAssetLibraryGetToOneRelationship(_:)``
|
||||
- ``appsAssetLibraryGetToOneRelated(_:)``
|
||||
- ``appsPerformanceOverviewsGetToManyRelated(_:)``
|
||||
- ``appInfosGetInstance(_:)``
|
||||
- ``appInfosUpdateInstance(_:)``
|
||||
- ``appInfosAgeRatingDeclarationGetToOneRelated(_:)``
|
||||
@@ -207,6 +218,8 @@ The ``Client`` type conforms to this protocol and provides the concrete implemen
|
||||
- ``appStoreVersionLocalizationsSearchKeywordsCreateToManyRelationship(_:)``
|
||||
- ``appStoreVersionLocalizationsSearchKeywordsDeleteToManyRelationship(_:)``
|
||||
- ``appStoreVersionLocalizationsSearchKeywordsGetToManyRelated(_:)``
|
||||
- ``appStoreVersionLocalizationsPlacementsGetToManyRelationship(_:)``
|
||||
- ``appStoreVersionLocalizationsPlacementsGetToManyRelated(_:)``
|
||||
- ``appStoreVersionPhasedReleasesCreateInstance(_:)``
|
||||
- ``appStoreVersionPhasedReleasesUpdateInstance(_:)``
|
||||
- ``appStoreVersionPhasedReleasesDeleteInstance(_:)``
|
||||
@@ -241,6 +254,8 @@ The ``Client`` type conforms to this protocol and provides the concrete implemen
|
||||
- ``appStoreVersionExperimentTreatmentLocalizationsAppScreenshotSetsGetToManyRelated(_:)``
|
||||
- ``appStoreVersionExperimentTreatmentLocalizationsAppPreviewSetsGetToManyRelationship(_:)``
|
||||
- ``appStoreVersionExperimentTreatmentLocalizationsAppScreenshotSetsGetToManyRelationship(_:)``
|
||||
- ``appStoreVersionExperimentTreatmentLocalizationsPlacementsGetToManyRelationship(_:)``
|
||||
- ``appStoreVersionExperimentTreatmentLocalizationsPlacementsGetToManyRelated(_:)``
|
||||
|
||||
### App Custom Product Pages
|
||||
|
||||
@@ -267,6 +282,8 @@ The ``Client`` type conforms to this protocol and provides the concrete implemen
|
||||
- ``appCustomProductPageLocalizationsSearchKeywordsCreateToManyRelationship(_:)``
|
||||
- ``appCustomProductPageLocalizationsSearchKeywordsDeleteToManyRelationship(_:)``
|
||||
- ``appCustomProductPageLocalizationsSearchKeywordsGetToManyRelated(_:)``
|
||||
- ``appCustomProductPageLocalizationsPlacementsGetToManyRelationship(_:)``
|
||||
- ``appCustomProductPageLocalizationsPlacementsGetToManyRelated(_:)``
|
||||
|
||||
### App Clips
|
||||
|
||||
@@ -322,6 +339,8 @@ The ``Client`` type conforms to this protocol and provides the concrete implemen
|
||||
- ``appEventLocalizationsAppEventVideoClipsGetToManyRelated(_:)``
|
||||
- ``appEventLocalizationsAppEventScreenshotsGetToManyRelationship(_:)``
|
||||
- ``appEventLocalizationsAppEventVideoClipsGetToManyRelationship(_:)``
|
||||
- ``appEventLocalizationsPlacementsGetToManyRelationship(_:)``
|
||||
- ``appEventLocalizationsPlacementsGetToManyRelated(_:)``
|
||||
- ``appEventScreenshotsCreateInstance(_:)``
|
||||
- ``appEventScreenshotsGetInstance(_:)``
|
||||
- ``appEventScreenshotsUpdateInstance(_:)``
|
||||
@@ -358,6 +377,32 @@ The ``Client`` type conforms to this protocol and provides the concrete implemen
|
||||
- ``routingAppCoveragesUpdateInstance(_:)``
|
||||
- ``routingAppCoveragesDeleteInstance(_:)``
|
||||
|
||||
### App Asset Library
|
||||
|
||||
- ``appAssetLibrariesGetInstance(_:)``
|
||||
- ``appAssetLibrariesImagesGetToManyRelationship(_:)``
|
||||
- ``appAssetLibrariesImagesGetToManyRelated(_:)``
|
||||
- ``appAssetLibrariesVideosGetToManyRelationship(_:)``
|
||||
- ``appAssetLibrariesVideosGetToManyRelated(_:)``
|
||||
- ``appAssetLibraryImagesCreateInstance(_:)``
|
||||
- ``appAssetLibraryImagesGetInstance(_:)``
|
||||
- ``appAssetLibraryImagesUpdateInstance(_:)``
|
||||
- ``appAssetLibraryImagesDeleteInstance(_:)``
|
||||
- ``appAssetLibraryImagesPlacementsGetToManyRelationship(_:)``
|
||||
- ``appAssetLibraryImagesPlacementsGetToManyRelated(_:)``
|
||||
- ``appAssetLibraryVideosCreateInstance(_:)``
|
||||
- ``appAssetLibraryVideosGetInstance(_:)``
|
||||
- ``appAssetLibraryVideosUpdateInstance(_:)``
|
||||
- ``appAssetLibraryVideosDeleteInstance(_:)``
|
||||
- ``appAssetLibraryVideosPlacementsGetToManyRelationship(_:)``
|
||||
- ``appAssetLibraryVideosPlacementsGetToManyRelated(_:)``
|
||||
- ``appAssetLibraryPlacementsCreateInstance(_:)``
|
||||
- ``appAssetLibraryPlacementsGetInstance(_:)``
|
||||
- ``appAssetLibraryPlacementsDeleteInstance(_:)``
|
||||
- ``appAssetLibraryPlacementOrderingRequestsCreateInstance(_:)``
|
||||
- ``appAssetLibraryRefDataGetCollection(_:)``
|
||||
- ``appAssetLibraryRefDataGetInstance(_:)``
|
||||
|
||||
### App Encryption
|
||||
|
||||
- ``appEncryptionDeclarationsGetCollection(_:)``
|
||||
@@ -581,15 +626,33 @@ The ``Client`` type conforms to this protocol and provides the concrete implemen
|
||||
- ``inAppPurchasesV2OfferCodesGetToManyRelationship(_:)``
|
||||
- ``inAppPurchasesV2PricePointsGetToManyRelationship(_:)``
|
||||
- ``inAppPurchasesV2PromotedPurchaseGetToOneRelationship(_:)``
|
||||
- ``inAppPurchasesV2VersionsGetToManyRelationship(_:)``
|
||||
- ``inAppPurchasesV2VersionsGetToManyRelated(_:)``
|
||||
- ``inAppPurchaseVersionsCreateInstance(_:)``
|
||||
- ``inAppPurchaseVersionsGetInstance(_:)``
|
||||
- ``inAppPurchaseVersionsImageGetToOneRelationship(_:)``
|
||||
- ``inAppPurchaseVersionsImageGetToOneRelated(_:)``
|
||||
- ``inAppPurchaseVersionsImagesGetToManyRelationship(_:)``
|
||||
- ``inAppPurchaseVersionsImagesGetToManyRelated(_:)``
|
||||
- ``inAppPurchaseVersionsLocalizationsGetToManyRelationship(_:)``
|
||||
- ``inAppPurchaseVersionsLocalizationsGetToManyRelated(_:)``
|
||||
- ``inAppPurchaseLocalizationsCreateInstance(_:)``
|
||||
- ``inAppPurchaseLocalizationsGetInstance(_:)``
|
||||
- ``inAppPurchaseLocalizationsUpdateInstance(_:)``
|
||||
- ``inAppPurchaseLocalizationsDeleteInstance(_:)``
|
||||
- ``inAppPurchaseLocalizationsV2CreateInstance(_:)``
|
||||
- ``inAppPurchaseLocalizationsV2GetInstance(_:)``
|
||||
- ``inAppPurchaseLocalizationsV2UpdateInstance(_:)``
|
||||
- ``inAppPurchaseLocalizationsV2DeleteInstance(_:)``
|
||||
- ``inAppPurchaseContentsGetInstance(_:)``
|
||||
- ``inAppPurchaseImagesCreateInstance(_:)``
|
||||
- ``inAppPurchaseImagesGetInstance(_:)``
|
||||
- ``inAppPurchaseImagesUpdateInstance(_:)``
|
||||
- ``inAppPurchaseImagesDeleteInstance(_:)``
|
||||
- ``inAppPurchaseImagesV2CreateInstance(_:)``
|
||||
- ``inAppPurchaseImagesV2GetInstance(_:)``
|
||||
- ``inAppPurchaseImagesV2UpdateInstance(_:)``
|
||||
- ``inAppPurchaseImagesV2DeleteInstance(_:)``
|
||||
- ``inAppPurchaseAppStoreReviewScreenshotsCreateInstance(_:)``
|
||||
- ``inAppPurchaseAppStoreReviewScreenshotsGetInstance(_:)``
|
||||
- ``inAppPurchaseAppStoreReviewScreenshotsUpdateInstance(_:)``
|
||||
@@ -660,6 +723,18 @@ The ``Client`` type conforms to this protocol and provides the concrete implemen
|
||||
- ``subscriptionsSubscriptionAvailabilityGetToOneRelated(_:)``
|
||||
- ``subscriptionsSubscriptionLocalizationsGetToManyRelated(_:)``
|
||||
- ``subscriptionsWinBackOffersGetToManyRelated(_:)``
|
||||
- ``subscriptionsPlanAvailabilitiesGetToManyRelationship(_:)``
|
||||
- ``subscriptionsPlanAvailabilitiesGetToManyRelated(_:)``
|
||||
- ``subscriptionsVersionsGetToManyRelationship(_:)``
|
||||
- ``subscriptionsVersionsGetToManyRelated(_:)``
|
||||
- ``subscriptionVersionsCreateInstance(_:)``
|
||||
- ``subscriptionVersionsGetInstance(_:)``
|
||||
- ``subscriptionVersionsImageGetToOneRelationship(_:)``
|
||||
- ``subscriptionVersionsImageGetToOneRelated(_:)``
|
||||
- ``subscriptionVersionsImagesGetToManyRelationship(_:)``
|
||||
- ``subscriptionVersionsImagesGetToManyRelated(_:)``
|
||||
- ``subscriptionVersionsLocalizationsGetToManyRelationship(_:)``
|
||||
- ``subscriptionVersionsLocalizationsGetToManyRelated(_:)``
|
||||
- ``subscriptionGroupsCreateInstance(_:)``
|
||||
- ``subscriptionGroupsGetInstance(_:)``
|
||||
- ``subscriptionGroupsUpdateInstance(_:)``
|
||||
@@ -668,19 +743,37 @@ The ``Client`` type conforms to this protocol and provides the concrete implemen
|
||||
- ``subscriptionGroupsSubscriptionsGetToManyRelationship(_:)``
|
||||
- ``subscriptionGroupsSubscriptionGroupLocalizationsGetToManyRelated(_:)``
|
||||
- ``subscriptionGroupsSubscriptionsGetToManyRelated(_:)``
|
||||
- ``subscriptionGroupsVersionsGetToManyRelationship(_:)``
|
||||
- ``subscriptionGroupsVersionsGetToManyRelated(_:)``
|
||||
- ``subscriptionGroupVersionsCreateInstance(_:)``
|
||||
- ``subscriptionGroupVersionsGetInstance(_:)``
|
||||
- ``subscriptionGroupVersionsLocalizationsGetToManyRelationship(_:)``
|
||||
- ``subscriptionGroupVersionsLocalizationsGetToManyRelated(_:)``
|
||||
- ``subscriptionGroupLocalizationsCreateInstance(_:)``
|
||||
- ``subscriptionGroupLocalizationsGetInstance(_:)``
|
||||
- ``subscriptionGroupLocalizationsUpdateInstance(_:)``
|
||||
- ``subscriptionGroupLocalizationsDeleteInstance(_:)``
|
||||
- ``subscriptionGroupLocalizationsV2CreateInstance(_:)``
|
||||
- ``subscriptionGroupLocalizationsV2GetInstance(_:)``
|
||||
- ``subscriptionGroupLocalizationsV2UpdateInstance(_:)``
|
||||
- ``subscriptionGroupLocalizationsV2DeleteInstance(_:)``
|
||||
- ``subscriptionGroupSubmissionsCreateInstance(_:)``
|
||||
- ``subscriptionLocalizationsCreateInstance(_:)``
|
||||
- ``subscriptionLocalizationsGetInstance(_:)``
|
||||
- ``subscriptionLocalizationsUpdateInstance(_:)``
|
||||
- ``subscriptionLocalizationsDeleteInstance(_:)``
|
||||
- ``subscriptionLocalizationsV2CreateInstance(_:)``
|
||||
- ``subscriptionLocalizationsV2GetInstance(_:)``
|
||||
- ``subscriptionLocalizationsV2UpdateInstance(_:)``
|
||||
- ``subscriptionLocalizationsV2DeleteInstance(_:)``
|
||||
- ``subscriptionImagesCreateInstance(_:)``
|
||||
- ``subscriptionImagesGetInstance(_:)``
|
||||
- ``subscriptionImagesUpdateInstance(_:)``
|
||||
- ``subscriptionImagesDeleteInstance(_:)``
|
||||
- ``subscriptionImagesV2CreateInstance(_:)``
|
||||
- ``subscriptionImagesV2GetInstance(_:)``
|
||||
- ``subscriptionImagesV2UpdateInstance(_:)``
|
||||
- ``subscriptionImagesV2DeleteInstance(_:)``
|
||||
- ``subscriptionAppStoreReviewScreenshotsCreateInstance(_:)``
|
||||
- ``subscriptionAppStoreReviewScreenshotsGetInstance(_:)``
|
||||
- ``subscriptionAppStoreReviewScreenshotsUpdateInstance(_:)``
|
||||
@@ -689,6 +782,12 @@ The ``Client`` type conforms to this protocol and provides the concrete implemen
|
||||
- ``subscriptionAvailabilitiesGetInstance(_:)``
|
||||
- ``subscriptionAvailabilitiesAvailableTerritoriesGetToManyRelated(_:)``
|
||||
- ``subscriptionAvailabilitiesAvailableTerritoriesGetToManyRelationship(_:)``
|
||||
- ``subscriptionPlanAvailabilitiesCreateInstance(_:)``
|
||||
- ``subscriptionPlanAvailabilitiesGetInstance(_:)``
|
||||
- ``subscriptionPlanAvailabilitiesUpdateInstance(_:)``
|
||||
- ``subscriptionPlanAvailabilitiesAvailableTerritoriesGetToManyRelationship(_:)``
|
||||
- ``subscriptionPlanAvailabilitiesAvailableTerritoriesReplaceToManyRelationship(_:)``
|
||||
- ``subscriptionPlanAvailabilitiesAvailableTerritoriesGetToManyRelated(_:)``
|
||||
- ``subscriptionGracePeriodsGetInstance(_:)``
|
||||
- ``subscriptionGracePeriodsUpdateInstance(_:)``
|
||||
- ``subscriptionIntroductoryOffersCreateInstance(_:)``
|
||||
@@ -713,6 +812,7 @@ The ``Client`` type conforms to this protocol and provides the concrete implemen
|
||||
- ``subscriptionPricePointsGetInstance(_:)``
|
||||
- ``subscriptionPricePointsEqualizationsGetToManyRelated(_:)``
|
||||
- ``subscriptionPricePointsEqualizationsGetToManyRelationship(_:)``
|
||||
- ``subscriptionPricePointsAdjustedEqualizationsGetToManyRelated(_:)``
|
||||
- ``subscriptionPricesCreateInstance(_:)``
|
||||
- ``subscriptionPricesDeleteInstance(_:)``
|
||||
- ``subscriptionPromotionalOffersCreateInstance(_:)``
|
||||
@@ -773,6 +873,9 @@ The ``Client`` type conforms to this protocol and provides the concrete implemen
|
||||
- ``gameCenterDetailsGameCenterLeaderboardsV2ReplaceToManyRelationship(_:)``
|
||||
- ``gameCenterDetailsLeaderboardReleasesGetToManyRelationship(_:)``
|
||||
- ``gameCenterDetailsLeaderboardSetReleasesGetToManyRelationship(_:)``
|
||||
- ``gameCenterDetailsBlockedPlayersGetToManyRelationship(_:)``
|
||||
- ``gameCenterDetailsBlockedPlayersGetToManyRelated(_:)``
|
||||
- ``gameCenterDetailPlayersUpdateInstance(_:)``
|
||||
- ``gameCenterGroupsGetCollection(_:)``
|
||||
- ``gameCenterGroupsCreateInstance(_:)``
|
||||
- ``gameCenterGroupsGetInstance(_:)``
|
||||
@@ -871,6 +974,9 @@ The ``Client`` type conforms to this protocol and provides the concrete implemen
|
||||
- ``gameCenterLeaderboardsV2ChallengeUpdateToOneRelationship(_:)``
|
||||
- ``gameCenterLeaderboardsV2VersionsGetToManyRelationship(_:)``
|
||||
- ``gameCenterLeaderboardsV2VersionsGetToManyRelated(_:)``
|
||||
- ``gameCenterLeaderboardsV2GameCenterScoreModerationsGetToManyRelationship(_:)``
|
||||
- ``gameCenterLeaderboardsV2GameCenterScoreModerationsGetToManyRelated(_:)``
|
||||
- ``gameCenterScoreModerationsUpdateInstance(_:)``
|
||||
- ``gameCenterLeaderboardVersionsV2CreateInstance(_:)``
|
||||
- ``gameCenterLeaderboardVersionsV2GetInstance(_:)``
|
||||
- ``gameCenterLeaderboardVersionsV2LocalizationsGetToManyRelated(_:)``
|
||||
|
||||
Reference in new issue
Block a user