Documentation
¶
Index ¶
- Constants
- func HasTermsOfUseLink(description string) bool
- func KeywordFieldLength(value string) int
- func NormalizeKeywordAuditTerms(terms []string) []string
- func SortedUniqueNonEmptyStrings(values []string) []string
- func ValidateKeywordField(value string) error
- type AgeRatingDeclaration
- type AppInfoLocalization
- type BetaBuildLocalization
- type BetaReviewDetails
- type Build
- type CheckResult
- type DiagnosticStatus
- type IAP
- type IAPInput
- type IAPReport
- type Input
- type KeywordAuditCheck
- type KeywordAuditInput
- type KeywordAuditLocale
- type KeywordAuditReport
- type MetadataLengthIssue
- type Remediation
- type RemediationStep
- type Report
- type ReviewDetails
- type Screenshot
- type ScreenshotSet
- type Severity
- type Subscription
- type SubscriptionDiagnosticRow
- type SubscriptionDiagnostics
- type SubscriptionGroupLocalizationInfo
- type SubscriptionLocalizationInfo
- type SubscriptionsInput
- type SubscriptionsReport
- type Summary
- type TestFlightInput
- type TestFlightReport
- type VersionLocalization
Constants ¶
const ( LimitDescription = 4000 LimitKeywords = 100 LimitWhatsNew = 4000 LimitPromotionalText = 170 LimitName = 30 LimitSubtitle = 30 )
App Store metadata character limits.
const AppleStandardEULAURL = "https://www.apple.com/legal/internet-services/itunes/dev/stdeula/"
Variables ¶
This section is empty.
Functions ¶
func HasTermsOfUseLink ¶
HasTermsOfUseLink reports whether a description includes a functional Terms of Use / EULA link.
func KeywordFieldLength ¶ added in v1.260407.0
KeywordFieldLength returns the App Store Connect keyword field length in characters.
func NormalizeKeywordAuditTerms ¶ added in v1.260407.0
NormalizeKeywordAuditTerms trims, de-duplicates, and sorts user-supplied terms.
func SortedUniqueNonEmptyStrings ¶ added in v1.260325.0
SortedUniqueNonEmptyStrings trims, deduplicates, and sorts a string slice.
func ValidateKeywordField ¶ added in v1.260407.0
ValidateKeywordField returns an error when the keyword field exceeds ASC's character limit.
Types ¶
type AgeRatingDeclaration ¶
type AgeRatingDeclaration struct {
Advertising *bool
Gambling *bool
HealthOrWellnessTopics *bool
LootBox *bool
MessagingAndChat *bool
ParentalControls *bool
AgeAssurance *bool
UnrestrictedWebAccess *bool
UserGeneratedContent *bool
AlcoholTobaccoOrDrugUseOrReferences *string
Contests *string
GamblingSimulated *string
GunsOrOtherWeapons *string
MedicalOrTreatmentInformation *string
ProfanityOrCrudeHumor *string
SexualContentGraphicAndNudity *string
SexualContentOrNudity *string
HorrorOrFearThemes *string
MatureOrSuggestiveThemes *string
ViolenceCartoonOrFantasy *string
ViolenceRealistic *string
ViolenceRealisticProlongedGraphicOrSadistic *string
KidsAgeBand *string
AgeRatingOverride *string
AgeRatingOverrideV2 *string
KoreaAgeRatingOverride *string
DeveloperAgeRatingInfoURL *string
}
AgeRatingDeclaration represents age rating attributes for validation.
type AppInfoLocalization ¶
type AppInfoLocalization struct {
ID string
Locale string
Name string
Subtitle string
PrivacyPolicyURL string
PrivacyChoicesURL string
}
AppInfoLocalization represents app info metadata.
type BetaBuildLocalization ¶
BetaBuildLocalization represents a build localization (TestFlight "What to Test").
type BetaReviewDetails ¶
type BetaReviewDetails struct {
ID string
ContactFirstName string
ContactLastName string
ContactEmail string
ContactPhone string
DemoAccountName string
DemoAccountPassword string
DemoAccountRequired bool
Notes string
}
BetaReviewDetails represents TestFlight beta app review details.
type Build ¶
type Build struct {
ID string
Version string
ProcessingState string
Expired bool
UsesNonExemptEncryption *bool
AppEncryptionDeclarationID string
AppEncryptionDeclarationState string
}
Build represents an attached build for a version.
type CheckResult ¶
type CheckResult struct {
ID string `json:"id"`
Severity Severity `json:"severity"`
Message string `json:"message"`
Remediation string `json:"remediation,omitempty"`
Locale string `json:"locale,omitempty"`
Field string `json:"field,omitempty"`
ResourceType string `json:"resourceType,omitempty"`
ResourceID string `json:"resourceId,omitempty"`
}
CheckResult represents a single validation check result.
func PrivacyPublishStateAdvisory ¶
func PrivacyPublishStateAdvisory(appID string) CheckResult
PrivacyPublishStateAdvisory returns a public-only advisory for App Privacy.
type DiagnosticStatus ¶ added in v1.260325.0
type DiagnosticStatus string
DiagnosticStatus captures the state of a subscription diagnostics row.
const ( DiagnosticStatusYes DiagnosticStatus = "yes" DiagnosticStatusNo DiagnosticStatus = "no" DiagnosticStatusUnverified DiagnosticStatus = "unverified" DiagnosticStatusUnknown DiagnosticStatus = "unknown" DiagnosticStatusOptional DiagnosticStatus = "optional" )
type IAPReport ¶
type IAPReport struct {
AppID string `json:"appId"`
IAPCount int `json:"iapCount,omitempty"`
Summary Summary `json:"summary"`
Checks []CheckResult `json:"checks"`
Strict bool `json:"strict,omitempty"`
}
IAPReport is the top-level validate iap output.
func ValidateIAP ¶
ValidateIAP validates IAP review readiness and returns a report.
type Input ¶
type Input struct {
AppID string
AppInfoID string
VersionID string
VersionString string
VersionState string
Platform string
PrimaryLocale string
VersionLocalizations []VersionLocalization
AppInfoLocalizations []AppInfoLocalization
ReviewDetails *ReviewDetails
PrimaryCategoryID string
ContentRightsDeclaration *string
Build *Build
PriceScheduleID string
PricingFetchSkipReason string
AvailabilityID string
AvailableTerritories int
AppAvailableTerritories []string
AvailabilityFetchSkipReason string
PricingCoverageSkipReason string
ScreenshotSets []ScreenshotSet
Subscriptions []Subscription
SubscriptionFetchSkipReason string
IAPs []IAP
IAPFetchSkipReason string
AgeRatingDeclaration *AgeRatingDeclaration
ReleaseType string
EarliestReleaseDate string
Copyright string
}
Input collects the validation inputs.
type KeywordAuditCheck ¶ added in v1.260407.0
type KeywordAuditCheck struct {
ID string `json:"id"`
Severity Severity `json:"severity"`
Message string `json:"message"`
Remediation string `json:"remediation,omitempty"`
Locale string `json:"locale,omitempty"`
Field string `json:"field,omitempty"`
Keyword string `json:"keyword,omitempty"`
MatchedTerm string `json:"matchedTerm,omitempty"`
RelatedLocales []string `json:"relatedLocales,omitempty"`
UsedCharacters int `json:"usedBytes,omitempty"`
RemainingCharacters int `json:"remainingBytes,omitempty"`
}
KeywordAuditCheck represents one keyword-audit finding.
type KeywordAuditInput ¶ added in v1.260407.0
type KeywordAuditInput struct {
AppID string
VersionID string
VersionString string
Platform string
BlockedTerms []string
VersionLocalizations []VersionLocalization
AppInfoLocalizations []AppInfoLocalization
}
KeywordAuditInput describes the inputs for a keyword audit report.
type KeywordAuditLocale ¶ added in v1.260407.0
type KeywordAuditLocale struct {
Locale string `json:"locale"`
VersionLocalizationID string `json:"versionLocalizationId,omitempty"`
AppInfoLocalizationID string `json:"appInfoLocalizationId,omitempty"`
KeywordField string `json:"keywordField,omitempty"`
KeywordCount int `json:"keywordCount"`
// Legacy JSON field names are retained for compatibility with existing audit consumers.
UsedCharacters int `json:"usedBytes"`
RemainingCharacters int `json:"remainingBytes"`
Name string `json:"name,omitempty"`
Subtitle string `json:"subtitle,omitempty"`
Errors int `json:"errors"`
Warnings int `json:"warnings"`
Infos int `json:"infos"`
}
KeywordAuditLocale summarizes one audited locale.
type KeywordAuditReport ¶ added in v1.260407.0
type KeywordAuditReport struct {
AppID string `json:"appId"`
VersionID string `json:"versionId"`
VersionString string `json:"versionString,omitempty"`
Platform string `json:"platform,omitempty"`
BlockedTerms []string `json:"blockedTerms,omitempty"`
Summary Summary `json:"summary"`
Locales []KeywordAuditLocale `json:"locales"`
Checks []KeywordAuditCheck `json:"checks"`
Strict bool `json:"strict,omitempty"`
}
KeywordAuditReport is the top-level keyword-audit output.
func AuditKeywords ¶ added in v1.260407.0
func AuditKeywords(input KeywordAuditInput, strict bool) KeywordAuditReport
AuditKeywords builds a keyword-quality report across version localizations.
type MetadataLengthIssue ¶
MetadataLengthIssue describes one over-limit metadata field.
func AppInfoLocalizationLengthIssues ¶
func AppInfoLocalizationLengthIssues(loc AppInfoLocalization) []MetadataLengthIssue
AppInfoLocalizationLengthIssues returns over-limit fields for one app-info localization.
func KeywordFieldLengthIssue ¶ added in v1.260407.0
func KeywordFieldLengthIssue(value string) *MetadataLengthIssue
KeywordFieldLengthIssue returns an over-limit issue for keywords when present.
func VersionLocalizationLengthIssues ¶
func VersionLocalizationLengthIssues(loc VersionLocalization) []MetadataLengthIssue
VersionLocalizationLengthIssues returns over-limit fields for one version localization.
type Remediation ¶ added in v1.260407.0
type Remediation struct {
TotalActionable int `json:"totalActionable"`
Steps []RemediationStep `json:"steps"`
}
Remediation summarizes actionable validation steps in priority order.
func BuildRemediation ¶ added in v1.260407.0
func BuildRemediation(checks []CheckResult, strict bool) Remediation
BuildRemediation derives an ordered remediation plan from validation checks.
type RemediationStep ¶ added in v1.260407.0
type RemediationStep struct {
Order int `json:"order"`
Blocking bool `json:"blocking"`
Severity Severity `json:"severity"`
CheckID string `json:"checkId"`
Message string `json:"message"`
Remediation string `json:"remediation"`
Locale string `json:"locale,omitempty"`
Field string `json:"field,omitempty"`
ResourceType string `json:"resourceType,omitempty"`
ResourceID string `json:"resourceId,omitempty"`
}
RemediationStep represents one actionable item derived from a validation check.
func RemediationSteps ¶ added in v1.260407.0
func RemediationSteps(checks []CheckResult, strict bool) []RemediationStep
RemediationSteps orders actionable remediation steps from most urgent to least urgent.
type Report ¶
type Report struct {
AppID string `json:"appId"`
VersionID string `json:"versionId"`
VersionString string `json:"versionString,omitempty"`
Platform string `json:"platform,omitempty"`
Summary Summary `json:"summary"`
Remediation Remediation `json:"remediation"`
Checks []CheckResult `json:"checks"`
Strict bool `json:"strict,omitempty"`
}
Report is the top-level validation output.
type ReviewDetails ¶
type ReviewDetails struct {
ID string
ContactFirstName string
ContactLastName string
ContactEmail string
ContactPhone string
DemoAccountName string
DemoAccountPassword string
DemoAccountRequired bool
Notes string
}
ReviewDetails represents App Store review details for a version.
type Screenshot ¶
Screenshot represents a screenshot asset.
type ScreenshotSet ¶
type ScreenshotSet struct {
ID string
DisplayType string
Locale string
LocalizationID string
Screenshots []Screenshot
}
ScreenshotSet represents a screenshot set and its assets.
type Subscription ¶
type Subscription struct {
ID string
Name string
ProductID string
State string
GroupID string
GroupName string
HasImage bool
ImageCheckSkipped bool
ImageCheckSkipReason string
ReviewScreenshotID string
ReviewScreenshotCheckSkipped bool
ReviewScreenshotCheckReason string
AvailabilityID string
AvailabilityTerritories []string
AvailabilityCheckSkipped bool
AvailabilityCheckSkipReason string
// Deep diagnostics (populated when State is MISSING_METADATA).
Localizations []SubscriptionLocalizationInfo
LocalizationCheckSkipped bool
LocalizationCheckSkipReason string
GroupLocalizations []SubscriptionGroupLocalizationInfo
GroupLocalizationCheckSkipped bool
GroupLocalizationCheckReason string
PriceCount int
PriceTerritories []string
PriceCheckSkipped bool
PriceCheckSkipReason string
IntroductoryOfferCount int
IntroductoryOfferCheckSkipped bool
IntroductoryOfferCheckReason string
PromotionalOfferCount int
PromotionalOfferCheckSkipped bool
PromotionalOfferCheckReason string
WinBackOfferCount int
WinBackOfferCheckSkipped bool
WinBackOfferCheckReason string
}
Subscription represents an auto-renewable subscription for review-readiness validation.
type SubscriptionDiagnosticRow ¶ added in v1.260325.0
type SubscriptionDiagnosticRow struct {
Key string `json:"key"`
Label string `json:"label"`
Status DiagnosticStatus `json:"status"`
Source string `json:"source"`
Blocking bool `json:"blocking"`
Evidence string `json:"evidence,omitempty"`
Remediation string `json:"remediation,omitempty"`
}
SubscriptionDiagnosticRow captures a single diagnostics row for a subscription.
type SubscriptionDiagnostics ¶ added in v1.260325.0
type SubscriptionDiagnostics struct {
SubscriptionID string `json:"subscriptionId"`
Name string `json:"name,omitempty"`
ProductID string `json:"productId,omitempty"`
State string `json:"state,omitempty"`
Conclusion string `json:"conclusion"`
Summary string `json:"summary,omitempty"`
Rows []SubscriptionDiagnosticRow `json:"rows"`
}
SubscriptionDiagnostics is the detailed diagnostics output for a subscription.
type SubscriptionGroupLocalizationInfo ¶
SubscriptionGroupLocalizationInfo holds per-locale metadata for a subscription group.
type SubscriptionLocalizationInfo ¶
SubscriptionLocalizationInfo holds per-locale metadata for a subscription.
type SubscriptionsInput ¶
type SubscriptionsInput struct {
AppID string
Subscriptions []Subscription
AvailableTerritories int
AppAvailableTerritories []string
PricingCoverageSkipReason string
AppBuildCount int
BuildCheckSkipped bool
BuildCheckSkipReason string
}
SubscriptionsInput collects subscription validation inputs.
type SubscriptionsReport ¶
type SubscriptionsReport struct {
AppID string `json:"appId"`
SubscriptionCount int `json:"subscriptionCount,omitempty"`
Summary Summary `json:"summary"`
Checks []CheckResult `json:"checks"`
Diagnostics []SubscriptionDiagnostics `json:"diagnostics,omitempty"`
Strict bool `json:"strict,omitempty"`
}
SubscriptionsReport is the top-level validate subscriptions output.
func ValidateSubscriptions ¶
func ValidateSubscriptions(input SubscriptionsInput, strict bool) SubscriptionsReport
ValidateSubscriptions validates subscription review readiness and returns a report.
type Summary ¶
type Summary struct {
Errors int `json:"errors"`
Warnings int `json:"warnings"`
Infos int `json:"infos"`
Blocking int `json:"blocking"`
}
Summary aggregates check counts by severity.
type TestFlightInput ¶
type TestFlightInput struct {
AppID string
AppPrimaryLocale string
BuildID string
Build *Build
BuildAppID string
BetaReviewDetails *BetaReviewDetails
BetaBuildLocalizations []BetaBuildLocalization
}
TestFlightInput collects the TestFlight validation inputs.
type TestFlightReport ¶
type TestFlightReport struct {
AppID string `json:"appId"`
BuildID string `json:"buildId"`
BuildVersion string `json:"buildVersion,omitempty"`
Summary Summary `json:"summary"`
Checks []CheckResult `json:"checks"`
Strict bool `json:"strict,omitempty"`
}
TestFlightReport is the top-level validate testflight output.
func ValidateTestFlight ¶
func ValidateTestFlight(input TestFlightInput, strict bool) TestFlightReport
ValidateTestFlight runs TestFlight validation rules and returns a report.
Source Files
¶
- age_rating.go
- builds.go
- categories.go
- iap.go
- keyword_audit.go
- keywords.go
- legal.go
- limits.go
- metadata.go
- monetization.go
- pricing_availability.go
- privacy_publish_state.go
- release.go
- remediation.go
- report.go
- required_fields.go
- review_details.go
- screenshots.go
- submit_readiness.go
- subscriptions_diagnostics.go
- subscriptions_validate.go
- testflight_report.go
- testflight_types.go
- types.go