I am following the Downloading Analytics Reports guide which consists of five steps:
request the ONGOING report generation for the app once
list all analytics report requests for the app
list all analytics reports based on the analytics report request id
:x: list all analytics report instances based on the analytics report id
list all segments of the analytics report instance to get the download url
I can only complete the third step which returns a list of all available reports.
However when I continue with step four, the request for the analytics report instances returns with a response code 200 but the data array is always empty:
I am using the Home Screen Widget Installs report but this is also happening for other reports
Also changing or omitting the filter doesn't change anything
{
"data": [],
"links": {
"self": "https://api.appstoreconnect.apple.com/v1/analyticsReports/{reportId}/instances?filter%5Bgranularity%5D=DAILY"
},
"meta": {
"paging": {
"total": 0,
"limit": 50
}
}
}
What could be the reason that the data array is empty and how can I fix it because there is no error message?
App Store Connect API
RSS for tagThe App Store Connect API helps you automate tasks usually done on the Apple Developer website and App Store Connect.
Posts under App Store Connect API tag
200 Posts
Sort by:
Post
Replies
Boosts
Views
Activity
I created a project to validate in-app purchase receipts using c# but I always get error 401, you don't have permission, I followed the instructions exactly but still failed, I created a private key in Certificates, IDs & Profiles and download the .p8 file but it still doesn't work, I also created and tried another key in Users and Access > Integrations > App Store Connect API and also In-App Purchase but it still doesn't work.
When I try to put the created token on jwt.io, I always get an Invalid Signature error
using Jose;
using System;
using System.Collections.Generic;
using System.Net.Http.Headers;
using System.Net.Http;
using System.Security.Cryptography;
using System.Threading.Tasks;
using System.IO;
using System.Net;
namespace CheckIAP
{
internal class Program
{
static async Task Main(string[] args)
{
string jwtToken = GenerateAppStoreJwtToken();
string transactionId = "110002159078***";
Console.WriteLine(jwtToken);
string url = $"https://api.storekit.itunes.apple.com/inApps/v2/history/{transactionId}";
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", jwtToken);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync(url);
if (response.IsSuccessStatusCode)
{
string responseData = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseData);
}
else
{
Console.WriteLine($"Error: {response.StatusCode}, {response.ReasonPhrase}");
string responseData = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseData);
}
}
Console.ReadLine();
}
public static string GenerateAppStoreJwtToken()
{
string teamId = "PZG479xxxx";
string keyId = "JCXH26xxxx";
string issuerId = "7aa0c9c2-***-***-***-xxxx";
string bundleId = "com.***.***";
const string API_KEY = "MIGTAgEAMBMGByqGSM....";
var header = new Dictionary<string, object>()
{
{ "alg", "ES256" },
{ "kid", keyId },
{ "typ", "JWT" }
};
var payload = new Dictionary<string, object>
{
{ "iss", issuerId },
{ "iat", DateTimeOffset.UtcNow.ToUnixTimeSeconds() },
{ "exp", DateTimeOffset.UtcNow.AddMinutes(15).ToUnixTimeSeconds() },
{ "aud", "appstoreconnect-v1" },
{ "sub", bundleId }
};
var key = CngKey.Import(Convert.FromBase64String(API_KEY),
CngKeyBlobFormat.Pkcs8PrivateBlob);
return Jose.JWT.Encode(payload, key, JwsAlgorithm.ES256, header);
}
}
}
https://api.appstoreconnect.apple.com/v1/betaTesters/{id}
Cannot call delete on any of the above
Cannot be uninstalled from the app store console
(IDs cannot be provided as personal information)
{
"errors": [
{
"status": "500",
"code": "UNEXPECTED_ERROR",
"title": "An unexpected error occurred.",
"detail": "An unexpected error occurred on the server side. If this issue continues, contact us at https://developer.apple.com/contact/."
}
]
}
As other threads have reported, the endpoint “GET /v1/salesReports” responds with a status of 403 (Forbidden). It worked a week ago but no longer works today.
Further Information:
There is no warning on https://appstoreconnect.apple.com/ after logging in.
I have generated API keys with Admin, Developer, and Finance authority, but none worked.
It does not reach the request rate limit per hour.
Other endpoints "GET /v1/apps" for instance, respond with status 200(work properly).
I would appreciate any help or advice. Thank you.
When using individual key to retrieve sales report via https://api.appstoreconnect.apple.com/v1/financeReports, I keep receiving status:500, unexpected_error. Other endpoints are fine.
Anybody also have this issue?
Hey all,
It's been now a few weeks since we started to help clients connect to their App Store Analytics API.
I'm starting to notice that very often we'll see things like:
Small data gaps. Eg. I have data on June 1, no data on June 2-4, and then data from June 5 to now
Big data gaps. Eg. I'd have data on Jan 2024, but not on Feb-Mar 2024, then there's data again from April 2024 onwards.
The actual files from Apple are like that we're not doing any treatments whatsoever. That's happening on both ONGOING and ONE_TIME_SNAPSHOT
I also opened a Customer Support case and sent the files over 10 days ago, but no definitive answer so far.
Are you also seeing gaps like this on your data? Any tips/recommendations?
Hi everyone,
I created an IAP
When I filled a the information in the require database, my internet was broken.
When the internet in working normally, I create it again (I didn't save it before I lost my internet)
The system reported an error "The Product ID you entered is already being used by another in-app purchase associated with this app."
Question:
Why can't I reuse a Product ID that I haven't saved before?
Please reply to me soon,
Thank you so much
I've been using the App Store Analytics API for a few weeks now with no problem, but yesterday I started to get no data from the ONE_TIME_SNAPSHOT.
It's simply returning empty, although we haven't changed anything on the code (already checked 100 times).
Anyone here with the same problem?
We currently have an Enterprise Developer account and find it a challenge to manage devices, profiles, and so on in an automated fashion.
I am curious to understand if an API interface, similar to App Store Connect API is available - for Enterprise. There is no option in the Enterprise 'Users and Access' tab to manage or create API keys, like there is in a regular Apple Developer Account. An API would greatly simplify much of our processes.
We currently use Fastlane Spaceship to manage automated/scripted tasks around this, like adding new devices, adding devices to profiles, and so on.
We manage in the order of 70 provisioning profiles, so, it may be appreciated that adding even one device to that many profiles is not something you want do manually via the web interface - you script it - so we use Fastlane.
The issue is that Fastlane Spaceship uses a 'workround' that basically emulates a user web session, and so requires re-authentication when user session expires, and also requires re-authentication by 2FA when AppleID session expires each month.
This is no good for scripted automation on a server, as user interaction is then required.
So, I guess this is a request, or an insight as to whether or not API functionality, via API keys is coming soon to Enterprise, or never coming, or if there is some other mechanism we can use - or do we just stick with fastlane?
We have looked at Custom Apps, but don't think that fits our needs, as the apps we build hit internal test systems, which are not publicly accessible, and so not available for App Store review teams, as our understanding is that Custom apps must still pass App Store review and TestFlight review.
Thanks.
I'm submitting a new version of my app, and after click "submit for Review", it shows
"Unable to Add for Review:
There are still screenshot uploads in progress."
However, these screenshots have been in progress for many hours. I tried verified that it was not a problem with the screenshot files, as I deleted and uploaded screenshots that had uploaded and been approved in previous updates. I also verified this behavior is happening across multiple apps. Therefore, I suspect that it is an issue with App Store Connect's server. I have been waiting all day for this to be resolved - hopefully someone can fix this ASAP as it is a blocker to submit any app updates and I have a critical bug fix that needs to be approved.
Hi, I would like to know if ios 17 sdk is compatible with react native version 0.64. I am not able to build my app currently..
Error that i got when build
Undefined symbols for architecture x86_64: "_GULLogBasic", referenced from: _MLKLog in MLKitCommon[x86_64]7 "OBJC_CLASS$_AppCenterReactNative", referenced from: in AppDelegate.o "OBJC_CLASS$_AppCenterReactNativeAnalytics", referenced from: in AppDelegate.o "OBJC_CLASS$_AppCenterReactNativeCrashes", referenced from: in AppDelegate.o "OBJC_CLASS$_FKUserDefaultsPlugin", referenced from: in AppDelegate.o "OBJC_CLASS$_FlipperClient", referenced from: in AppDelegate.o "OBJC_CLASS$_FlipperKitLayoutPlugin", referenced from: in AppDelegate.o "OBJC_CLASS$_FlipperKitNetworkPlugin", referenced from: in AppDelegate.o "OBJC_CLASS$_FlipperKitReactPlugin", referenced from: in AppDelegate.o "OBJC_CLASS$_GDTCORTransport", referenced from: in MLKitCommon[x86_64]6 "OBJC_CLASS$_GTMLogMininumLevelFilter", referenced from: in MLKitCommon[x86_64]200 "OBJC_CLASS$_GTMLogger", referenced from: in MLKitCommon[x86_64]26 OBJC_CLASS$_MLKITx_GIPLoggingReroutingGTMLogger in MLKitCommon[x86_64]200 "OBJC_CLASS$_GTMSessionCookieStorage", referenced from: in MLKitCommon[x86_64]26 "OBJC_CLASS$_GTMSessionFetcher", referenced from: in MLKitCommon[x86_64]26 "OBJC_CLASS$_GTMSessionFetcherService", referenced from: in MLKitCommon[x86_64]18 "OBJC_CLASS$_GULCCComponent", referenced from: in MLKitCommon[x86_64]11 "OBJC_CLASS$_GULCCComponentContainer", referenced from: in MLKitCommon[x86_64]3 "OBJC_CLASS$_GULCCComponentType", referenced from: in MLKitCommon[x86_64]3 "OBJC_CLASS$_GULUserDefaults", referenced from: in MLKitCommon[x86_64]2 "OBJC_CLASS$_RCTBundleURLProvider", referenced from: in AppDelegate.o "OBJC_CLASS$_RCTLinkingManager", referenced from: in AppDelegate.o "OBJC_CLASS$_ReactNativeNavigation", referenced from: in AppDelegate.o "OBJC_CLASS$_SKDescriptorMapper", referenced from: in AppDelegate.o "OBJC_CLASS$_SKIOSNetworkAdapter", referenced from: in AppDelegate.o "OBJC_METACLASS$_GTMLogger", referenced from: OBJC_METACLASS$_MLKITx_GIPLoggingReroutingGTMLogger in MLKitCommon[x86_64]200 "_kGTMSessionFetcherStatusDomain", referenced from: ___69-[MLKModelDownloader beginModelDownloadWithURL:modelInfo:conditions:]_block_invoke.285 in MLKitCommon[x86_64]18 ___150-[MLKITx_PHTHeterodyneSyncer batchSyncWithAccounts:syncedScopes:fetchReason:throttlingCache:heterodyneSyncInfo:accountToAuthToken:lastError:callback:]_block_invoke in MLKitCommon[x86_64]48 ___91-[MLKITx_PHTInternalHeterodyneSyncer syncHoldingLockWithSyncedScopes:fetchReason:callback:]_block_invoke in MLKitCommon[x86_64]51 ___63-[MLKITx_GMVCloudVisionClient initWithCloudUri:apiKey:options:]_block_invoke in MLKitVision[x86_64]7 ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
Undefined symbol: _GULLogBasic
Undefined symbol: OBJC_CLASS$_AppCenterReactNative
Undefined symbol: OBJC_CLASS$_AppCenterReactNativeAnalytics
Undefined symbol: OBJC_CLASS$_AppCenterReactNativeCrashes
Undefined symbol: OBJC_CLASS$_FKUserDefaultsPlugin
Undefined symbol: OBJC_CLASS$_FlipperClient
Undefined symbol: OBJC_CLASS$_FlipperKitLayoutPlugin
Undefined symbol: OBJC_CLASS$_FlipperKitNetworkPlugin
Undefined symbol: OBJC_CLASS$_FlipperKitReactPlugin
Undefined symbol: OBJC_CLASS$_GDTCORTransport
Undefined symbol: OBJC_CLASS$_GTMLogMininumLevelFilter
Undefined symbol: OBJC_CLASS$_GTMLogger
Undefined symbol: OBJC_CLASS$_GTMSessionCookieStorage
Undefined symbol: OBJC_CLASS$_GTMSessionFetcher
Undefined symbol: OBJC_CLASS$_GTMSessionFetcherService
Undefined symbol: OBJC_CLASS$_GULCCComponent
Undefined symbol: OBJC_CLASS$_GULCCComponentContainer
Undefined symbol: OBJC_CLASS$_GULCCComponentType
Undefined symbol: OBJC_CLASS$_GULUserDefaults
Undefined symbol: OBJC_CLASS$_RCTBundleURLProvider
Undefined symbol: OBJC_CLASS$_RCTLinkingManager
Undefined symbol: OBJC_CLASS$_ReactNativeNavigation
Undefined symbol: OBJC_CLASS$_SKDescriptorMapper
Undefined symbol: OBJC_CLASS$_SKIOSNetworkAdapter
Undefined symbol: OBJC_METACLASS$_GTMLogger
Undefined symbol: _kGTMSessionFetcherStatusDomain
Linker command failed with exit code 1 (use -v to see invocation)
Hi,
I have a problem with adding a bank account to meet the conditions of the Paid Apps Agreement in App Store Connect. I have tried several times, and each time my account status is "verifying" and then changes back to "pending user info." I don't receive any explanation via email as to why this is happening; I only see these yellow messages that are very vague and don't explain much. I don't know exactly what is wrong and why it is not passing the verification. I have tried adding both a scan of my passport and my ID card, but nothing works. Has anyone had a similar situation? (I'm from Poland)
The App Store Connect API documentation still doesn't list the new 13" iPad display type: https://developer.apple.com/documentation/appstoreconnectapi/screenshotdisplaytype
When adding screenshots to 13" iPads on the website, they still seem to use the display type APP_IPAD_PRO_3GEN_129 when listed by the API, and uploading to that same type uploads them to the 13" display type instead, but then there is the requirement that one still has to upload screenshots for 12.9" display type, without an apparent way of doing so.
I would expect to have an option to upload to 13" display type that is also used for 12.9" display type.
Do we have to wait for Apple to update the documentation or does someone know a workaround?
Who managed to get past this lame error ? all pics are uploaded i have tried everything
Everything feels so hostile on Apple platforms, why is that ?
When I try to create 1.1 (which is a new version), I get the following message:
Additionally, if I try to create another version, let's say 1.1.1 or 2.0, I just get same error.
When inspecting the call, this is the result:
{
"errors" : [ {
"id" : "48d65ae9-b7d5-44cb-85a6-b7295202f13b",
"status" : "409",
"code" : "ENTITY_ERROR.RELATIONSHIP.INVALID",
"title" : "The provided entity includes a relationship with an invalid value",
"detail" : "You cannot create a new version of the App in the current state.",
"source" : {
"pointer" : "/data/relationships/app"
}
} ]
Hello,
I try to create a product in app purchase with the API calls. I meet a problem during this creation for some products, see the error message :
Erreur lors de l'appel d'API Apple : { "errors" : [ { "id" : "89876075-5f2a-44ea-a910-fcbcf95ea641", "status" : "409", "code" : "ENTITY_ERROR.ATTRIBUTE.INVALID.DUPLICATE", "title" : "The provided entity includes an attribute with a value that has already been used", "detail" : "This product ID has already been used", "source" : { "pointer" : "/data/attributes/productId" } } ] }
It seems that the productId has already created but when we check in the app we cannot find its.
Is it possible that if the productId has already created and deleted after ? And now we cannot created again with the samed productId ?
Thank you in advance to help us.
Best Regards.
I registered as a developer with Apple. Since I work alone, I have an individual developer account.
Unfortunately, I am unable to create an iOS distribution certificate from Visual Studio (for Windows). The option is grayed out even though my role in App Store Connect is "Admin".
Visual Studio also shows me that my user is an admin - yet I don't seem to have rights to create iOS distribution certificates. I can create iOS development certificates without any problems.
I use the App Store Connect API to run many parallel requests to update different parts of a single app. I am randomly getting errors such as
An unexpected error occurred on the server side.
or
The request timed out.
Usually when these errors happen, I can simply run the unsuccessful requests one or two more times and then they succeed.
Is there an explanation for this? Is this possibly caused by too many parallel requests? What is the maximum suggested number of parallel requests?
I try to fetch subscriptions with included relationships according to the documentation
GET https://api.appstoreconnect.apple.com/v1/subscriptionGroups/12345678/subscriptions?include=[ "appStoreReviewScreenshot", "group", "introductoryOffers", "offerCodes", "prices", "promotedPurchase", "promotionalOffers", "subscriptionAvailability" ]
The form of include field is taken from the official OpenAPI spec
In the response I get a bunch of errors
What am I doing wrong?
{
"errors": [
{
"id": "0c02ac40-47c6-4107-b725-930e938a587f",
"status": "400",
"code": "PARAMETER_ERROR.INVALID",
"title": "A parameter has an invalid value",
"detail": "'[ \"appStoreReviewScreenshot\"' is not a valid relationship name",
"source": {
"parameter": "include"
}
},
{
"id": "cf2e214a-cab7-4e63-8971-d8974b0903f6",
"status": "400",
"code": "PARAMETER_ERROR.INVALID",
"title": "A parameter has an invalid value",
"detail": "' \"group\"' is not a valid relationship name",
"source": {
"parameter": "include"
}
},
{
"id": "56d7e72f-cf29-4fac-9456-79074e294567",
"status": "400",
"code": "PARAMETER_ERROR.INVALID",
"title": "A parameter has an invalid value",
"detail": "' \"introductoryOffers\"' is not a valid relationship name",
"source": {
"parameter": "include"
}
},
{
"id": "abdaf783-9a95-4053-a614-bcee7aedab45",
"status": "400",
"code": "PARAMETER_ERROR.INVALID",
"title": "A parameter has an invalid value",
"detail": "' \"offerCodes\"' is not a valid relationship name",
"source": {
"parameter": "include"
}
},
{
"id": "53270b6c-f0f5-4d18-9004-2c99ce9905bd",
"status": "400",
"code": "PARAMETER_ERROR.INVALID",
"title": "A parameter has an invalid value",
"detail": "' \"prices\"' is not a valid relationship name",
"source": {
"parameter": "include"
}
},
{
"id": "9676075f-d2fb-493e-b093-c973e3b103d2",
"status": "400",
"code": "PARAMETER_ERROR.INVALID",
"title": "A parameter has an invalid value",
"detail": "' \"promotedPurchase\"' is not a valid relationship name",
"source": {
"parameter": "include"
}
},
{
"id": "451dd333-1c75-4e22-90e1-40c6532fa465",
"status": "400",
"code": "PARAMETER_ERROR.INVALID",
"title": "A parameter has an invalid value",
"detail": "' \"promotionalOffers\"' is not a valid relationship name",
"source": {
"parameter": "include"
}
},
{
"id": "b0afb70e-ab6a-4aa3-9840-3e94844d3385",
"status": "400",
"code": "PARAMETER_ERROR.INVALID",
"title": "A parameter has an invalid value",
"detail": "' \"subscriptionAvailability\" ]' is not a valid relationship name",
"source": {
"parameter": "include"
}
}
]
}
Hello!
In the App Store Connect API there is no way to upload data in the UTC time zone, it is only available in the PST.
Meanwhile, in the web account it is possible to change the time zone, this leads to the impossibility of compiling analytics
This API endpoint https://api.appstoreconnect.apple.com/v1/salesReports