@expo/apple-utils 2.1.11 → 2.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,6 +7,10 @@ declare module "network/CSRF" {
7
7
  export function ensureCSRFAsync(kind: string, blockAsync: () => Promise<any>): Promise<void>;
8
8
  export function clearCachedCSRFTokens(): void;
9
9
  }
10
+ declare module "utils/files" {
11
+ export function fileExists(path: string): boolean;
12
+ export function removeFileAsync(path: string): Promise<void> | undefined;
13
+ }
10
14
  declare module "utils/json-file-cache" {
11
15
  import { JSONObject } from '@expo/json-file';
12
16
  export function cacheUserDirectory(): string;
@@ -98,12 +102,7 @@ declare module "auth/Credentials" {
98
102
  export function getCachedUsernameAsync(): Promise<string | null>;
99
103
  export function getCachedPasswordAsync({ username, }: Pick<UserCredentials, 'username'>): Promise<string | null>;
100
104
  }
101
- declare module "utils/files" {
102
- export function isDirectory(path: string): boolean;
103
- export function fileExists(path: string): boolean;
104
- }
105
105
  declare module "connect/Token" {
106
- import jwt from 'jsonwebtoken';
107
106
  /**
108
107
  * Used to Sign the .p8 private key that can only be downloaded once from Apple.
109
108
  *
@@ -121,7 +120,7 @@ declare module "connect/Token" {
121
120
  * xxxxxxxx
122
121
  * -----END PRIVATE KEY-----
123
122
  */
124
- key: jwt.Secret;
123
+ key: string;
125
124
  /**
126
125
  * Issuer ID from ASC: Users and Access > Keys | https://appstoreconnect.apple.com/access/api
127
126
  */
@@ -137,13 +136,13 @@ declare module "connect/Token" {
137
136
  }
138
137
  export class Token {
139
138
  options: TokenProps;
140
- static sign({ key, issuerId, keyId, duration }: TokenProps): string;
139
+ static sign({ key, issuerId, keyId, duration }: TokenProps): Promise<string>;
141
140
  private token;
142
141
  expiration: number;
143
142
  constructor(options: TokenProps);
144
- getToken(): string;
143
+ getToken(): Promise<string>;
145
144
  getDurationMilliseconds(): number;
146
- refresh(): string;
145
+ refresh(): Promise<string>;
147
146
  /**
148
147
  * Returns true if the token has expired and needs to be refreshed.
149
148
  */
@@ -1383,6 +1382,34 @@ declare module "connect/models/ContentProvider" {
1383
1382
  } | undefined) => Promise<ContentProvider[]>;
1384
1383
  }
1385
1384
  }
