Help us shape the future of Go! Take the 2026 Go Developer Survey

validation

package
v1.260331.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 31, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	LimitDescription     = 4000
	LimitKeywords        = 100
	LimitWhatsNew        = 4000
	LimitPromotionalText = 170
	LimitName            = 30
	LimitSubtitle        = 30
)

App Store metadata character limits.

View Source
const AppleStandardEULAURL = "https://www.apple.com/legal/internet-services/itunes/dev/stdeula/"

Variables

This section is empty.

Functions

func HasTermsOfUseLink(description string) bool

HasTermsOfUseLink reports whether a description includes a functional Terms of Use / EULA link.

func SortedUniqueNonEmptyStrings added in v1.260325.0

func SortedUniqueNonEmptyStrings(values []string) []string

SortedUniqueNonEmptyStrings trims, deduplicates, and sorts a string slice.

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

type BetaBuildLocalization struct {
	ID       string
	Locale   string
	WhatsNew string
}

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 IAP

type IAP struct {
	ID        string
	Name      string
	ProductID string
	Type      string
	State     string
}

IAP represents an in-app purchase for review-readiness validation.

type IAPInput

type IAPInput struct {
	AppID string
	IAPs  []IAP
}

IAPInput collects in-app purchase validation inputs.

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

func ValidateIAP(input IAPInput, strict bool) IAPReport

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 MetadataLengthIssue

type MetadataLengthIssue struct {
	Field  string
	Length int
	Limit  int
}

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 VersionLocalizationLengthIssues

func VersionLocalizationLengthIssues(loc VersionLocalization) []MetadataLengthIssue

VersionLocalizationLengthIssues returns over-limit fields for one version localization.

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"`
	Checks        []CheckResult `json:"checks"`
	Strict        bool          `json:"strict,omitempty"`
}

Report is the top-level validation output.

func Validate

func Validate(input Input, strict bool) Report

Validate runs all validation rules and returns a report.

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

type Screenshot struct {
	ID       string
	FileName string
	Width    int
	Height   int
}

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 Severity

type Severity string

Severity represents the validation severity level.

const (
	SeverityError   Severity = "error"
	SeverityWarning Severity = "warning"
	SeverityInfo    Severity = "info"
)

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

type SubscriptionGroupLocalizationInfo struct {
	Locale string
	Name   string
}

SubscriptionGroupLocalizationInfo holds per-locale metadata for a subscription group.

type SubscriptionLocalizationInfo

type SubscriptionLocalizationInfo struct {
	Locale      string
	Name        string
	Description string
}

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.

type VersionLocalization

type VersionLocalization struct {
	ID              string
	Locale          string
	Description     string
	Keywords        string
	WhatsNew        string
	PromotionalText string
	SupportURL      string
	MarketingURL    string
}

VersionLocalization represents version-level metadata.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL