@expo/apple-utils 2.1.20 → 2.1.21

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.
@@ -1026,7 +1026,12 @@ declare module "portal/Keys" {
1026
1026
  */
1027
1027
  APNS = "U27F4V844T",
1028
1028
  DEVICE_CHECK = "DQ8HTZ7739",
1029
- MUSIC_KIT = "6A7HVUVQ3M"
1029
+ MUSIC_KIT = "6A7HVUVQ3M",
1030
+ /**
1031
+ * Sign In with Apple key configuration.
1032
+ * Associates with bundle IDs for primary app consent.
1033
+ */
1034
+ APPLE_ID_AUTH = "APPLE_ID_AUTH_KEY_CONFIGURATION"
1030
1035
  }
1031
1036
  /**
1032
1037
  * Find all keys available for the currently authenticated account.
@@ -1070,6 +1075,34 @@ declare module "portal/Keys" {
1070
1075
  export class MaxKeysCreatedError extends Error {
1071
1076
  constructor(services: string[]);
1072
1077
  }
1078
+ /**
1079
+ * Creates a new Sign In with Apple key.
1080
+ *
1081
+ * @param name The name of the key
1082
+ * @param bundleIds Array of bundle ID opaque IDs (not identifiers) to associate with the key
1083
+ * @param usageDescription Optional description for the key
1084
+ *
1085
+ * @throws MaxKeysCreatedError -- too many SIWA keys have already been created
1086
+ */
1087
+ export function createSignInWithAppleKeyAsync(context: RequestContext, { name, bundleIds, usageDescription, }: {
1088
+ name: string;
1089
+ bundleIds: string[];
1090
+ usageDescription?: string;
1091
+ }): Promise<AppStoreKey>;
1092
+ /**
1093
+ * Updates an existing Sign In with Apple key's bundle ID associations.
1094
+ *
1095
+ * @param id The key ID
1096
+ * @param name The name of the key
1097
+ * @param bundleIds Array of bundle ID opaque IDs to associate with the key
1098
+ * @param usageDescription Optional description for the key
1099
+ */
1100
+ export function updateSignInWithAppleKeyAsync(context: RequestContext, { id, name, bundleIds, usageDescription, }: {
1101
+ id: string;
1102
+ name: string;
1103
+ bundleIds: string[];
1104
+ usageDescription?: string;
1105
+ }): Promise<AppStoreKey>;
1073
1106
  }
1074
1107
  declare module "connect/ClientAPI" {
1075
1108
  import { AxiosResponse } from 'axios';
@@ -1136,6 +1169,7 @@ declare module "connect/ConnectAPI" {
1136
1169
  export interface ConnectQueryParams<F extends Record<string, any> = Record<string, any>> {
1137
1170
  filter?: F;
1138
1171
  fields?: F;
1172
+ exists?: Record<string, boolean>;
1139
1173
  includes?: string[];
1140
1174
  limit?: number;
1141
1175
  sort?: string;
@@ -1187,7 +1221,7 @@ declare module "connect/ConnectAPI" {
1187
1221
  }
1188
1222
  export const client: ConnectClientAPI;
1189
1223
  export function filterQueryParamsWithDefaults(query?: ConnectQueryParams, defaultQuery?: ConnectQueryParams): Record<string, any>;
1190
- export function filterQueryParams({ fields, filter, includes, limit, sort, cursor, }?: ConnectQueryParams): Record<string, any>;
1224
+ export function filterQueryParams({ fields, filter, exists, includes, limit, sort, cursor, }?: ConnectQueryParams): Record<string, any>;
1191
1225
  }
1192
1226
  declare module "connect/IrisAPI" {
1193
1227
  import { AxiosResponse } from 'axios';
@@ -1413,37 +1447,6 @@ declare module "connect/models/ContentProvider" {
1413
1447
  } | undefined) => Promise<ContentProvider[]>;
1414
1448
  }
1415
1449
  }
1416
- declare module "connect/models/AppClipAppStoreReviewDetail" {
1417
- import { RequestContext } from "network/Request";
1418
- import { ConnectModel } from "connect/models/ConnectModel";
1419
- export interface AppClipAppStoreReviewDetailProps {
1420
- invocationUrls: string[] | null;
1421
- }
1422
- /**
1423
- * App Store review detail for an App Clip default experience.
1424
- *
1425
- * Holds the list of invocation URLs that App Review will use to launch the
1426
- * App Clip during review.
1427
- *
1428
- * @see https://developer.apple.com/documentation/appstoreconnectapi/appclipappstorereviewdetail
1429
- */
1430
- export class AppClipAppStoreReviewDetail extends ConnectModel<AppClipAppStoreReviewDetailProps> {
1431
- static type: string;
1432
- static infoAsync: (context: RequestContext, props: {
1433
- id: string;
1434
- query?: import("connect/ConnectAPI").ConnectQueryParams;
1435
- }) => Promise<AppClipAppStoreReviewDetail>;
1436
- static deleteAsync: (context: RequestContext, props: {
1437
- id: string;
1438
- }) => Promise<void>;
1439
- static createAsync(context: RequestContext, { appClipDefaultExperienceId, attributes, }: {
1440
- appClipDefaultExperienceId: string;
1441
- attributes: Pick<AppClipAppStoreReviewDetailProps, 'invocationUrls'>;
1442
- }): Promise<AppClipAppStoreReviewDetail>;
1443
- updateAsync(options: Partial<Pick<AppClipAppStoreReviewDetailProps, 'invocationUrls'>>): Promise<AppClipAppStoreReviewDetail>;
1444
- deleteAsync(): Promise<void>;
1445
- }
1446
- }
1447
1450
  declare module "utils/crypto" {
1448
1451
  import * as crypto from 'crypto';
1449
1452
  export function getChecksum(value: crypto.BinaryLike): string;
@@ -1504,157 +1507,288 @@ declare module "connect/AssetAPI" {
1504
1507
  }
1505
1508
  export const assetClient: AssetAPI;
1506
1509
  }
