validation

package
v1.260904.0 Latest Latest
Warning

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

Go to latest
Published: Sep 4, 2026 License: MIT Imports: 11 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 (
	LimitMarketingURL      = 255
	LimitSupportURL        = 255
	LimitPrivacyPolicyURL  = 255
	LimitPrivacyChoicesURL = 255
)

App Store metadata URL length limits.

Apple's App Store Connect OpenAPI specification carries no maxLength for these attributes, so the values below track Apple's documented App Store Connect field constraints instead of a machine-readable schema. Checks built on them are advisory (warning severity) so a longer value Apple happens to accept never hard-fails a local run.

View Source
const (
	MinLengthName        = 2
	MinLengthDescription = 10
)

Minimum lengths that separate real metadata from placeholders such as "X" or "TBD". Apple states no exact minimum in a machine-readable form, so these only ever produce warnings.

View Source
const (
	DeepCheckPrivacyPublishState       = "privacy.publish_state"
	DeepCheckSubscriptionAttachment    = "subscriptions.first_type_app_version_attachment"
	DeepCheckAgreementsActive          = "agreements.active"
	DeepCheckAvailabilityConfigured    = "availability.configured"
	DeepCheckReviewInformationComplete = "review_information.required_fields"
)
View Source
const AppleStandardEULAURL = "https://www.apple.com/legal/internet-services/itunes/dev/stdeula/"
View Source
const LimitScreenshotsPerSet = 10

LimitScreenshotsPerSet is the maximum number of screenshots the App Store accepts in a single screenshot set, meaning one display type within one localization. The App Store Connect OpenAPI snapshot does not express this cap, so it is enforced server-side at upload time.

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 IsValidHTTPURL added in v1.260825.0

func IsValidHTTPURL(s string) bool

IsValidHTTPURL reports whether a value is an absolute HTTP/HTTPS URL with a hostname and no raw whitespace, matching the URL syntax App Store Connect accepts for metadata URL fields. It is exported so offline metadata checks apply the same rule as the online validation report.

func KeywordFieldLength added in v1.260407.0

func KeywordFieldLength(value string) int

KeywordFieldLength returns the App Store Connect keyword field length in characters.

func MetadataFieldLabel added in v1.260825.0

func MetadataFieldLabel(field string) string

MetadataFieldLabel returns the operator-facing label for a metadata field.

func NormalizeKeywordAuditTerms added in v1.260407.0

func NormalizeKeywordAuditTerms(terms []string) []string

NormalizeKeywordAuditTerms trims, de-duplicates, and sorts user-supplied terms.

func SortedUniqueNonEmptyStrings added in v1.260325.0

func SortedUniqueNonEmptyStrings(values []string) []string

SortedUniqueNonEmptyStrings trims, deduplicates, and sorts a string slice.

func ValidateKeywordField added in v1.260407.0

func ValidateKeywordField(value string) error

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
	SocialMedia              *bool
	SocialMediaAgeRestricted *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"`
	Resolution   *Resolution `json:"resolution,omitempty"`
}

CheckResult represents a single validation check result.

func MetadataQualityChecks added in v1.260831.0

func MetadataQualityChecks(versionLocs []VersionLocalization, appInfoLocs []AppInfoLocalization) []CheckResult

MetadataQualityChecks returns deterministic, warning-only checks that can be evaluated from the localized metadata already loaded by asc validate.

It intentionally projects only the narrow, actionable subset of the keyword audit. Informational budget/cross-locale findings, user-supplied blocked terms, and the audit's missing-localization error remain owned by the dedicated keyword audit command.

func PrivacyPublishStateAdvisory

func PrivacyPublishStateAdvisory(appID string) CheckResult

PrivacyPublishStateAdvisory returns a public-only advisory for App Privacy.

type DeepCheck added in v1.260831.0

type DeepCheck struct {
	ID         string      `json:"id"`
	Status     DeepStatus  `json:"status"`
	Source     DeepSource  `json:"source"`
	Message    string      `json:"message"`
	Resolution *Resolution `json:"resolution,omitempty"`
}

DeepCheck is one deterministic result collected by deep validation.

type DeepReport added in v1.260831.0

type DeepReport struct {
	SessionStatus DeepSessionStatus `json:"sessionStatus"`
	Summary       DeepSummary       `json:"summary"`
	Checks        []DeepCheck       `json:"checks"`
}

DeepReport contains the additive results collected by --deep.

type DeepSessionStatus added in v1.260831.0

type DeepSessionStatus string

DeepSessionStatus records whether a cached Apple web session was available.

const (
	DeepSessionCached           DeepSessionStatus = "cached"
	DeepSessionExpired          DeepSessionStatus = "expired"
	DeepSessionUnavailable      DeepSessionStatus = "unavailable"
	DeepSessionValidationFailed DeepSessionStatus = "validationFailed"
)

type DeepSource added in v1.260831.0

type DeepSource string

DeepSource identifies where a deep validation result came from.

const (
	DeepSourcePublicAPI  DeepSource = "publicApi"
	DeepSourceWebSession DeepSource = "webSession"
	DeepSourceManual     DeepSource = "manual"
)

type DeepStatus added in v1.260831.0

type DeepStatus string

DeepStatus is the terminal state of one deep validation check.

const (
	DeepStatusPassed        DeepStatus = "passed"
	DeepStatusBlocked       DeepStatus = "blocked"
	DeepStatusUnverified    DeepStatus = "unverified"
	DeepStatusNotApplicable DeepStatus = "notApplicable"
)

