Documentation
¶
Overview ¶
Package types contains the core data types for the App Store Connect API. These are pure data structures with JSON serialization and pagination support.
Index ¶
- func ParsePagingTotal(meta json.RawMessage) int
- func ParsePagingTotalOK(meta json.RawMessage) (int, bool)
- type AssetType
- type ChecksumAlgorithm
- type LinkagesResponse
- type Links
- type PaginatedResponse
- type Platform
- type Relationship
- type RelationshipData
- type RelationshipList
- type RelationshipRequest
- type Resource
- type ResourceData
- type ResourceType
- type Response
- type SingleResourceResponse
- type SingleResponse
- type UTI
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ParsePagingTotal ¶
func ParsePagingTotal(meta json.RawMessage) int
ParsePagingTotal extracts the total count from a response's paging metadata. App Store Connect responses include {"meta":{"paging":{"total":N}}} which provides the total count even when limit is less than the total. Returns 0 if the metadata is absent or unparseable.
func ParsePagingTotalOK ¶
func ParsePagingTotalOK(meta json.RawMessage) (int, bool)
ParsePagingTotalOK extracts the total count from a response's paging metadata. Returns (total, true) when the field is present, (0, false) when absent or unparseable. Use this when you need to distinguish "zero builds" from "API did not return a total".
Types ¶
type AssetType ¶
type AssetType string
AssetType represents the asset type for build uploads.
const (
AssetTypeAsset AssetType = "ASSET"
)
type ChecksumAlgorithm ¶
type ChecksumAlgorithm string
ChecksumAlgorithm represents the algorithm used for checksums.
const ( ChecksumAlgorithmMD5 ChecksumAlgorithm = "MD5" ChecksumAlgorithmSHA256 ChecksumAlgorithm = "SHA_256" )
type LinkagesResponse ¶
type LinkagesResponse struct {
Data []ResourceData `json:"data"`
Links Links `json:"links"`
Meta json.RawMessage `json:"meta,omitempty"`
}
LinkagesResponse is a generic relationship linkages response.
func (*LinkagesResponse) GetData ¶
func (r *LinkagesResponse) GetData() any
GetData returns the data field for aggregation.
func (*LinkagesResponse) GetLinks ¶
func (r *LinkagesResponse) GetLinks() *Links
GetLinks returns the links field for pagination.
type Links ¶
type Links struct {
Self string `json:"self,omitempty"`
Next string `json:"next,omitempty"`
Prev string `json:"prev,omitempty"`
}
Links represents pagination links.
type PaginatedResponse ¶
PaginatedResponse represents a response that supports pagination.
type Relationship ¶
type Relationship struct {
Data ResourceData `json:"data"`
}
Relationship represents a generic API relationship.
type RelationshipData ¶
type RelationshipData struct {
Type ResourceType `json:"type"`
ID string `json:"id"`
}
RelationshipData represents data in a relationship payload.
type RelationshipList ¶
type RelationshipList struct {
Data []ResourceData `json:"data"`
}
RelationshipList represents a relationship containing multiple resources.
type RelationshipRequest ¶
type RelationshipRequest struct {
Data []RelationshipData `json:"data"`
}
RelationshipRequest represents a relationship list payload.
func (RelationshipRequest) MarshalJSON ¶
func (r RelationshipRequest) MarshalJSON() ([]byte, error)
MarshalJSON ensures relationship list payloads always encode `data` as an array.
In JSON:API, to-many relationship payloads use `data: []` to represent an empty set. Go's `encoding/json` encodes nil slices as `null`, which is not a valid representation for a relationship list.
type Resource ¶
type Resource[T any] struct { Type ResourceType `json:"type"` ID string `json:"id"` Attributes T `json:"attributes"` Relationships json.RawMessage `json:"relationships,omitempty"` Links json.RawMessage `json:"links,omitempty"` }
Resource is a generic ASC API resource wrapper.
type ResourceData ¶
type ResourceData struct {
Type ResourceType `json:"type"`
ID string `json:"id"`
}
ResourceData represents the data portion of a resource.
func (*ResourceData) UnmarshalJSON ¶
func (r *ResourceData) UnmarshalJSON(data []byte) error
UnmarshalJSON allows relationship responses to represent {"data":null}.
App Store Connect uses JSON:API relationships, which may return a null "data" when the relationship is unset (e.g. primary category not configured yet). Modeling ResourceData as a struct is still convenient, but it must tolerate nulls to avoid turning a "missing relationship" into a hard parse error.
type ResourceType ¶
type ResourceType string
ResourceType represents an ASC resource type.
const ( ResourceTypeApps ResourceType = "apps" ResourceTypeAppTags ResourceType = "appTags" ResourceTypeBundleIds ResourceType = "bundleIds" ResourceTypeBundleIdCapabilities ResourceType = "bundleIdCapabilities" ResourceTypeMerchantIds ResourceType = "merchantIds" ResourceTypePassTypeIds ResourceType = "passTypeIds" ResourceTypeAppCategories ResourceType = "appCategories" ResourceTypeAppAvailabilities ResourceType = "appAvailabilities" ResourceTypeAppPricePoints ResourceType = "appPricePoints" ResourceTypeAppPriceSchedules ResourceType = "appPriceSchedules" ResourceTypeAppPrices ResourceType = "appPrices" ResourceTypeBuilds ResourceType = "builds" ResourceTypeBuildBundles ResourceType = "buildBundles" ResourceTypeBuildBundleFileSizes ResourceType = "buildBundleFileSizes" ResourceTypeBuildIcons ResourceType = "buildIcons" ResourceTypeBuildUploads ResourceType = "buildUploads" ResourceTypeBuildUploadFiles ResourceType = "buildUploadFiles" ResourceTypeCertificates ResourceType = "certificates" ResourceTypeAppStoreVersions ResourceType = "appStoreVersions" ResourceTypeAppClips ResourceType = "appClips" ResourceTypeAppClipDefaultExperiences ResourceType = "appClipDefaultExperiences" ResourceTypeAppClipDefaultExperienceLocalizations ResourceType = "appClipDefaultExperienceLocalizations" ResourceTypeAppClipAdvancedExperiences ResourceType = "appClipAdvancedExperiences" ResourceTypeAppClipAdvancedExperienceImages ResourceType = "appClipAdvancedExperienceImages" ResourceTypeAppClipAdvancedExperienceLocalizations ResourceType = "appClipAdvancedExperienceLocalizations" ResourceTypeAppClipHeaderImages ResourceType = "appClipHeaderImages" ResourceTypeAppClipAppStoreReviewDetails ResourceType = "appClipAppStoreReviewDetails" ResourceTypeBackgroundAssets ResourceType = "backgroundAssets" ResourceTypeBackgroundAssetVersions ResourceType = "backgroundAssetVersions" ResourceTypeBackgroundAssetUploadFiles ResourceType = "backgroundAssetUploadFiles" ResourceTypeBackgroundAssetVersionAppStoreReleases ResourceType = "backgroundAssetVersionAppStoreReleases" ResourceTypeBackgroundAssetVersionExternalBetaReleases ResourceType = "backgroundAssetVersionExternalBetaReleases" ResourceTypeBackgroundAssetVersionInternalBetaReleases ResourceType = "backgroundAssetVersionInternalBetaReleases" ResourceTypeRoutingAppCoverages ResourceType = "routingAppCoverages" ResourceTypeAppEncryptionDeclarations ResourceType = "appEncryptionDeclarations" ResourceTypeAppEncryptionDeclarationDocuments ResourceType = "appEncryptionDeclarationDocuments" ResourceTypeAppStoreVersionPromotions ResourceType = "appStoreVersionPromotions" ResourceTypeAppStoreVersionExperimentTreatments ResourceType = "appStoreVersionExperimentTreatments" ResourceTypeAppStoreVersionExperimentTreatmentLocalizations ResourceType = "appStoreVersionExperimentTreatmentLocalizations" ResourceTypePreReleaseVersions ResourceType = "preReleaseVersions" ResourceTypeAppStoreVersionSubmissions ResourceType = "appStoreVersionSubmissions" ResourceTypeAppScreenshotSets ResourceType = "appScreenshotSets" ResourceTypeAppScreenshots ResourceType = "appScreenshots" ResourceTypeAppPreviewSets ResourceType = "appPreviewSets" ResourceTypeAppPreviews ResourceType = "appPreviews" ResourceTypeReviewSubmissions ResourceType = "reviewSubmissions" ResourceTypeReviewSubmissionItems ResourceType = "reviewSubmissionItems" ResourceTypeAppCustomProductPages ResourceType = "appCustomProductPages" ResourceTypeAppCustomProductPageVersions ResourceType = "appCustomProductPageVersions" ResourceTypeAppCustomProductPageLocalizations ResourceType = "appCustomProductPageLocalizations" ResourceTypeAppEvents ResourceType = "appEvents" ResourceTypeAppEventLocalizations ResourceType = "appEventLocalizations" ResourceTypeAppEventScreenshots ResourceType = "appEventScreenshots" ResourceTypeAppEventVideoClips ResourceType = "appEventVideoClips" ResourceTypeAppStoreVersionExperiments ResourceType = "appStoreVersionExperiments" ResourceTypeBetaGroups ResourceType = "betaGroups" ResourceTypeBetaTesters ResourceType = "betaTesters" ResourceTypeBetaTesterInvitations ResourceType = "betaTesterInvitations" ResourceTypeBetaAppReviewDetails ResourceType = "betaAppReviewDetails" ResourceTypeBetaAppReviewSubmissions ResourceType = "betaAppReviewSubmissions" ResourceTypeBetaLicenseAgreements ResourceType = "betaLicenseAgreements" ResourceTypeBetaAppClipInvocations ResourceType = "betaAppClipInvocations" ResourceTypeBetaAppClipInvocationLocalizations ResourceType = "betaAppClipInvocationLocalizations" ResourceTypeBuildBetaDetails ResourceType = "buildBetaDetails" ResourceTypeBuildBetaNotifications ResourceType = "buildBetaNotifications" ResourceTypeBetaAppLocalizations ResourceType = "betaAppLocalizations" ResourceTypeBetaBuildLocalizations ResourceType = "betaBuildLocalizations" ResourceTypeBetaRecruitmentCriteria ResourceType = "betaRecruitmentCriteria" ResourceTypeBetaRecruitmentCriterionOptions ResourceType = "betaRecruitmentCriterionOptions" ResourceTypeSandboxTesters ResourceType = "sandboxTesters" ResourceTypeSandboxTestersClearHistory ResourceType = "sandboxTestersClearPurchaseHistoryRequest" ResourceTypeAppClipDomainStatuses ResourceType = "appClipDomainStatuses" ResourceTypeAppStoreVersionLocalizations ResourceType = "appStoreVersionLocalizations" ResourceTypeAppKeywords ResourceType = "appKeywords" ResourceTypeAppInfoLocalizations ResourceType = "appInfoLocalizations" ResourceTypeAppInfos ResourceType = "appInfos" ResourceTypeAgeRatingDeclarations ResourceType = "ageRatingDeclarations" ResourceTypeAccessibilityDeclarations ResourceType = "accessibilityDeclarations" ResourceTypeDiagnosticSignatures ResourceType = "diagnosticSignatures" ResourceTypeAndroidToIosAppMappingDetails ResourceType = "androidToIosAppMappingDetails" ResourceTypeAnalyticsReportRequests ResourceType = "analyticsReportRequests" ResourceTypeAnalyticsReports ResourceType = "analyticsReports" ResourceTypeAnalyticsReportInstances ResourceType = "analyticsReportInstances" ResourceTypeAnalyticsReportSegments ResourceType = "analyticsReportSegments" ResourceTypeInAppPurchases ResourceType = "inAppPurchases" ResourceTypeInAppPurchaseLocalizations ResourceType = "inAppPurchaseLocalizations" ResourceTypeInAppPurchaseImages ResourceType = "inAppPurchaseImages" ResourceTypeInAppPurchaseAppStoreReviewScreenshots ResourceType = "inAppPurchaseAppStoreReviewScreenshots" ResourceTypeInAppPurchaseAvailabilities ResourceType = "inAppPurchaseAvailabilities" ResourceTypeInAppPurchaseContents ResourceType = "inAppPurchaseContents" ResourceTypeInAppPurchasePricePoints ResourceType = "inAppPurchasePricePoints" ResourceTypeInAppPurchasePriceSchedules ResourceType = "inAppPurchasePriceSchedules" ResourceTypeInAppPurchasePrices ResourceType = "inAppPurchasePrices" ResourceTypeInAppPurchaseOfferCodes ResourceType = "inAppPurchaseOfferCodes" ResourceTypeInAppPurchaseOfferCodeCustomCodes ResourceType = "inAppPurchaseOfferCodeCustomCodes" ResourceTypeInAppPurchaseOfferCodeOneTimeUseCodes ResourceType = "inAppPurchaseOfferCodeOneTimeUseCodes" ResourceTypeInAppPurchaseOfferPrices ResourceType = "inAppPurchaseOfferPrices" ResourceTypeInAppPurchaseSubmissions ResourceType = "inAppPurchaseSubmissions" ResourceTypeSubscriptionGroups ResourceType = "subscriptionGroups" ResourceTypeSubscriptionGroupLocalizations ResourceType = "subscriptionGroupLocalizations" ResourceTypeSubscriptionGroupSubmissions ResourceType = "subscriptionGroupSubmissions" ResourceTypeSubscriptions ResourceType = "subscriptions" ResourceTypeSubscriptionLocalizations ResourceType = "subscriptionLocalizations" ResourceTypeSubscriptionImages ResourceType = "subscriptionImages" ResourceTypeSubscriptionIntroductoryOffers ResourceType = "subscriptionIntroductoryOffers" ResourceTypeSubscriptionPromotionalOffers ResourceType = "subscriptionPromotionalOffers" ResourceTypeSubscriptionPromotionalOfferPrices ResourceType = "subscriptionPromotionalOfferPrices" ResourceTypeSubscriptionOfferCodeCustomCodes ResourceType = "subscriptionOfferCodeCustomCodes" ResourceTypeSubscriptionOfferCodePrices ResourceType = "subscriptionOfferCodePrices" ResourceTypeSubscriptionSubmissions ResourceType = "subscriptionSubmissions" ResourceTypeSubscriptionAppStoreReviewScreenshots ResourceType = "subscriptionAppStoreReviewScreenshots" ResourceTypeSubscriptionGracePeriods ResourceType = "subscriptionGracePeriods" ResourceTypePromotedPurchases ResourceType = "promotedPurchases" ResourceTypeSubscriptionPrices ResourceType = "subscriptionPrices" ResourceTypeSubscriptionAvailabilities ResourceType = "subscriptionAvailabilities" ResourceTypeSubscriptionPricePoints ResourceType = "subscriptionPricePoints" ResourceTypeDevices ResourceType = "devices" ResourceTypeProfiles ResourceType = "profiles" ResourceTypeTerritories ResourceType = "territories" ResourceTypeTerritoryAgeRatings ResourceType = "territoryAgeRatings" ResourceTypeEndUserLicenseAgreements ResourceType = "endUserLicenseAgreements" ResourceTypeEndAppAvailabilityPreOrders ResourceType = "endAppAvailabilityPreOrders" ResourceTypeTerritoryAvailabilities ResourceType = "territoryAvailabilities" ResourceTypeAppStoreReviewDetails ResourceType = "appStoreReviewDetails" ResourceTypeAppStoreReviewAttachments ResourceType = "appStoreReviewAttachments" ResourceTypeCustomerReviewSummarizations ResourceType = "customerReviewSummarizations" ResourceTypeUsers ResourceType = "users" ResourceTypeUserInvitations ResourceType = "userInvitations" ResourceTypeActors ResourceType = "actors" ResourceTypeSubscriptionOfferCodes ResourceType = "subscriptionOfferCodes" ResourceTypeSubscriptionOfferCodeOneTimeUseCodes ResourceType = "subscriptionOfferCodeOneTimeUseCodes" ResourceTypeWinBackOffers ResourceType = "winBackOffers" ResourceTypeWinBackOfferPrices ResourceType = "winBackOfferPrices" ResourceTypeNominations ResourceType = "nominations" ResourceTypeMarketplaceSearchDetails ResourceType = "marketplaceSearchDetails" ResourceTypeMarketplaceWebhooks ResourceType = "marketplaceWebhooks" ResourceTypeWebhooks ResourceType = "webhooks" ResourceTypeWebhookDeliveries ResourceType = "webhookDeliveries" ResourceTypeWebhookPings ResourceType = "webhookPings" ResourceTypeAlternativeDistributionDomains ResourceType = "alternativeDistributionDomains" ResourceTypeAlternativeDistributionKeys ResourceType = "alternativeDistributionKeys" ResourceTypeAlternativeDistributionPackages ResourceType = "alternativeDistributionPackages" ResourceTypeGameCenterDetails ResourceType = "gameCenterDetails" ResourceTypeGameCenterAppVersions ResourceType = "gameCenterAppVersions" ResourceTypeGameCenterEnabledVersions ResourceType = "gameCenterEnabledVersions" ResourceTypeGameCenterAchievements ResourceType = "gameCenterAchievements" ResourceTypeGameCenterAchievementVersions ResourceType = "gameCenterAchievementVersions" ResourceTypeGameCenterLeaderboards ResourceType = "gameCenterLeaderboards" ResourceTypeGameCenterLeaderboardVersions ResourceType = "gameCenterLeaderboardVersions" ResourceTypeGameCenterLeaderboardSets ResourceType = "gameCenterLeaderboardSets" ResourceTypeGameCenterLeaderboardSetVersions ResourceType = "gameCenterLeaderboardSetVersions" ResourceTypeGameCenterLeaderboardLocalizations ResourceType = "gameCenterLeaderboardLocalizations" ResourceTypeGameCenterAchievementLocalizations ResourceType = "gameCenterAchievementLocalizations" ResourceTypeGameCenterLeaderboardReleases ResourceType = "gameCenterLeaderboardReleases" ResourceTypeGameCenterAchievementReleases ResourceType = "gameCenterAchievementReleases" ResourceTypeGameCenterLeaderboardSetReleases ResourceType = "gameCenterLeaderboardSetReleases" ResourceTypeGameCenterLeaderboardImages ResourceType = "gameCenterLeaderboardImages" ResourceTypeGameCenterLeaderboardSetLocalizations ResourceType = "gameCenterLeaderboardSetLocalizations" ResourceTypeGameCenterLeaderboardSetMemberLocalizations ResourceType = "gameCenterLeaderboardSetMemberLocalizations" ResourceTypeGameCenterAchievementImages ResourceType = "gameCenterAchievementImages" ResourceTypeGameCenterLeaderboardSetImages ResourceType = "gameCenterLeaderboardSetImages" ResourceTypeGameCenterChallenges ResourceType = "gameCenterChallenges" ResourceTypeGameCenterChallengeVersions ResourceType = "gameCenterChallengeVersions" ResourceTypeGameCenterChallengeLocalizations ResourceType = "gameCenterChallengeLocalizations" ResourceTypeGameCenterChallengeImages ResourceType = "gameCenterChallengeImages" ResourceTypeGameCenterChallengeVersionReleases ResourceType = "gameCenterChallengeVersionReleases" ResourceTypeGameCenterActivities ResourceType = "gameCenterActivities" ResourceTypeGameCenterActivityVersions ResourceType = "gameCenterActivityVersions" ResourceTypeGameCenterActivityLocalizations ResourceType = "gameCenterActivityLocalizations" ResourceTypeGameCenterActivityImages ResourceType = "gameCenterActivityImages" ResourceTypeGameCenterActivityVersionReleases ResourceType = "gameCenterActivityVersionReleases" ResourceTypeGameCenterGroups ResourceType = "gameCenterGroups" ResourceTypeGameCenterMatchmakingQueues ResourceType = "gameCenterMatchmakingQueues" ResourceTypeGameCenterMatchmakingRuleSets ResourceType = "gameCenterMatchmakingRuleSets" ResourceTypeGameCenterMatchmakingRules ResourceType = "gameCenterMatchmakingRules" ResourceTypeGameCenterMatchmakingTeams ResourceType = "gameCenterMatchmakingTeams" ResourceTypeGameCenterMatchmakingRuleSetTests ResourceType = "gameCenterMatchmakingRuleSetTests" ResourceTypeGameCenterLeaderboardEntrySubmissions ResourceType = "gameCenterLeaderboardEntrySubmissions" ResourceTypeGameCenterPlayerAchievementSubmissions ResourceType = "gameCenterPlayerAchievementSubmissions" ResourceTypeGameCenterMatchmakingTestRequests ResourceType = "gameCenterMatchmakingTestRequests" ResourceTypeGameCenterMatchmakingTestPlayerProperties ResourceType = "gameCenterMatchmakingTestPlayerProperties" )
type Response ¶
type Response[T any] struct { Data []Resource[T] `json:"data"` Links Links `json:"links"` Included json.RawMessage `json:"included,omitempty"` Meta json.RawMessage `json:"meta,omitempty"` }
Response is a generic ASC API response wrapper.
type SingleResourceResponse ¶
SingleResourceResponse is a response with a single resource (not an array).
type SingleResponse ¶
type SingleResponse[T any] struct { Data Resource[T] `json:"data"` Links Links `json:"links"` Included json.RawMessage `json:"included,omitempty"` Meta json.RawMessage `json:"meta,omitempty"` }
SingleResponse is a generic ASC API response wrapper for single resources.