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.

Posts under App Store Connect API tag

166 Posts
Sort by:

Post

Replies

Boosts

Views

Activity

App Store Connect Certificates API
Hi all, I‘m using the certificates API in order to create a development certificate. I want to create a Jenkins job that will give employees an option to create a certificate without giving them admin rights. I’m creating a new certificate without any issues. When I try to create another certificate with a different CSR (for a diff user) I get an error that a certificate already exists. Is it limited to create only one certificate per API key?? Thanks!
0
0
84
1d
Guidance needed to pull yesterday's data from perfPowerMetrics endpoint
Hi Folks, I’m looking to pull performance metrics using https://developer.apple.com/documentation/appstoreconnectapi/get-v1-apps-_id_-perfpowermetrics from Lookback for yesterday's data. Could you guide me on the best way to filter or query this specific timeframe? I dont actually see a way pull data from history. Any advice or steps would be greatly appreciated. TIA!
0
0
77
4d
How to Dynamically Obtain Device Models for App Store Users?
I'm currently pulling device-specific data for my app, and I'm manually listing 150 models like this: device_models = [ "iPhone1_1", "iPhone1_2", "iPhone2_1", ... "iPad16_6"] Is there an API endpoint or an automated method to dynamically retrieve a complete list of device models? I'm specifically looking to connect this with the performance metrics API to monitor launch times per device type. Any suggestions on how to streamline or automate this list would be greatly appreciated. Thanks!
2
0
126
1w
Pull data on iOS App Homescreen Widget
Hello fellow developers! I am interested in obtaining the following information regarding one of our Home Screen widgets: Pull the following data about the "my_app_widget" homepage widget in total and by month for the last 12 months (Sep '23 - Sep '24): Widget install events Unique widget installs Device type (iPad, iOS). Thus far, I am using AWS Lambda and have the proper credentials within a Secrets Manager and I keep getting a 409 error from this code: const AWS = require('aws-sdk'); const axios = require('axios'); const jose = require('jose'); const crypto = require('crypto'); const s3 = new AWS.S3(); const secretsManager = new AWS.SecretsManager(); const cloudwatchlogs = new AWS.CloudWatchLogs(); const logGroupName = '/aws/lambda/my_lambda_function'; const logStreamName = '2024/11/05/[$LATEST]XXXXXXXXXXXXXX'; const getSecret = async (secretName) => { const secret = await secretsManager.getSecretValue({ SecretId: secretName }).promise(); return JSON.parse(secret.SecretString); }; const logError = async (message) => { const params = { logGroupName, logStreamName, logEvents: [ { message: JSON.stringify(message), timestamp: Date.now() } ] }; try { await cloudwatchlogs.putLogEvents(params).promise(); } catch (error) { console.error('Failed to log to CloudWatch:', error); } }; const getJwtToken = async (keyId, issuerId, privateKeyPem) => { try { const privateKey = crypto.createPrivateKey({ key: privateKeyPem, format: 'pem', type: 'pkcs8' }); const payload = { iss: issuerId, exp: Math.floor(Date.now() / 1000) + 20 * 60, aud: 'appstoreconnect-v1' }; const token = await new jose.SignJWT(payload) .setProtectedHeader({ alg: 'ES256', kid: keyId }) .sign(privateKey); return token; } catch (error) { await logError({ error: 'Error generating JWT', details: error }); throw new Error('JWT generation failed'); } }; const fetchAndUploadReport = async (url, token, s3Key, isAnalytics = false, body = null) => { try { const headers = { 'Authorization': `Bearer ${token}`, 'Accept': isAnalytics ? 'application/json' : 'application/a-gzip', 'Content-Type': 'application/json' }; const response = await axios({ method: isAnalytics ? 'post' : 'get', url: url, headers: headers, data: body, responseType: isAnalytics ? 'json' : 'stream' }); if (response.status === 200) { let bodyContent = isAnalytics ? JSON.stringify(response.data) : response.data; await s3.upload({ Bucket: 'my_bucket_name', Key: s3Key, Body: bodyContent }).promise(); return { statusCode: 200, body: `${s3Key} fetched and uploaded successfully` }; } else { await logError({ error: 'API response error', status: response.status, statusText: response.statusText, url }); return { statusCode: response.status, body: response.statusText }; } } catch (error) { await logError({ error: 'Error fetching report', url, details: error }); return { statusCode: 500, body: JSON.stringify(`Error fetching ${s3Key}`) }; } }; exports.handler = async (event) => { const secretName = 'AppStoreConnectPrivateKey'; try { const secretData = await getSecret(secretName); const { keyId, issuerId, private_key: privateKeyPem } = secretData; const token = await getJwtToken(keyId, issuerId, privateKeyPem); const startDate = '2023-09-01'; const endDate = '2024-09-30'; const apiEndpoints = [ { url: `https://api.appstoreconnect.apple.com/v1/analyticsReportRequests`, // Changed to request report s3Key: 'my_folder/my_subfolder/unique_widget_installs.json', isAnalytics: true, body: { "data": { "type": "analyticsReportRequests", "attributes": { "accessType": "ONGOING", "name": "Home Screen Widget Installs", "category": "APP_USAGE" }, "relationships": { "app": { "data": { "type": "apps", "id": "YYYYYYYYYYYY" } } } } } } ]; Returns the following error : { "error": "Error fetching report", "url": "https://api.appstoreconnect.apple.com/v1/analyticsReportRequests", "details": { "message": "Request failed with status code 409", "name": "AxiosError", "stack": "AxiosError: Request failed with status code 409\n at settle (/var/task/node_modules/axios/dist/node/axios.cjs:2019:12)\n at IncomingMessage.handleStreamEnd (/var/task/node_modules/axios/dist/node/axios.cjs:3135:11)\n at IncomingMessage.emit (node:events:531:35)\n at IncomingMessage.emit (node:domain:488:12)\n at endReadableNT (node:internal/streams/readable:1696:12)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)\n at Axios.request (/var/task/node_modules/axios/dist/node/axios.cjs:4287:41)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async fetchAndUploadReport (/var/task/index.js:68:26)\n at async Promise.all (index 0)\n at async exports.handler (/var/task/index.js:174:25)", "config": { "transitional": { "silentJSONParsing": true, "forcedJSONParsing": true, "clarifyTimeoutError": false }, "adapter": [ "xhr", "http", "fetch" ], "transformRequest": [ null ], "transformResponse": [ null ], "timeout": 0, "xsrfCookieName": "XSRF-TOKEN", "xsrfHeaderName": "X-XSRF-TOKEN", "maxContentLength": -1, "maxBodyLength": -1, "env": {}, So I am not sure if the JSON body I am passing this URL endpoint are correct or if this is the correct API to be using to attempt to obtain this information. Please let me know when you have the chance and I look forward to hearing from you.
0
0
102
2w
Get Total App Installs
I've been working on retrieving total app installs via the Apple Connect API using Python. However, I've noticed a discrepancy between the data obtained manually and the API results. When I download the Sales & Trends report manually with these settings: Sales & Trends, Monthly, By Territory, Total Installs …the results don't match those from the API when I use the following parameters python report_date = '2024-09' params = { "filter[frequency]": "MONTHLY", "filter[reportDate]": report_date, # Date for the report "filter[reportSubType]": "SUMMARY", "filter[reportType]": "SALES", "filter[vendorNumber]": vendor_number } I’m seeing a clear mismatch in units between the manual download and the API output Note: This report was generated on 2024-11-05
1
0
136
2w
Accessing Historical Metrics Data with App Store Connect API?
Hi everyone, I’m working with the App Store Connect API to analyze my app's launch time performance, but I’d like to retrieve historical data spanning multiple dates. However, I haven’t found parameters like startDate or endDate in the API documentation. Is there any way to retrieve data for past dates, or is the API limited to recent data only? If anyone has experience with this or any workaround, I’d love to hear about it. Thank you!
0
0
165
2w
How to Get App Store Connect Metrics by iPhone Model?
Hi Folks, I'm currently using the App Store Connect API's perfPowerMetrics endpoint to pull launch time metrics for my app, but I want to break down the data by specific iPhone models (e.g., iPhone 13 Pro, iPhone 12, etc.). I’ve tried using filter[deviceType] set to all_iphones, which works, but it aggregates data for all iPhone models. Does anyone know the specific identifiers for individual iPhone models, or if there's a way to retrieve metrics by specific iPhone model segments? TIA
2
0
162
2w
Comprehensive Web Scraper for App Store Connect Dashboard Data
Hello All, New member here so hopefully my post adheres to Dev Forum standards. My Platform team and I are attempting to gather a bunch of our customer/service data via an automated process where we code a script to obtain data from the App Store Connect dashboard of our app. We need to web scrape most likely with the App-Store-Scraper library. This reason for this is the following challenge we have run into previously while utilizing the App Store Connect API: When we have attempted to fetch data we have seen that the attributes we are looking for cannot be obtained with the query parameters available. Certain reports can only be obtained for DAILY query param values; certain information, such as "File Size" from the "State" report, and "revenue net" of Apple's commissions on sales from the "Proceeds" report within the App Store Connect dashboard, are not able to be obtained via the API, to my knowledge. Of course it can be obtained manually by downloading it through the dashboard, but we want to automate this process. My question is with regards to web scraping: Will we be able to obtain all the information we need by web scraping the "Event, State, Proceeds" reports that one can find by navigating from the left-hand-side tabs within the App Store Connect dashboard? This information contains PII, but since we have rights to our customer data we should be able to maintain confidentiality by following industry standards. Please let me know if anyone has any experience with this kind of task before and I look forward to hearing from you.
1
0
150
2w
About the past retrieval range of Look Up Order ID API
I would like to know if there is a limit to past information in the Look Up Order ID API. https://developer.apple.com/documentation/appstoreserverapi/look_up_order_id I understand that you can also get information about users who deleted or reinstalled the app from the content of the document. On the other hand, are there any temporal limits to the past? For example, can the above API make requests for purchases made one year ago, five years ago, or ten years ago?
1
0
209
3w
Error on Post request for Create Achievement Localization
Hi, I am using Node.js for updating my game achievements. Also not sure what is the recommended programming language to use for this. I will want to add Achievement Localization to my existing achievement. I was following the document here: https://developer.apple.com/documentation/appstoreconnectapi/post-v1-gamecenterachievementlocalizations const postData = { type: "gameCenterAchievementLocalizations", attributes: { locale: "it-IT", name: "XXXXXXXXXXX", afterEarnedDescription: "XXXXXXXXXXXXXX", beforeEarnedDescription: "XXXXXXXXXXXXXXXXXXXXXXXX" }, relationships: { gameCenterAchievement: { data: { type: "gameCenterAchievement", id: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" } } } }; let axiosConfig = { headers:{ Authorization: `Bearer ${token}` } }; const response = axios.post('https://api.appstoreconnect.apple.com/v1/gameCenterAchievementLocalizations', postData, axiosConfig); After I run the above code, it throw me an error 422. status: '422', code: 'ENTITY_UNPROCESSABLE', title: 'The request entity is not a valid request document object', detail: "Unexpected or invalid value at 'type'.", meta: { position: [Object] } Any idea what went wrong with my code? Thank you
0
0
175
4w
`appStoreVersions` returning incorrect data
The endpoint https://api.appstoreconnect.apple.com/v1/apps/{app id}/appStoreVersions is returning some very strange data as of sometime this afternoon (Pacific time). We are only seeing a subset of builds. They are verrrry old and they are not in order. This exact same list is shown in the app store connect web dashboard when I view my apps history suggesting it uses the same API call.
3
6
305
Oct ’24
Issues with logging in Connect
I recently created my account on Apple Developer Program, and paid up. However, it took around 2 days for the apple's system to recognize my payment and sent me verification email. This was almost 24 hours ago, however I am not been able to login to connect so far. When I click on Connect -> app, it takes me to https://appstoreconnect.apple.com/login and when I try to login, I see the error displayed below. This is my developer dashboard currently. Can someone help out or guide on this please?
0
0
131
Oct ’24
Discovery and Engagement API Data missing impressions for specific sources
I've set up the Discovery and Engagement Report via the API to create daily reports. I'm using the Standard report so it includes all of the data and doesn't remove any as per the privacy policy. It's providing impression data for the App Store Search and App Store Browse source types but it's missing impression data for the others (web referrer and app referrer) - this data is available in the dashboard. Also, the impression data that I do have does not align with the dashboard, I thought using the standard report would mean all of the data would get provided. The product page view data is correctly being provided in the data for each of the source types. Any ideas why it's missing?
0
0
171
Oct ’24
iTMSTransporter lookupMetadata apple_id not supported by the metadata lookup functionality
Hello, I am trying to use iTMSTransporter to update my app's metadata, however I am getting error code 1117. "The content type for the specified apple_id of 'XXXXXX' is not supported by the metadata lookup functionality. (1117)" Any idea on what would cause that? I have no outstanding terms to accept or anything like that and my app is in status "Prepare for Submission". I suspect this might be happening because I currently have new In App Purchases in review that have been denied because they were not yet accessible in the app for testing. The recommendation was to upload a new build. However, in order to upload a new build for testing I need to update my metadata. I have a lot of metadata so would like to use iTMSTransporter, but then I get that error. Thanks for your help!
1
0
244
Oct ’24
Error uploading in app purchase screenshots for App Review
I'm getting a "There was an error uploading your screenshot. Try again later." error when trying to upload a screenshot under Review Information. Tried both Safari / Chrome, JPG/PNG and screenshot size is correct. Looking at the network logs, it is also returning a 409 Conflict error. Is there a known issue?
0
0
232
Sep ’24
Clarification Needed on Default Release Behavior in App Store Connect API
We have a requirement for our app to set "Automatically release this version" and "Release update to all users immediately." Essentially, we want the build to be released to 100% of users once it is approved, without any further action needed from our side. We are using App Store Connect APIs to release our app. To achieve this: I am creating an App Store version by setting AppStoreConnectReleaseType enum to AFTER_APPROVAL in AppStoreVersionCreateRequestData. I am not enabling phased release. I am submitting the app for review. My main concern is understanding the App Store's default behavior for app submissions, particularly whether the default action is to release the update to 100% of users immediately or in a phased manner. If the default behavior is to release to 100% of users, our implementation should meet the requirement. However, if the default is a phased release, I am uncertain if our approach will fulfill our requirement. Any insights into the App Store's default release behavior would be greatly appreciated.
0
0
259
Sep ’24