App Store Connect API

RSS for tag

The App Store Connect API helps you automate tasks usually done on the Apple Developer website and App Store Connect.

App Store Connect API Documentation

Post

Replies

Boosts

Views

Activity

Update for the subscriptionPricePoints Endpoint
I received an email from the app store that contained this message We’re reaching out to let you know that the subscriptionPricePoints endpoint now requires a territory relationship filter. If you use the App Store Connect API to configure your subscriptions, please note that you'll be required to define this filter in an upcoming release. but I can't understant it, please could anyon explain what they want or what should I do? my app was built with Flutter and had in-app purchase
1
5
1.7k
Oct ’24
External Purchase Report 401 error
Features being implemented store External Payment Report Implementation Language and Framework JAVA springboot a problem https://developer.apple.com/documentation/externalpurchaseserverapi/send-external-purchase-report?changes=latest_major I send jwt tokens in the header to the apple endpoint If a 401 authentication error occurs all of a sudden while being sent successfully in the beginning, a 401 error has occurred since then What I checked Tokens are being re-created and sent every time a report is sent I'm currently using aws ec2 load balancer and I get 401 error and when I shut down Tomcat and restart it, it works normally and then the above problem occurs again Even if I send the token that I used to send since 401 happened using postman, 401 error If my local server issues tokens again with the same content and sends the report to postman, it works fine Considering the above problems and the confirmed contents, why 401 problems suddenly occur I'd like to know how to solve that part. private String keyId="******"; private String issuerId="******"; private String bundleId = "ai.******"; Instant now = Instant.now(); Date issuedAt = Date.from(now); Date expiresAt = Date.from(now.plusSeconds(20 * 60)); public String createToken(){ try { PrivateKey key = getPrivateKey(); return Jwts.builder() .setHeaderParam("alg", "ES256") .setHeaderParam("kid", keyId) .setHeaderParam("typ", "JWT") .setIssuer(issuerId) .setIssuedAt(issuedAt) .setExpiration(expiresAt) .setAudience("appstoreconnect-v1") .signWith(key, SignatureAlgorithm.ES256) .claim("bid",bundleId) .compact(); }catch (Exception e){ e.printStackTrace(); throw new RuntimeException("JWT error", e); } } private static PrivateKey getPrivateKey() throws IOException, NoSuchAlgorithmException, InvalidKeySpecException { InputStream privateKey = new ClassPathResource("certs/SubscriptionKey_***********.p8").getInputStream(); String result = new BufferedReader(new InputStreamReader(privateKey)) .lines().collect(Collectors.joining("\n")); String key = result.replace("-----BEGIN PRIVATE KEY-----\n", "") .replace("-----END PRIVATE KEY-----", "") .replace("\n", ""); byte[] decoded = Base64.getDecoder().decode(key); PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(decoded); KeyFactory keyFactory = KeyFactory.getInstance("EC"); return keyFactory.generatePrivate(keySpec); }
1
0
37
1d
External Purchase Report 401 error
We are producing a function to submit an Apple external purchase report. When I sent the report, I created a jwt token and put it in the header There are times when you operate normally and suddenly get a 401 error. When I checked the entity to log before sending the report, I found that the header was well contained and the token changed every time I called. Once you get 401 error, you have to shut down your server(tomcat) once and run it again May I know what kind of problem is causing this phenomenon? Or can I find a way to fix the problem? The server is using aws ec2 load balancer The back language is java spring boot jwt token create code private String keyId="******"; private String issuerId="******"; private String bundleId = "ai.******"; Instant now = Instant.now(); Date issuedAt = Date.from(now); Date expiresAt = Date.from(now.plusSeconds(20 * 60)); public String createToken(){ try { PrivateKey key = getPrivateKey(); return Jwts.builder() .setHeaderParam("alg", "ES256") .setHeaderParam("kid", keyId) .setHeaderParam("typ", "JWT") .setIssuer(issuerId) .setIssuedAt(issuedAt) .setExpiration(expiresAt) .setAudience("appstoreconnect-v1") .signWith(key, SignatureAlgorithm.ES256) .claim("bid",bundleId) .compact(); }catch (Exception e){ e.printStackTrace(); throw new RuntimeException("JWT error", e); } } private static PrivateKey getPrivateKey() throws IOException, NoSuchAlgorithmException, InvalidKeySpecException { InputStream privateKey = new ClassPathResource("certs/SubscriptionKey_***********.p8").getInputStream(); String result = new BufferedReader(new InputStreamReader(privateKey)) .lines().collect(Collectors.joining("\n")); String key = result.replace("-----BEGIN PRIVATE KEY-----\n", "") .replace("-----END PRIVATE KEY-----", "") .replace("\n", ""); byte[] decoded = Base64.getDecoder().decode(key); PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(decoded); KeyFactory keyFactory = KeyFactory.getInstance("EC"); return keyFactory.generatePrivate(keySpec); }
0
0
84
1d
Getting Active Devices via the API?
I am trying to retrieve the numbers displayed in "App Analytics" under "Metrics" > "Active Devices" using the API. Since there does not seem to be a dedicated report for this metric I am using the daily "App Sessions Standard" report and by looking at the "Sessions" field I am able to recreate the numbers displayed for the "Sessions" metric. However if I try to infer the active devices by looking at the "Unique Devices" field my numbers for individual days are in the same ballpark (deviations may be attributable to privacy reasons?), but the total number of devices is way off. Is there a better way to recreate this metric?
0
0
56
1d
Auto renewable subscriptions disappear after submitting the app for review
I added auto renewable subscriptions to my app. First submission of IAPs require a new build along with it. I tested everything locally through the .storekit file. Everything worked perfectly so I submitted it for review. The moment I did so, StoreKit.Product.products(for:) stops returning the products. If I click on the "Sync" button on .storekit now the pre-existing subscriptions disappear. Apple reviews the build and states that there are no subscription options visible. Also in "Prepare for submission" phase, IAP & Subscriptions section disappears so one can no longer add them to the next builds. I have tried to explain this 7 times (with new version submissions) through App Review Comments. It looks like nobody reads the responses. I tried adding the issue as a note, screenshot, video in different parts of the submission. They are entirely ignored. I sent 3 support request none of which have resulted in a response. I tried setting up a 1 on 1 call with Apple and it got rejected. This issue has been reported by other people in this forum and others with no solutions provided. I am completely out of options at this point. If I and others are indeed right to think that there is a bug in App Store Connect on the specific scenario with first time IAP review submissions where the first build is rejected by developer's fault, it bugs out with subscriptions. My app's success entirely depends on this as I can't monetise it and I am in Apple Developer Program which means I am subscribing to this service. Can someone from Apple Team, please respond to this specific issue on whichever medium chosen. I am completely blocked and in dire need of help. Thanks for your understanding.
1
0
107
4d
Inform users that they need to delete and reinstall the app
Hi, My app has been on the store for a few months now with a few updates. Now I plan a major update that will affect the structure of core data itself (key attribute replaced by relationship). I see no other way than asking the users to delete and reinstall the app to reset all data and start it as new. In a previous update I provided users the possibility to backup their data in a file so they can restore it with the future release. Is there a better way than using the "What's new in this version" section to pass the message to the users ?
3
0
143
1w
403 Forbidden Error on responses with "Customer Support" Key Role
My company provides an app that allows businesses to connect their Apple Apps to Salesforce so they can manage and respond to their Customer Reviews. One of our customers has created an API Key for that purpose with a "Customer Support" Role. According to the documentation, that Role should have access to both read and respond to customer reviews: https://developer.apple.com/help/account/manage-your-team/roles/ We can retrieve Reviews successfully with this API Key. However, whenever they attempt to respond to a Review, they get an error: [Status=Forbidden, StatusCode=403] We've confirmed this seems to be related to the Key Role, as they created a new key with an "Admin" role and the response works fine with that key. We don't understand why "Customer Support" doesn't work, though, since the docs seem to indicate that they should support responding to Reviews. Is there some way to make a "Customer Support" API Key work for responses? If not, are there other roles that would enable them to both read and respond to Customer Reviews? Or is an "Admin" key truly the only Role that would enable responses to Customer Reviews via the API? The customer is understandably hesitant to use an "Admin" key since that opens up a lot of other access.
2
0
80
1w
App Store Downloads API: In-app Events hugely mismatching console
I am using the API to fetch the following report: asc_api_report_commerce_app_downloads_detailed The reason I am using the detailed version is that I want to breakdown downloads by in-app event names. Here are the issues I'm facing: When comparing the detailed to the standard report, for specific date ranges and markets (comparing apples to apples), the numbers are slightly off - usually by around 1-2k. I can get around this, since I can use the standard report for most of my reporting. The second, and main issue, is when I try to use the detailed report to see how different IAEs are performing. The data discrepancies here are huge, and don't make any sense to me. For example, when I check a specific IAE (called Blanked), I can see dates in the console which are not showing up in the ASC API. These dates do exist in the broader dataset, they just don't exist for this specific IAE. Am I looking at this wrong? Do I need to pull the data differently? Has anyone else found this issue? ASC API Downloads vs Console Downloads - Sheet1.csv
1
0
134
1w
Benchmarks' API
Greetings to all! I have a task to write a small parser to automate the collection of analytical indicators for my applications in the App Store. I have already written a parser for the sales and finance reports, the endpoints for which were in the App Store Connect API specification. But other than that, I would like to collect benchmarks (https://developer.apple.com/app-store/peer-group-benchmarks/). However, I have not found a way to do this through an API request. I understand that there is no such way at the moment, or I was looking for it badly. The only way I've found is to make a request to the authentication page (https://appstoreconnect.apple.com). But authentication requires code from two-factor authentication, which is a big problem for writing a parser. Does anyone know how to get benchmarks without authentication? Naturally, I have all the tokens for my account, so I'm looking for a way to do this task through the API. Thank you for paying attention to my problem!
0
0
154
2w
JWT Fails with Individual Key on App Store Server API
We want to use the App Store Server API for in-app purchase validation. Due to circumstances, we cannot use the team-based private key (team key) and must use an individual authentication key. However, the JWT authentication keeps failing when using the individual key. Could there be an issue with our code? $jwtHeaderArray = [ 'alg' => 'ES256', 'kid' => $this->KID_ID, 'typ' => 'JWT' ]; $jwtBodyArray = [ 'sub' => 'user', 'aud' => $this->ACCESS_TOKEN_AUD, 'iat' => time(), 'exp' => time() + 3600, "scope" => [ "GET /inApps/v1/transactions" ]
0
0
115
2w
How to Verify Subscription When Testing with a Non-Sandbox Account in App Store?
Hello community, I recently tested a subscription purchase in my app using a non-sandbox Apple account, and I received the subscription confirmation screen (screenshot attached). However, I’m not sure where I can verify or manage the subscription details for this specific account. Here are a few points about my situation: 1. The account used for testing is not a sandbox account. 2. The subscription confirmation message displayed correctly in the app. 3. I want to confirm whether the subscription was successfully created or recorded in the App Store. My questions: • How can I check the subscription status for this account? • Is there a specific section in App Store Connect or another platform where I can verify the subscription details for a non-sandbox account used in testing? • Is it normal to test subscriptions like this, or should I strictly use sandbox accounts for testing? I appreciate any guidance or resources to help me resolve this. Thank you! 😊
1
0
136
3w
Can't post application to appstore
every time i am trying to post my application to appstore I got this message: ITMS-90338: Non-public API usage - The app references non-public selectors in XXXX: setNavigationBar:. If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed. For further information, visit the Technical Support Information at http://developer.apple.com/support/technical/ I search inside my code and my 3rd party libraries about setNavigationBar and navigationbar = but i didn't find any matched results. i tryed to exported the application build and i searched inside the exported build abdout setNavigationBar and found one result in but couldn't find any details about location or file that generated this. what to do?
4
0
194
3w
How to change the icon when the application is in the "ready to submit" stage
I filled in some information when publishing the application and felt that the icon was not good enough. I made another one and used this new icon in XCode. After running it on iPhone, the icon changed, but there was no change in the submission section. Now the application is in the "ready to submit" stage and I don't know how to change it to the new icon. Can anyone give me some guidance? Thank you!
0
0
208
3w
UNEXPECTED_ERROR status: 500, when creating profile via app store connect api
Creating profile via a post request keeps getting a server error 500. It just worked yestday. POST https://api.appstoreconnect.apple.com/v1/profiles { "code": "UNEXPECTED_ERROR", "detail": "An unexpected error occurred on the server side. If this issue continues, contact us at https://developer.apple.com/contact/.", "status": "500", "title": "An unexpected error occurred." }
1
0
161
4w