type DeepSummary added in v1.260831.0

type DeepSummary struct {
	Passed        int `json:"passed"`
	Blocked       int `json:"blocked"`
	Unverified    int `json:"unverified"`
	NotApplicable int `json:"notApplicable"`
}

DeepSummary aggregates deep checks by terminal status.

func SummarizeDeepChecks added in v1.260831.0

func SummarizeDeepChecks(checks []DeepCheck) DeepSummary

SummarizeDeepChecks counts deep checks by terminal status.

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 Fixability added in v1.260831.0

type Fixability string

Fixability identifies the channel that can resolve a validation finding.

const (
	FixabilityAPIFixable Fixability = "api-fixable"
	FixabilityWebFixable Fixability = "web-fixable"
	FixabilityManual     Fixability = "manual"
)

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
	PricingTerritories          []string
	PricingTerritoryCount       int
	AvailabilityFetchSkipReason string
	PricingCoverageSkipReason   string
	ScreenshotSets              []ScreenshotSet
	Subscriptions               []Subscription
	SubscriptionFetchSkipReason string
	IAPs                        []IAP
	IAPFetchSkipReason          string
	AgeRatingDeclaration        *AgeRatingDeclaration
	ReleaseType                 string
	EarliestReleaseDate         string
	Copyright                   string
	HasPaidAppPrice             bool
	AppPricingKnown             bool
}

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

type MetadataLengthIssue struct {
	Field  string
	Length int
	Limit  int
	Unit   string
}

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 MetadataMinimumLengthIssue added in v1.260825.0

type MetadataMinimumLengthIssue struct {
	Field   string
	Length  int
	Minimum int
}

MetadataMinimumLengthIssue describes one metadata field that is too short to be real content.

func AppInfoLocalizationMinimumLengthIssues added in v1.260825.0

func AppInfoLocalizationMinimumLengthIssues(loc AppInfoLocalization) []MetadataMinimumLengthIssue

AppInfoLocalizationMinimumLengthIssues returns implausibly short fields for one app-info localization.

func VersionLocalizationMinimumLengthIssues added in v1.260825.0

func VersionLocalizationMinimumLengthIssues(loc VersionLocalization) []MetadataMinimumLengthIssue

VersionLocalizationMinimumLengthIssues returns implausibly short fields for one version localization. Empty values are left to the required-field checks, which distinguish "unset" from "too short".

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"`
	Resolution   *Resolution `json:"resolution,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"`
	VersionState          string        `json:"-"`
	Platform              string        `json:"platform,omitempty"`
	Summary               Summary       `json:"summary"`
	Remediation           Remediation   `json:"remediation"`
	Checks                []CheckResult `json:"checks"`
	Strict                bool          `json:"strict,omitempty"`
	Deep                  *DeepReport   `json:"deep,omitempty"`
	HasActiveMonetization bool          `json:"-"`
	MonetizationKnown     bool          `json:"-"`
	HasPaidAppPrice       bool          `json:"-"`
	AppPricingKnown       bool          `json:"-"`
}

Report is the top-level validation output.

func ApplyDeepValidation added in v1.260831.0

func ApplyDeepValidation(report Report, deep DeepReport, findings []CheckResult) Report

ApplyDeepValidation merges deep evidence into a public readiness report and rebuilds all derived counts and remediation steps.

func Validate

func Validate(input Input, strict bool) Report

Validate runs all validation rules and returns a report.

type Resolution added in v1.260831.0

type Resolution struct {
	Fixability         Fixability `json:"fixability"`
	Commands           []string   `json:"commands,omitempty"`
	AppStoreConnectURL string     `json:"appStoreConnectUrl,omitempty"`
}

Resolution describes how to resolve an actionable validation finding.

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"
)

func MetadataLengthSeverity added in v1.260825.0

func MetadataLengthSeverity(field string) Severity

MetadataLengthSeverity returns the severity for an over-limit metadata field. URL limits are documented rather than schema-backed, so they stay advisory while the text limits Apple publishes per field remain blocking.

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
	ReviewScreenshotAssetDeliveryState  string
	ReviewScreenshotAssetDeliveryErrors []string
	ReviewScreenshotCheckSkipped        bool
	ReviewScreenshotCheckReason         string
	AvailabilityID                      string
	AvailabilityTerritories             []string
	AvailabilityCheckSkipped            bool
	AvailabilityCheckSkipReason         string
	AvailabilityInNewTerritories        *bool
	SubscriptionPeriod                  string
	PlanAvailabilities                  []SubscriptionPlanAvailabilityInfo
	PlanAvailabilityCheckSkipped        bool
	PlanAvailabilityCheckReason         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 SubscriptionPlanAvailabilityInfo added in v1.260716.0

type SubscriptionPlanAvailabilityInfo struct {
	ID                        string
	PlanType                  string
	AvailableInNewTerritories *bool
	Territories               []string
}

SubscriptionPlanAvailabilityInfo holds one billing plan's territory availability.

type SubscriptionsInput

type SubscriptionsInput struct {
	AppID                             string
	Subscriptions                     []Subscription
	AvailableTerritories              int
	AppAvailableTerritories           []string
	AppAvailabilityCoverageSkipReason string
	PricingTerritories                []string
	PricingTerritoryCount             int
	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.

func SummarizeChecks added in v1.260831.0

func SummarizeChecks(checks []CheckResult, strict bool) Summary

SummarizeChecks aggregates validation checks for callers constructing a partial report after a known upstream blocker.

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