1507
- declare module "connect/models/AppClipHeaderImage" {
1510
+ declare module "connect/models/AppPreview" {
1508
1511
  import { RequestContext } from "network/Request";
1509
1512
  import { AppMediaAssetState, ImageAsset, UploadOperation } from "connect/AssetAPI";
1510
1513
  import { ConnectModel } from "connect/models/ConnectModel";
1511
- export interface AppClipHeaderImageProps {
1514
+ export interface AppPreviewProps {
1512
1515
  fileSize: number;
1513
1516
  fileName: string;
1514
1517
  sourceFileChecksum: string;
1515
- imageAsset: ImageAsset;
1518
+ /**
1519
+ * Time code for the preview frame (poster image).
1520
+ * Must be exactly 4-segment "HH:MM:SS:FF" format where FF is frames.
1521
+ * 3-segment ("MM:SS:FF") and 5+ segment formats are rejected with "Invalid format!".
1522
+ * Values beyond the video duration are silently accepted (clamped to last frame).
1523
+ * Empty string and null are rejected with "previewFrameTimeCode attribute is missing!".
1524
+ * @example "00:00:05:01"
1525
+ */
1526
+ previewFrameTimeCode: string | null;
1527
+ mimeType: string;
1528
+ /**
1529
+ * URL to download the processed video preview.
1530
+ * Only available after processing is complete.
1531
+ */
1532
+ videoUrl: string | null;
1533
+ /**
1534
+ * Preview frame/poster image with processing state.
1535
+ * Contains the image asset and its processing state (e.g., COMPLETE, PROCESSING).
1536
+ * This is the detailed version returned by the API after setting a preview frame time code.
1537
+ */
1538
+ previewFrameImage: {
1539
+ image: ImageAsset;
1540
+ state: AppMediaAssetState;
1541
+ } | null;
1542
+ /**
1543
+ * Preview frame/poster image asset.
1544
+ * Contains templateUrl with {w}, {h}, {f} placeholders.
1545
+ */
1546
+ previewImage: ImageAsset | null;
1516
1547
  uploadOperations: UploadOperation[];
1517
1548
  assetDeliveryState: AppMediaAssetState;
1549
+ /**
1550
+ * Video-specific delivery state. Tracks video transcoding/processing progress
1551
+ * separately from the asset upload state.
1552
+ * Only present for video previews (not screenshots).
1553
+ */
1554
+ videoDeliveryState: AppMediaAssetState | null;
1518
1555
  }
1519
1556
  /**
1520
- * A header image for an App Clip default experience localization.
1521
- *
1522
- * Uses the same upload protocol as `AppScreenshot`:
1523
- * 1. POST `/v1/appClipHeaderImages` with `fileName` + `fileSize` to reserve
1524
- * the asset and obtain `uploadOperations`.
1525
- * 2. PUT the binary data to each operation's URL via `assetClient`.
1526
- * 3. PATCH the resource with `uploaded: true` and `sourceFileChecksum`.
1527
- * 4. Optionally poll until `assetDeliveryState.state` is `COMPLETE`.
1528
- *
1529
- * @see https://developer.apple.com/documentation/appstoreconnectapi/appclipheaderimage
1557
+ * App Preview (video) for App Store listings.
1558
+ * Previews are short videos that demonstrate your app's features.
1530
1559
  */
1531
- export class AppClipHeaderImage extends ConnectModel<AppClipHeaderImageProps> {
1560
+ export class AppPreview extends ConnectModel<AppPreviewProps> {
1532
1561
  static type: string;
1533
1562
  static infoAsync: (context: RequestContext, props: {
1534
1563
  id: string;
1535
1564
  query?: import("connect/ConnectAPI").ConnectQueryParams;
1536
- }) => Promise<AppClipHeaderImage>;
1565
+ }) => Promise<AppPreview>;
1537
1566
  static createAsync(context: RequestContext, { id, attributes, }: {
1538
- /** AppClipDefaultExperienceLocalization id */
1567
+ /** AppPreviewSet ID */
1539
1568
  id: string;
1540
- attributes: Pick<AppClipHeaderImageProps, 'fileName' | 'fileSize'>;
1541
- }): Promise<AppClipHeaderImage>;
1569
+ attributes: Pick<AppPreviewProps, 'fileName' | 'fileSize'> & {
1570
+ /** Optional MIME type (e.g., "video/mp4", "video/quicktime") */
1571
+ mimeType?: string;
1572
+ };
1573
+ }): Promise<AppPreview>;
1542
1574
  /**
1543
- * Upload a header image PNG to App Store Connect for an App Clip
1544
- * default-experience localization.
1545
- *
1546
- * @param id `AppClipDefaultExperienceLocalization` id
1575
+ * Upload a video preview file.
1576
+ * @param id AppPreviewSet ID
1577
+ * @param filePath Path to the video file (MP4, MOV)
1578
+ * @param waitForProcessing Wait for Apple to process the video (default: true)
1579
+ * @param previewFrameTimeCode Optional time code for preview frame in "HH:MM:SS:FF" format (e.g., "00:00:05:00" for 5 seconds)
1547
1580
  */
1548
- static uploadAsync(context: RequestContext, { id, filePath, waitForProcessing, }: {
1581
+ static uploadAsync(context: RequestContext, { id, filePath, waitForProcessing, previewFrameTimeCode, }: {
1549
1582
  id: string;
1550
1583
  filePath: string;
1551
1584
  waitForProcessing?: boolean;
1552
- }): Promise<AppClipHeaderImage>;
1585
+ previewFrameTimeCode?: string;
1586
+ }): Promise<AppPreview>;
1553
1587
  static deleteAsync: (context: RequestContext, props: {
1554
1588
  id: string;
1555
1589
  }) => Promise<void>;
1556
1590
  deleteAsync(): Promise<void>;
1557
- updateAsync(options: Partial<Pick<AppClipHeaderImageProps, 'sourceFileChecksum'>> & {
1591
+ updateAsync(options: Partial<AppPreviewProps> & {
1558
1592
  uploaded?: boolean;
1559
- }): Promise<AppClipHeaderImage>;
1593
+ }): Promise<AppPreview>;
1594
+ /**
1595
+ * Set the poster frame (preview image) for this app preview.
1596
+ * @param previewFrameTimeCode Time code in "HH:MM:SS:FF" format (e.g., "00:00:05:01" for ~5 seconds)
1597
+ */
1598
+ setPreviewFrameAsync(previewFrameTimeCode: string): Promise<AppPreview>;
1560
1599
  isAwaitingUpload(): boolean;
1600
+ isProcessing(): boolean;
1561
1601
  isComplete(): boolean;
1562
1602
  isFailed(): boolean;
1563
1603
  getErrorMessages(): string[];
1564
1604
  /**
1565
- * Get a downloadable URL for the rendered image asset. Note that the
1566
- * downloaded image is a re-rendered copy and will NOT match
1567
- * `sourceFileChecksum`.
1605
+ * Get the video URL for downloading the preview.
1606
+ * Only available after processing is complete.
1568
1607
  */
1569
- getImageAssetUrl({ width, height, type, }: {
1608
+ getVideoUrl(): string | null;
1609
+ /**
1610
+ * Get the preview frame (poster) image URL.
1611
+ * Returns null if not available.
1612
+ */
1613
+ getPreviewImageUrl({ width, height, type, }?: {
1570
1614
  width?: number;
1571
1615
  height?: number;
1572
- type?: string | 'png';
1616
+ type?: string;
1573
1617
  }): string | null;
1574
1618
  }
1575
1619
  }
1576
- declare module "connect/models/AppClipDefaultExperienceLocalization" {
1620
+ declare module "connect/models/AppScreenshot" {
1577
1621
  import { RequestContext } from "network/Request";
1578
- import { AppClipHeaderImage } from "connect/models/AppClipHeaderImage";
1622
+ import { AppMediaAssetState, ImageAsset, UploadOperation } from "connect/AssetAPI";
1579
1623
  import { ConnectModel } from "connect/models/ConnectModel";
1580
- export interface AppClipDefaultExperienceLocalizationProps {
1581
- /**
1582
- * @example 'en-US'
1583
- */
1584
- locale: string;
1585
- subtitle: string | null;
1586
- appClipHeaderImage?: AppClipHeaderImage | null;
1624
+ export interface AppScreenshotProps {
1625
+ fileSize: number;
1626
+ fileName: string;
1627
+ sourceFileChecksum: string;
1628
+ imageAsset: ImageAsset;
1629
+ assetToken: string;
1630
+ assetType: string;
1631
+ uploadOperations: UploadOperation[];
1632
+ assetDeliveryState: AppMediaAssetState;
1587
1633
  }
1588
- /**
1589
- * A localized subtitle and header image for an App Clip default experience.
1590
- *
1591
- * @see https://developer.apple.com/documentation/appstoreconnectapi/appclipdefaultexperiencelocalization
1592
- */
1593
- export class AppClipDefaultExperienceLocalization extends ConnectModel<AppClipDefaultExperienceLocalizationProps> {
1634
+ export class AppScreenshot extends ConnectModel<AppScreenshotProps> {
1594
1635
  static type: string;
1595
1636
  static infoAsync: (context: RequestContext, props: {
1596
1637
  id: string;
1597
1638
  query?: import("connect/ConnectAPI").ConnectQueryParams;
1598
- }) => Promise<AppClipDefaultExperienceLocalization>;
1599
- static deleteAsync: (context: RequestContext, props: {
1639
+ }) => Promise<AppScreenshot>;
1640
+ static createAsync(context: RequestContext, { id, attributes, }: {
1600
1641
  id: string;
1601
- }) => Promise<void>;
1602
- static createAsync(context: RequestContext, { appClipDefaultExperienceId, attributes, }: {
1603
- appClipDefaultExperienceId: string;
1604
- attributes: Pick<AppClipDefaultExperienceLocalizationProps, 'locale' | 'subtitle'>;
1605
- }): Promise<AppClipDefaultExperienceLocalization>;
1606
- updateAsync(options: Partial<Pick<AppClipDefaultExperienceLocalizationProps, 'subtitle'>>): Promise<AppClipDefaultExperienceLocalization>;
1607
- deleteAsync(): Promise<void>;
1608
- /**
1609
- * Get the header image for this localization. Returns null if none uploaded.
1610
- */
1611
- getAppClipHeaderImageAsync(): Promise<AppClipHeaderImage | null>;
1612
- }
1613
- }
1614
- declare module "connect/ProvisioningAPI" {
1615
- import { AxiosResponse } from 'axios';
1616
- import { ParsingOptions, RequestContext, RequestProps } from "network/Request";
1617
- import { ConnectClientAPI } from "connect/ConnectAPI";
1618
- class ProvisioningClientAPI extends ConnectClientAPI {
1619
- getHostnameAsync(context: RequestContext): Promise<string>;
1620
- requestAsync<T = any, R extends AxiosResponse<T> = AxiosResponse<T>>(context: RequestContext, request: RequestProps, options?: ParsingOptions): Promise<R>;
1642
+ attributes: Pick<AppScreenshotProps, 'fileName' | 'fileSize'>;
1643
+ }): Promise<AppScreenshot>;
1621
1644
  /**
1622
- * Used for web session requests (username/password auth).
1623
1645
  *
1624
- * @param request
1625
- * @param options
1646
+ * @param id `AppScreenshotSet` id
1626
1647
  */
1627
- proxyRequestAsync<T = any, R extends AxiosResponse<T> = AxiosResponse<T>>(context: RequestContext, request: RequestProps, options?: ParsingOptions): Promise<R>;
1648
+ static uploadAsync(context: RequestContext, { id, filePath, waitForProcessing, }: {
1649
+ id: string;
1650
+ filePath: string;
1651
+ waitForProcessing?: boolean;
1652
+ }): Promise<AppScreenshot>;
1653
+ static deleteAsync: (context: RequestContext, props: {
1654
+ id: string;
1655
+ }) => Promise<void>;
1656
+ deleteAsync(): Promise<void>;
1657
+ updateAsync(options: Partial<AppScreenshotProps>): Promise<AppScreenshot>;
1658
+ isAwaitingUpload(): boolean;
1659
+ isComplete(): boolean;
1660
+ isFailed(): boolean;
1661
+ getErrorMessages(): string[];
1662
+ getImageAssetUrl({ width, height, type, }: {
1663
+ width?: number;
1664
+ height?: number;
1665
+ type?: string | 'png';
1666
+ }): string | null;
1628
1667
  }
1629
- export const provisioningClient: ProvisioningClientAPI;
1630
1668
  }
1631
- declare module "connect/models/CapabilityConnectModel" {
1669
+ declare module "connect/models/AppScreenshotSet" {
1632
1670
  import { RequestContext } from "network/Request";
1633
- import { ConnectQueryFilter } from "connect/ConnectAPI";
1671
+ import { ConnectQueryParams } from "connect/ConnectAPI";
1672
+ import { AppScreenshot } from "connect/models/AppScreenshot";
1634
1673
  import { ConnectModel } from "connect/models/ConnectModel";
1635
- export interface CapabilityConnectModelProps {
1636
- /**
1637
- * A string that's always prefixed with a set value like `merchant.`, `group.`, or `iCloud.`.
1638
- *
1639
- * @example 'merchant.com.example.development'
1640
- */
1641
- identifier: string;
1642
- /**
1643
- * Apple Team ID.
1644
- *
1645
- * @example 'QQ57RJ5UTD'
1646
- */
1647
- prefix: string;
1648
- /**
1649
- * @example "Example Development ID"
1650
- */
1651
- name: string;
1652
- canEdit?: boolean;
1653
- canDelete?: boolean;
1674
+ export interface AppScreenshotSetProps {
1675
+ screenshotDisplayType: ScreenshotDisplayType;
1676
+ appScreenshots: AppScreenshot[];
1654
1677
  }
1655
- export type CapabilityConnectQueryFilter<Props extends CapabilityConnectModelProps = CapabilityConnectModelProps> = ConnectQueryFilter<Props, 'identifier' | 'name'>;
1656
- export function createCapabilityConnectModel<Props extends CapabilityConnectModelProps = CapabilityConnectModelProps>({ type, prefix }: {
1657
- type: string;
1678
+ export enum ScreenshotDisplayType {
1679
+ APP_IPHONE_35 = "APP_IPHONE_35",
1680
+ APP_IPHONE_40 = "APP_IPHONE_40",
1681
+ APP_IPHONE_47 = "APP_IPHONE_47",
1682
+ APP_IPHONE_55 = "APP_IPHONE_55",
1683
+ APP_IPHONE_58 = "APP_IPHONE_58",
1684
+ APP_IPHONE_61 = "APP_IPHONE_61",
1685
+ APP_IPHONE_65 = "APP_IPHONE_65",
1686
+ APP_IPHONE_67 = "APP_IPHONE_67",
1687
+ APP_IPAD_97 = "APP_IPAD_97",
1688
+ APP_IPAD_105 = "APP_IPAD_105",
1689
+ APP_IPAD_PRO_129 = "APP_IPAD_PRO_129",
1690
+ APP_IPAD_PRO_3GEN_11 = "APP_IPAD_PRO_3GEN_11",
1691
+ APP_IPAD_PRO_3GEN_129 = "APP_IPAD_PRO_3GEN_129",
1692
+ IMESSAGE_APP_IPHONE_40 = "IMESSAGE_APP_IPHONE_40",
1693
+ IMESSAGE_APP_IPHONE_47 = "IMESSAGE_APP_IPHONE_47",
1694
+ IMESSAGE_APP_IPHONE_55 = "IMESSAGE_APP_IPHONE_55",
1695
+ IMESSAGE_APP_IPHONE_58 = "IMESSAGE_APP_IPHONE_58",
1696
+ IMESSAGE_APP_IPHONE_61 = "IMESSAGE_APP_IPHONE_61",
1697
+ IMESSAGE_APP_IPHONE_65 = "IMESSAGE_APP_IPHONE_65",
1698
+ IMESSAGE_APP_IPHONE_67 = "IMESSAGE_APP_IPHONE_67",
1699
+ IMESSAGE_APP_IPAD_97 = "IMESSAGE_APP_IPAD_97",
1700
+ IMESSAGE_APP_IPAD_105 = "IMESSAGE_APP_IPAD_105",
1701
+ IMESSAGE_APP_IPAD_PRO_129 = "IMESSAGE_APP_IPAD_PRO_129",
1702
+ IMESSAGE_APP_IPAD_PRO_3GEN_11 = "IMESSAGE_APP_IPAD_PRO_3GEN_11",
1703
+ IMESSAGE_APP_IPAD_PRO_3GEN_129 = "IMESSAGE_APP_IPAD_PRO_3GEN_129",
1704
+ APP_WATCH_SERIES_3 = "APP_WATCH_SERIES_3",
1705
+ APP_WATCH_SERIES_4 = "APP_WATCH_SERIES_4",
1706
+ APP_WATCH_SERIES_7 = "APP_WATCH_SERIES_7",
1707
+ APP_WATCH_SERIES_10 = "APP_WATCH_SERIES_10",
1708
+ APP_WATCH_ULTRA = "APP_WATCH_ULTRA",
1709
+ APP_APPLE_TV = "APP_APPLE_TV",
1710
+ APP_APPLE_VISION_PRO = "APP_APPLE_VISION_PRO",
1711
+ APP_DESKTOP = "APP_DESKTOP"
1712
+ }
1713
+ export const ALL: ScreenshotDisplayType[];
1714
+ export class AppScreenshotSet extends ConnectModel<AppScreenshotSetProps> {
1715
+ static type: string;
1716
+ /**
1717
+ *
1718
+ * @param id `AppScreenshotSet` id (ex: UNHB5PT4MA)
1719
+ */
1720
+ static infoAsync: (context: RequestContext, props: {
1721
+ id: string;
1722
+ query?: ConnectQueryParams;
1723
+ }) => Promise<AppScreenshotSet>;
1724
+ /**
1725
+ *
1726
+ * @param id `AppStoreVersionLocalization` id
1727
+ */
1728
+ static createAsync(context: RequestContext, { id, attributes, }: {
1729
+ id: string;
1730
+ attributes: Partial<AppScreenshotSetProps>;
1731
+ }): Promise<AppScreenshotSet>;
1732
+ updateAsync({ appScreenshots, }: {
1733
+ appScreenshots: string[];
1734
+ }): Promise<AppScreenshotSet>;
1735
+ isImessage(): boolean;
1736
+ isAppleTv(): boolean;
1737
+ uploadScreenshot({ filePath, waitForProcessing, position, }: {
1738
+ filePath: string;
1739
+ waitForProcessing?: boolean;
1740
+ position?: number;
1741
+ }): Promise<AppScreenshot>;
1742
+ reorderScreenshotsAsync({ appScreenshots, query, }: {
1743
+ appScreenshots: string[];
1744
+ query?: ConnectQueryParams;
1745
+ }): Promise<AppScreenshotSet[]>;
1746
+ }
1747
+ }
1748
+ declare module "connect/ProvisioningAPI" {
1749
+ import { AxiosResponse } from 'axios';
1750
+ import { ParsingOptions, RequestContext, RequestProps } from "network/Request";
1751
+ import { ConnectClientAPI } from "connect/ConnectAPI";
1752
+ class ProvisioningClientAPI extends ConnectClientAPI {
1753
+ getHostnameAsync(context: RequestContext): Promise<string>;
1754
+ requestAsync<T = any, R extends AxiosResponse<T> = AxiosResponse<T>>(context: RequestContext, request: RequestProps, options?: ParsingOptions): Promise<R>;
1755
+ /**
1756
+ * Used for web session requests (username/password auth).
1757
+ *
1758
+ * @param request
1759
+ * @param options
1760
+ */
1761
+ proxyRequestAsync<T = any, R extends AxiosResponse<T> = AxiosResponse<T>>(context: RequestContext, request: RequestProps, options?: ParsingOptions): Promise<R>;
1762
+ }
1763
+ export const provisioningClient: ProvisioningClientAPI;
1764
+ }
1765
+ declare module "connect/models/CapabilityConnectModel" {
1766
+ import { RequestContext } from "network/Request";
1767
+ import { ConnectQueryFilter } from "connect/ConnectAPI";
1768
+ import { ConnectModel } from "connect/models/ConnectModel";
1769
+ export interface CapabilityConnectModelProps {
1770
+ /**
1771
+ * A string that's always prefixed with a set value like `merchant.`, `group.`, or `iCloud.`.
1772
+ *
1773
+ * @example 'merchant.com.example.development'
1774
+ */
1775
+ identifier: string;
1776
+ /**
1777
+ * Apple Team ID.
1778
+ *
1779
+ * @example 'QQ57RJ5UTD'
1780
+ */
1781
+ prefix: string;
1782
+ /**
1783
+ * @example "Example Development ID"
1784
+ */
1785
+ name: string;
1786
+ canEdit?: boolean;
1787
+ canDelete?: boolean;
1788
+ }
1789
+ export type CapabilityConnectQueryFilter<Props extends CapabilityConnectModelProps = CapabilityConnectModelProps> = ConnectQueryFilter<Props, 'identifier' | 'name'>;
1790
+ export function createCapabilityConnectModel<Props extends CapabilityConnectModelProps = CapabilityConnectModelProps>({ type, prefix }: {
1791
+ type: string;
1658
1792
  prefix: string;
1659
1793
  }): {
1660
1794
  new (context: RequestContext, id: string, attributes: Props): {
@@ -2544,14 +2678,29 @@ declare module "connect/models/BundleId" {
2544
2678
  export enum BundleIdPlatform {
2545
2679
  IOS = "IOS",
2546
2680
  MAC_OS = "MAC_OS",
2547
- UNIVERSAL = "UNIVERSAL"
2681
+ UNIVERSAL = "UNIVERSAL",
2682
+ /** Service IDs for Sign In with Apple web */
2683
+ SERVICES = "SERVICES"
2684
+ }
2685
+ /**
2686
+ * Configuration for Sign In with Apple web capability.
2687
+ */
2688
+ export interface SignInWithAppleWebConfig {
2689
+ /** List of domains that can use this service ID */
2690
+ domains: string[];
2691
+ /** List of redirect URLs for OAuth flow */
2692
+ redirectUrls: string[];
2693
+ /** The primary app bundle ID that this service ID is associated with (opaque ID, not identifier) */
2694
+ primaryAppBundleIdId: string;
2548
2695
  }
2549
2696
  interface BundleIdProps {
2550
2697
  identifier: string;
2551
2698
  name: string;
2552
2699
  seedId: string;
2553
2700
  dateModified: string;
2701
+ dateCreated?: string;
2554
2702
  platform: BundleIdPlatform;
2703
+ platformName?: string;
2555
2704
  bundleIdCapabilities?: BundleIdCapability[];
2556
2705
  /**
2557
2706
  * Seems to always be `bundle`.
@@ -2637,6 +2786,46 @@ declare module "connect/models/BundleId" {
2637
2786
  getCapabilityId(capabilityType: CapabilityType): string;
2638
2787
  private getOrFetchBundleIdCapabilitiesAsync;
2639
2788
  hasCapabilityAsync(capability: CapabilityType): Promise<BundleIdCapability | null>;
2789
+ /**
2790
+ * Returns true if this is a Service ID (platform: SERVICES).
2791
+ */
2792
+ isServiceId(): boolean;
2793
+ /**
2794
+ * List all Service IDs for the team.
2795
+ */
2796
+ static getServiceIdsAsync(context: RequestContext, { query }?: {
2797
+ query?: ConnectQueryParams<BundleIdQueryFilter>;
2798
+ }): Promise<BundleId[]>;
2799
+ /**
2800
+ * Find a Service ID by its identifier.
2801
+ */
2802
+ static findServiceIdAsync(context: RequestContext, { identifier }: {
2803
+ identifier: string;
2804
+ }): Promise<BundleId | null>;
2805
+ /**
2806
+ * Create a new Service ID for Sign In with Apple web.
2807
+ */
2808
+ static createServiceIdAsync(context: RequestContext, { name, identifier }: {
2809
+ name: string;
2810
+ identifier: string;
2811
+ }): Promise<BundleId>;
2812
+ /**
2813
+ * Configure Sign In with Apple for this Service ID.
2814
+ */
2815
+ configureSignInWithAppleAsync(config: SignInWithAppleWebConfig): Promise<BundleId>;
2816
+ /**
2817
+ * Disable Sign In with Apple for this Service ID.
2818
+ */
2819
+ disableSignInWithAppleAsync(): Promise<BundleId>;
2820
+ /**
2821
+ * Get the Sign In with Apple configuration from the capabilities.
2822
+ * Returns null if Sign In with Apple is not configured.
2823
+ */
2824
+ getSignInWithAppleConfig(): SignInWithAppleWebConfig | null;
2825
+ /**
2826
+ * Check if Sign In with Apple is configured for this Service ID.
2827
+ */
2828
+ hasSignInWithApple(): boolean;
2640
2829
  }
2641
2830
  }
2642
2831
  declare module "connect/models/AppCategory" {
@@ -2983,531 +3172,148 @@ declare module "connect/models/AppStoreReviewDetail" {
2983
3172
  uploadAttachmentAsync(filePath: string): Promise<AppStoreReviewAttachment>;
2984
3173
  }
2985
3174
  }
2986
- declare module "connect/models/AppPreview" {
3175
+ declare module "connect/models/AppStoreVersionPhasedRelease" {
2987
3176
  import { RequestContext } from "network/Request";
2988
- import { AppMediaAssetState, ImageAsset, UploadOperation } from "connect/AssetAPI";
2989
3177
  import { ConnectModel } from "connect/models/ConnectModel";
2990
- export interface AppPreviewProps {
2991
- fileSize: number;
2992
- fileName: string;
2993
- sourceFileChecksum: string;
2994
- /**
2995
- * Time code for the preview frame (poster image).
2996
- * Must be exactly 4-segment "HH:MM:SS:FF" format where FF is frames.
2997
- * 3-segment ("MM:SS:FF") and 5+ segment formats are rejected with "Invalid format!".
2998
- * Values beyond the video duration are silently accepted (clamped to last frame).
2999
- * Empty string and null are rejected with "previewFrameTimeCode attribute is missing!".
3000
- * @example "00:00:05:01"
3001
- */
3002
- previewFrameTimeCode: string | null;
3003
- mimeType: string;
3004
- /**
3005
- * URL to download the processed video preview.
3006
- * Only available after processing is complete.
3007
- */
3008
- videoUrl: string | null;
3009
- /**
3010
- * Preview frame/poster image with processing state.
3011
- * Contains the image asset and its processing state (e.g., COMPLETE, PROCESSING).
3012
- * This is the detailed version returned by the API after setting a preview frame time code.
3013
- */
3014
- previewFrameImage: {
3015
- image: ImageAsset;
3016
- state: AppMediaAssetState;
3017
- } | null;
3018
- /**
3019
- * Preview frame/poster image asset.
3020
- * Contains templateUrl with {w}, {h}, {f} placeholders.
3021
- */
3022
- previewImage: ImageAsset | null;
3023
- uploadOperations: UploadOperation[];
3024
- assetDeliveryState: AppMediaAssetState;
3025
- /**
3026
- * Video-specific delivery state. Tracks video transcoding/processing progress
3027
- * separately from the asset upload state.
3028
- * Only present for video previews (not screenshots).
3029
- */
3030
- videoDeliveryState: AppMediaAssetState | null;
3178
+ export enum PhasedReleaseState {
3179
+ INACTIVE = "INACTIVE",
3180
+ ACTIVE = "ACTIVE",
3181
+ PAUSED = "PAUSED",
3182
+ COMPLETE = "COMPLETE"
3183
+ }
3184
+ export interface AppStoreVersionPhasedReleaseProps {
3185
+ phasedReleaseState: PhasedReleaseState | null;
3186
+ startDate: string | null;
3187
+ totalPauseDuration: number | null;
3188
+ currentDayNumber: number | null;
3031
3189
  }
3032
3190
  /**
3033
- * App Preview (video) for App Store listings.
3034
- * Previews are short videos that demonstrate your app's features.
3191
+ * Used for updating basic metadata.
3035
3192
  */
3036
- export class AppPreview extends ConnectModel<AppPreviewProps> {
3193
+ export class AppStoreVersionPhasedRelease extends ConnectModel<AppStoreVersionPhasedReleaseProps> {
3037
3194
  static type: string;
3038
- static infoAsync: (context: RequestContext, props: {
3039
- id: string;
3040
- query?: import("connect/ConnectAPI").ConnectQueryParams;
3041
- }) => Promise<AppPreview>;
3042
- static createAsync(context: RequestContext, { id, attributes, }: {
3043
- /** AppPreviewSet ID */
3044
- id: string;
3045
- attributes: Pick<AppPreviewProps, 'fileName' | 'fileSize'> & {
3046
- /** Optional MIME type (e.g., "video/mp4", "video/quicktime") */
3047
- mimeType?: string;
3048
- };
3049
- }): Promise<AppPreview>;
3050
3195
  /**
3051
- * Upload a video preview file.
3052
- * @param id AppPreviewSet ID
3053
- * @param filePath Path to the video file (MP4, MOV)
3054
- * @param waitForProcessing Wait for Apple to process the video (default: true)
3055
- * @param previewFrameTimeCode Optional time code for preview frame in "HH:MM:SS:FF" format (e.g., "00:00:05:00" for 5 seconds)
3196
+ *
3197
+ * @param id `AppStoreVersion` id
3056
3198
  */
3057
- static uploadAsync(context: RequestContext, { id, filePath, waitForProcessing, previewFrameTimeCode, }: {
3199
+ static createAsync(context: RequestContext, { id, phasedReleaseState, }: {
3058
3200
  id: string;
3059
- filePath: string;
3060
- waitForProcessing?: boolean;
3061
- previewFrameTimeCode?: string;
3062
- }): Promise<AppPreview>;
3201
+ phasedReleaseState: AppStoreVersionPhasedReleaseProps['phasedReleaseState'];
3202
+ }): Promise<AppStoreVersionPhasedRelease>;
3063
3203
  static deleteAsync: (context: RequestContext, props: {
3064
3204
  id: string;
3065
3205
  }) => Promise<void>;
3066
3206
  deleteAsync(): Promise<void>;
3067
- updateAsync(options: Partial<AppPreviewProps> & {
3068
- uploaded?: boolean;
3069
- }): Promise<AppPreview>;
3070
- /**
3071
- * Set the poster frame (preview image) for this app preview.
3072
- * @param previewFrameTimeCode Time code in "HH:MM:SS:FF" format (e.g., "00:00:05:01" for ~5 seconds)
3073
- */
3074
- setPreviewFrameAsync(previewFrameTimeCode: string): Promise<AppPreview>;
3075
- isAwaitingUpload(): boolean;
3076
- isProcessing(): boolean;
3077
- isComplete(): boolean;
3078
- isFailed(): boolean;
3079
- getErrorMessages(): string[];
3080
- /**
3081
- * Get the video URL for downloading the preview.
3082
- * Only available after processing is complete.
3083
- */
3084
- getVideoUrl(): string | null;
3085
- /**
3086
- * Get the preview frame (poster) image URL.
3087
- * Returns null if not available.
3088
- */
3089
- getPreviewImageUrl({ width, height, type, }?: {
3090
- width?: number;
3091
- height?: number;
3092
- type?: string;
3093
- }): string | null;
3207
+ pauseAsync(): Promise<AppStoreVersionPhasedRelease>;
3208
+ resumeAsync(): Promise<AppStoreVersionPhasedRelease>;
3209
+ completeAsync(): Promise<AppStoreVersionPhasedRelease>;
3210
+ updateAsync({ phasedReleaseState, }: Pick<AppStoreVersionPhasedReleaseProps, 'phasedReleaseState'>): Promise<AppStoreVersionPhasedRelease>;
3094
3211
  }
3095
3212
  }
3096
- declare module "connect/models/AppPreviewSet" {
3213
+ declare module "connect/models/AppStoreVersionReleaseRequest" {
3097
3214
  import { RequestContext } from "network/Request";
3098
- import { ConnectQueryParams } from "connect/ConnectAPI";
3099
- import { AppPreview } from "connect/models/AppPreview";
3100
3215
  import { ConnectModel } from "connect/models/ConnectModel";
3101
- export interface AppPreviewSetProps {
3102
- previewType: PreviewType;
3103
- appPreviews: AppPreview[];
3104
- }
3105
- /**
3106
- * Display types for app previews.
3107
- * Each type corresponds to a specific device screen size.
3108
- */
3109
- export enum PreviewType {
3110
- IPHONE_35 = "IPHONE_35",
3111
- IPHONE_40 = "IPHONE_40",
3112
- IPHONE_47 = "IPHONE_47",
3113
- IPHONE_55 = "IPHONE_55",
3114
- IPHONE_58 = "IPHONE_58",
3115
- IPHONE_61 = "IPHONE_61",
3116
- IPHONE_65 = "IPHONE_65",
3117
- IPHONE_67 = "IPHONE_67",
3118
- IPAD_97 = "IPAD_97",
3119
- IPAD_105 = "IPAD_105",
3120
- IPAD_PRO_129 = "IPAD_PRO_129",
3121
- IPAD_PRO_3GEN_11 = "IPAD_PRO_3GEN_11",
3122
- IPAD_PRO_3GEN_129 = "IPAD_PRO_3GEN_129",
3123
- WATCH_SERIES_3 = "WATCH_SERIES_3",
3124
- WATCH_SERIES_4 = "WATCH_SERIES_4",
3125
- WATCH_SERIES_7 = "WATCH_SERIES_7",
3126
- WATCH_SERIES_10 = "WATCH_SERIES_10",
3127
- WATCH_ULTRA = "WATCH_ULTRA",
3128
- APPLE_TV = "APPLE_TV",
3129
- APPLE_VISION_PRO = "APPLE_VISION_PRO",
3130
- DESKTOP = "DESKTOP"
3131
- }
3132
- export const ALL_PREVIEW_TYPES: PreviewType[];
3133
- /**
3134
- * App Preview Set - groups app previews by display type.
3135
- * Each set contains previews for a specific device screen size.
3136
- */
3137
- export class AppPreviewSet extends ConnectModel<AppPreviewSetProps> {
3216
+ export class AppStoreVersionReleaseRequest extends ConnectModel<object> {
3138
3217
  static type: string;
3139
3218
  /**
3140
- * Get info for a specific AppPreviewSet.
3141
- * @param id AppPreviewSet ID
3219
+ *
3220
+ * @param id `AppStoreVersion` id
3142
3221
  */
3143
- static infoAsync: (context: RequestContext, props: {
3222
+ static createAsync(context: RequestContext, { id, }: {
3144
3223
  id: string;
3145
- query?: ConnectQueryParams;
3146
- }) => Promise<AppPreviewSet>;
3224
+ }): Promise<AppStoreVersionReleaseRequest>;
3225
+ }
3226
+ }
3227
+ declare module "connect/models/AppStoreVersionSubmission" {
3228
+ import { RequestContext } from "network/Request";
3229
+ import { ConnectModel } from "connect/models/ConnectModel";
3230
+ export interface AppStoreVersionSubmissionProps {
3231
+ canReject: boolean;
3232
+ }
3233
+ export class AppStoreVersionSubmission extends ConnectModel<AppStoreVersionSubmissionProps> {
3234
+ static type: string;
3147
3235
  /**
3148
- * Create a new AppPreviewSet for a localization.
3149
- * @param id AppStoreVersionLocalization ID
3150
- * @param attributes Preview type attributes
3236
+ *
3237
+ * @param id `AppStoreVersion` id
3151
3238
  */
3152
3239
  static createAsync(context: RequestContext, { id, attributes, }: {
3153
3240
  id: string;
3154
- attributes: Pick<AppPreviewSetProps, 'previewType'>;
3155
- }): Promise<AppPreviewSet>;
3156
- /**
3157
- * Update the order of previews in this set.
3158
- */
3159
- updateAsync({ appPreviews }: {
3160
- appPreviews: string[];
3161
- }): Promise<AppPreviewSet>;
3241
+ attributes?: Partial<AppStoreVersionSubmissionProps>;
3242
+ }): Promise<AppStoreVersionSubmission>;
3162
3243
  static deleteAsync: (context: RequestContext, props: {
3163
3244
  id: string;
3164
3245
  }) => Promise<void>;
3165
- deleteAsync(): Promise<void>;
3166
- isIphone(): boolean;
3167
- isIpad(): boolean;
3168
- isWatch(): boolean;
3169
- isAppleTv(): boolean;
3170
- isAppleVisionPro(): boolean;
3171
- isDesktop(): boolean;
3172
- /**
3173
- * Upload a video preview to this set.
3174
- * @param filePath Path to the video file (MP4, MOV)
3175
- * @param waitForProcessing Wait for Apple to process the video
3176
- * @param position Optional position to insert the preview
3177
- * @param previewFrameTimeCode Optional time code for the preview frame (e.g., "00:05:00")
3178
- */
3179
- uploadPreview({ filePath, waitForProcessing, position, previewFrameTimeCode, }: {
3180
- filePath: string;
3181
- waitForProcessing?: boolean;
3182
- position?: number;
3183
- previewFrameTimeCode?: string;
3184
- }): Promise<AppPreview>;
3185
- /**
3186
- * Reorder previews in this set.
3187
- * @param appPreviews Array of AppPreview IDs in desired order
3188
- */
3189
- reorderPreviewsAsync({ appPreviews, query, }: {
3190
- appPreviews: string[];
3191
- query?: ConnectQueryParams;
3192
- }): Promise<AppPreviewSet[]>;
3193
3246
  }
3194
3247
  }
3195
- declare module "connect/models/AppScreenshot" {
3248
+ declare module "connect/models/BetaAppReviewSubmission" {
3196
3249
  import { RequestContext } from "network/Request";
3197
- import { AppMediaAssetState, ImageAsset, UploadOperation } from "connect/AssetAPI";
3250
+ import { ConnectQueryFilter } from "connect/ConnectAPI";
3198
3251
  import { ConnectModel } from "connect/models/ConnectModel";
3199
- export interface AppScreenshotProps {
3200
- fileSize: number;
3201
- fileName: string;
3202
- sourceFileChecksum: string;
3203
- imageAsset: ImageAsset;
3204
- assetToken: string;
3205
- assetType: string;
3206
- uploadOperations: UploadOperation[];
3207
- assetDeliveryState: AppMediaAssetState;
3252
+ export enum BetaReviewState {
3253
+ WAITING_FOR_REVIEW = "WAITING_FOR_REVIEW",
3254
+ IN_REVIEW = "IN_REVIEW",
3255
+ REJECTED = "REJECTED",
3256
+ APPROVED = "APPROVED"
3208
3257
  }
3209
- export class AppScreenshot extends ConnectModel<AppScreenshotProps> {
3258
+ /** @see https://developer.apple.com/documentation/appstoreconnectapi/betaappreviewsubmission/attributes-data.dictionary */
3259
+ interface BetaAppReviewSubmissionProps {
3260
+ betaReviewState: BetaReviewState;
3261
+ /** @since 1.5 */
3262
+ submittedDate: string | null;
3263
+ }
3264
+ export type BetaAppReviewSubmissionQueryFilter = ConnectQueryFilter<BetaAppReviewSubmissionProps, 'betaReviewState'>;
3265
+ export class BetaAppReviewSubmission extends ConnectModel<BetaAppReviewSubmissionProps> {
3210
3266
  static type: string;
3211
- static infoAsync: (context: RequestContext, props: {
3212
- id: string;
3213
- query?: import("connect/ConnectAPI").ConnectQueryParams;
3214
- }) => Promise<AppScreenshot>;
3215
- static createAsync(context: RequestContext, { id, attributes, }: {
3216
- id: string;
3217
- attributes: Pick<AppScreenshotProps, 'fileName' | 'fileSize'>;
3218
- }): Promise<AppScreenshot>;
3267
+ static getAsync: (context: RequestContext, props?: {
3268
+ query?: import("connect/ConnectAPI").ConnectQueryParams<Partial<{
3269
+ betaReviewState: BetaReviewState | BetaReviewState[];
3270
+ } & {
3271
+ id?: string;
3272
+ }>> | undefined;
3273
+ } | undefined) => Promise<BetaAppReviewSubmission[]>;
3219
3274
  /**
3220
3275
  *
3221
- * @param id `AppScreenshotSet` id
3276
+ * @param id `Build` id
3222
3277
  */
3223
- static uploadAsync(context: RequestContext, { id, filePath, waitForProcessing, }: {
3278
+ static createAsync(context: RequestContext, { id, }: {
3224
3279
  id: string;
3225
- filePath: string;
3226
- waitForProcessing?: boolean;
3227
- }): Promise<AppScreenshot>;
3280
+ }): Promise<BetaAppReviewSubmission>;
3228
3281
  static deleteAsync: (context: RequestContext, props: {
3229
3282
  id: string;
3230
3283
  }) => Promise<void>;
3284
+ /** Withdraw the beta app review submission. */
3231
3285
  deleteAsync(): Promise<void>;
3232
- updateAsync(options: Partial<AppScreenshotProps>): Promise<AppScreenshot>;
3233
- isAwaitingUpload(): boolean;
3234
- isComplete(): boolean;
3235
- isFailed(): boolean;
3236
- getErrorMessages(): string[];
3237
- getImageAssetUrl({ width, height, type, }: {
3238
- width?: number;
3239
- height?: number;
3240
- type?: string | 'png';
3241
- }): string | null;
3242
3286
  }
3243
3287
  }
3244
- declare module "connect/models/AppScreenshotSet" {
3288
+ declare module "connect/models/BetaBuildLocalization" {
3245
3289
  import { RequestContext } from "network/Request";
3246
- import { ConnectQueryParams } from "connect/ConnectAPI";
3247
- import { AppScreenshot } from "connect/models/AppScreenshot";
3290
+ import { ConnectQueryFilter } from "connect/ConnectAPI";
3248
3291
  import { ConnectModel } from "connect/models/ConnectModel";
3249
- export interface AppScreenshotSetProps {
3250
- screenshotDisplayType: ScreenshotDisplayType;
3251
- appScreenshots: AppScreenshot[];
3252
- }
3253
- export enum ScreenshotDisplayType {
3254
- APP_IPHONE_35 = "APP_IPHONE_35",
3255
- APP_IPHONE_40 = "APP_IPHONE_40",
3256
- APP_IPHONE_47 = "APP_IPHONE_47",
3257
- APP_IPHONE_55 = "APP_IPHONE_55",
3258
- APP_IPHONE_58 = "APP_IPHONE_58",
3259
- APP_IPHONE_61 = "APP_IPHONE_61",
3260
- APP_IPHONE_65 = "APP_IPHONE_65",
3261
- APP_IPHONE_67 = "APP_IPHONE_67",
3262
- APP_IPAD_97 = "APP_IPAD_97",
3263
- APP_IPAD_105 = "APP_IPAD_105",
3264
- APP_IPAD_PRO_129 = "APP_IPAD_PRO_129",
3265
- APP_IPAD_PRO_3GEN_11 = "APP_IPAD_PRO_3GEN_11",
3266
- APP_IPAD_PRO_3GEN_129 = "APP_IPAD_PRO_3GEN_129",
3267
- IMESSAGE_APP_IPHONE_40 = "IMESSAGE_APP_IPHONE_40",
3268
- IMESSAGE_APP_IPHONE_47 = "IMESSAGE_APP_IPHONE_47",
3269
- IMESSAGE_APP_IPHONE_55 = "IMESSAGE_APP_IPHONE_55",
3270
- IMESSAGE_APP_IPHONE_58 = "IMESSAGE_APP_IPHONE_58",
3271
- IMESSAGE_APP_IPHONE_61 = "IMESSAGE_APP_IPHONE_61",
3272
- IMESSAGE_APP_IPHONE_65 = "IMESSAGE_APP_IPHONE_65",
3273
- IMESSAGE_APP_IPHONE_67 = "IMESSAGE_APP_IPHONE_67",
3274
- IMESSAGE_APP_IPAD_97 = "IMESSAGE_APP_IPAD_97",
3275
- IMESSAGE_APP_IPAD_105 = "IMESSAGE_APP_IPAD_105",
3276
- IMESSAGE_APP_IPAD_PRO_129 = "IMESSAGE_APP_IPAD_PRO_129",
3277
- IMESSAGE_APP_IPAD_PRO_3GEN_11 = "IMESSAGE_APP_IPAD_PRO_3GEN_11",
3278
- IMESSAGE_APP_IPAD_PRO_3GEN_129 = "IMESSAGE_APP_IPAD_PRO_3GEN_129",
3279
- APP_WATCH_SERIES_3 = "APP_WATCH_SERIES_3",
3280
- APP_WATCH_SERIES_4 = "APP_WATCH_SERIES_4",
3281
- APP_WATCH_SERIES_7 = "APP_WATCH_SERIES_7",
3282
- APP_WATCH_SERIES_10 = "APP_WATCH_SERIES_10",
3283
- APP_WATCH_ULTRA = "APP_WATCH_ULTRA",
3284
- APP_APPLE_TV = "APP_APPLE_TV",
3285
- APP_APPLE_VISION_PRO = "APP_APPLE_VISION_PRO",
3286
- APP_DESKTOP = "APP_DESKTOP"
3292
+ interface BetaBuildLocalizationProps {
3293
+ whatsNew: string | null;
3294
+ locale: string | null;
3287
3295
  }
3288
- export const ALL: ScreenshotDisplayType[];
3289
- export class AppScreenshotSet extends ConnectModel<AppScreenshotSetProps> {
3290
- static type: string;
3296
+ export type BetaBuildLocalizationQueryFilter = ConnectQueryFilter<BetaBuildLocalizationProps & {
3291
3297
  /**
3292
- *
3293
- * @param id `AppScreenshotSet` id (ex: UNHB5PT4MA)
3298
+ * `Build` id
3294
3299
  */
3295
- static infoAsync: (context: RequestContext, props: {
3296
- id: string;
3297
- query?: ConnectQueryParams;
3298
- }) => Promise<AppScreenshotSet>;
3300
+ build: string;
3301
+ }, 'build' | 'locale'>;
3302
+ export class BetaBuildLocalization extends ConnectModel<BetaBuildLocalizationProps> {
3303
+ static type: string;
3304
+ static getAsync: (context: RequestContext, props?: {
3305
+ query?: import("connect/ConnectAPI").ConnectQueryParams<Partial<{
3306
+ locale: string | (string | null)[] | null;
3307
+ build: string | string[];
3308
+ } & {
3309
+ id?: string;
3310
+ }>> | undefined;
3311
+ } | undefined) => Promise<BetaBuildLocalization[]>;
3299
3312
  /**
3300
3313
  *
3301
- * @param id `AppStoreVersionLocalization` id
3314
+ * @param id `Build` id
3302
3315
  */
3303
- static createAsync(context: RequestContext, { id, attributes, }: {
3304
- id: string;
3305
- attributes: Partial<AppScreenshotSetProps>;
3306
- }): Promise<AppScreenshotSet>;
3307
- updateAsync({ appScreenshots, }: {
3308
- appScreenshots: string[];
3309
- }): Promise<AppScreenshotSet>;
3310
- isImessage(): boolean;
3311
- isAppleTv(): boolean;
3312
- uploadScreenshot({ filePath, waitForProcessing, position, }: {
3313
- filePath: string;
3314
- waitForProcessing?: boolean;
3315
- position?: number;
3316
- }): Promise<AppScreenshot>;
3317
- reorderScreenshotsAsync({ appScreenshots, query, }: {
3318
- appScreenshots: string[];
3319
- query?: ConnectQueryParams;
3320
- }): Promise<AppScreenshotSet[]>;
3321
- }
3322
- }
3323
- declare module "connect/models/AppStoreVersionLocalization" {
3324
- import { RequestContext } from "network/Request";
3325
- import { ConnectQueryFilter, ConnectQueryParams } from "connect/ConnectAPI";
3326
- import { AppPreviewSet, AppPreviewSetProps } from "connect/models/AppPreviewSet";
3327
- import { AppScreenshotSet, AppScreenshotSetProps } from "connect/models/AppScreenshotSet";
3328
- import { ConnectModel } from "connect/models/ConnectModel";
3329
- export interface AppStoreVersionLocalizationProps {
3330
- description: string | null;
3331
- /**
3332
- * @example 'en-US'
3333
- */
3334
- locale: string;
3335
- /**
3336
- * @example 'Dating, Food, Books,'
3337
- */
3338
- keywords: string | null;
3339
- marketingUrl: string | null;
3340
- promotionalText: string | null;
3341
- supportUrl: string | null;
3342
- whatsNew: string | null;
3343
- appScreenshotSets?: AppScreenshotSet[];
3344
- appPreviewSets?: AppPreviewSet[];
3345
- }
3346
- /**
3347
- * Used for updating basic metadata.
3348
- */
3349
- export class AppStoreVersionLocalization extends ConnectModel<AppStoreVersionLocalizationProps> {
3350
- static type: string;
3351
- static createAsync(context: RequestContext, { id, locale, }: {
3352
- id: string;
3353
- locale: string;
3354
- }): Promise<AppStoreVersionLocalization>;
3355
- static deleteAsync: (context: RequestContext, props: {
3356
- id: string;
3357
- }) => Promise<void>;
3358
- updateAsync(options: Partial<Omit<AppStoreVersionLocalizationProps, 'locale' | 'appScreenshotSets' | 'appPreviewSets'>>): Promise<AppStoreVersionLocalization>;
3359
- getAppScreenshotSetsAsync({ query, }?: {
3360
- query?: ConnectQueryParams<ConnectQueryFilter<AppScreenshotSetProps, 'screenshotDisplayType'>>;
3361
- }): Promise<AppScreenshotSet[]>;
3362
- createAppScreenshotSetAsync(attributes: Pick<AppScreenshotSetProps, 'screenshotDisplayType'>): Promise<AppScreenshotSet>;
3363
- getAppPreviewSetsAsync({ query, }?: {
3364
- query?: ConnectQueryParams<ConnectQueryFilter<AppPreviewSetProps, 'previewType'>>;
3365
- }): Promise<AppPreviewSet[]>;
3366
- createAppPreviewSetAsync(attributes: Pick<AppPreviewSetProps, 'previewType'>): Promise<AppPreviewSet>;
3367
- }
3368
- }
3369
- declare module "connect/models/AppStoreVersionPhasedRelease" {
3370
- import { RequestContext } from "network/Request";
3371
- import { ConnectModel } from "connect/models/ConnectModel";
3372
- export enum PhasedReleaseState {
3373
- INACTIVE = "INACTIVE",
3374
- ACTIVE = "ACTIVE",
3375
- PAUSED = "PAUSED",
3376
- COMPLETE = "COMPLETE"
3377
- }
3378
- export interface AppStoreVersionPhasedReleaseProps {
3379
- phasedReleaseState: PhasedReleaseState | null;
3380
- startDate: string | null;
3381
- totalPauseDuration: number | null;
3382
- currentDayNumber: number | null;
3383
- }
3384
- /**
3385
- * Used for updating basic metadata.
3386
- */
3387
- export class AppStoreVersionPhasedRelease extends ConnectModel<AppStoreVersionPhasedReleaseProps> {
3388
- static type: string;
3389
- /**
3390
- *
3391
- * @param id `AppStoreVersion` id
3392
- */
3393
- static createAsync(context: RequestContext, { id, phasedReleaseState, }: {
3394
- id: string;
3395
- phasedReleaseState: AppStoreVersionPhasedReleaseProps['phasedReleaseState'];
3396
- }): Promise<AppStoreVersionPhasedRelease>;
3397
- static deleteAsync: (context: RequestContext, props: {
3398
- id: string;
3399
- }) => Promise<void>;
3400
- deleteAsync(): Promise<void>;
3401
- pauseAsync(): Promise<AppStoreVersionPhasedRelease>;
3402
- resumeAsync(): Promise<AppStoreVersionPhasedRelease>;
3403
- completeAsync(): Promise<AppStoreVersionPhasedRelease>;
3404
- updateAsync({ phasedReleaseState, }: Pick<AppStoreVersionPhasedReleaseProps, 'phasedReleaseState'>): Promise<AppStoreVersionPhasedRelease>;
3405
- }
3406
- }
3407
- declare module "connect/models/AppStoreVersionReleaseRequest" {
3408
- import { RequestContext } from "network/Request";
3409
- import { ConnectModel } from "connect/models/ConnectModel";
3410
- export class AppStoreVersionReleaseRequest extends ConnectModel<object> {
3411
- static type: string;
3412
- /**
3413
- *
3414
- * @param id `AppStoreVersion` id
3415
- */
3416
- static createAsync(context: RequestContext, { id, }: {
3417
- id: string;
3418
- }): Promise<AppStoreVersionReleaseRequest>;
3419
- }
3420
- }
3421
- declare module "connect/models/AppStoreVersionSubmission" {
3422
- import { RequestContext } from "network/Request";
3423
- import { ConnectModel } from "connect/models/ConnectModel";
3424
- export interface AppStoreVersionSubmissionProps {
3425
- canReject: boolean;
3426
- }
3427
- export class AppStoreVersionSubmission extends ConnectModel<AppStoreVersionSubmissionProps> {
3428
- static type: string;
3429
- /**
3430
- *
3431
- * @param id `AppStoreVersion` id
3432
- */
3433
- static createAsync(context: RequestContext, { id, attributes, }: {
3434
- id: string;
3435
- attributes?: Partial<AppStoreVersionSubmissionProps>;
3436
- }): Promise<AppStoreVersionSubmission>;
3437
- static deleteAsync: (context: RequestContext, props: {
3438
- id: string;
3439
- }) => Promise<void>;
3440
- }
3441
- }
3442
- declare module "connect/models/BetaAppReviewSubmission" {
3443
- import { RequestContext } from "network/Request";
3444
- import { ConnectQueryFilter } from "connect/ConnectAPI";
3445
- import { ConnectModel } from "connect/models/ConnectModel";
3446
- export enum BetaReviewState {
3447
- WAITING_FOR_REVIEW = "WAITING_FOR_REVIEW",
3448
- IN_REVIEW = "IN_REVIEW",
3449
- REJECTED = "REJECTED",
3450
- APPROVED = "APPROVED"
3451
- }
3452
- /** @see https://developer.apple.com/documentation/appstoreconnectapi/betaappreviewsubmission/attributes-data.dictionary */
3453
- interface BetaAppReviewSubmissionProps {
3454
- betaReviewState: BetaReviewState;
3455
- /** @since 1.5 */
3456
- submittedDate: string | null;
3457
- }
3458
- export type BetaAppReviewSubmissionQueryFilter = ConnectQueryFilter<BetaAppReviewSubmissionProps, 'betaReviewState'>;
3459
- export class BetaAppReviewSubmission extends ConnectModel<BetaAppReviewSubmissionProps> {
3460
- static type: string;
3461
- static getAsync: (context: RequestContext, props?: {
3462
- query?: import("connect/ConnectAPI").ConnectQueryParams<Partial<{
3463
- betaReviewState: BetaReviewState | BetaReviewState[];
3464
- } & {
3465
- id?: string;
3466
- }>> | undefined;
3467
- } | undefined) => Promise<BetaAppReviewSubmission[]>;
3468
- /**
3469
- *
3470
- * @param id `Build` id
3471
- */
3472
- static createAsync(context: RequestContext, { id, }: {
3473
- id: string;
3474
- }): Promise<BetaAppReviewSubmission>;
3475
- static deleteAsync: (context: RequestContext, props: {
3476
- id: string;
3477
- }) => Promise<void>;
3478
- /** Withdraw the beta app review submission. */
3479
- deleteAsync(): Promise<void>;
3480
- }
3481
- }
3482
- declare module "connect/models/BetaBuildLocalization" {
3483
- import { RequestContext } from "network/Request";
3484
- import { ConnectQueryFilter } from "connect/ConnectAPI";
3485
- import { ConnectModel } from "connect/models/ConnectModel";
3486
- interface BetaBuildLocalizationProps {
3487
- whatsNew: string | null;
3488
- locale: string | null;
3489
- }
3490
- export type BetaBuildLocalizationQueryFilter = ConnectQueryFilter<BetaBuildLocalizationProps & {
3491
- /**
3492
- * `Build` id
3493
- */
3494
- build: string;
3495
- }, 'build' | 'locale'>;
3496
- export class BetaBuildLocalization extends ConnectModel<BetaBuildLocalizationProps> {
3497
- static type: string;
3498
- static getAsync: (context: RequestContext, props?: {
3499
- query?: import("connect/ConnectAPI").ConnectQueryParams<Partial<{
3500
- locale: string | (string | null)[] | null;
3501
- build: string | string[];
3502
- } & {
3503
- id?: string;
3504
- }>> | undefined;
3505
- } | undefined) => Promise<BetaBuildLocalization[]>;
3506
- /**
3507
- *
3508
- * @param id `Build` id
3509
- */
3510
- static createAsync(context: RequestContext, { id, locale, }: {
3316
+ static createAsync(context: RequestContext, { id, locale, }: {
3511
3317
  id: string;
3512
3318
  locale: string;
3513
3319
  }): Promise<BetaBuildLocalization>;
@@ -3934,408 +3740,807 @@ declare module "connect/models/ReviewRejection" {
3934
3740
  */
3935
3741
  export class ReviewRejection extends ConnectModel<ReviewRejectionProps> {
3936
3742
  static type: string;
3937
- static getAsync: (context: import("AppStoreConnect").RequestContext, props?: {
3938
- query?: import("connect/ConnectAPI").ConnectQueryParams<Partial<{
3939
- 'resolutionCenterMessage.resolutionCenterThread': string | string[];
3940
- } & {
3941
- id?: string;
3942
- }>> | undefined;
3943
- } | undefined) => Promise<ReviewRejection[]>;
3743
+ static getAsync: (context: import("AppStoreConnect").RequestContext, props?: {
3744
+ query?: import("connect/ConnectAPI").ConnectQueryParams<Partial<{
3745
+ 'resolutionCenterMessage.resolutionCenterThread': string | string[];
3746
+ } & {
3747
+ id?: string;
3748
+ }>> | undefined;
3749
+ } | undefined) => Promise<ReviewRejection[]>;
3750
+ }
3751
+ }
3752
+ declare module "connect/models/ResolutionCenterThread" {
3753
+ import { ConnectQueryFilter, ConnectQueryParams } from "connect/ConnectAPI";
3754
+ import type { AppStoreVersion } from "connect/models/AppStoreVersion";
3755
+ import type { Build } from "connect/models/Build";
3756
+ import { ConnectModel } from "connect/models/ConnectModel";
3757
+ import { ResolutionCenterDraftMessage } from "connect/models/ResolutionCenterDraftMessage";
3758
+ import { ResolutionCenterMessage } from "connect/models/ResolutionCenterMessage";
3759
+ import { ReviewRejection } from "connect/models/ReviewRejection";
3760
+ export interface ResolutionCenterThreadProps {
3761
+ state: 'ACTIVE' | (string & object);
3762
+ canDeveloperAddNote: boolean;
3763
+ objectionableContent: boolean;
3764
+ threadType: 'REJECTION_BINARY' | 'REJECTION_METADATA' | 'REJECTION_REVIEW_SUBMISSION' | 'APP_MESSAGE_ARC' | 'APP_MESSAGE_ARB' | 'APP_MESSAGE_COMM';
3765
+ /** @example '2024-12-13T04:47:48.681Z' */
3766
+ createdDate: string;
3767
+ /** @example `2024-12-13T04:47:48.681Z` */
3768
+ lastMessageResponseDate: string;
3769
+ resolutionCenterMessages?: unknown;
3770
+ appStoreVersion?: AppStoreVersion;
3771
+ build?: Build;
3772
+ }
3773
+ export type ResolutionCenterThreadQueryFilter = ConnectQueryFilter<Omit<ResolutionCenterThreadProps, 'build' | 'appStoreVersion'> & {
3774
+ appStoreVersion: string;
3775
+ build: string;
3776
+ reviewSubmission: string;
3777
+ }, 'build' | 'appStoreVersion' | 'threadType' | 'reviewSubmission'>;
3778
+ /**
3779
+ * Resolution center threads require session auth (Iris API).
3780
+ * These endpoints are NOT available with API key (JWT) authentication.
3781
+ */
3782
+ export class ResolutionCenterThread extends ConnectModel<ResolutionCenterThreadProps> {
3783
+ static type: string;
3784
+ static DEFAULT_INCLUDES: string[];
3785
+ static getAsync: (context: import("AppStoreConnect").RequestContext, props?: {
3786
+ query?: ConnectQueryParams<Partial<{
3787
+ appStoreVersion: string | string[];
3788
+ build: string | string[];
3789
+ threadType: "REJECTION_BINARY" | "REJECTION_METADATA" | "REJECTION_REVIEW_SUBMISSION" | "APP_MESSAGE_ARC" | "APP_MESSAGE_ARB" | "APP_MESSAGE_COMM" | ("REJECTION_BINARY" | "REJECTION_METADATA" | "REJECTION_REVIEW_SUBMISSION" | "APP_MESSAGE_ARC" | "APP_MESSAGE_ARB" | "APP_MESSAGE_COMM")[];
3790
+ reviewSubmission: string | string[];
3791
+ } & {
3792
+ id?: string;
3793
+ }>> | undefined;
3794
+ } | undefined) => Promise<ResolutionCenterThread[]>;
3795
+ getResolutionCenterMessagesAsync({ query, }?: {
3796
+ query?: ConnectQueryParams;
3797
+ }): Promise<ResolutionCenterMessage[]>;
3798
+ /**
3799
+ * Get the current draft message for this thread, if any.
3800
+ *
3801
+ * GET /iris/v1/resolutionCenterThreads/{id}/resolutionCenterDraftMessage
3802
+ * Note: singular endpoint (not plural), returns a single object not an array.
3803
+ */
3804
+ getDraftMessageAsync(): Promise<ResolutionCenterDraftMessage | null>;
3805
+ fetchRejectionReasonsAsync(): Promise<ReviewRejection[]>;
3806
+ /**
3807
+ * Create a draft message on this thread.
3808
+ * Use `draft.sendAsync()` to publish it.
3809
+ */
3810
+ createDraftMessageAsync({ messageBody, }: {
3811
+ messageBody: string;
3812
+ }): Promise<ResolutionCenterDraftMessage>;
3813
+ /**
3814
+ * Send a reply to this resolution center thread.
3815
+ * Creates a draft and immediately publishes it.
3816
+ */
3817
+ sendReplyAsync({ messageBody }: {
3818
+ messageBody: string;
3819
+ }): Promise<ResolutionCenterMessage>;
3820
+ }
3821
+ }
3822
+ declare module "connect/models/Build" {
3823
+ import { RequestContext } from "network/Request";
3824
+ import { ImageAsset } from "connect/AssetAPI";
3825
+ import { ConnectQueryFilter, ConnectQueryParams } from "connect/ConnectAPI";
3826
+ import { App } from "connect/models/App";
3827
+ import { BetaAppReviewSubmission } from "connect/models/BetaAppReviewSubmission";
3828
+ import { BetaBuildLocalization } from "connect/models/BetaBuildLocalization";
3829
+ import { BetaBuildMetric } from "connect/models/BetaBuildMetric";
3830
+ import { BetaTester } from "connect/models/BetaTester";
3831
+ import { BuildBetaDetail } from "connect/models/BuildBetaDetail";
3832
+ import { ConnectModel } from "connect/models/ConnectModel";
3833
+ import { Platform, PreReleaseVersion } from "connect/models/PreReleaseVersion";
3834
+ import { ResolutionCenterThread } from "connect/models/ResolutionCenterThread";
3835
+ export interface BuildProps {
3836
+ /**
3837
+ * @example '1'
3838
+ */
3839
+ version: string;
3840
+ /**
3841
+ * @example '2017-08-08T15:21:52-07:00'
3842
+ */
3843
+ uploadedDate: string;
3844
+ /**
3845
+ * @example '2017-11-06T15:21:52-08:00'
3846
+ */
3847
+ expirationDate: string;
3848
+ expired: boolean;
3849
+ /**
3850
+ * @example '9.0'
3851
+ */
3852
+ minOsVersion: string;
3853
+ iconAssetToken: ImageAsset;
3854
+ /**
3855
+ * @example 'VALID'
3856
+ */
3857
+ processingState: ProcessingState;
3858
+ usesNonExemptEncryption: boolean;
3859
+ isWatchOnly: boolean;
3860
+ hasMessagesExtension: boolean;
3861
+ hasStickers: boolean;
3862
+ isLaunchProhibited: boolean;
3863
+ qcState: 'BETA_WAITING' | 'BETA_INTERNAL_TESTING' | 'PENDING_ANALYSIS' | 'ANALYSIS_COMPLETE' | 'INTERNAL_APPROVAL' | 'PENDING_ADDON_APPROVAL' | 'READY' | 'INTERNAL_REJECTION' | 'COMPLETE' | 'PARKED' | 'VALID_BINARY' | 'BETA_EXPORT_COMPLIANCE' | 'BETA_IN_REVIEW' | 'BETA_REJECTED' | 'BETA_APPROVED' | 'HOLD' | 'BETA_REJECT_COMPLETE' | 'OVERWRITTEN' | 'WAITING' | 'DEVELOPER_REJECTION' | 'METADATA_REJECTION' | 'METADATA_COMPLETE' | 'BETA_RETIRED' | (string & object);
3864
+ app?: App;
3865
+ betaAppReviewSubmission?: BetaAppReviewSubmission;
3866
+ betaBuildMetrics?: BetaBuildMetric;
3867
+ buildBetaDetail?: BuildBetaDetail;
3868
+ preReleaseVersion?: PreReleaseVersion;
3869
+ }
3870
+ export enum ProcessingState {
3871
+ PROCESSING = "PROCESSING",
3872
+ FAILED = "FAILED",
3873
+ INVALID = "INVALID",
3874
+ VALID = "VALID"
3875
+ }
3876
+ export type BuildQueryFilter = ConnectQueryFilter<Omit<BuildProps, 'app'> & {
3877
+ /**
3878
+ * `App` id
3879
+ */
3880
+ app: string;
3881
+ 'preReleaseVersion.version': string;
3882
+ }, 'app' | 'version' | 'preReleaseVersion.version' | 'processingState'>;
3883
+ export class Build extends ConnectModel<BuildProps> {
3884
+ static type: string;
3885
+ static DEFAULT_INCLUDES: string[];
3886
+ static getAsync(context: RequestContext, { query, }?: {
3887
+ query?: ConnectQueryParams<BuildQueryFilter>;
3888
+ }): Promise<Build[]>;
3889
+ /**
3890
+ *
3891
+ * @param id `Build` id (ex: UNHB5PT4MA)
3892
+ */
3893
+ static infoAsync: (context: RequestContext, props: {
3894
+ id: string;
3895
+ query?: ConnectQueryParams;
3896
+ }) => Promise<Build>;
3897
+ /**
3898
+ *
3899
+ * @param id `Build` id
3900
+ */
3901
+ static createAsync(context: RequestContext, { id, locale, }: {
3902
+ id: string;
3903
+ locale: string;
3904
+ }): Promise<Build>;
3905
+ static deleteAsync: (context: RequestContext, props: {
3906
+ id: string;
3907
+ }) => Promise<void>;
3908
+ updateAsync(attributes: Partial<BuildProps>): Promise<Build>;
3909
+ addBetaGroupsAsync({ betaGroups }: {
3910
+ betaGroups: string[];
3911
+ }): Promise<void>;
3912
+ getBetaBuildLocalizationsAsync({ query, }?: {
3913
+ query?: ConnectQueryParams;
3914
+ }): Promise<BetaBuildLocalization[]>;
3915
+ getBuildBetaDetailsAsync({ query, }?: {
3916
+ query?: ConnectQueryParams;
3917
+ }): Promise<BuildBetaDetail[]>;
3918
+ /**
3919
+ * Submit for beta app review.
3920
+ */
3921
+ createBetaAppReviewSubmissionAsync(): Promise<BetaAppReviewSubmission>;
3922
+ getBetaAppReviewSubmissionAsync(): Promise<BetaAppReviewSubmission | null>;
3923
+ createBetaTesterAsync(props: {
3924
+ email: string;
3925
+ firstName?: string;
3926
+ lastName?: string;
3927
+ }): Promise<BetaTester>;
3928
+ /** Get rejects for the build. */
3929
+ getResolutionCenterThreadsAsync(): Promise<ResolutionCenterThread[]>;
3930
+ /**
3931
+ * Expire the build to prevent further usage or submit a new build.
3932
+ */
3933
+ expireAsync(): Promise<Build>;
3934
+ isMissingExportCompliance(): boolean;
3935
+ getAppVersion(): string;
3936
+ getPlatform(): Platform;
3937
+ getAppId(): string;
3938
+ getBundleId(): string;
3939
+ isReadyForBetaSubmission(): boolean;
3940
+ isProcessed(): boolean;
3941
+ isReadyForInternalTesting(): boolean;
3942
+ }
3943
+ }
3944
+ declare module "connect/models/IdfaDeclaration" {
3945
+ import { RequestContext } from "network/Request";
3946
+ import { ConnectModel } from "connect/models/ConnectModel";
3947
+ /** @deprecated 1.6 */
3948
+ export interface IdfaDeclarationProps {
3949
+ servesAds: boolean;
3950
+ attributesAppInstallationToPreviousAd: boolean;
3951
+ attributesActionWithPreviousAd: boolean;
3952
+ honorsLimitedAdTracking: boolean;
3953
+ }
3954
+ /** @deprecated 1.6 */
3955
+ export class IdfaDeclaration extends ConnectModel<IdfaDeclarationProps> {
3956
+ static type: string;
3957
+ /**
3958
+ *
3959
+ * @param id `AppStoreVersion` id
3960
+ */
3961
+ static createAsync(context: RequestContext, { id, attributes, }: {
3962
+ id: string;
3963
+ attributes: Partial<IdfaDeclarationProps>;
3964
+ }): Promise<IdfaDeclaration>;
3965
+ static deleteAsync: (context: RequestContext, props: {
3966
+ id: string;
3967
+ }) => Promise<void>;
3968
+ deleteAsync(): Promise<void>;
3969
+ updateAsync(options: Partial<IdfaDeclarationProps>): Promise<IdfaDeclaration>;
3970
+ }
3971
+ }
3972
+ declare module "connect/models/ResetRatingsRequest" {
3973
+ import { RequestContext } from "network/Request";
3974
+ import { ConnectModel } from "connect/models/ConnectModel";
3975
+ export interface ResetRatingsRequestProps {
3976
+ resetDate: string | null;
3977
+ }
3978
+ export class ResetRatingsRequest extends ConnectModel<ResetRatingsRequestProps> {
3979
+ static type: string;
3980
+ /**
3981
+ *
3982
+ * @param id `AppStoreVersion` id
3983
+ */
3984
+ static createAsync(context: RequestContext, { id, }: {
3985
+ id: string;
3986
+ }): Promise<ResetRatingsRequest>;
3987
+ static deleteAsync: (context: RequestContext, props: {
3988
+ id: string;
3989
+ }) => Promise<void>;
3990
+ deleteAsync(): Promise<void>;
3991
+ }
3992
+ }
3993
+ declare module "connect/models/AppStoreVersion" {
3994
+ import { RequestContext } from "network/Request";
3995
+ import { ImageAsset } from "connect/AssetAPI";
3996
+ import { ConnectQueryParams } from "connect/ConnectAPI";
3997
+ import { AgeRatingDeclaration } from "connect/models/AgeRatingDeclaration";
3998
+ import { AppStoreState } from "connect/models/AppInfo";
3999
+ import { AppStoreReviewDetail, AppStoreReviewDetailProps } from "connect/models/AppStoreReviewDetail";
4000
+ import { AppStoreVersionLocalization, AppStoreVersionLocalizationProps } from "connect/models/AppStoreVersionLocalization";
4001
+ import { AppStoreVersionPhasedRelease, AppStoreVersionPhasedReleaseProps } from "connect/models/AppStoreVersionPhasedRelease";
4002
+ import { AppStoreVersionReleaseRequest } from "connect/models/AppStoreVersionReleaseRequest";
4003
+ import { AppStoreVersionSubmission } from "connect/models/AppStoreVersionSubmission";
4004
+ import { Build } from "connect/models/Build";
4005
+ import { ConnectModel } from "connect/models/ConnectModel";
4006
+ import { IdfaDeclaration, IdfaDeclarationProps } from "connect/models/IdfaDeclaration";
4007
+ import { Platform } from "connect/models/PreReleaseVersion";
4008
+ import { ResetRatingsRequest } from "connect/models/ResetRatingsRequest";
4009
+ export enum ReleaseType {
4010
+ AFTER_APPROVAL = "AFTER_APPROVAL",
4011
+ MANUAL = "MANUAL",
4012
+ SCHEDULED = "SCHEDULED"
4013
+ }
4014
+ /**
4015
+ * `NOTARIZATION` is alternative app marketplace distribution.
4016
+ * All eligible app versions default to both `APP_STORE` and `NOTARIZATION`.
4017
+ * An app can be distributed on either or both.
4018
+ */
4019
+ export enum ReviewType {
4020
+ APP_STORE = "APP_STORE",
4021
+ NOTARIZATION = "NOTARIZATION"
4022
+ }
4023
+ export enum AppVersionState {
4024
+ ACCEPTED = "ACCEPTED",
4025
+ DEVELOPER_REJECTED = "DEVELOPER_REJECTED",
4026
+ IN_REVIEW = "IN_REVIEW",
4027
+ INVALID_BINARY = "INVALID_BINARY",
4028
+ METADATA_REJECTED = "METADATA_REJECTED",
4029
+ PENDING_APPLE_RELEASE = "PENDING_APPLE_RELEASE",
4030
+ PENDING_DEVELOPER_RELEASE = "PENDING_DEVELOPER_RELEASE",
4031
+ PREPARE_FOR_SUBMISSION = "PREPARE_FOR_SUBMISSION",
4032
+ PROCESSING_FOR_DISTRIBUTION = "PROCESSING_FOR_DISTRIBUTION",
4033
+ READY_FOR_DISTRIBUTION = "READY_FOR_DISTRIBUTION",
4034
+ READY_FOR_REVIEW = "READY_FOR_REVIEW",
4035
+ REJECTED = "REJECTED",
4036
+ REPLACED_WITH_NEW_VERSION = "REPLACED_WITH_NEW_VERSION",
4037
+ WAITING_FOR_EXPORT_COMPLIANCE = "WAITING_FOR_EXPORT_COMPLIANCE",
4038
+ WAITING_FOR_REVIEW = "WAITING_FOR_REVIEW"
4039
+ }
4040
+ /**
4041
+ * @see https://developer.apple.com/documentation/appstoreconnectapi/appstoreversion/attributes-data.dictionary
4042
+ * @see https://developer.apple.com/documentation/appstoreconnectapi/appstoreversioncreaterequest/data-data.dictionary/attributes-data.dictionary
4043
+ */
4044
+ export interface AppStoreVersionProps {
4045
+ /**
4046
+ * @since 1.2
4047
+ * @example 'IOS'
4048
+ */
4049
+ platform: Platform;
4050
+ /**
4051
+ * @since 1.2
4052
+ * @deprecated 3.3 - use {@link appVersionState} instead
4053
+ * @example 'PREPARE_FOR_SUBMISSION'
4054
+ */
4055
+ appStoreState: AppStoreState;
4056
+ /**
4057
+ * @since 1.2
4058
+ * @example '2020 Expo'
4059
+ */
4060
+ copyright: string | null;
4061
+ /**
4062
+ * @since 1.2
4063
+ * @example '2020-10-29T09:03:06-07:00'
4064
+ */
4065
+ earliestReleaseDate: string | null;
4066
+ /** @since 1.2 */
4067
+ releaseType: ReleaseType | null;
4068
+ /** @since 1.2 */
4069
+ versionString: string;
4070
+ /**
4071
+ * @since 1.2
4072
+ * @example '2020-10-29T09:03:06-07:00'
4073
+ */
4074
+ createdDate: string;
4075
+ /** @since 1.2 */
4076
+ downloadable: boolean;
4077
+ /** @since 3.3 */
4078
+ appVersionState: AppVersionState | null;
4079
+ /** @since 3.3 */
4080
+ reviewType: ReviewType | null;
4081
+ storeIcon: ImageAsset | null;
4082
+ watchStoreIcon: ImageAsset | null;
4083
+ appStoreVersionSubmission?: AppStoreVersionSubmission;
4084
+ /**
4085
+ * This property has been removed.
4086
+ * @since 1.2
4087
+ * @deprecated 1.6
4088
+ */
4089
+ usesIdfa?: never;
4090
+ }
4091
+ export class AppStoreVersion extends ConnectModel<AppStoreVersionProps> {
4092
+ static type: string;
4093
+ static DEFAULT_INCLUDES: string[];
4094
+ /** @see https://developer.apple.com/documentation/appstoreconnectapi/appstoreversioncreaterequest/data-data.dictionary */
4095
+ static createAsync(context: RequestContext, { id, platform, versionString, copyright, earliestReleaseDate, releaseType, reviewType, }: {
4096
+ /** The `App` identifier to create the version for */
4097
+ id: string;
4098
+ } & Pick<AppStoreVersionProps, 'platform' | 'versionString'> & Partial<Pick<AppStoreVersionProps, 'copyright' | 'earliestReleaseDate' | 'releaseType' | 'reviewType'>>): Promise<AppStoreVersion>;
4099
+ getBuildAsync({ version, }?: {
4100
+ version?: string;
4101
+ }): Promise<Build | null>;
4102
+ updateBuildAsync({ buildId }?: {
4103
+ buildId?: string;
4104
+ }): Promise<AppStoreVersion>;
4105
+ /** @see https://developer.apple.com/documentation/appstoreconnectapi/appstoreversionupdaterequest/data-data.dictionary */
4106
+ updateAsync(options: Partial<Pick<AppStoreVersionProps, 'copyright' | 'earliestReleaseDate' | 'releaseType' | 'versionString' | 'downloadable' | 'reviewType'>>): Promise<AppStoreVersion>;
4107
+ /**
4108
+ * @deprecated The ageRatingDeclaration relationship has moved from appStoreVersions to appInfos.
4109
+ * Use {@link AppInfo.getAgeRatingDeclarationAsync} instead.
4110
+ */
4111
+ getAgeRatingDeclarationAsync({ query, }?: {
4112
+ query?: ConnectQueryParams;
4113
+ }): Promise<AgeRatingDeclaration | null>;
4114
+ createResetRatingsRequestAsync(): Promise<ResetRatingsRequest>;
4115
+ createPhasedReleaseAsync({ state, }?: {
4116
+ state?: AppStoreVersionPhasedReleaseProps['phasedReleaseState'];
4117
+ }): Promise<AppStoreVersionPhasedRelease>;
4118
+ getPhasedReleaseAsync({ query, }?: {
4119
+ query?: ConnectQueryParams;
4120
+ }): Promise<AppStoreVersionPhasedRelease | null>;
4121
+ getAppStoreReviewDetailAsync({ query, }?: {
4122
+ query?: ConnectQueryParams;
4123
+ }): Promise<AppStoreReviewDetail | null>;
4124
+ createSubmissionAsync(): Promise<AppStoreVersionSubmission>;
4125
+ getSubmissionAsync({ query, }?: {
4126
+ query?: ConnectQueryParams;
4127
+ }): Promise<AppStoreVersionSubmission | null>;
4128
+ /** @deprecated 1.6 */
4129
+ getIdfaDeclarationAsync({ query, }?: {
4130
+ query?: ConnectQueryParams;
4131
+ }): Promise<IdfaDeclaration | null>;
4132
+ /** @deprecated 1.6 */
4133
+ createIdfaDeclarationAsync(attributes: Partial<IdfaDeclarationProps>): Promise<IdfaDeclaration>;
4134
+ createLocalizationAsync({ locale, }: Pick<AppStoreVersionLocalizationProps, 'locale'>): Promise<AppStoreVersionLocalization>;
4135
+ createReviewDetailAsync(attributes: Partial<Omit<AppStoreReviewDetailProps, 'demoAccountRequired'>>): Promise<AppStoreReviewDetail>;
4136
+ createReleaseRequestAsync(): Promise<AppStoreVersionReleaseRequest>;
4137
+ getResetRatingsRequestAsync({ query, }?: {
4138
+ query?: ConnectQueryParams;
4139
+ }): Promise<ResetRatingsRequest | null>;
4140
+ getLocalizationsAsync({ query, }?: {
4141
+ query?: ConnectQueryParams;
4142
+ }): Promise<AppStoreVersionLocalization[]>;
4143
+ canReject(): boolean;
4144
+ rejectAsync(): Promise<boolean>;
4145
+ }
4146
+ }
4147
+ declare module "connect/models/AppStoreVersionLocalization" {
4148
+ import { RequestContext } from "network/Request";
4149
+ import { ConnectQueryFilter, ConnectQueryParams } from "connect/ConnectAPI";
4150
+ import { AppPreviewSet, AppPreviewSetProps } from "connect/models/AppPreviewSet";
4151
+ import { AppScreenshotSet, AppScreenshotSetProps } from "connect/models/AppScreenshotSet";
4152
+ import { ConnectModel } from "connect/models/ConnectModel";
4153
+ export interface AppStoreVersionLocalizationProps {
4154
+ description: string | null;
4155
+ /**
4156
+ * @example 'en-US'
4157
+ */
4158
+ locale: string;
4159
+ /**
4160
+ * @example 'Dating, Food, Books,'
4161
+ */
4162
+ keywords: string | null;
4163
+ marketingUrl: string | null;
4164
+ promotionalText: string | null;
4165
+ supportUrl: string | null;
4166
+ whatsNew: string | null;
4167
+ appScreenshotSets?: AppScreenshotSet[];
4168
+ appPreviewSets?: AppPreviewSet[];
4169
+ }
4170
+ /**
4171
+ * Used for updating basic metadata.
4172
+ */
4173
+ export class AppStoreVersionLocalization extends ConnectModel<AppStoreVersionLocalizationProps> {
4174
+ static type: string;
4175
+ static createAsync(context: RequestContext, { id, locale, }: {
4176
+ id: string;
4177
+ locale: string;
4178
+ }): Promise<AppStoreVersionLocalization>;
4179
+ static deleteAsync: (context: RequestContext, props: {
4180
+ id: string;
4181
+ }) => Promise<void>;
4182
+ updateAsync(options: Partial<Omit<AppStoreVersionLocalizationProps, 'locale' | 'appScreenshotSets' | 'appPreviewSets'>>): Promise<AppStoreVersionLocalization>;
4183
+ getAppScreenshotSetsAsync({ query, }?: {
4184
+ query?: ConnectQueryParams<ConnectQueryFilter<AppScreenshotSetProps, 'screenshotDisplayType'>>;
4185
+ }): Promise<AppScreenshotSet[]>;
4186
+ createAppScreenshotSetAsync(attributes: Pick<AppScreenshotSetProps, 'screenshotDisplayType'>): Promise<AppScreenshotSet>;
4187
+ getAppPreviewSetsAsync({ query, }?: {
4188
+ query?: ConnectQueryParams<ConnectQueryFilter<AppPreviewSetProps, 'previewType'>>;
4189
+ }): Promise<AppPreviewSet[]>;
4190
+ createAppPreviewSetAsync(attributes: Pick<AppPreviewSetProps, 'previewType'>): Promise<AppPreviewSet>;
4191
+ }
4192
+ }
4193
+ declare module "connect/models/AppPreviewSet" {
4194
+ import { RequestContext } from "network/Request";
4195
+ import { ConnectQueryParams } from "connect/ConnectAPI";
4196
+ import { AppPreview } from "connect/models/AppPreview";
4197
+ import { ConnectModel } from "connect/models/ConnectModel";
4198
+ export interface AppPreviewSetProps {
4199
+ previewType: PreviewType;
4200
+ appPreviews: AppPreview[];
4201
+ }
4202
+ /**
4203
+ * Display types for app previews.
4204
+ * Each type corresponds to a specific device screen size.
4205
+ */
4206
+ export enum PreviewType {
4207
+ IPHONE_35 = "IPHONE_35",
4208
+ IPHONE_40 = "IPHONE_40",
4209
+ IPHONE_47 = "IPHONE_47",
4210
+ IPHONE_55 = "IPHONE_55",
4211
+ IPHONE_58 = "IPHONE_58",
4212
+ IPHONE_61 = "IPHONE_61",
4213
+ IPHONE_65 = "IPHONE_65",
4214
+ IPHONE_67 = "IPHONE_67",
4215
+ IPAD_97 = "IPAD_97",
4216
+ IPAD_105 = "IPAD_105",
4217
+ IPAD_PRO_129 = "IPAD_PRO_129",
4218
+ IPAD_PRO_3GEN_11 = "IPAD_PRO_3GEN_11",
4219
+ IPAD_PRO_3GEN_129 = "IPAD_PRO_3GEN_129",
4220
+ WATCH_SERIES_3 = "WATCH_SERIES_3",
4221
+ WATCH_SERIES_4 = "WATCH_SERIES_4",
4222
+ WATCH_SERIES_7 = "WATCH_SERIES_7",
4223
+ WATCH_SERIES_10 = "WATCH_SERIES_10",
4224
+ WATCH_ULTRA = "WATCH_ULTRA",
4225
+ APPLE_TV = "APPLE_TV",
4226
+ APPLE_VISION_PRO = "APPLE_VISION_PRO",
4227
+ DESKTOP = "DESKTOP"
4228
+ }
4229
+ export const ALL_PREVIEW_TYPES: PreviewType[];
4230
+ /**
4231
+ * App Preview Set - groups app previews by display type.
4232
+ * Each set contains previews for a specific device screen size.
4233
+ */
4234
+ export class AppPreviewSet extends ConnectModel<AppPreviewSetProps> {
4235
+ static type: string;
4236
+ /**
4237
+ * Get info for a specific AppPreviewSet.
4238
+ * @param id AppPreviewSet ID
4239
+ */
4240
+ static infoAsync: (context: RequestContext, props: {
4241
+ id: string;
4242
+ query?: ConnectQueryParams;
4243
+ }) => Promise<AppPreviewSet>;
4244
+ /**
4245
+ * Create a new AppPreviewSet for a localization.
4246
+ * @param id AppStoreVersionLocalization ID
4247
+ * @param attributes Preview type attributes
4248
+ */
4249
+ static createAsync(context: RequestContext, { id, attributes, }: {
4250
+ id: string;
4251
+ attributes: Pick<AppPreviewSetProps, 'previewType'>;
4252
+ }): Promise<AppPreviewSet>;
4253
+ /**
4254
+ * Update the order of previews in this set.
4255
+ */
4256
+ updateAsync({ appPreviews }: {
4257
+ appPreviews: string[];
4258
+ }): Promise<AppPreviewSet>;
4259
+ static deleteAsync: (context: RequestContext, props: {
4260
+ id: string;
4261
+ }) => Promise<void>;
4262
+ deleteAsync(): Promise<void>;
4263
+ isIphone(): boolean;
4264
+ isIpad(): boolean;
4265
+ isWatch(): boolean;
4266
+ isAppleTv(): boolean;
4267
+ isAppleVisionPro(): boolean;
4268
+ isDesktop(): boolean;
4269
+ /**
4270
+ * Upload a video preview to this set.
4271
+ * @param filePath Path to the video file (MP4, MOV)
4272
+ * @param waitForProcessing Wait for Apple to process the video
4273
+ * @param position Optional position to insert the preview
4274
+ * @param previewFrameTimeCode Optional time code for the preview frame (e.g., "00:05:00")
4275
+ */
4276
+ uploadPreview({ filePath, waitForProcessing, position, previewFrameTimeCode, }: {
4277
+ filePath: string;
4278
+ waitForProcessing?: boolean;
4279
+ position?: number;
4280
+ previewFrameTimeCode?: string;
4281
+ }): Promise<AppPreview>;
4282
+ /**
4283
+ * Reorder previews in this set.
4284
+ * @param appPreviews Array of AppPreview IDs in desired order
4285
+ */
4286
+ reorderPreviewsAsync({ appPreviews, query, }: {
4287
+ appPreviews: string[];
4288
+ query?: ConnectQueryParams;
4289
+ }): Promise<AppPreviewSet[]>;
4290
+ }
4291
+ }
4292
+ declare module "connect/models/AppCustomProductPageLocalization" {
4293
+ import { RequestContext } from "network/Request";
4294
+ import { ConnectQueryFilter, ConnectQueryParams } from "connect/ConnectAPI";
4295
+ import { AppPreviewSet, AppPreviewSetProps } from "connect/models/AppPreviewSet";
4296
+ import { AppScreenshotSet, AppScreenshotSetProps } from "connect/models/AppScreenshotSet";
4297
+ import { ConnectModel } from "connect/models/ConnectModel";
4298
+ export interface AppCustomProductPageLocalizationProps {
4299
+ /** Locale code (e.g. 'en-US'). */
4300
+ locale: string;
4301
+ /** Promotional text for the page. */
4302
+ promotionalText: string | null;
4303
+ appScreenshotSets?: AppScreenshotSet[];
4304
+ appPreviewSets?: AppPreviewSet[];
4305
+ }
4306
+ export class AppCustomProductPageLocalization extends ConnectModel<AppCustomProductPageLocalizationProps> {
4307
+ static type: string;
4308
+ static infoAsync: (context: RequestContext, props: {
4309
+ id: string;
4310
+ query?: ConnectQueryParams;
4311
+ }) => Promise<AppCustomProductPageLocalization>;
4312
+ static deleteAsync: (context: RequestContext, props: {
4313
+ id: string;
4314
+ }) => Promise<void>;
4315
+ static createAsync(context: RequestContext, { appCustomProductPageVersionId, locale, promotionalText, }: {
4316
+ appCustomProductPageVersionId: string;
4317
+ locale: string;
4318
+ promotionalText?: string;
4319
+ }): Promise<AppCustomProductPageLocalization>;
4320
+ updateAsync(attributes: Partial<Pick<AppCustomProductPageLocalizationProps, 'promotionalText'>>): Promise<AppCustomProductPageLocalization>;
4321
+ getAppScreenshotSetsAsync({ query, }?: {
4322
+ query?: ConnectQueryParams<ConnectQueryFilter<AppScreenshotSetProps, 'screenshotDisplayType'>>;
4323
+ }): Promise<AppScreenshotSet[]>;
4324
+ getAppPreviewSetsAsync({ query, }?: {
4325
+ query?: ConnectQueryParams<ConnectQueryFilter<AppPreviewSetProps, 'previewType'>>;
4326
+ }): Promise<AppPreviewSet[]>;
3944
4327
  }
3945
4328
  }
3946
- declare module "connect/models/ResolutionCenterThread" {
4329
+ declare module "connect/models/AppCustomProductPageVersion" {
4330
+ import { RequestContext } from "network/Request";
3947
4331
  import { ConnectQueryFilter, ConnectQueryParams } from "connect/ConnectAPI";
3948
- import type { AppStoreVersion } from "connect/models/AppStoreVersion";
3949
- import type { Build } from "connect/models/Build";
4332
+ import { AppCustomProductPageLocalization } from "connect/models/AppCustomProductPageLocalization";
3950
4333
  import { ConnectModel } from "connect/models/ConnectModel";
3951
- import { ResolutionCenterDraftMessage } from "connect/models/ResolutionCenterDraftMessage";
3952
- import { ResolutionCenterMessage } from "connect/models/ResolutionCenterMessage";
3953
- import { ReviewRejection } from "connect/models/ReviewRejection";
3954
- export interface ResolutionCenterThreadProps {
3955
- state: 'ACTIVE' | (string & object);
3956
- canDeveloperAddNote: boolean;
3957
- objectionableContent: boolean;
3958
- threadType: 'REJECTION_BINARY' | 'REJECTION_METADATA' | 'REJECTION_REVIEW_SUBMISSION' | 'APP_MESSAGE_ARC' | 'APP_MESSAGE_ARB' | 'APP_MESSAGE_COMM';
3959
- /** @example '2024-12-13T04:47:48.681Z' */
3960
- createdDate: string;
3961
- /** @example `2024-12-13T04:47:48.681Z` */
3962
- lastMessageResponseDate: string;
3963
- resolutionCenterMessages?: unknown;
3964
- appStoreVersion?: AppStoreVersion;
3965
- build?: Build;
4334
+ export enum AppCustomProductPageVersionState {
4335
+ PREPARE_FOR_SUBMISSION = "PREPARE_FOR_SUBMISSION",
4336
+ READY_FOR_REVIEW = "READY_FOR_REVIEW",
4337
+ WAITING_FOR_REVIEW = "WAITING_FOR_REVIEW",
4338
+ IN_REVIEW = "IN_REVIEW",
4339
+ ACCEPTED = "ACCEPTED",
4340
+ APPROVED = "APPROVED",
4341
+ REPLACED_WITH_NEW_VERSION = "REPLACED_WITH_NEW_VERSION",
4342
+ REJECTED = "REJECTED"
3966
4343
  }
3967
- export type ResolutionCenterThreadQueryFilter = ConnectQueryFilter<Omit<ResolutionCenterThreadProps, 'build' | 'appStoreVersion'> & {
3968
- appStoreVersion: string;
3969
- build: string;
3970
- reviewSubmission: string;
3971
- }, 'build' | 'appStoreVersion' | 'threadType' | 'reviewSubmission'>;
3972
- /**
3973
- * Resolution center threads require session auth (Iris API).
3974
- * These endpoints are NOT available with API key (JWT) authentication.
3975
- */
3976
- export class ResolutionCenterThread extends ConnectModel<ResolutionCenterThreadProps> {
4344
+ export interface AppCustomProductPageVersionProps {
4345
+ /** Version identifier. */
4346
+ version: string;
4347
+ /** Current state of the version. */
4348
+ state: AppCustomProductPageVersionState;
4349
+ /** Deep link URL for the version. */
4350
+ deepLink: string | null;
4351
+ appCustomProductPageLocalizations?: AppCustomProductPageLocalization[];
4352
+ }
4353
+ export type AppCustomProductPageVersionQueryFilter = ConnectQueryFilter<AppCustomProductPageVersionProps, 'state'>;
4354
+ export class AppCustomProductPageVersion extends ConnectModel<AppCustomProductPageVersionProps> {
3977
4355
  static type: string;
3978
4356
  static DEFAULT_INCLUDES: string[];
3979
- static getAsync: (context: import("AppStoreConnect").RequestContext, props?: {
3980
- query?: ConnectQueryParams<Partial<{
3981
- appStoreVersion: string | string[];
3982
- build: string | string[];
3983
- threadType: "REJECTION_BINARY" | "REJECTION_METADATA" | "REJECTION_REVIEW_SUBMISSION" | "APP_MESSAGE_ARC" | "APP_MESSAGE_ARB" | "APP_MESSAGE_COMM" | ("REJECTION_BINARY" | "REJECTION_METADATA" | "REJECTION_REVIEW_SUBMISSION" | "APP_MESSAGE_ARC" | "APP_MESSAGE_ARB" | "APP_MESSAGE_COMM")[];
3984
- reviewSubmission: string | string[];
3985
- } & {
3986
- id?: string;
3987
- }>> | undefined;
3988
- } | undefined) => Promise<ResolutionCenterThread[]>;
3989
- getResolutionCenterMessagesAsync({ query, }?: {
4357
+ static infoAsync: (context: RequestContext, props: {
4358
+ id: string;
3990
4359
  query?: ConnectQueryParams;
3991
- }): Promise<ResolutionCenterMessage[]>;
3992
- /**
3993
- * Get the current draft message for this thread, if any.
3994
- *
3995
- * GET /iris/v1/resolutionCenterThreads/{id}/resolutionCenterDraftMessage
3996
- * Note: singular endpoint (not plural), returns a single object not an array.
3997
- */
3998
- getDraftMessageAsync(): Promise<ResolutionCenterDraftMessage | null>;
3999
- fetchRejectionReasonsAsync(): Promise<ReviewRejection[]>;
4000
- /**
4001
- * Create a draft message on this thread.
4002
- * Use `draft.sendAsync()` to publish it.
4003
- */
4004
- createDraftMessageAsync({ messageBody, }: {
4005
- messageBody: string;
4006
- }): Promise<ResolutionCenterDraftMessage>;
4007
- /**
4008
- * Send a reply to this resolution center thread.
4009
- * Creates a draft and immediately publishes it.
4010
- */
4011
- sendReplyAsync({ messageBody }: {
4012
- messageBody: string;
4013
- }): Promise<ResolutionCenterMessage>;
4360
+ }) => Promise<AppCustomProductPageVersion>;
4361
+ static createAsync(context: RequestContext, { appCustomProductPageId, deepLink, }: {
4362
+ appCustomProductPageId: string;
4363
+ deepLink?: string;
4364
+ }): Promise<AppCustomProductPageVersion>;
4365
+ updateAsync(attributes: Partial<Pick<AppCustomProductPageVersionProps, 'deepLink'>>): Promise<AppCustomProductPageVersion>;
4366
+ getAppCustomProductPageLocalizationsAsync({ query, }?: {
4367
+ query?: ConnectQueryParams;
4368
+ }): Promise<AppCustomProductPageLocalization[]>;
4014
4369
  }
4015
4370
  }
4016
- declare module "connect/models/Build" {
4371
+ declare module "connect/models/AppCustomProductPage" {
4017
4372
  import { RequestContext } from "network/Request";
4018
- import { ImageAsset } from "connect/AssetAPI";
4019
4373
  import { ConnectQueryFilter, ConnectQueryParams } from "connect/ConnectAPI";
4020
- import { App } from "connect/models/App";
4021
- import { BetaAppReviewSubmission } from "connect/models/BetaAppReviewSubmission";
4022
- import { BetaBuildLocalization } from "connect/models/BetaBuildLocalization";
4023
- import { BetaBuildMetric } from "connect/models/BetaBuildMetric";
4024
- import { BetaTester } from "connect/models/BetaTester";
4025
- import { BuildBetaDetail } from "connect/models/BuildBetaDetail";
4374
+ import { AppCustomProductPageVersion } from "connect/models/AppCustomProductPageVersion";
4026
4375
  import { ConnectModel } from "connect/models/ConnectModel";
4027
- import { Platform, PreReleaseVersion } from "connect/models/PreReleaseVersion";
4028
- import { ResolutionCenterThread } from "connect/models/ResolutionCenterThread";
4029
- export interface BuildProps {
4030
- /**
4031
- * @example '1'
4032
- */
4033
- version: string;
4034
- /**
4035
- * @example '2017-08-08T15:21:52-07:00'
4036
- */
4037
- uploadedDate: string;
4038
- /**
4039
- * @example '2017-11-06T15:21:52-08:00'
4040
- */
4041
- expirationDate: string;
4042
- expired: boolean;
4043
- /**
4044
- * @example '9.0'
4045
- */
4046
- minOsVersion: string;
4047
- iconAssetToken: ImageAsset;
4048
- /**
4049
- * @example 'VALID'
4050
- */
4051
- processingState: ProcessingState;
4052
- usesNonExemptEncryption: boolean;
4053
- isWatchOnly: boolean;
4054
- hasMessagesExtension: boolean;
4055
- hasStickers: boolean;
4056
- isLaunchProhibited: boolean;
4057
- qcState: 'BETA_WAITING' | 'BETA_INTERNAL_TESTING' | 'PENDING_ANALYSIS' | 'ANALYSIS_COMPLETE' | 'INTERNAL_APPROVAL' | 'PENDING_ADDON_APPROVAL' | 'READY' | 'INTERNAL_REJECTION' | 'COMPLETE' | 'PARKED' | 'VALID_BINARY' | 'BETA_EXPORT_COMPLIANCE' | 'BETA_IN_REVIEW' | 'BETA_REJECTED' | 'BETA_APPROVED' | 'HOLD' | 'BETA_REJECT_COMPLETE' | 'OVERWRITTEN' | 'WAITING' | 'DEVELOPER_REJECTION' | 'METADATA_REJECTION' | 'METADATA_COMPLETE' | 'BETA_RETIRED' | (string & object);
4058
- app?: App;
4059
- betaAppReviewSubmission?: BetaAppReviewSubmission;
4060
- betaBuildMetrics?: BetaBuildMetric;
4061
- buildBetaDetail?: BuildBetaDetail;
4062
- preReleaseVersion?: PreReleaseVersion;
4063
- }
4064
- export enum ProcessingState {
4065
- PROCESSING = "PROCESSING",
4066
- FAILED = "FAILED",
4067
- INVALID = "INVALID",
4068
- VALID = "VALID"
4376
+ export interface AppCustomProductPageProps {
4377
+ /** Name of the custom product page. */
4378
+ name: string;
4379
+ /** The generated URL for the custom product page. */
4380
+ url: string;
4381
+ /** Whether the page is visible. */
4382
+ visible: boolean | null;
4383
+ appCustomProductPageVersions?: AppCustomProductPageVersion[];
4069
4384
  }
4070
- export type BuildQueryFilter = ConnectQueryFilter<Omit<BuildProps, 'app'> & {
4071
- /**
4072
- * `App` id
4073
- */
4074
- app: string;
4075
- 'preReleaseVersion.version': string;
4076
- }, 'app' | 'version' | 'preReleaseVersion.version' | 'processingState'>;
4077
- export class Build extends ConnectModel<BuildProps> {
4385
+ export type AppCustomProductPageQueryFilter = ConnectQueryFilter<AppCustomProductPageProps, 'visible'>;
4386
+ export class AppCustomProductPage extends ConnectModel<AppCustomProductPageProps> {
4078
4387
  static type: string;
4079
4388
  static DEFAULT_INCLUDES: string[];
4080
- static getAsync(context: RequestContext, { query, }?: {
4081
- query?: ConnectQueryParams<BuildQueryFilter>;
4082
- }): Promise<Build[]>;
4083
- /**
4084
- *
4085
- * @param id `Build` id (ex: UNHB5PT4MA)
4086
- */
4087
4389
  static infoAsync: (context: RequestContext, props: {
4088
4390
  id: string;
4089
4391
  query?: ConnectQueryParams;
4090
- }) => Promise<Build>;
4091
- /**
4092
- *
4093
- * @param id `Build` id
4094
- */
4095
- static createAsync(context: RequestContext, { id, locale, }: {
4096
- id: string;
4097
- locale: string;
4098
- }): Promise<Build>;
4392
+ }) => Promise<AppCustomProductPage>;
4099
4393
  static deleteAsync: (context: RequestContext, props: {
4100
4394
  id: string;
4101
4395
  }) => Promise<void>;
4102
- updateAsync(attributes: Partial<BuildProps>): Promise<Build>;
4103
- addBetaGroupsAsync({ betaGroups }: {
4104
- betaGroups: string[];
4105
- }): Promise<void>;
4106
- getBetaBuildLocalizationsAsync({ query, }?: {
4107
- query?: ConnectQueryParams;
4108
- }): Promise<BetaBuildLocalization[]>;
4109
- getBuildBetaDetailsAsync({ query, }?: {
4396
+ static createAsync(context: RequestContext, { appId, name, appStoreVersionTemplateId, customProductPageTemplateId, }: {
4397
+ appId: string;
4398
+ name: string;
4399
+ appStoreVersionTemplateId?: string;
4400
+ customProductPageTemplateId?: string;
4401
+ }): Promise<AppCustomProductPage>;
4402
+ updateAsync(attributes: Partial<Pick<AppCustomProductPageProps, 'name' | 'visible'>>): Promise<AppCustomProductPage>;
4403
+ getAppCustomProductPageVersionsAsync({ query, }?: {
4110
4404
  query?: ConnectQueryParams;
4111
- }): Promise<BuildBetaDetail[]>;
4112
- /**
4113
- * Submit for beta app review.
4114
- */
4115
- createBetaAppReviewSubmissionAsync(): Promise<BetaAppReviewSubmission>;
4116
- getBetaAppReviewSubmissionAsync(): Promise<BetaAppReviewSubmission | null>;
4117
- createBetaTesterAsync(props: {
4118
- email: string;
4119
- firstName?: string;
4120
- lastName?: string;
4121
- }): Promise<BetaTester>;
4122
- /** Get rejects for the build. */
4123
- getResolutionCenterThreadsAsync(): Promise<ResolutionCenterThread[]>;
4124
- /**
4125
- * Expire the build to prevent further usage or submit a new build.
4126
- */
4127
- expireAsync(): Promise<Build>;
4128
- isMissingExportCompliance(): boolean;
4129
- getAppVersion(): string;
4130
- getPlatform(): Platform;
4131
- getAppId(): string;
4132
- getBundleId(): string;
4133
- isReadyForBetaSubmission(): boolean;
4134
- isProcessed(): boolean;
4135
- isReadyForInternalTesting(): boolean;
4405
+ }): Promise<AppCustomProductPageVersion[]>;
4136
4406
  }
4137
4407
  }
4138
- declare module "connect/models/IdfaDeclaration" {
4408
+ declare module "connect/models/AppClipAppStoreReviewDetail" {
4139
4409
  import { RequestContext } from "network/Request";
4140
4410
  import { ConnectModel } from "connect/models/ConnectModel";
4141
- /** @deprecated 1.6 */
4142
- export interface IdfaDeclarationProps {
4143
- servesAds: boolean;
4144
- attributesAppInstallationToPreviousAd: boolean;
4145
- attributesActionWithPreviousAd: boolean;
4146
- honorsLimitedAdTracking: boolean;
4411
+ export interface AppClipAppStoreReviewDetailProps {
4412
+ invocationUrls: string[] | null;
4147
4413
  }
4148
- /** @deprecated 1.6 */
4149
- export class IdfaDeclaration extends ConnectModel<IdfaDeclarationProps> {
4414
+ /**
4415
+ * App Store review detail for an App Clip default experience.
4416
+ *
4417
+ * Holds the list of invocation URLs that App Review will use to launch the
4418
+ * App Clip during review.
4419
+ *
4420
+ * @see https://developer.apple.com/documentation/appstoreconnectapi/appclipappstorereviewdetail
4421
+ */
4422
+ export class AppClipAppStoreReviewDetail extends ConnectModel<AppClipAppStoreReviewDetailProps> {
4150
4423
  static type: string;
4151
- /**
4152
- *
4153
- * @param id `AppStoreVersion` id
4154
- */
4155
- static createAsync(context: RequestContext, { id, attributes, }: {
4424
+ static infoAsync: (context: RequestContext, props: {
4156
4425
  id: string;
4157
- attributes: Partial<IdfaDeclarationProps>;
4158
- }): Promise<IdfaDeclaration>;
4426
+ query?: import("connect/ConnectAPI").ConnectQueryParams;
4427
+ }) => Promise<AppClipAppStoreReviewDetail>;
4159
4428
  static deleteAsync: (context: RequestContext, props: {
4160
4429
  id: string;
4161
4430
  }) => Promise<void>;
4431
+ static createAsync(context: RequestContext, { appClipDefaultExperienceId, attributes, }: {
4432
+ appClipDefaultExperienceId: string;
4433
+ attributes: Pick<AppClipAppStoreReviewDetailProps, 'invocationUrls'>;
4434
+ }): Promise<AppClipAppStoreReviewDetail>;
4435
+ updateAsync(options: Partial<Pick<AppClipAppStoreReviewDetailProps, 'invocationUrls'>>): Promise<AppClipAppStoreReviewDetail>;
4162
4436
  deleteAsync(): Promise<void>;
4163
- updateAsync(options: Partial<IdfaDeclarationProps>): Promise<IdfaDeclaration>;
4164
4437
  }
4165
4438
  }
4166
- declare module "connect/models/ResetRatingsRequest" {
4439
+ declare module "connect/models/AppClipHeaderImage" {
4167
4440
  import { RequestContext } from "network/Request";
4441
+ import { AppMediaAssetState, ImageAsset, UploadOperation } from "connect/AssetAPI";
4168
4442
  import { ConnectModel } from "connect/models/ConnectModel";
4169
- export interface ResetRatingsRequestProps {
4170
- resetDate: string | null;
4443
+ export interface AppClipHeaderImageProps {
4444
+ fileSize: number;
4445
+ fileName: string;
4446
+ sourceFileChecksum: string;
4447
+ imageAsset: ImageAsset;
4448
+ uploadOperations: UploadOperation[];
4449
+ assetDeliveryState: AppMediaAssetState;
4171
4450
  }
4172
- export class ResetRatingsRequest extends ConnectModel<ResetRatingsRequestProps> {
4451
+ /**
4452
+ * A header image for an App Clip default experience localization.
4453
+ *
4454
+ * Uses the same upload protocol as `AppScreenshot`:
4455
+ * 1. POST `/v1/appClipHeaderImages` with `fileName` + `fileSize` to reserve
4456
+ * the asset and obtain `uploadOperations`.
4457
+ * 2. PUT the binary data to each operation's URL via `assetClient`.
4458
+ * 3. PATCH the resource with `uploaded: true` and `sourceFileChecksum`.
4459
+ * 4. Optionally poll until `assetDeliveryState.state` is `COMPLETE`.
4460
+ *
4461
+ * @see https://developer.apple.com/documentation/appstoreconnectapi/appclipheaderimage
4462
+ */
4463
+ export class AppClipHeaderImage extends ConnectModel<AppClipHeaderImageProps> {
4173
4464
  static type: string;
4465
+ static infoAsync: (context: RequestContext, props: {
4466
+ id: string;
4467
+ query?: import("connect/ConnectAPI").ConnectQueryParams;
4468
+ }) => Promise<AppClipHeaderImage>;
4469
+ static createAsync(context: RequestContext, { id, attributes, }: {
4470
+ /** AppClipDefaultExperienceLocalization id */
4471
+ id: string;
4472
+ attributes: Pick<AppClipHeaderImageProps, 'fileName' | 'fileSize'>;
4473
+ }): Promise<AppClipHeaderImage>;
4174
4474
  /**
4475
+ * Upload a header image PNG to App Store Connect for an App Clip
4476
+ * default-experience localization.
4175
4477
  *
4176
- * @param id `AppStoreVersion` id
4478
+ * @param id `AppClipDefaultExperienceLocalization` id
4177
4479
  */
4178
- static createAsync(context: RequestContext, { id, }: {
4480
+ static uploadAsync(context: RequestContext, { id, filePath, waitForProcessing, }: {
4179
4481
  id: string;
4180
- }): Promise<ResetRatingsRequest>;
4482
+ filePath: string;
4483
+ waitForProcessing?: boolean;
4484
+ }): Promise<AppClipHeaderImage>;
4181
4485
  static deleteAsync: (context: RequestContext, props: {
4182
4486
  id: string;
4183
4487
  }) => Promise<void>;
4184
4488
  deleteAsync(): Promise<void>;
4489
+ updateAsync(options: Partial<Pick<AppClipHeaderImageProps, 'sourceFileChecksum'>> & {
4490
+ uploaded?: boolean;
4491
+ }): Promise<AppClipHeaderImage>;
4492
+ isAwaitingUpload(): boolean;
4493
+ isComplete(): boolean;
4494
+ isFailed(): boolean;
4495
+ getErrorMessages(): string[];
4496
+ /**
4497
+ * Get a downloadable URL for the rendered image asset. Note that the
4498
+ * downloaded image is a re-rendered copy and will NOT match
4499
+ * `sourceFileChecksum`.
4500
+ */
4501
+ getImageAssetUrl({ width, height, type, }: {
4502
+ width?: number;
4503
+ height?: number;
4504
+ type?: string | 'png';
4505
+ }): string | null;
4185
4506
  }
4186
4507
  }
4187
- declare module "connect/models/AppStoreVersion" {
4508
+ declare module "connect/models/AppClipDefaultExperienceLocalization" {
4188
4509
  import { RequestContext } from "network/Request";
4189
- import { ImageAsset } from "connect/AssetAPI";
4190
- import { ConnectQueryParams } from "connect/ConnectAPI";
4191
- import { AgeRatingDeclaration } from "connect/models/AgeRatingDeclaration";
4192
- import { AppStoreState } from "connect/models/AppInfo";
4193
- import { AppStoreReviewDetail, AppStoreReviewDetailProps } from "connect/models/AppStoreReviewDetail";
4194
- import { AppStoreVersionLocalization, AppStoreVersionLocalizationProps } from "connect/models/AppStoreVersionLocalization";
4195
- import { AppStoreVersionPhasedRelease, AppStoreVersionPhasedReleaseProps } from "connect/models/AppStoreVersionPhasedRelease";
4196
- import { AppStoreVersionReleaseRequest } from "connect/models/AppStoreVersionReleaseRequest";
4197
- import { AppStoreVersionSubmission } from "connect/models/AppStoreVersionSubmission";
4198
- import { Build } from "connect/models/Build";
4510
+ import { AppClipHeaderImage } from "connect/models/AppClipHeaderImage";
4199
4511
  import { ConnectModel } from "connect/models/ConnectModel";
4200
- import { IdfaDeclaration, IdfaDeclarationProps } from "connect/models/IdfaDeclaration";
4201
- import { Platform } from "connect/models/PreReleaseVersion";
4202
- import { ResetRatingsRequest } from "connect/models/ResetRatingsRequest";
4203
- export enum ReleaseType {
4204
- AFTER_APPROVAL = "AFTER_APPROVAL",
4205
- MANUAL = "MANUAL",
4206
- SCHEDULED = "SCHEDULED"
4207
- }
4208
- /**
4209
- * `NOTARIZATION` is alternative app marketplace distribution.
4210
- * All eligible app versions default to both `APP_STORE` and `NOTARIZATION`.
4211
- * An app can be distributed on either or both.
4212
- */
4213
- export enum ReviewType {
4214
- APP_STORE = "APP_STORE",
4215
- NOTARIZATION = "NOTARIZATION"
4216
- }
4217
- export enum AppVersionState {
4218
- ACCEPTED = "ACCEPTED",
4219
- DEVELOPER_REJECTED = "DEVELOPER_REJECTED",
4220
- IN_REVIEW = "IN_REVIEW",
4221
- INVALID_BINARY = "INVALID_BINARY",
4222
- METADATA_REJECTED = "METADATA_REJECTED",
4223
- PENDING_APPLE_RELEASE = "PENDING_APPLE_RELEASE",
4224
- PENDING_DEVELOPER_RELEASE = "PENDING_DEVELOPER_RELEASE",
4225
- PREPARE_FOR_SUBMISSION = "PREPARE_FOR_SUBMISSION",
4226
- PROCESSING_FOR_DISTRIBUTION = "PROCESSING_FOR_DISTRIBUTION",
4227
- READY_FOR_DISTRIBUTION = "READY_FOR_DISTRIBUTION",
4228
- READY_FOR_REVIEW = "READY_FOR_REVIEW",
4229
- REJECTED = "REJECTED",
4230
- REPLACED_WITH_NEW_VERSION = "REPLACED_WITH_NEW_VERSION",
4231
- WAITING_FOR_EXPORT_COMPLIANCE = "WAITING_FOR_EXPORT_COMPLIANCE",
4232
- WAITING_FOR_REVIEW = "WAITING_FOR_REVIEW"
4233
- }
4234
- /**
4235
- * @see https://developer.apple.com/documentation/appstoreconnectapi/appstoreversion/attributes-data.dictionary
4236
- * @see https://developer.apple.com/documentation/appstoreconnectapi/appstoreversioncreaterequest/data-data.dictionary/attributes-data.dictionary
4237
- */
4238
- export interface AppStoreVersionProps {
4239
- /**
4240
- * @since 1.2
4241
- * @example 'IOS'
4242
- */
4243
- platform: Platform;
4244
- /**
4245
- * @since 1.2
4246
- * @deprecated 3.3 - use {@link appVersionState} instead
4247
- * @example 'PREPARE_FOR_SUBMISSION'
4248
- */
4249
- appStoreState: AppStoreState;
4250
- /**
4251
- * @since 1.2
4252
- * @example '2020 Expo'
4253
- */
4254
- copyright: string | null;
4255
- /**
4256
- * @since 1.2
4257
- * @example '2020-10-29T09:03:06-07:00'
4258
- */
4259
- earliestReleaseDate: string | null;
4260
- /** @since 1.2 */
4261
- releaseType: ReleaseType | null;
4262
- /** @since 1.2 */
4263
- versionString: string;
4264
- /**
4265
- * @since 1.2
4266
- * @example '2020-10-29T09:03:06-07:00'
4267
- */
4268
- createdDate: string;
4269
- /** @since 1.2 */
4270
- downloadable: boolean;
4271
- /** @since 3.3 */
4272
- appVersionState: AppVersionState | null;
4273
- /** @since 3.3 */
4274
- reviewType: ReviewType | null;
4275
- storeIcon: ImageAsset | null;
4276
- watchStoreIcon: ImageAsset | null;
4277
- appStoreVersionSubmission?: AppStoreVersionSubmission;
4512
+ export interface AppClipDefaultExperienceLocalizationProps {
4278
4513
  /**
4279
- * This property has been removed.
4280
- * @since 1.2
4281
- * @deprecated 1.6
4514
+ * @example 'en-US'
4282
4515
  */
4283
- usesIdfa?: never;
4516
+ locale: string;
4517
+ subtitle: string | null;
4518
+ appClipHeaderImage?: AppClipHeaderImage | null;
4284
4519
  }
4285
- export class AppStoreVersion extends ConnectModel<AppStoreVersionProps> {
4520
+ /**
4521
+ * A localized subtitle and header image for an App Clip default experience.
4522
+ *
4523
+ * @see https://developer.apple.com/documentation/appstoreconnectapi/appclipdefaultexperiencelocalization
4524
+ */
4525
+ export class AppClipDefaultExperienceLocalization extends ConnectModel<AppClipDefaultExperienceLocalizationProps> {
4286
4526
  static type: string;
4287
- static DEFAULT_INCLUDES: string[];
4288
- /** @see https://developer.apple.com/documentation/appstoreconnectapi/appstoreversioncreaterequest/data-data.dictionary */
4289
- static createAsync(context: RequestContext, { id, platform, versionString, copyright, earliestReleaseDate, releaseType, reviewType, }: {
4290
- /** The `App` identifier to create the version for */
4527
+ static infoAsync: (context: RequestContext, props: {
4291
4528
  id: string;
4292
- } & Pick<AppStoreVersionProps, 'platform' | 'versionString'> & Partial<Pick<AppStoreVersionProps, 'copyright' | 'earliestReleaseDate' | 'releaseType' | 'reviewType'>>): Promise<AppStoreVersion>;
4293
- getBuildAsync({ version, }?: {
4294
- version?: string;
4295
- }): Promise<Build | null>;
4296
- updateBuildAsync({ buildId }?: {
4297
- buildId?: string;
4298
- }): Promise<AppStoreVersion>;
4299
- /** @see https://developer.apple.com/documentation/appstoreconnectapi/appstoreversionupdaterequest/data-data.dictionary */
4300
- updateAsync(options: Partial<Pick<AppStoreVersionProps, 'copyright' | 'earliestReleaseDate' | 'releaseType' | 'versionString' | 'downloadable' | 'reviewType'>>): Promise<AppStoreVersion>;
4529
+ query?: import("connect/ConnectAPI").ConnectQueryParams;
4530
+ }) => Promise<AppClipDefaultExperienceLocalization>;
4531
+ static deleteAsync: (context: RequestContext, props: {
4532
+ id: string;
4533
+ }) => Promise<void>;
4534
+ static createAsync(context: RequestContext, { appClipDefaultExperienceId, attributes, }: {
4535
+ appClipDefaultExperienceId: string;
4536
+ attributes: Pick<AppClipDefaultExperienceLocalizationProps, 'locale' | 'subtitle'>;
4537
+ }): Promise<AppClipDefaultExperienceLocalization>;
4538
+ updateAsync(options: Partial<Pick<AppClipDefaultExperienceLocalizationProps, 'subtitle'>>): Promise<AppClipDefaultExperienceLocalization>;
4539
+ deleteAsync(): Promise<void>;
4301
4540
  /**
4302
- * @deprecated The ageRatingDeclaration relationship has moved from appStoreVersions to appInfos.
4303
- * Use {@link AppInfo.getAgeRatingDeclarationAsync} instead.
4541
+ * Get the header image for this localization. Returns null if none uploaded.
4304
4542
  */
4305
- getAgeRatingDeclarationAsync({ query, }?: {
4306
- query?: ConnectQueryParams;
4307
- }): Promise<AgeRatingDeclaration | null>;
4308
- createResetRatingsRequestAsync(): Promise<ResetRatingsRequest>;
4309
- createPhasedReleaseAsync({ state, }?: {
4310
- state?: AppStoreVersionPhasedReleaseProps['phasedReleaseState'];
4311
- }): Promise<AppStoreVersionPhasedRelease>;
4312
- getPhasedReleaseAsync({ query, }?: {
4313
- query?: ConnectQueryParams;
4314
- }): Promise<AppStoreVersionPhasedRelease | null>;
4315
- getAppStoreReviewDetailAsync({ query, }?: {
4316
- query?: ConnectQueryParams;
4317
- }): Promise<AppStoreReviewDetail | null>;
4318
- createSubmissionAsync(): Promise<AppStoreVersionSubmission>;
4319
- getSubmissionAsync({ query, }?: {
4320
- query?: ConnectQueryParams;
4321
- }): Promise<AppStoreVersionSubmission | null>;
4322
- /** @deprecated 1.6 */
4323
- getIdfaDeclarationAsync({ query, }?: {
4324
- query?: ConnectQueryParams;
4325
- }): Promise<IdfaDeclaration | null>;
4326
- /** @deprecated 1.6 */
4327
- createIdfaDeclarationAsync(attributes: Partial<IdfaDeclarationProps>): Promise<IdfaDeclaration>;
4328
- createLocalizationAsync({ locale, }: Pick<AppStoreVersionLocalizationProps, 'locale'>): Promise<AppStoreVersionLocalization>;
4329
- createReviewDetailAsync(attributes: Partial<Omit<AppStoreReviewDetailProps, 'demoAccountRequired'>>): Promise<AppStoreReviewDetail>;
4330
- createReleaseRequestAsync(): Promise<AppStoreVersionReleaseRequest>;
4331
- getResetRatingsRequestAsync({ query, }?: {
4332
- query?: ConnectQueryParams;
4333
- }): Promise<ResetRatingsRequest | null>;
4334
- getLocalizationsAsync({ query, }?: {
4335
- query?: ConnectQueryParams;
4336
- }): Promise<AppStoreVersionLocalization[]>;
4337
- canReject(): boolean;
4338
- rejectAsync(): Promise<boolean>;
4543
+ getAppClipHeaderImageAsync(): Promise<AppClipHeaderImage | null>;
4339
4544
  }
4340
4545
  }
4341
4546
  declare module "connect/models/AppClipDefaultExperience" {
@@ -5218,13 +5423,77 @@ declare module "connect/models/InAppPurchase" {
5218
5423
  }) => Promise<InAppPurchase>;
5219
5424
  }
5220
5425
  }
5426
+ declare module "connect/models/CustomerReviewResponse" {
5427
+ import { RequestContext } from "network/Request";
5428
+ import { ConnectQueryParams } from "connect/ConnectAPI";
5429
+ import { ConnectModel } from "connect/models/ConnectModel";
5430
+ export interface CustomerReviewResponseProps {
5431
+ responseBody: string;
5432
+ lastModifiedDate: string;
5433
+ state: 'PUBLISHED' | 'PENDING_PUBLISH';
5434
+ }
5435
+ export class CustomerReviewResponse extends ConnectModel<CustomerReviewResponseProps> {
5436
+ static type: string;
5437
+ static infoAsync: (context: RequestContext, props: {
5438
+ id: string;
5439
+ query?: ConnectQueryParams;
5440
+ }) => Promise<CustomerReviewResponse>;
5441
+ static deleteAsync: (context: RequestContext, props: {
5442
+ id: string;
5443
+ }) => Promise<void>;
5444
+ static createAsync(context: RequestContext, { responseBody, reviewId, }: {
5445
+ responseBody: string;
5446
+ reviewId: string;
5447
+ }): Promise<CustomerReviewResponse>;
5448
+ }
5449
+ }
5450
+ declare module "connect/models/CustomerReview" {
5451
+ import { RequestContext } from "network/Request";
5452
+ import { ConnectQueryFilter, ConnectQueryParams } from "connect/ConnectAPI";
5453
+ import { ConnectModel } from "connect/models/ConnectModel";
5454
+ import { CustomerReviewResponse } from "connect/models/CustomerReviewResponse";
5455
+ export interface CustomerReviewProps {
5456
+ rating: number;
5457
+ title: string | null;
5458
+ body: string | null;
5459
+ reviewerNickname: string;
5460
+ createdDate: string;
5461
+ territory: string;
5462
+ response?: CustomerReviewResponse | null;
5463
+ }
5464
+ export type CustomerReviewQueryFilter = ConnectQueryFilter<CustomerReviewProps & {
5465
+ publishedResponse: string;
5466
+ }, 'rating' | 'territory'>;
5467
+ export class CustomerReview extends ConnectModel<CustomerReviewProps> {
5468
+ static type: string;
5469
+ static DEFAULT_INCLUDES: string[];
5470
+ static getAsync: (context: RequestContext, props?: {
5471
+ query?: ConnectQueryParams<Partial<{
5472
+ territory: string | string[];
5473
+ rating: number | number[];
5474
+ } & {
5475
+ id?: string;
5476
+ }>> | undefined;
5477
+ } | undefined) => Promise<CustomerReview[]>;
5478
+ static infoAsync: (context: RequestContext, props: {
5479
+ id: string;
5480
+ query?: ConnectQueryParams;
5481
+ }) => Promise<CustomerReview>;
5482
+ getResponseAsync({ query, }?: {
5483
+ query?: ConnectQueryParams;
5484
+ }): Promise<CustomerReviewResponse | null>;
5485
+ createResponseAsync({ responseBody, }: {
5486
+ responseBody: string;
5487
+ }): Promise<CustomerReviewResponse>;
5488
+ }
5489
+ }
5221
5490
  declare module "connect/models/ReviewSubmissionItem" {
5222
5491
  import { ConnectQueryFilter } from "connect/ConnectAPI";
5223
5492
  import type { AppStoreVersion } from "connect/models/AppStoreVersion";
5224
5493
  import { ConnectModel } from "connect/models/ConnectModel";
5225
5494
  /** @see https://developer.apple.com/documentation/appstoreconnectapi/reviewsubmissionitem/attributes-data.dictionary */
5226
5495
  interface ReviewSubmissionItemProps {
5227
- state: unknown;
5496
+ state: 'READY_FOR_REVIEW' | 'ACCEPTED' | 'APPROVED' | 'REJECTED' | 'REMOVED' | string;
5228
5497
  appStoreVersionExperiment: unknown;
5229
5498
  appStoreVersion?: AppStoreVersion;
5230
5499
  appCustomProductPageVersion: unknown;
@@ -5235,8 +5504,8 @@ declare module "connect/models/ReviewSubmissionItem" {
5235
5504
  static type: string;
5236
5505
  static getAsync: (context: import("AppStoreConnect").RequestContext, props?: {
5237
5506
  query?: import("connect/ConnectAPI").ConnectQueryParams<Partial<{
5507
+ state: string | string[];
5238
5508
  appStoreVersion?: AppStoreVersion | (AppStoreVersion | undefined)[] | undefined;
5239
- state: unknown;
5240
5509
  appCustomProductPageVersion: unknown;
5241
5510
  appEvent: unknown;
5242
5511
  appStoreVersionExperiment: unknown;
@@ -5244,6 +5513,8 @@ declare module "connect/models/ReviewSubmissionItem" {
5244
5513
  id?: string;
5245
5514
  }>> | undefined;
5246
5515
  } | undefined) => Promise<ReviewSubmissionItem[]>;
5516
+ /** Mark a rejected review submission item as resolved so it can be resubmitted. */
5517
+ resolveAsync(): Promise<ReviewSubmissionItem>;
5247
5518
  }
5248
5519
  }
5249
5520
  declare module "connect/models/ReviewSubmission" {
@@ -5271,8 +5542,8 @@ declare module "connect/models/ReviewSubmission" {
5271
5542
  static DEFAULT_INCLUDES: string[];
5272
5543
  static getAsync: (context: RequestContext, props?: {
5273
5544
  query?: ConnectQueryParams<Partial<{
5274
- platform: Platform | Platform[];
5275
5545
  state: "COMPLETE" | "IN_REVIEW" | "READY_FOR_REVIEW" | "WAITING_FOR_REVIEW" | "UNRESOLVED_ISSUES" | "CANCELING" | "COMPLETING" | ("COMPLETE" | "IN_REVIEW" | "READY_FOR_REVIEW" | "WAITING_FOR_REVIEW" | "UNRESOLVED_ISSUES" | "CANCELING" | "COMPLETING")[];
5546
+ platform: Platform | Platform[];
5276
5547
  } & {
5277
5548
  id?: string;
5278
5549
  }>> | undefined;
@@ -5305,6 +5576,7 @@ declare module "connect/models/ReviewSubmission" {
5305
5576
  declare module "connect/models/App" {
5306
5577
  import { RequestContext } from "network/Request";
5307
5578
  import { ConnectQueryFilter, ConnectQueryParams } from "connect/ConnectAPI";
5579
+ import { AppCustomProductPage, AppCustomProductPageQueryFilter } from "connect/models/AppCustomProductPage";
5308
5580
  import { AppClip } from "connect/models/AppClip";
5309
5581
  import { AppDataUsage } from "connect/models/AppDataUsage";
5310
5582
  import { AppDataUsageCategoryId } from "connect/models/AppDataUsageCategory";
@@ -5328,6 +5600,7 @@ declare module "connect/models/App" {
5328
5600
  import { ConnectModel } from "connect/models/ConnectModel";
5329
5601
  import { InAppPurchase, InAppPurchaseQueryFilter } from "connect/models/InAppPurchase";
5330
5602
  import { Platform, PreReleaseVersion } from "connect/models/PreReleaseVersion";
5603
+ import { CustomerReview, CustomerReviewQueryFilter } from "connect/models/CustomerReview";
5331
5604
  import { ReviewSubmission } from "connect/models/ReviewSubmission";
5332
5605
  import { Territory } from "connect/models/Territory";
5333
5606
  export enum ContentRightsDeclaration {
@@ -5413,6 +5686,9 @@ declare module "connect/models/App" {
5413
5686
  getAppStoreVersionsAsync({ query, }?: {
5414
5687
  query?: ConnectQueryParams;
5415
5688
  }): Promise<AppStoreVersion[]>;
5689
+ getAppCustomProductPagesAsync({ query, }?: {
5690
+ query?: ConnectQueryParams<AppCustomProductPageQueryFilter>;
5691
+ }): Promise<AppCustomProductPage[]>;
5416
5692
  getAppInfoAsync({ query }?: {
5417
5693
  query?: ConnectQueryParams;
5418
5694
  }): Promise<AppInfo[]>;
@@ -5567,6 +5843,9 @@ declare module "connect/models/App" {
5567
5843
  appDataUsagePurpose?: AppDataUsagePurposeId;
5568
5844
  }): Promise<AppDataUsage>;
5569
5845
  createVersionAsync({ versionString, platform, }: Pick<AppStoreVersionProps, 'versionString' | 'platform'>): Promise<AppStoreVersion>;
5846
+ getCustomerReviewsAsync({ query, }?: {
5847
+ query?: ConnectQueryParams<CustomerReviewQueryFilter>;
5848
+ }): Promise<CustomerReview[]>;
5570
5849
  }
5571
5850
  }
5572
5851
  declare module "connect/models/User" {
@@ -6003,6 +6282,9 @@ declare module "connect/index" {
6003
6282
  export * from "connect/models/ApiKey";
6004
6283
  export * from "connect/models/App";
6005
6284
  export * from "connect/models/AppClip";
6285
+ export * from "connect/models/AppCustomProductPage";
6286
+ export * from "connect/models/AppCustomProductPageLocalization";
6287
+ export * from "connect/models/AppCustomProductPageVersion";
6006
6288
  export * from "connect/models/AppClipAppStoreReviewDetail";
6007
6289
  export * from "connect/models/AppClipDefaultExperience";
6008
6290
  export * from "connect/models/AppClipDefaultExperienceLocalization";
@@ -6059,6 +6341,8 @@ declare module "connect/index" {
6059
6341
  export * from "connect/models/ReviewRejection";
6060
6342
  export * from "connect/models/ResolutionCenterMessageAttachment";
6061
6343
  export * from "connect/models/Certificate";
6344
+ export * from "connect/models/CustomerReview";
6345
+ export * from "connect/models/CustomerReviewResponse";
6062
6346
  export * from "connect/models/Device";
6063
6347
  export * from "connect/models/Profile";
6064
6348
  export * from "connect/models/InAppPurchase";