config

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: Apr 25, 2021 License: GPL-3.0 Imports: 8 Imported by: 0

Documentation

Overview

Package config contains types and helpers available to configure a Cider project.

You can customize your project using a `.cider.yml` file either created from scratch or using [`cider init`](./commands/cider_init.md).

Index

Constants

View Source
const (
	// ContentIntensityNone refers to the NONE content warning.
	ContentIntensityNone contentIntensity = "none"
	// ContentIntensityInfrequentOrMild refers to the INFREQUENT_OR_MILD content warning.
	ContentIntensityInfrequentOrMild contentIntensity = "infrequentOrMild"
	// ContentIntensityFrequentOrIntense refers to the FREQUENT_OR_INTENSE content warning.
	ContentIntensityFrequentOrIntense contentIntensity = "frequentOrIntense"
)
View Source
const (
	// KidsAgeBandFiveAndUnder refers to the FIVE_AND_UNDER kids age band.
	KidsAgeBandFiveAndUnder kidsAgeBand = "5 and under"
	// KidsAgeBandSixToEight refers to the SIX_TO_EIGHT kids age band.
	KidsAgeBandSixToEight kidsAgeBand = "6-8"
	// KidsAgeBandNineToEleven refers to the NINE_TO_ELEVEN kids age band.
	KidsAgeBandNineToEleven kidsAgeBand = "9-11"
)
View Source
const (
	// ReleaseTypeManual refers to a manual release type.
	ReleaseTypeManual releaseType = "manual"
	// ReleaseTypeAfterApproval refers to an automatic release type to be completed after approval.
	ReleaseTypeAfterApproval releaseType = "afterApproval"
	// ReleaseTypeScheduled refers to an automatic release type to be completed after a scheduled date.
	ReleaseTypeScheduled releaseType = "scheduled"
)
View Source
const (
	// PreviewTypeAppleTV is a preview type for Apple TV.
	PreviewTypeAppleTV previewType = "appleTV"
	// PreviewTypeDesktop is a preview type for Desktop.
	PreviewTypeDesktop previewType = "desktop"
	// PreviewTypeiPad105 is a preview type for iPad 10.5.
	PreviewTypeiPad105 previewType = "ipad105"
	// PreviewTypeiPad97 is a preview type for iPad 9.7.
	PreviewTypeiPad97 previewType = "ipad97"
	// PreviewTypeiPadPro129 is a preview type for iPad Pro 12.9.
	PreviewTypeiPadPro129 previewType = "ipadPro129"
	// PreviewTypeiPadPro3Gen11 is a preview type for third-generation iPad Pro 11.
	PreviewTypeiPadPro3Gen11 previewType = "ipadPro3Gen11"
	// PreviewTypeiPadPro3Gen129 is a preview type for third-generation iPad Pro 12.9.
	PreviewTypeiPadPro3Gen129 previewType = "ipadPro3Gen129"
	// PreviewTypeiPhone35 is a preview type for iPhone 3.5.
	PreviewTypeiPhone35 previewType = "iphone35"
	// PreviewTypeiPhone40 is a preview type for iPhone 4.0.
	PreviewTypeiPhone40 previewType = "iphone40"
	// PreviewTypeiPhone47 is a preview type for iPhone 4.7.
	PreviewTypeiPhone47 previewType = "iphone47"
	// PreviewTypeiPhone55 is a preview type for iPhone 5.5.
	PreviewTypeiPhone55 previewType = "iphone55"
	// PreviewTypeiPhone58 is a preview type for iPhone 5.8.
	PreviewTypeiPhone58 previewType = "iphone58"
	// PreviewTypeiPhone65 is a preview type for iPhone 6.5.
	PreviewTypeiPhone65 previewType = "iphone65"
	// PreviewTypeWatchSeries3 is a preview type for Watch Series 3.
	PreviewTypeWatchSeries3 previewType = "watchSeries3"
	// PreviewTypeWatchSeries4 is a preview type for Watch Series 4.
	PreviewTypeWatchSeries4 previewType = "watchSeries4"
)
View Source
const (
	// ScreenshotTypeAppleTV is a screenshot type for Apple TV.
	ScreenshotTypeAppleTV screenshotType = "appleTV"
	// ScreenshotTypeDesktop is a screenshot type for Desktop.
	ScreenshotTypeDesktop screenshotType = "desktop"
	// ScreenshotTypeiPad105 is a screenshot type for iPad 10.5.
	ScreenshotTypeiPad105 screenshotType = "ipad105"
	// ScreenshotTypeiPad97 is a screenshot type for iPad 9.7.
	ScreenshotTypeiPad97 screenshotType = "ipad97"
	// ScreenshotTypeiPadPro129 is a screenshot type for iPad Pro 12.9.
	ScreenshotTypeiPadPro129 screenshotType = "ipadPro129"
	// ScreenshotTypeiPadPro3Gen11 is a screenshot type for third-generation iPad Pro 11.
	ScreenshotTypeiPadPro3Gen11 screenshotType = "ipadPro3Gen11"
	// ScreenshotTypeiPadPro3Gen129 is a screenshot type for third-generation iPad Pro 12.9.
	ScreenshotTypeiPadPro3Gen129 screenshotType = "ipadPro3Gen129"
	// ScreenshotTypeiPhone35 is a screenshot type for iPhone 3.5.
	ScreenshotTypeiPhone35 screenshotType = "iphone35"
	// ScreenshotTypeiPhone40 is a screenshot type for iPhone 4.0.
	ScreenshotTypeiPhone40 screenshotType = "iphone40"
	// ScreenshotTypeiPhone47 is a screenshot type for iPhone 4.7.
	ScreenshotTypeiPhone47 screenshotType = "iphone47"
	// ScreenshotTypeiPhone55 is a screenshot type for iPhone 5.5.
	ScreenshotTypeiPhone55 screenshotType = "iphone55"
	// ScreenshotTypeiPhone58 is a screenshot type for iPhone 5.8.
	ScreenshotTypeiPhone58 screenshotType = "iphone58"
	// ScreenshotTypeiPhone65 is a screenshot type for iPhone 6.5.
	ScreenshotTypeiPhone65 screenshotType = "iphone65"
	// ScreenshotTypeWatchSeries3 is a screenshot type for Watch Series 3.
	ScreenshotTypeWatchSeries3 screenshotType = "watchSeries3"
	// ScreenshotTypeWatchSeries4 is a screenshot type for Watch Series 4.
	ScreenshotTypeWatchSeries4 screenshotType = "watchSeries4"
	// ScreenshotTypeiMessageiPad105 is a screenshot type for iMessage apps on iPad 10.5.
	ScreenshotTypeiMessageiPad105 screenshotType = "ipad105imessage"
	// ScreenshotTypeiMessageiPad97 is a screenshot type for iMessage apps on iPad 9.7.
	ScreenshotTypeiMessageiPad97 screenshotType = "ipad97imessage"
	// ScreenshotTypeiMessageiPadPro129 is a screenshot type for iMessage apps on iPad Pro 12.9.
	ScreenshotTypeiMessageiPadPro129 screenshotType = "ipadPro129imessage"
	// ScreenshotTypeiMessageiPadPro3Gen11 is a screenshot type for iMessage apps on third-generation iPad Pro 11.
	ScreenshotTypeiMessageiPadPro3Gen11 screenshotType = "ipadPro3Gen11imessage"
	// ScreenshotTypeiMessageiPadPro3Gen129 is a screenshot type for iMessage apps on third-generation iPad Pro 12.9.
	ScreenshotTypeiMessageiPadPro3Gen129 screenshotType = "ipadPro3Gen129imessage"
	// ScreenshotTypeiMessageiPhone40 is a screenshot type for iMessage apps on iPhone 4.0.
	ScreenshotTypeiMessageiPhone40 screenshotType = "iphone40imessage"
	// ScreenshotTypeiMessageiPhone47 is a screenshot type for iMessage apps on iPhone 4.7.
	ScreenshotTypeiMessageiPhone47 screenshotType = "iphone47imessage"
	// ScreenshotTypeiMessageiPhone55 is a screenshot type for iMessage apps on iPhone 5.5.
	ScreenshotTypeiMessageiPhone55 screenshotType = "iphone55imessage"
	// ScreenshotTypeiMessageiPhone58 is a screenshot type for iMessage apps on iPhone 5.8.
	ScreenshotTypeiMessageiPhone58 screenshotType = "iphone58imessage"
	// ScreenshotTypeiMessageiPhone65 is a screenshot type for iMessage apps on iPhone 6.5.
	ScreenshotTypeiMessageiPhone65 screenshotType = "iphone65imessage"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AgeRatingDeclaration added in v0.0.5

type AgeRatingDeclaration struct {
	// Whether your app enables legally and guideline-compliant gambling.
	GamblingAndContests *bool `yaml:"gamblingAndContests,omitempty"`
	// Whether your app enables generalized usage of the internet, such as an internet browser.
	UnrestrictedWebAccess *bool `yaml:"unrestrictedWebAccess,omitempty"`
	// Age band to use in categorizing your app for lists aimed at kids.
	KidsAgeBand *kidsAgeBand `yaml:"kidsAgeBand,omitempty"`
	// Whether your app makes references to alcohol, tobacco, or drug use and/or paraphernalia.
	AlcoholTobaccoOrDrugUseOrReferences *contentIntensity `yaml:"alcoholTobaccoOrDrugUseOrReferences,omitempty"`
	// Whether your app offers medical advice or treatment information.
	MedicalOrTreatmentInformation *contentIntensity `yaml:"medicalOrTreatmentInformation,omitempty"`
	// Whether your app contains or enables profanity and/or crude humor.
	ProfanityOrCrudeHumor *contentIntensity `yaml:"profanityOrCrudeHumor,omitempty"`
	// Whether your app contains or enables sexual content or nudity.
	SexualContentOrNudity *contentIntensity `yaml:"sexualContentOrNudity,omitempty"`
	// Whether your app enables simulated gambling with either real or simulated currency.
	GamblingSimulated *contentIntensity `yaml:"gamblingSimulated,omitempty"`
	// Whether your app contains horror or fear-inducing themes.
	HorrorOrFearThemes *contentIntensity `yaml:"horrorOrFearThemes,omitempty"`
	// Whether your app contains mature or suggestive themes.
	MatureOrSuggestiveThemes *contentIntensity `yaml:"matureOrSuggestiveThemes,omitempty"`
	// Whether your app contains or enables sexual content or nudity that is graphic in nature.
	SexualContentGraphicAndNudity *contentIntensity `yaml:"sexualContentGraphicAndNudity,omitempty"`
	// Whether your app contains cartoon or fantasy violence.
	ViolenceCartoonOrFantasy *contentIntensity `yaml:"violenceCartoonOrFantasy,omitempty"`
	// Whether your app contains realistic violence.
	ViolenceRealistic *contentIntensity `yaml:"violenceRealistic,omitempty"`
	// Whether your app contains prolonged, realistic violence that is graphic or sadistic in nature.
	ViolenceRealisticProlongedGraphicOrSadistic *contentIntensity `yaml:"violenceRealisticProlongedGraphicOrSadistic,omitempty"`
}

AgeRatingDeclaration describes the various content warnings you can provide or apply to your applications.

For example:

```yaml ageRatings:

kidsAgeBand: 6-8
matureOrSuggestiveThemes: none
profanityOrCrudeHumor: none
violenceCartoonOrFantasy: frequentOrIntense
violenceRealistic: infrequentOrMild

``` .

type App

type App struct {
	// Bundle ID of the app.
	BundleID string `yaml:"id"`
	// Primary [locale](#locales) (or language) of the app.
	PrimaryLocale string `yaml:"primaryLocale,omitempty"`
	// Whether or not the app uses third party content. Omit to avoid declarting content rights.
	UsesThirdPartyContent *bool `yaml:"usesThirdPartyContent,omitempty"`
	// Availability of the app, including pricing and supported territories.
	Availability *Availability `yaml:"availability,omitempty"`
	// Categories to list under in the App Store.
	Categories *Categories `yaml:"categories,omitempty"`
	// Content warnings that are used to declare the age rating.
	AgeRatingDeclaration *AgeRatingDeclaration `yaml:"ageRatings,omitempty"`
	// App info localizations.
	Localizations AppLocalizations `yaml:"localizations"`
	// Metadata to configure new App Store versions.
	Versions Version `yaml:"versions"`
	// Metadata to configure new Testflight beta releases.
	Testflight Testflight `yaml:"testflight"`
}

App is used to manage the high-level configuration options for an app in general.

type AppLocalization

type AppLocalization struct {
	// Name of the app in this locale. Templated.
	Name string `yaml:"name"`
	// Subtitle of the app in this locale. Templated.
	Subtitle string `yaml:"subtitle,omitempty"`
	// Privacy policy text if not using a URL. Templated.
	PrivacyPolicyText string `yaml:"privacyPolicyText,omitempty"`
	// Privacy policy URL if not using a text body. Templated.
	PrivacyPolicyURL string `yaml:"privacyPolicyURL,omitempty"`
}

AppLocalization contains localized details for your App Store listing.

type AppLocalizations

type AppLocalizations map[string]AppLocalization

AppLocalizations is a map of [locale codes](#locales) to AppLocalization(#applocalization) objects.

For example:

```yaml localizations:

en-US:
  name: My App
  subtitle: congratulations
ja:
  name: 僕のアップ
  subtitle: おめでとう

``` .

type Availability

type Availability struct {
	// Indicates whether or not the app should be made automaticaly available
	// in new App Store territories, as Apple makes new ones available.
	AvailableInNewTerritories *bool `yaml:"availableInNewTerritories,omitempty"`
	// List of PriceSchedules that describe the pricing details of your app.
	Pricing []PriceSchedule `yaml:"priceTiers,omitempty"`
	// Array of ISO 3166-1 Alpha-3 country codes corresponding to territories to make your app available in.
	Territories []string `yaml:"territories,omitempty"`
}

Availability wraps aspects of app availability, such as territories and pricing.

For example:

```yaml availability:

pricing:
  - tier: '0'
availableInNewTerritories: false
territories:
  - USA

``` .

type BetaGroup

type BetaGroup struct {
	// Name of the beta group.
	Name string `yaml:"group"`
	// Indicates whether to enable the public link.
	EnablePublicLink bool `yaml:"publicLinkEnabled,omitempty"`
	// Indicates whether a limit on the number of testers who can use the public link
	// is enabled.
	EnablePublicLinkLimit bool `yaml:"publicLinkLimitEnabled,omitempty"`
	// Indicates whether tester feedback is enabled within TestFlight
	FeedbackEnabled bool `yaml:"feedbackEnabled,omitempty"`
	// Maximum number of testers that can join the beta group using the public link.
	PublicLinkLimit int `yaml:"publicLinkLimit,omitempty"`
	// Array of beta testers to explicitly assign to the beta group.
	Testers []BetaTester `yaml:"testers"`
}

BetaGroup describes a beta group in Testflight that should be kept in sync and used with this app.

type BetaTester

type BetaTester struct {
	// Beta tester email.
	Email string `yaml:"email"`
	// Beta tester first (given) name.
	FirstName string `yaml:"firstName,omitempty"`
	// Beta tester last (family) name.
	LastName string `yaml:"lastName,omitempty"`
}

BetaTester describes an individual beta tester that should have access to this app.

type Categories added in v0.0.5

type Categories struct {
	// ID for the primary category.
	Primary string `yaml:"primary"`
	// IDs of any subcategories to apply to the primary category. Only up to two will be accepted.
	PrimarySubcategories [2]string `yaml:"primarySubcategories"`
	// ID for the secondary category.
	Secondary string `yaml:"secondary,omitempty"`
	// IDs of any subcategories to apply to the secondary category. Only up to two will be accepted.
	SecondarySubcategories [2]string `yaml:"secondarySubcategories"`
}

Categories describes the categories your app belongs to. A primary category is required, and a secondary category is encouraged.

Some categories have optional subcategories you can use to improve the specificity of your categorization. Up to two subcategories can provided each for the primary and secondary categories.

For example:

```yaml categories:

primary: BUSINESS
secondary: STICKERS
secondarySubcategories:
  - STICKERS_ART

```

See the [App Categories](#app-categories) section below for more information on app categories.

type ContactPerson

type ContactPerson struct {
	// Contact email. Templated.
	Email string `yaml:"email"`
	// Contact first (given) name. Templated.
	FirstName string `yaml:"firstName"`
	// Contact last (family) name. Templated.
	LastName string `yaml:"lastName"`
	// Contact phone number. Templated.
	Phone string `yaml:"phone"`
}

ContactPerson is a point of contact for App Store reviewers to reach out to in case of an issue.

type DemoAccount

type DemoAccount struct {
	// Whether or not a demo account is required. Other fields can be
	// omitted if this is set to false.
	Required bool `yaml:"isRequired"`
	// Demo account name or login. Templated.
	Name string `yaml:"name,omitempty"`
	// Demo account password. Templated.
	Password string `yaml:"password,omitempty"`
}

DemoAccount contains account credentials for App Store reviewers to assess your apps.

type File

type File struct {
	// Path to a file on-disk. Templated.
	Path string `yaml:"path"`
}

File refers to a file on disk by name.

type IDFADeclaration

type IDFADeclaration struct {
	// Indicates that the app attributes user action with previous ads.
	AttributesActionWithPreviousAd bool `yaml:"attributesActionWithPreviousAd"`
	// Indicates that the app attributes user installation with previous ads.
	AttributesAppInstallationToPreviousAd bool `yaml:"attributesAppInstallationToPreviousAd"`
	// Indicates that the app developer will honor Apple's guidelines around tracking when
	// the user has chosen to limit ad tracking.
	HonorsLimitedAdTracking bool `yaml:"honorsLimitedAdTracking"`
	// Indicates that the app serves ads
	ServesAds bool `yaml:"servesAds"`
}

IDFADeclaration outlines regulatory information for Apple to use to handle your apps' use of tracking identifiers. Implicitly enables `usesIdfa` when creating an app store version.

For example:

```yaml idfaDeclaration:

attributesActionWithPreviousAd: false
attributesAppInstallationToPreviousAd: false
honorsLimitedAdTracking: true
servesAds: false

``` .

type Platform

type Platform string

Platform represents a supported platform type from App Store Connect.

const (
	// PlatformiOS refers to the iOS platform.
	PlatformiOS Platform = "iOS"
	// PlatformMacOS refers to the macOS platform.
	PlatformMacOS Platform = "macOS"
	// PlatformTvOS refers to the tvOS platform.
	PlatformTvOS Platform = "tvOS"
)

func (*Platform) APIValue

func (p *Platform) APIValue() *asc.Platform

APIValue returns the corresponding API value type for this config type.

type Preview

type Preview struct {
	// Path to an asset, relative to the current directory.
	File `yaml:",inline"`
	// MIME type of the asset. Overriding this is usually unnecessary.
	MIMEType string `yaml:"mimeType,omitempty"`
	// Time code to a frame to show as a preview of the video, if not the beginning.
	PreviewFrameTimeCode string `yaml:"previewFrameTimeCode,omitempty"`
}

Preview is an expansion of File that defines a new app preview asset.

type PreviewSets

type PreviewSets map[previewType][]Preview

PreviewSets is a map of preview types to arrays of Preview(#preview)s. Each preview type can contain up to three preview assets, which can be content such as videos.

For example:

```yaml previewSets:

iphone65:
  - file: assets/iphone65/preview1.mp4
ipadPro129:
  - file: assets/ipadPro129/preview1.mp4

```

For more information, see [App preview specifications](https://help.apple.com/app-store-connect/#/dev4e413fcb8).

func (PreviewSets) GetPreviews

func (s PreviewSets) GetPreviews(previewType asc.PreviewType) []Preview

GetPreviews fetches the value from the map corresponding to the API value.

type PriceSchedule

type PriceSchedule struct {
	// Tier corresponds to a representation of a tier on the
	// [App Store Pricing Matrix](https://appstoreconnect.apple.com/apps/pricingmatrix).
	// For example, Tier 1 should be represented as "1" and the Free tier should be
	// represented as "0".
	Tier string `yaml:"tier"`
	// StartDate is the start date a price schedule should take effect. Set to nil to have it take
	// effect immediately.
	StartDate *time.Time `yaml:"startDate,omitempty"`
	// EndDate is the end date a price schedule should be in effect until. Field is currently a no-op.
	EndDate *time.Time `yaml:"endDate,omitempty"`
}

PriceSchedule represents pricing availability information that an app should be immediately configured to.

type Project

type Project map[string]App

Project is the top level configuration type. It is a map of app names to App(#app) configuration objects. The keys are simple identifiers that are used in logging, and that you can use with [`cider release`](./commands/cider_release.md) to filter the apps you intend to release.

For example:

```yaml My App:

id: com.myproject.MyApp
primaryLocale: en-US

Other App:

id: com.myproject.MyApp
primaryLocale: en-US

``` .

func Load

func Load(file string) (config Project, err error)

Load config file.

func LoadReader

func LoadReader(fd io.Reader) (config Project, err error)

LoadReader config via io.Reader.

func (*Project) AppsMatching

func (p *Project) AppsMatching(keys []string, shouldIncludeAll bool) []string

AppsMatching returns an array of keys in the Project matching the app names, or all names if the flag is set.

func (*Project) Copy

func (p *Project) Copy() (cp Project, err error)

Copy performs a costly deep-copy of the entire project structure.

func (Project) String

func (p Project) String() (string, error)

type ReviewDetails

type ReviewDetails struct {
	// Point of contact for the App Store reviewer.
	Contact *ContactPerson `yaml:"contact,omitempty"`
	// A demo account the reviewer can use to evaluate functionality
	DemoAccount *DemoAccount `yaml:"demoAccount,omitempty"`
	// Notes that the reviewer should be aware of. Templated.
	Notes string `yaml:"notes,omitempty"`
	// Attachment resources the reviewer should be aware of or use in evaluation.
	Attachments []File `yaml:"attachments,omitempty"`
}

ReviewDetails contains information for App Store reviewers to use in their evaluation.

For example:

```yaml reviewDetails:

contact:
  email: person@company.com
  firstName: Person
  lastName: Personson
  phone: '15555555555'
demoAccount:
  isRequired: false
notes: |
  This app is good and should pass review with flying colors, because it's so good.
attachments:
  - path: assets/review/attachment1.png
  - path: assets/review/attachment2.png

```

Note: review attachments are not considered during TestFlight review and are not handled by Cider.

type ScreenshotSets

type ScreenshotSets map[screenshotType][]File

ScreenshotSets is a map of screenshot types to arrays of File(#file)s. Each screenshot type can contain up to ten assets, which must be correctly sized and encoded images for each type.

For example:

```yaml screenshotSets:

iphone65:
  - file: assets/iphone65/screenshot1.jpg
  - file: assets/iphone65/screenshot2.jpg
  - file: assets/iphone65/screenshot3.jpg
ipadPro129:
  - file: assets/ipadPro129/screenshot1.jpg
  - file: assets/ipadPro129/screenshot2.jpg
  - file: assets/ipadPro129/screenshot3.jpg

```

Some screenshot sizes are required in order to submit your app for review. You’ll get an error at submission time if you don’t provide all of the required assets. For information about screenshot requirements, see [Screenshot specifications](https://help.apple.com/app-store-connect/#/devd274dd925).

func (ScreenshotSets) GetScreenshots

func (s ScreenshotSets) GetScreenshots(screenshotType asc.ScreenshotDisplayType) []File

GetScreenshots fetches the value from the map corresponding to the API value.

type Testflight

type Testflight struct {
	// Indicates whether to auto-notify existing beta testers of a new Testflight update.
	EnableAutoNotify bool `yaml:"enableAutoNotify"`
	// Beta license agreement content. Templated.
	LicenseAgreement string `yaml:"licenseAgreement"`
	// Map of locale codes to localization configurations for beta app and beta build information.
	Localizations TestflightLocalizations `yaml:"localizations"`
	// Array of beta group names. If you want to refer to beta groups defined in this configuration
	// file, use the value provided for the group field on the corresponding beta group. Beta groups
	// to add or update in App Store Connect.
	BetaGroups []BetaGroup `yaml:"betaGroups,omitempty"`
	// Individual beta testers to add or update in App Store Connect.
	BetaTesters []BetaTester `yaml:"betaTesters,omitempty"`
	// Details about an app to share with the App Store reviewer.
	ReviewDetails *ReviewDetails `yaml:"reviewDetails,omitempty"`
}

Testflight represents configuration for beta distribution of apps.

type TestflightLocalization

type TestflightLocalization struct {
	// Beta build description in this locale. Templated.
	Description string `yaml:"description"`
	// Email for testers to provide feedback to in this locale. Templated.
	FeedbackEmail string `yaml:"feedbackEmail,omitempty"`
	// Marketing URL to use in this locale. Templated.
	MarketingURL string `yaml:"marketingURL,omitempty"`
	// Privacy policy URL to use in this locale. Templated.
	PrivacyPolicyURL string `yaml:"privacyPolicyURL,omitempty"`
	// Privacy policy text to use on tvOS in this locale. Templated.
	TVOSPrivacyPolicy string `yaml:"tvOSPrivacyPolicy,omitempty"`
	// "Whats New" release note text to use in this locale. Templated.
	WhatsNew string `yaml:"whatsNew,omitempty"`
}

TestflightLocalization contains localized details for the listing of a specific build in the Testflight app.

type TestflightLocalizations

type TestflightLocalizations map[string]TestflightLocalization

TestflightLocalizations is a map of [locale codes](#locales) to TestflightLocalization(#testflightlocalization) objects.

For example:

```yaml localizations:

en-US:
  description: My App for cool people
  feedbackEmail: person@company.com
  whatsNew: Thank you for using My App! I bring you updates every week so this continues to be my app.

``` .

type Version

type Version struct {
	// Platform the app is to be released on.
	Platform Platform `yaml:"platform"`
	// Map of locale codes to [VersionLocalization](#versionlocalization) objects for App Store version information.
	Localizations VersionLocalizations `yaml:"localizations"`
	// Copyright information to display on the listing. Templated.
	Copyright string `yaml:"copyright,omitempty"`
	// Earliest release date, in Go's RFC3339 format. Set to null to release
	// as soon as is permitted by the release type.
	EarliestReleaseDate *time.Time `yaml:"earliestReleaseDate,omitempty"`
	// Release type.
	ReleaseType releaseType `yaml:"releaseType,omitempty"`
	// Indicates whether phased release should be enabled for updates.
	PhasedReleaseEnabled bool `yaml:"enablePhasedRelease,omitempty"`
	// Information about an app's IDFA declaration. Omit or set to null to declare to
	// Apple that your app does not use the IDFA.
	IDFADeclaration *IDFADeclaration `yaml:"idfaDeclaration,omitempty"`
	// Routing coverage resource.
	RoutingCoverage *File `yaml:"routingCoverage,omitempty"`
	// Details about an app to share with the App Store reviewer.
	ReviewDetails *ReviewDetails `yaml:"reviewDetails,omitempty"`
}

Version outlines the general details of your app store version as it will be represented on the App Store.

For example:

```yaml versions:

platform: iOS
copyright: 2020 App
releaseType: manual
localizations: ...
reviewDetails: ...

``` .

type VersionLocalization

type VersionLocalization struct {
	// App description in this locale. Templated.
	Description string `yaml:"description"`
	// App keywords in this locale. Templated.
	Keywords string `yaml:"keywords,omitempty"`
	// Marketing URL to use in this locale. Templated.
	MarketingURL string `yaml:"marketingURL,omitempty"`
	// Promotional text to use in this locale. Can be updated without a requiring a new build. Templated.
	PromotionalText string `yaml:"promotionalText,omitempty"`
	// Support URL to use in this locale. Templated.
	SupportURL string `yaml:"supportURL,omitempty"`
	// "Whats New" release note text to use in this locale. Templated.
	WhatsNewText string `yaml:"whatsNew,omitempty"`
	// Map of preview types to arrays of app preview assets.
	PreviewSets PreviewSets `yaml:"previewSets,omitempty"`
	// Map of screenshot types to arrays of app screenshot assets.
	ScreenshotSets ScreenshotSets `yaml:"screenshotSets,omitempty"`
}

VersionLocalization contains localized details for the listing of a specific version on the App Store.

type VersionLocalizations

type VersionLocalizations map[string]VersionLocalization

VersionLocalizations is a map of [locale codes](#locales) to VersionLocalization(#versionlocalization) objects.

For example:

```yaml localizations:

en-US:
  description: My App for cool people
  keywords: Apps, Cool, Mine
  whatsNew: Thank you for using My App! I bring you updates every week so this continues to be my app.

``` .

Jump to

Keyboard shortcuts

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