1385
+ declare module "connect/models/AppClip" {
1386
+ import { ConnectModel } from "connect/models/ConnectModel";
1387
+ export interface AppClipProps {
1388
+ /**
1389
+ * The bundle identifier of the App Clip.
1390
+ * @example 'com.bacon.app.Clip'
1391
+ */
1392
+ bundleId: string;
1393
+ }
1394
+ /**
1395
+ * An App Clip associated with an app in App Store Connect.
1396
+ *
1397
+ * App Clips are lightweight versions of apps that let users perform quick tasks
1398
+ * without downloading the full app.
1399
+ */
1400
+ export class AppClip extends ConnectModel<AppClipProps> {
1401
+ static type: string;
1402
+ /**
1403
+ * Get a single App Clip by ID.
1404
+ *
1405
+ * @param id App Clip ID
1406
+ */
1407
+ static infoAsync: (context: import("AppStoreConnect").RequestContext, props: {
1408
+ id: string;
1409
+ query?: import("connect/ConnectAPI").ConnectQueryParams;
1410
+ }) => Promise<AppClip>;
1411
+ }
1412
+ }
1386
1413
  declare module "connect/models/AppDataUsageGrouping" {
1387
1414
  import { ConnectModel } from "connect/models/ConnectModel";
1388
1415
  export interface AppDataUsageGroupingProps {
@@ -1904,7 +1931,8 @@ declare module "connect/models/BundleIdCapability" {
1904
1931
  TAP_TO_PAY_ON_IPHONE = "TAP_TO_PAY_ON_IPHONE",
1905
1932
  JOURNALING_SUGGESTIONS = "JOURNALING_SUGGESTIONS",// ok
1906
1933
  MANAGED_APP_INSTALLATION_UI = "MANAGED_APP_INSTALLATION_UI",// ok
1907
- MARZIPAN = "MARZIPAN"
1934
+ MARZIPAN = "MARZIPAN",// Catalyst
1935
+ ON_DEMAND_INSTALL_CAPABLE = "ON_DEMAND_INSTALL_CAPABLE"
1908
1936
  }
1909
1937
  export enum CapabilityTypeOption {
1910
1938
  ON = "ON",
@@ -2012,6 +2040,7 @@ declare module "connect/models/BundleIdCapability" {
2012
2040
  [CapabilityType.SUSTAINED_EXECUTION]: CapabilityTypeOption;
2013
2041
  [CapabilityType.JOURNALING_SUGGESTIONS]: CapabilityTypeOption;
2014
2042
  [CapabilityType.MANAGED_APP_INSTALLATION_UI]: CapabilityTypeOption;
2043
+ [CapabilityType.ON_DEMAND_INSTALL_CAPABLE]: CapabilityTypeOption;
2015
2044
  }
2016
2045
  enum CapabilitySettingKey {
2017
2046
  ICLOUD_VERSION = "ICLOUD_VERSION",
@@ -2543,6 +2572,24 @@ declare module "connect/models/BundleId" {
2543
2572
  platform?: BundleIdProps['platform'];
2544
2573
  identifier: string;
2545
2574
  }): Promise<BundleId>;
2575
+ /**
2576
+ * Creates an App Clip bundle identifier.
2577
+ *
2578
+ * App Clip bundle IDs follow the convention `{main-bundle-id}.Clip`.
2579
+ * Requires session auth (cookies) - API token auth won't work.
2580
+ *
2581
+ * @param context Request context with session auth
2582
+ * @param name Display name for the App Clip bundle ID
2583
+ * @param platform Target platform (defaults to IOS)
2584
+ * @param identifier Bundle identifier (should be {main-bundle-id}.Clip)
2585
+ * @param parentBundleIdId Opaque ID of the parent BundleId (e.g., "6GXS684248")
2586
+ */
2587
+ static createAppClipAsync(context: RequestContext, { name, platform, identifier, parentBundleIdId, }: {
2588
+ name: string;
2589
+ platform?: BundleIdProps['platform'];
2590
+ identifier: string;
2591
+ parentBundleIdId: string;
2592
+ }): Promise<BundleId>;
2546
2593
  static deleteAsync: (context: RequestContext, props: {
2547
2594
  id: string;
2548
2595
  }) => Promise<void>;
@@ -2561,6 +2608,10 @@ declare module "connect/models/BundleId" {
2561
2608
  query?: Pick<ConnectQueryParams<object>, 'limit'>;
2562
2609
  }): Promise<Profile[]>;
2563
2610
  supportsCatalyst(): boolean;
2611
+ /**
2612
+ * Returns true if this bundle ID is an App Clip.
2613
+ */
2614
+ isAppClip(): boolean;
2564
2615
  getCapabilityId(capabilityType: CapabilityType): string;
2565
2616
  private getOrFetchBundleIdCapabilitiesAsync;
2566
2617
  hasCapabilityAsync(capability: CapabilityType): Promise<BundleIdCapability | null>;
@@ -2703,7 +2754,6 @@ declare module "connect/AssetAPI" {
2703
2754
  declare module "utils/crypto" {
2704
2755
  import * as crypto from 'crypto';
2705
2756
  export function getChecksum(value: crypto.BinaryLike): string;
2706
- export function getChecksumForFilePath(value: string): string;
2707
2757
  }
2708
2758
  declare module "connect/models/AppStoreReviewAttachment" {
2709
2759
  import { RequestContext } from "network/Request";
@@ -2776,6 +2826,192 @@ declare module "connect/models/AppStoreReviewDetail" {
2776
2826
  uploadAttachmentAsync(filePath: string): Promise<AppStoreReviewAttachment>;
2777
2827
  }
2778
2828
  }
2829
+ declare module "connect/models/AppPreview" {
2830
+ import { RequestContext } from "network/Request";
2831
+ import { AppMediaAssetState, ImageAsset, UploadOperation } from "connect/AssetAPI";
2832
+ import { ConnectModel } from "connect/models/ConnectModel";
2833
+ export interface AppPreviewProps {
2834
+ fileSize: number;
2835
+ fileName: string;
2836
+ sourceFileChecksum: string;
2837
+ /**
2838
+ * Time code for the preview frame (poster image).
2839
+ * Format: "MM:SS:FF" where FF is frames (e.g., "00:05:00" for 5 seconds)
2840
+ * @example "00:05:00"
2841
+ */
2842
+ previewFrameTimeCode: string | null;
2843
+ mimeType: string;
2844
+ /**
2845
+ * URL to download the processed video preview.
2846
+ * Only available after processing is complete.
2847
+ */
2848
+ videoUrl: string | null;
2849
+ /**
2850
+ * Preview frame/poster image asset.
2851
+ * Contains templateUrl with {w}, {h}, {f} placeholders.
2852
+ */
2853
+ previewImage: ImageAsset | null;
2854
+ uploadOperations: UploadOperation[];
2855
+ assetDeliveryState: AppMediaAssetState;
2856
+ }
2857
+ /**
2858
+ * App Preview (video) for App Store listings.
2859
+ * Previews are short videos that demonstrate your app's features.
2860
+ */
2861
+ export class AppPreview extends ConnectModel<AppPreviewProps> {
2862
+ static type: string;
2863
+ static infoAsync: (context: RequestContext, props: {
2864
+ id: string;
2865
+ query?: import("connect/ConnectAPI").ConnectQueryParams;
2866
+ }) => Promise<AppPreview>;
2867
+ static createAsync(context: RequestContext, { id, attributes, }: {
2868
+ /** AppPreviewSet ID */
2869
+ id: string;
2870
+ attributes: Pick<AppPreviewProps, 'fileName' | 'fileSize'> & {
2871
+ /** Optional MIME type (e.g., "video/mp4", "video/quicktime") */
2872
+ mimeType?: string;
2873
+ };
2874
+ }): Promise<AppPreview>;
2875
+ /**
2876
+ * Upload a video preview file.
2877
+ * @param id AppPreviewSet ID
2878
+ * @param filePath Path to the video file (MP4, MOV)
2879
+ * @param waitForProcessing Wait for Apple to process the video (default: true)
2880
+ * @param previewFrameTimeCode Optional time code for preview frame (e.g., "00:05:00" for 5 seconds)
2881
+ */
2882
+ static uploadAsync(context: RequestContext, { id, filePath, waitForProcessing, previewFrameTimeCode, }: {
2883
+ id: string;
2884
+ filePath: string;
2885
+ waitForProcessing?: boolean;
2886
+ previewFrameTimeCode?: string;
2887
+ }): Promise<AppPreview>;
2888
+ static deleteAsync: (context: RequestContext, props: {
2889
+ id: string;
2890
+ }) => Promise<void>;
2891
+ deleteAsync(): Promise<void>;
2892
+ updateAsync(options: Partial<AppPreviewProps> & {
2893
+ uploaded?: boolean;
2894
+ }): Promise<AppPreview>;
2895
+ isAwaitingUpload(): boolean;
2896
+ isProcessing(): boolean;
2897
+ isComplete(): boolean;
2898
+ isFailed(): boolean;
2899
+ getErrorMessages(): string[];
2900
+ /**
2901
+ * Get the video URL for downloading the preview.
2902
+ * Only available after processing is complete.
2903
+ */
2904
+ getVideoUrl(): string | null;
2905
+ /**
2906
+ * Get the preview frame (poster) image URL.
2907
+ * Returns null if not available.
2908
+ */
2909
+ getPreviewImageUrl({ width, height, type, }?: {
2910
+ width?: number;
2911
+ height?: number;
2912
+ type?: string;
2913
+ }): string | null;
2914
+ }
2915
+ }
2916
+ declare module "connect/models/AppPreviewSet" {
2917
+ import { RequestContext } from "network/Request";
2918
+ import { ConnectQueryParams } from "connect/ConnectAPI";
2919
+ import { AppPreview } from "connect/models/AppPreview";
2920
+ import { ConnectModel } from "connect/models/ConnectModel";
2921
+ export interface AppPreviewSetProps {
2922
+ previewType: PreviewType;
2923
+ appPreviews: AppPreview[];
2924
+ }
2925
+ /**
2926
+ * Display types for app previews.
2927
+ * Each type corresponds to a specific device screen size.
2928
+ */
2929
+ export enum PreviewType {
2930
+ IPHONE_35 = "IPHONE_35",
2931
+ IPHONE_40 = "IPHONE_40",
2932
+ IPHONE_47 = "IPHONE_47",
2933
+ IPHONE_55 = "IPHONE_55",
2934
+ IPHONE_58 = "IPHONE_58",
2935
+ IPHONE_61 = "IPHONE_61",
2936
+ IPHONE_65 = "IPHONE_65",
2937
+ IPHONE_67 = "IPHONE_67",
2938
+ IPAD_97 = "IPAD_97",
2939
+ IPAD_105 = "IPAD_105",
2940
+ IPAD_PRO_129 = "IPAD_PRO_129",
2941
+ IPAD_PRO_3GEN_11 = "IPAD_PRO_3GEN_11",
2942
+ IPAD_PRO_3GEN_129 = "IPAD_PRO_3GEN_129",
2943
+ WATCH_SERIES_3 = "WATCH_SERIES_3",
2944
+ WATCH_SERIES_4 = "WATCH_SERIES_4",
2945
+ WATCH_SERIES_7 = "WATCH_SERIES_7",
2946
+ WATCH_SERIES_10 = "WATCH_SERIES_10",
2947
+ WATCH_ULTRA = "WATCH_ULTRA",
2948
+ APPLE_TV = "APPLE_TV",
2949
+ APPLE_VISION_PRO = "APPLE_VISION_PRO",
2950
+ DESKTOP = "DESKTOP"
2951
+ }
2952
+ export const ALL_PREVIEW_TYPES: PreviewType[];
2953
+ /**
2954
+ * App Preview Set - groups app previews by display type.
2955
+ * Each set contains previews for a specific device screen size.
2956
+ */
2957
+ export class AppPreviewSet extends ConnectModel<AppPreviewSetProps> {
2958
+ static type: string;
2959
+ /**
2960
+ * Get info for a specific AppPreviewSet.
2961
+ * @param id AppPreviewSet ID
2962
+ */
2963
+ static infoAsync: (context: RequestContext, props: {
2964
+ id: string;
2965
+ query?: ConnectQueryParams;
2966
+ }) => Promise<AppPreviewSet>;
2967
+ /**
2968
+ * Create a new AppPreviewSet for a localization.
2969
+ * @param id AppStoreVersionLocalization ID
2970
+ * @param attributes Preview type attributes
2971
+ */
2972
+ static createAsync(context: RequestContext, { id, attributes, }: {
2973
+ id: string;
2974
+ attributes: Pick<AppPreviewSetProps, 'previewType'>;
2975
+ }): Promise<AppPreviewSet>;
2976
+ /**
2977
+ * Update the order of previews in this set.
2978
+ */
2979
+ updateAsync({ appPreviews }: {
2980
+ appPreviews: string[];
2981
+ }): Promise<AppPreviewSet>;
2982
+ static deleteAsync: (context: RequestContext, props: {
2983
+ id: string;
2984
+ }) => Promise<void>;
2985
+ deleteAsync(): Promise<void>;
2986
+ isIphone(): boolean;
2987
+ isIpad(): boolean;
2988
+ isWatch(): boolean;
2989
+ isAppleTv(): boolean;
2990
+ isAppleVisionPro(): boolean;
2991
+ isDesktop(): boolean;
2992
+ /**
2993
+ * Upload a video preview to this set.
2994
+ * @param filePath Path to the video file (MP4, MOV)
2995
+ * @param waitForProcessing Wait for Apple to process the video
2996
+ * @param position Optional position to insert the preview
2997
+ * @param previewFrameTimeCode Optional time code for the preview frame (e.g., "00:05:00")
2998
+ */
2999
+ uploadPreview({ filePath, waitForProcessing, position, previewFrameTimeCode, }: {
3000
+ filePath: string;
3001
+ waitForProcessing?: boolean;
3002
+ position?: number;
3003
+ previewFrameTimeCode?: string;
3004
+ }): Promise<AppPreview>;
3005
+ /**
3006
+ * Reorder previews in this set.
3007
+ * @param appPreviews Array of AppPreview IDs in desired order
3008
+ */
3009
+ reorderPreviewsAsync({ appPreviews, query, }: {
3010
+ appPreviews: string[];
3011
+ query?: ConnectQueryParams;
3012
+ }): Promise<AppPreviewSet[]>;
3013
+ }
3014
+ }
2779
3015
  declare module "connect/models/AppScreenshot" {
2780
3016
  import { RequestContext } from "network/Request";
2781
3017
  import { AppMediaAssetState, ImageAsset, UploadOperation } from "connect/AssetAPI";
@@ -2907,6 +3143,7 @@ declare module "connect/models/AppScreenshotSet" {
2907
3143
  declare module "connect/models/AppStoreVersionLocalization" {
2908
3144
  import { RequestContext } from "network/Request";
2909
3145
  import { ConnectQueryFilter, ConnectQueryParams } from "connect/ConnectAPI";
3146
+ import { AppPreviewSet, AppPreviewSetProps } from "connect/models/AppPreviewSet";
2910
3147
  import { AppScreenshotSet, AppScreenshotSetProps } from "connect/models/AppScreenshotSet";
2911
3148
  import { ConnectModel } from "connect/models/ConnectModel";
2912
3149
  export interface AppStoreVersionLocalizationProps {
@@ -2924,6 +3161,7 @@ declare module "connect/models/AppStoreVersionLocalization" {
2924
3161
  supportUrl: string | null;
2925
3162
  whatsNew: string | null;
2926
3163
  appScreenshotSets?: AppScreenshotSet[];
3164
+ appPreviewSets?: AppPreviewSet[];
2927
3165
  }
2928
3166
  /**
2929
3167
  * Used for updating basic metadata.
@@ -2942,6 +3180,10 @@ declare module "connect/models/AppStoreVersionLocalization" {
2942
3180
  query?: ConnectQueryParams<ConnectQueryFilter<AppScreenshotSetProps, 'screenshotDisplayType'>>;
2943
3181
  }): Promise<AppScreenshotSet[]>;
2944
3182
  createAppScreenshotSetAsync(attributes: Pick<AppScreenshotSetProps, 'screenshotDisplayType'>): Promise<AppScreenshotSet>;
3183
+ getAppPreviewSetsAsync({ query, }?: {
3184
+ query?: ConnectQueryParams<ConnectQueryFilter<AppPreviewSetProps, 'previewType'>>;
3185
+ }): Promise<AppPreviewSet[]>;
3186
+ createAppPreviewSetAsync(attributes: Pick<AppPreviewSetProps, 'previewType'>): Promise<AppPreviewSet>;
2945
3187
  }
2946
3188
  }
2947
3189
  declare module "connect/models/AppStoreVersionPhasedRelease" {
@@ -4115,6 +4357,190 @@ declare module "connect/models/BetaAppTesterDetail" {
4115
4357
  static type: string;
4116
4358
  }
4117
4359
  }
4360
+ declare module "connect/models/BetaFeedbackCrashSubmission" {
4361
+ /**
4362
+ * @see https://developer.apple.com/documentation/appstoreconnectapi/beta-feedback-crash-submissions
4363
+ */
4364
+ import { ConnectQueryFilter } from "connect/ConnectAPI";
4365
+ import { ConnectModel } from "connect/models/ConnectModel";
4366
+ import { Platform } from "connect/models/PreReleaseVersion";
4367
+ /** Device connection type at the time of crash. */
4368
+ export type DeviceConnectionType = 'WIFI' | 'MOBILE_DATA' | 'WIRE' | 'UNKNOWN' | 'NONE';
4369
+ /** Device family type. */
4370
+ export type DeviceFamily = 'IPHONE' | 'IPAD' | 'APPLE_TV' | 'APPLE_WATCH' | 'MAC' | 'VISION';
4371
+ interface BetaFeedbackCrashSubmissionProps {
4372
+ /** @example "2024-12-15T22:40:22.705Z" */
4373
+ createdDate: string;
4374
+ /** Optional comment from the tester about the crash. */
4375
+ comment: string | null;
4376
+ /** @example "user@example.com" */
4377
+ email: string | null;
4378
+ /** @example "iPhone12,1" */
4379
+ deviceModel: string;
4380
+ /** @example "18.2" */
4381
+ osVersion: string;
4382
+ /** @example "en-GB" */
4383
+ locale: string;
4384
+ /** @example "Europe/London" */
4385
+ timeZone: string;
4386
+ /** @example "arm64e" */
4387
+ architecture: string;
4388
+ /** @example "WIFI" */
4389
+ connectionType: DeviceConnectionType;
4390
+ /** Apple Watch paired model, if any. */
4391
+ pairedAppleWatch: string | null;
4392
+ /** App uptime in milliseconds when the crash occurred. */
4393
+ appUptimeInMilliseconds: number | null;
4394
+ /** Available disk space in bytes. */
4395
+ diskBytesAvailable: number | null;
4396
+ /** Total disk space in bytes. */
4397
+ diskBytesTotal: number | null;
4398
+ /** Battery percentage at time of crash. */
4399
+ batteryPercentage: number | null;
4400
+ /** Screen width in points. */
4401
+ screenWidthInPoints: number | null;
4402
+ /** Screen height in points. */
4403
+ screenHeightInPoints: number | null;
4404
+ /** @example "IOS" */
4405
+ appPlatform: Platform;
4406
+ /** @example "IOS" */
4407
+ devicePlatform: Platform;
4408
+ /** @example "IPHONE" */
4409
+ deviceFamily: DeviceFamily;
4410
+ /** Bundle ID of the build. */
4411
+ buildBundleId: string | null;
4412
+ }
4413
+ export type BetaFeedbackCrashSubmissionQueryFilter = ConnectQueryFilter<BetaFeedbackCrashSubmissionProps & {
4414
+ build: string;
4415
+ 'build.preReleaseVersion': string;
4416
+ tester: string;
4417
+ }, 'deviceModel' | 'osVersion' | 'appPlatform' | 'devicePlatform' | 'build' | 'build.preReleaseVersion' | 'tester'>;
4418
+ export class BetaFeedbackCrashSubmission extends ConnectModel<BetaFeedbackCrashSubmissionProps> {
4419
+ static type: string;
4420
+ static DEFAULT_INCLUDES: string[];
4421
+ /**
4422
+ * Get all beta feedback crash submissions for an app.
4423
+ * @see https://developer.apple.com/documentation/appstoreconnectapi/get-v1-apps-_id_-betafeedbackcrashsubmissions
4424
+ */
4425
+ static getAsync: (context: import("AppStoreConnect").RequestContext, props?: {
4426
+ query?: import("connect/ConnectAPI").ConnectQueryParams<Partial<{
4427
+ build: string | string[];
4428
+ deviceModel: string | string[];
4429
+ osVersion: string | string[];
4430
+ appPlatform: Platform | Platform[];
4431
+ devicePlatform: Platform | Platform[];
4432
+ 'build.preReleaseVersion': string | string[];
4433
+ tester: string | string[];
4434
+ } & {
4435
+ id?: string;
4436
+ }>> | undefined;
4437
+ } | undefined) => Promise<BetaFeedbackCrashSubmission[]>;
4438
+ /**
4439
+ * Get a single beta feedback crash submission by ID.
4440
+ * @see https://developer.apple.com/documentation/appstoreconnectapi/get-v1-betafeedbackcrashsubmissions-_id_
4441
+ */
4442
+ static infoAsync: (context: import("AppStoreConnect").RequestContext, props: {
4443
+ id: string;
4444
+ query?: import("connect/ConnectAPI").ConnectQueryParams;
4445
+ }) => Promise<BetaFeedbackCrashSubmission>;
4446
+ /**
4447
+ * Delete a beta feedback crash submission.
4448
+ * @see https://developer.apple.com/documentation/appstoreconnectapi/delete-v1-betafeedbackcrashsubmissions-_id_
4449
+ */
4450
+ static deleteAsync: (context: import("AppStoreConnect").RequestContext, props: {
4451
+ id: string;
4452
+ }) => Promise<void>;
4453
+ }
4454
+ }
4455
+ declare module "connect/models/BetaFeedbackScreenshotSubmission" {
4456
+ /**
4457
+ * Beta feedback with screenshots from TestFlight testers.
4458
+ * @see https://developer.apple.com/documentation/appstoreconnectapi/betafeedbackscreenshotsubmission
4459
+ */
4460
+ import { ConnectQueryFilter } from "connect/ConnectAPI";
4461
+ import { DeviceConnectionType, DeviceFamily } from "connect/models/BetaFeedbackCrashSubmission";
4462
+ import { ConnectModel } from "connect/models/ConnectModel";
4463
+ import { Platform } from "connect/models/PreReleaseVersion";
4464
+ /** Screenshot image attached to beta feedback. */
4465
+ export interface BetaFeedbackScreenshotImage {
4466
+ /** URL to download the screenshot image. */
4467
+ url: string;
4468
+ /** Width in pixels. */
4469
+ width: number;
4470
+ /** Height in pixels. */
4471
+ height: number;
4472
+ /** When the URL expires. */
4473
+ expirationDate: string;
4474
+ }
4475
+ interface BetaFeedbackScreenshotSubmissionProps {
4476
+ /** @example "2024-12-15T22:40:22.705Z" */
4477
+ createdDate: string;
4478
+ /** Feedback comment from the tester. */
4479
+ comment: string | null;
4480
+ /** @example "user@example.com" */
4481
+ email: string | null;
4482
+ /** @example "iPhone12,1" */
4483
+ deviceModel: string;
4484
+ /** @example "18.2" */
4485
+ osVersion: string;
4486
+ /** @example "en-GB" */
4487
+ locale: string;
4488
+ /** @example "Europe/London" */
4489
+ timeZone: string;
4490
+ /** @example "arm64e" */
4491
+ architecture: string;
4492
+ /** @example "WIFI" */
4493
+ connectionType: DeviceConnectionType;
4494
+ /** Apple Watch paired model, if any. */
4495
+ pairedAppleWatch: string | null;
4496
+ /** App uptime in milliseconds when feedback was submitted. */
4497
+ appUptimeInMilliseconds: number | null;
4498
+ /** Available disk space in bytes. */
4499
+ diskBytesAvailable: number | null;
4500
+ /** Total disk space in bytes. */
4501
+ diskBytesTotal: number | null;
4502
+ /** Battery percentage at time of feedback. */
4503
+ batteryPercentage: number | null;
4504
+ /** Screen width in points. */
4505
+ screenWidthInPoints: number | null;
4506
+ /** Screen height in points. */
4507
+ screenHeightInPoints: number | null;
4508
+ /** @example "IOS" */
4509
+ appPlatform: Platform;
4510
+ /** @example "IOS" */
4511
+ devicePlatform: Platform;
4512
+ /** @example "IPHONE" */
4513
+ deviceFamily: DeviceFamily;
4514
+ /** Bundle ID of the build. */
4515
+ buildBundleId: string | null;
4516
+ /** Screenshots attached to this feedback. */
4517
+ screenshots: BetaFeedbackScreenshotImage[] | null;
4518
+ }
4519
+ export type BetaFeedbackScreenshotSubmissionQueryFilter = ConnectQueryFilter<BetaFeedbackScreenshotSubmissionProps & {
4520
+ build: string;
4521
+ 'build.preReleaseVersion': string;
4522
+ tester: string;
4523
+ }, 'deviceModel' | 'osVersion' | 'appPlatform' | 'devicePlatform' | 'build' | 'build.preReleaseVersion' | 'tester'>;
4524
+ export class BetaFeedbackScreenshotSubmission extends ConnectModel<BetaFeedbackScreenshotSubmissionProps> {
4525
+ static type: string;
4526
+ static DEFAULT_INCLUDES: string[];
4527
+ /**
4528
+ * Get a single beta feedback screenshot submission by ID.
4529
+ * @see https://developer.apple.com/documentation/appstoreconnectapi/get-v1-betafeedbackscreenshotsubmissions-_id_
4530
+ */
4531
+ static infoAsync: (context: import("AppStoreConnect").RequestContext, props: {
4532
+ id: string;
4533
+ query?: import("connect/ConnectAPI").ConnectQueryParams;
4534
+ }) => Promise<BetaFeedbackScreenshotSubmission>;
4535
+ /**
4536
+ * Delete a beta feedback screenshot submission.
4537
+ * @see https://developer.apple.com/documentation/appstoreconnectapi/delete-v1-betafeedbackscreenshotsubmissions-_id_
4538
+ */
4539
+ static deleteAsync: (context: import("AppStoreConnect").RequestContext, props: {
4540
+ id: string;
4541
+ }) => Promise<void>;
4542
+ }
4543
+ }
4118
4544
  declare module "connect/models/BetaTesterInvitation" {
4119
4545
  import { RequestContext } from "network/Request";
4120
4546
  import { ConnectModel } from "connect/models/ConnectModel";
@@ -4293,6 +4719,7 @@ declare module "connect/models/Territory" {
4293
4719
  declare module "connect/models/App" {
4294
4720
  import { RequestContext } from "network/Request";
4295
4721
  import { ConnectQueryFilter, ConnectQueryParams } from "connect/ConnectAPI";
4722
+ import { AppClip } from "connect/models/AppClip";
4296
4723
  import { AppDataUsage } from "connect/models/AppDataUsage";
4297
4724
  import { AppDataUsageCategoryId } from "connect/models/AppDataUsageCategory";
4298
4725
  import { AppDataUsageDataProtectionId } from "connect/models/AppDataUsageDataProtection";
@@ -4304,6 +4731,8 @@ declare module "connect/models/App" {
4304
4731
  import { BetaAppLocalization, BetaAppLocalizationProps } from "connect/models/BetaAppLocalization";
4305
4732
  import { BetaAppReviewDetail, BetaAppReviewDetailProps } from "connect/models/BetaAppReviewDetail";
4306
4733
  import { BetaAppTesterDetail } from "connect/models/BetaAppTesterDetail";
4734
+ import { BetaFeedbackCrashSubmission, BetaFeedbackCrashSubmissionQueryFilter } from "connect/models/BetaFeedbackCrashSubmission";
4735
+ import { BetaFeedbackScreenshotSubmission, BetaFeedbackScreenshotSubmissionQueryFilter } from "connect/models/BetaFeedbackScreenshotSubmission";
4307
4736
  import { BetaGroup } from "connect/models/BetaGroup";
4308
4737
  import { BetaTesterInvitation } from "connect/models/BetaTesterInvitation";
4309
4738
  import { Build } from "connect/models/Build";
@@ -4334,6 +4763,7 @@ declare module "connect/models/App" {
4334
4763
  appStoreVersions?: AppStoreVersion[];
4335
4764
  preReleaseVersions?: PreReleaseVersion[];
4336
4765
  availableTerritories?: Territory[];
4766
+ builds?: Build[];
4337
4767
  betaAppReviewDetail?: BetaAppReviewDetail;
4338
4768
  }
4339
4769
  export type AppQueryFilter = ConnectQueryFilter<Pick<AppProps, 'sku' | 'name' | 'bundleId'> & {
@@ -4479,6 +4909,27 @@ declare module "connect/models/App" {
4479
4909
  getBetaGroupsAsync({ query, }?: {
4480
4910
  query?: ConnectQueryParams;
4481
4911
  }): Promise<BetaGroup[]>;
4912
+ /**
4913
+ * Get App Clips associated with this app.
4914
+ * @see https://developer.apple.com/documentation/appstoreconnectapi/get-v1-apps-_id_-appclips
4915
+ */
4916
+ getAppClipsAsync({ query, }?: {
4917
+ query?: ConnectQueryParams;
4918
+ }): Promise<AppClip[]>;
4919
+ /**
4920
+ * Get beta feedback crash submissions for this app.
4921
+ * @see https://developer.apple.com/documentation/appstoreconnectapi/get-v1-apps-_id_-betafeedbackcrashsubmissions
4922
+ */
4923
+ getBetaFeedbackCrashSubmissionsAsync({ query, }?: {
4924
+ query?: ConnectQueryParams<BetaFeedbackCrashSubmissionQueryFilter>;
4925
+ }): Promise<BetaFeedbackCrashSubmission[]>;
4926
+ /**
4927
+ * Get beta feedback screenshot submissions for this app.
4928
+ * @see https://developer.apple.com/documentation/appstoreconnectapi/get-v1-apps-_id_-betafeedbackscreenshotsubmissions
4929
+ */
4930
+ getBetaFeedbackScreenshotSubmissionsAsync({ query, }?: {
4931
+ query?: ConnectQueryParams<BetaFeedbackScreenshotSubmissionQueryFilter>;
4932
+ }): Promise<BetaFeedbackScreenshotSubmission[]>;
4482
4933
  getAppDataUsagesPublishStateAsync({ query, }?: {
4483
4934
  query?: ConnectQueryParams;
4484
4935
  }): Promise<AppDataUsagesPublishState[]>;
@@ -4524,7 +4975,7 @@ declare module "connect/models/User" {
4524
4975
  email: string | null;
4525
4976
  preferredCurrencyTerritory: Territory | null;
4526
4977
  agreedToTerms: boolean | null;
4527
- roles: UserRole | null;
4978
+ roles: UserRole[] | null;
4528
4979
  allAppsVisible: boolean;
4529
4980
  provisioningAllowed: boolean;
4530
4981
  emailVettingRequired: boolean;
@@ -4542,7 +4993,7 @@ declare module "connect/models/User" {
4542
4993
  static getAsync: (context: import("AppStoreConnect").RequestContext, props?: {
4543
4994
  query?: import("connect/ConnectAPI").ConnectQueryParams<Partial<{
4544
4995
  username: string | (string | null)[] | null;
4545
- roles: UserRole | (UserRole | null)[] | null;
4996
+ roles: UserRole[] | (UserRole[] | null)[] | null;
4546
4997
  visibleApps: (App[] & string) | (App[] & string)[];
4547
4998
  } & {
4548
4999
  id?: string;
@@ -4673,6 +5124,28 @@ declare module "connect/models/AppPricePoint" {
4673
5124
  }) => Promise<AppPricePoint>;
4674
5125
  }
4675
5126
  }
5127
+ declare module "connect/models/BetaCrashLog" {
5128
+ /**
5129
+ * The crash log text associated with a beta feedback crash submission.
5130
+ * @see https://developer.apple.com/documentation/appstoreconnectapi/betacrashlog
5131
+ */
5132
+ import { RequestContext } from "network/Request";
5133
+ import { ConnectModel } from "connect/models/ConnectModel";
5134
+ interface BetaCrashLogProps {
5135
+ /** The crash log text content. */
5136
+ logText: string;
5137
+ }
5138
+ export class BetaCrashLog extends ConnectModel<BetaCrashLogProps> {
5139
+ static type: string;
5140
+ /**
5141
+ * Get the crash log for a beta feedback crash submission.
5142
+ * @see https://developer.apple.com/documentation/appstoreconnectapi/get-v1-betafeedbackcrashsubmissions-_id_-crashlog
5143
+ */
5144
+ static getCrashLogAsync(context: RequestContext, { betaFeedbackCrashSubmissionId }: {
5145
+ betaFeedbackCrashSubmissionId: string;
5146
+ }): Promise<BetaCrashLog>;
5147
+ }
5148
+ }
4676
5149
  declare module "connect/models/SandboxTester" {
4677
5150
  import { RequestContext } from "network/Request";
4678
5151
  import { ConnectModel } from "connect/models/ConnectModel";
@@ -4729,6 +5202,74 @@ declare module "connect/models/ResolutionCenterMessageAttachment" {
4729
5202
  } | undefined) => Promise<ResolutionCenterMessageAttachment[]>;
4730
5203
  }
4731
5204
  }
5205
+ declare module "connect/models/UserInvitation" {
5206
+ import { RequestContext } from "network/Request";
5207
+ import { ConnectQueryFilter } from "connect/ConnectAPI";
5208
+ import type { App } from "connect/models/App";
5209
+ import { ConnectModel } from "connect/models/ConnectModel";
5210
+ import { UserRole } from "connect/models/User";
5211
+ export interface UserInvitationProps {
5212
+ firstName: string;
5213
+ lastName: string;
5214
+ email: string;
5215
+ allAppsVisible: boolean | null;
5216
+ provisioningAllowed: boolean;
5217
+ roles: UserRole[] | null;
5218
+ /**
5219
+ * Date when the invite is no longer valid and must be resent.
5220
+ * Formatted like "2025-01-09T10:16:42-08:00"
5221
+ */
5222
+ expirationDate: string;
5223
+ visibleApps?: App[];
5224
+ }
5225
+ export type UserInvitationQueryFilter = ConnectQueryFilter<UserInvitationProps & {
5226
+ /**
5227
+ * `App` id
5228
+ */
5229
+ visibleApps: string;
5230
+ }, 'email' | 'firstName' | 'lastName' | 'expirationDate' | 'roles' | 'allAppsVisible' | 'provisioningAllowed'>;
5231
+ export class UserInvitation extends ConnectModel<UserInvitationProps> {
5232
+ static type: string;
5233
+ static getAsync: (context: RequestContext, props?: {
5234
+ query?: import("connect/ConnectAPI").ConnectQueryParams<Partial<{
5235
+ expirationDate: string | string[];
5236
+ email: string | string[];
5237
+ firstName: string | string[];
5238
+ lastName: string | string[];
5239
+ roles: UserRole[] | (UserRole[] | null)[] | null;
5240
+ allAppsVisible: boolean | (boolean | null)[] | null;
5241
+ provisioningAllowed: boolean | boolean[];
5242
+ } & {
5243
+ id?: string;
5244
+ }>> | undefined;
5245
+ } | undefined) => Promise<UserInvitation[]>;
5246
+ /**
5247
+ *
5248
+ * @param id `UserInvitation` id (ex: UNHB5PT4MA)
5249
+ */
5250
+ static infoAsync: (context: RequestContext, props: {
5251
+ id: string;
5252
+ query?: import("connect/ConnectAPI").ConnectQueryParams;
5253
+ }) => Promise<UserInvitation>;
5254
+ static createAsync(context: RequestContext, { email, firstName, lastName, roles, provisioningAllowed, allAppsVisible, visibleApps, }: {
5255
+ email: UserInvitationProps['email'];
5256
+ firstName: UserInvitationProps['firstName'];
5257
+ lastName: UserInvitationProps['lastName'];
5258
+ roles: UserInvitationProps['roles'];
5259
+ provisioningAllowed?: UserInvitationProps['provisioningAllowed'];
5260
+ allAppsVisible?: boolean;
5261
+ /**
5262
+ * `App` id
5263
+ */
5264
+ visibleApps?: string[];
5265
+ }): Promise<UserInvitation>;
5266
+ static deleteAsync: (context: RequestContext, props: {
5267
+ id: string;
5268
+ }) => Promise<void>;
5269
+ isExpired(): boolean;
5270
+ resendAsync(): Promise<UserInvitation>;
5271
+ }
5272
+ }
4732
5273
  declare module "connect/models/BetaFeedback" {
4733
5274
  import { ConnectQueryFilter } from "connect/ConnectAPI";
4734
5275
  import { ConnectModel } from "connect/models/ConnectModel";
@@ -4792,9 +5333,9 @@ declare module "connect/models/BetaFeedback" {
4792
5333
  query?: import("connect/ConnectAPI").ConnectQueryParams<Partial<{
4793
5334
  builds: string | string[];
4794
5335
  betaTesters: string | string[];
4795
- 'build.app': string | string[];
4796
- 'build.preReleaseVersion': string | string[];
4797
5336
  appPlatform: Platform | Platform[];
5337
+ 'build.preReleaseVersion': string | string[];
5338
+ 'build.app': string | string[];
4798
5339
  } & {
4799
5340
  id?: string;
4800
5341
  }>> | undefined;
@@ -4874,6 +5415,7 @@ declare module "connect/index" {
4874
5415
  export * from "connect/models/Actor";
4875
5416
  export * from "connect/models/ApiKey";
4876
5417
  export * from "connect/models/App";
5418
+ export * from "connect/models/AppClip";
4877
5419
  export * from "connect/models/AppDataUsage";
4878
5420
  export * from "connect/models/AppDataUsageCategory";
4879
5421
  export * from "connect/models/AppDataUsageDataProtection";
@@ -4887,6 +5429,8 @@ declare module "connect/index" {
4887
5429
  export * from "connect/models/AppPrice";
4888
5430
  export * from "connect/models/AppPricePoint";
4889
5431
  export * from "connect/models/AppPriceTier";
5432
+ export * from "connect/models/AppPreview";
5433
+ export * from "connect/models/AppPreviewSet";
4890
5434
  export * from "connect/models/AppScreenshot";
4891
5435
  export * from "connect/models/AppScreenshotSet";
4892
5436
  export * from "connect/models/AppStoreReviewAttachment";
@@ -4901,6 +5445,9 @@ declare module "connect/index" {
4901
5445
  export * from "connect/models/BetaAppReviewDetail";
4902
5446
  export * from "connect/models/BetaBuildLocalization";
4903
5447
  export * from "connect/models/BetaBuildMetric";
5448
+ export * from "connect/models/BetaCrashLog";
5449
+ export * from "connect/models/BetaFeedbackCrashSubmission";
5450
+ export * from "connect/models/BetaFeedbackScreenshotSubmission";
4904
5451
  export * from "connect/models/BetaGroup";
4905
5452
  export * from "connect/models/BetaTester";
4906
5453
  export * from "connect/models/Build";
@@ -4923,6 +5470,7 @@ declare module "connect/index" {
4923
5470
  export * from "connect/models/Profile";
4924
5471
  export * from "connect/models/InAppPurchase";
4925
5472
  export * from "connect/models/User";
5473
+ export * from "connect/models/UserInvitation";
4926
5474
  export * from "connect/models/CloudContainer";
4927
5475
  export * from "connect/models/ReviewSubmission";
4928
5476
  export * from "connect/models/ReviewSubmissionItem";