api

package
v1.69.0 Latest Latest
Warning

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

Go to latest
Published: Jan 12, 2025 License: MIT Imports: 19 Imported by: 0

Documentation

Overview

Package api provides functionality for interacting with the iCloud API.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ConstructDriveID

func ConstructDriveID(id string, zone string, t string) string

ConstructDriveID constructs a drive ID from the given components.

func DeconstructDriveID

func DeconstructDriveID(id string) (docType, zone, docid string)

DeconstructDriveID returns the document type, zone, and document ID from the drive ID.

func GetCommonHeaders

func GetCommonHeaders(overwrite map[string]string) map[string]string

GetCommonHeaders generates common HTTP headers with optional overwrite.

func GetContentTypeForFile

func GetContentTypeForFile(name string) string

GetContentTypeForFile detects content type for given file name.

func GetCookiesForDomain

func GetCookiesForDomain(url *url.URL, cookies []*http.Cookie) ([]*http.Cookie, error)

GetCookiesForDomain filters the provided cookies based on the domain of the given URL.

func GetDocIDFromDriveID

func GetDocIDFromDriveID(id string) string

GetDocIDFromDriveID returns the DocumentID from the drive ID.

func IntoReader

func IntoReader(values any) (*bytes.Reader, error)

IntoReader marshals the provided values into a JSON encoded reader

func MergeCookies

func MergeCookies(left []*http.Cookie, right []*http.Cookie) ([]*http.Cookie, error)

MergeCookies merges two slices of http.Cookies, ensuring no duplicates are added.

Types

type AccountInfo

type AccountInfo struct {
	DsInfo                       *ValidateDataDsInfo    `json:"dsInfo"`
	HasMinimumDeviceForPhotosWeb bool                   `json:"hasMinimumDeviceForPhotosWeb"`
	ICDPEnabled                  bool                   `json:"iCDPEnabled"`
	Webservices                  map[string]*webService `json:"webservices"`
	PcsEnabled                   bool                   `json:"pcsEnabled"`
	TermsUpdateNeeded            bool                   `json:"termsUpdateNeeded"`
	ConfigBag                    struct {
		Urls struct {
			AccountCreateUI     string `json:"accountCreateUI"`
			AccountLoginUI      string `json:"accountLoginUI"`
			AccountLogin        string `json:"accountLogin"`
			AccountRepairUI     string `json:"accountRepairUI"`
			DownloadICloudTerms string `json:"downloadICloudTerms"`
			RepairDone          string `json:"repairDone"`
			AccountAuthorizeUI  string `json:"accountAuthorizeUI"`
			VettingURLForEmail  string `json:"vettingUrlForEmail"`
			AccountCreate       string `json:"accountCreate"`
			GetICloudTerms      string `json:"getICloudTerms"`
			VettingURLForPhone  string `json:"vettingUrlForPhone"`
		} `json:"urls"`
		AccountCreateEnabled bool `json:"accountCreateEnabled"`
	} `json:"configBag"`
	HsaTrustedBrowser            bool     `json:"hsaTrustedBrowser"`
	AppsOrder                    []string `json:"appsOrder"`
	Version                      int      `json:"version"`
	IsExtendedLogin              bool     `json:"isExtendedLogin"`
	PcsServiceIdentitiesIncluded bool     `json:"pcsServiceIdentitiesIncluded"`
	IsRepairNeeded               bool     `json:"isRepairNeeded"`
	HsaChallengeRequired         bool     `json:"hsaChallengeRequired"`
	RequestInfo                  struct {
		Country  string `json:"country"`
		TimeZone string `json:"timeZone"`
		Region   string `json:"region"`
	} `json:"requestInfo"`
	PcsDeleted bool `json:"pcsDeleted"`
	ICloudInfo struct {
		SafariBookmarksHasMigratedToCloudKit bool `json:"SafariBookmarksHasMigratedToCloudKit"`
	} `json:"iCloudInfo"`
	Apps map[string]*ValidateDataApp `json:"apps"`
}

AccountInfo represents an account info

type Client

type Client struct {
	Session *Session
	// contains filtered or unexported fields
}

Client defines the client configuration

func New

func New(appleID, password, trustToken string, clientID string, cookies []*http.Cookie, sessionSaveCallback sessionSave) (*Client, error)

New creates a new Client instance with the provided Apple ID, password, trust token, cookies, and session save callback.

Parameters: - appleID: the Apple ID of the user. - password: the password of the user. - trustToken: the trust token for the session. - clientID: the client id for the session. - cookies: the cookies for the session. - sessionSaveCallback: the callback function to save the session.

func (*Client) Authenticate

func (c *Client) Authenticate(ctx context.Context) error

Authenticate authenticates the client with the iCloud API.

func (*Client) DriveService

func (c *Client) DriveService() (*DriveService, error)

DriveService returns the DriveService instance associated with the Client.

func (*Client) Request

func (c *Client) Request(ctx context.Context, opts rest.Opts, request interface{}, response interface{}) (resp *http.Response, err error)

Request makes a request and retries it if the session is invalid.

This function is the main entry point for making requests to the iCloud API. If the initial request returns a 401 (Unauthorized), it will try to reauthenticate and retry the request.

func (*Client) RequestNoReAuth

func (c *Client) RequestNoReAuth(ctx context.Context, opts rest.Opts, request interface{}, response interface{}) (resp *http.Response, err error)

RequestNoReAuth makes a request without re-authenticating.

This function is useful when you have a session that is already authenticated, but you need to make a request without triggering a re-authentication.

func (*Client) SignIn

func (c *Client) SignIn(ctx context.Context) error

SignIn signs in the client using the provided context and credentials.

type CreateFoldersResponse

type CreateFoldersResponse struct {
	Folders []*DriveItem `json:"folders"`
}

CreateFoldersResponse is the response of a create folders request.

type Document

type Document struct {
	Status struct {
		StatusCode   int    `json:"status_code"`
		ErrorMessage string `json:"error_message"`
	} `json:"status"`
	DocumentID string `json:"document_id"`
	ItemID     string `json:"item_id"`
	Urls       struct {
		URLDownload string `json:"url_download"`
	} `json:"urls"`
	Etag           string       `json:"etag"`
	ParentID       string       `json:"parent_id"`
	Name           string       `json:"name"`
	Type           string       `json:"type"`
	Deleted        bool         `json:"deleted"`
	Mtime          int64        `json:"mtime"`
	LastEditorName string       `json:"last_editor_name"`
	Data           DocumentData `json:"data"`
	Size           int64        `json:"size"`
	Btime          int64        `json:"btime"`
	Zone           string       `json:"zone"`
	FileFlags      struct {
		IsExecutable bool `json:"is_executable"`
		IsWritable   bool `json:"is_writable"`
		IsHidden     bool `json:"is_hidden"`
	} `json:"file_flags"`
	LastOpenedTime   int64       `json:"lastOpenedTime"`
	RestorePath      interface{} `json:"restorePath"`
	HasChainedParent bool        `json:"hasChainedParent"`
}

Document represents a document on iCloud.

func (*Document) DriveID

func (d *Document) DriveID() string

DriveID returns the drive ID of the Document.

type DocumentData

type DocumentData struct {
	Signature          string `json:"signature"`
	Owner              string `json:"owner"`
	Size               int64  `json:"size"`
	ReferenceSignature string `json:"reference_signature"`
	WrappingKey        string `json:"wrapping_key"`
	PcsInfo            string `json:"pcsInfo"`
}

DocumentData represents the data of a document.

type DocumentUpdateResponse

type DocumentUpdateResponse struct {
	Status struct {
		StatusCode   int    `json:"status_code"`
		ErrorMessage string `json:"error_message"`
	} `json:"status"`
	Results []struct {
		Status struct {
			StatusCode   int    `json:"status_code"`
			ErrorMessage string `json:"error_message"`
		} `json:"status"`
		OperationID interface{} `json:"operation_id"`
		Document    *Document   `json:"document"`
	} `json:"results"`
}

DocumentUpdateResponse is the response of a document update request.

type DriveItem

type DriveItem struct {
	DateCreated         time.Time    `json:"dateCreated"`
	Drivewsid           string       `json:"drivewsid"`
	Docwsid             string       `json:"docwsid"`
	Itemid              string       `json:"item_id"`
	Zone                string       `json:"zone"`
	Name                string       `json:"name"`
	ParentID            string       `json:"parentId"`
	Hierarchy           []DriveItem  `json:"hierarchy"`
	Etag                string       `json:"etag"`
	Type                string       `json:"type"`
	AssetQuota          int64        `json:"assetQuota"`
	FileCount           int64        `json:"fileCount"`
	ShareCount          int64        `json:"shareCount"`
	ShareAliasCount     int64        `json:"shareAliasCount"`
	DirectChildrenCount int64        `json:"directChildrenCount"`
	Items               []*DriveItem `json:"items"`
	NumberOfItems       int64        `json:"numberOfItems"`
	Status              string       `json:"status"`
	Extension           string       `json:"extension,omitempty"`
	DateModified        time.Time    `json:"dateModified,omitempty"`
	DateChanged         time.Time    `json:"dateChanged,omitempty"`
	Size                int64        `json:"size,omitempty"`
	LastOpenTime        time.Time    `json:"lastOpenTime,omitempty"`
	Urls                struct {
		URLDownload string `json:"url_download"`
	} `json:"urls"`
}

DriveItem represents an item on iCloud.

func (*DriveItem) DownloadURL

func (d *DriveItem) DownloadURL() string

DownloadURL returns the download URL of the item.

func (*DriveItem) FullName

func (d *DriveItem) FullName() string

FullName returns the full name of the item. name + extension

func (*DriveItem) IsFolder

func (d *DriveItem) IsFolder() bool

IsFolder returns true if the item is a folder.

type DriveItemRaw

type DriveItemRaw struct {
	ItemID   string            `json:"item_id"`
	ItemInfo *DriveItemRawInfo `json:"item_info"`
}

DriveItemRaw is a raw drive item. not suure what to call this but there seems to be a "unified" and non "unified" drive item response. This is the non unified.

func (*DriveItemRaw) CreatedTime

func (d *DriveItemRaw) CreatedTime() time.Time

CreatedTime returns the creation time of the DriveItemRaw.

It parses the CreatedAt field of the ItemInfo struct and converts it to a time.Time value. If the parsing fails, it returns the zero value of time.Time. The returned time.Time

func (*DriveItemRaw) IntoDriveItem

func (d *DriveItemRaw) IntoDriveItem() *DriveItem

IntoDriveItem converts a DriveItemRaw into a DriveItem.

It takes no parameters. It returns a pointer to a DriveItem.

func (*DriveItemRaw) ModTime

func (d *DriveItemRaw) ModTime() time.Time

ModTime returns the modification time of the DriveItemRaw.

It parses the ModifiedAt field of the ItemInfo struct and converts it to a time.Time value. If the parsing fails, it returns the zero value of time.Time. The returned time.Time value represents the modification time of the DriveItemRaw.

func (*DriveItemRaw) SplitName

func (d *DriveItemRaw) SplitName() (string, string)

SplitName splits the name of a DriveItemRaw into its name and extension.

It returns the name and extension as separate strings. If the name ends with a dot, it means there is no extension, so an empty string is returned for the extension. If the name does not contain a dot, it means

type DriveItemRawInfo

type DriveItemRawInfo struct {
	Name string `json:"name"`
	// Extension is absolutely borked on endpoints so dont use it.
	Extension  string `json:"extension"`
	Size       int64  `json:"size,string"`
	Type       string `json:"type"`
	Version    string `json:"version"`
	ModifiedAt string `json:"modified_at"`
	CreatedAt  string `json:"created_at"`
	Urls       struct {
		URLDownload string `json:"url_download"`
	} `json:"urls"`
}

DriveItemRawInfo is the raw information about a drive item.

type DriveService

type DriveService struct {
	RootID string
	// contains filtered or unexported fields
}

DriveService represents an iCloud Drive service.

func NewDriveService

func NewDriveService(icloud *Client) (*DriveService, error)

NewDriveService creates a new DriveService instance.

func (*DriveService) CopyDocByItemID

func (d *DriveService) CopyDocByItemID(ctx context.Context, itemID string) (*DriveItemRaw, *http.Response, error)

CopyDocByItemID copies a document by its item ID.

func (*DriveService) CreateNewFolderByDriveID

func (d *DriveService) CreateNewFolderByDriveID(ctx context.Context, drivewsid, name string) (*DriveItem, *http.Response, error)

CreateNewFolderByDriveID creates a new folder by its Drive ID.

func (*DriveService) CreateNewFolderByItemID

func (d *DriveService) CreateNewFolderByItemID(ctx context.Context, id, name string) (*DriveItem, *http.Response, error)

CreateNewFolderByItemID creates a new folder by item ID.

func (*DriveService) CreateUpload

func (d *DriveService) CreateUpload(ctx context.Context, size int64, name string) (*UploadResponse, *http.Response, error)

CreateUpload creates an url for an upload.

func (*DriveService) DownloadFile

func (d *DriveService) DownloadFile(ctx context.Context, url string, opt []fs.OpenOption) (*http.Response, error)

DownloadFile downloads a file from the given URL using the provided options.

func (*DriveService) GetDocByItemID

func (d *DriveService) GetDocByItemID(ctx context.Context, id string) (*Document, *http.Response, error)

GetDocByItemID retrieves a document by its item ID.

func (*DriveService) GetDocByPath

func (d *DriveService) GetDocByPath(ctx context.Context, path string) (*Document, *http.Response, error)

GetDocByPath retrieves a document by its path.

func (*DriveService) GetDownloadURLByDriveID

func (d *DriveService) GetDownloadURLByDriveID(ctx context.Context, id string) (string, *http.Response, error)

GetDownloadURLByDriveID retrieves the download URL for a file in the DriveService.

func (*DriveService) GetItemByDriveID

func (d *DriveService) GetItemByDriveID(ctx context.Context, id string, includeChildren bool) (*DriveItem, *http.Response, error)

GetItemByDriveID retrieves a DriveItem by its Drive ID.

func (*DriveService) GetItemByPath

func (d *DriveService) GetItemByPath(ctx context.Context, path string) (*DriveItem, *http.Response, error)

GetItemByPath retrieves a DriveItem by its path.

func (*DriveService) GetItemRawByItemID

func (d *DriveService) GetItemRawByItemID(ctx context.Context, id string) (*DriveItemRaw, *http.Response, error)

GetItemRawByItemID retrieves a DriveItemRaw by its item ID.

func (*DriveService) GetItemsByDriveID

func (d *DriveService) GetItemsByDriveID(ctx context.Context, ids []string, includeChildren bool) ([]*DriveItem, *http.Response, error)

GetItemsByDriveID retrieves DriveItems by their Drive IDs.

func (*DriveService) GetItemsInFolder

func (d *DriveService) GetItemsInFolder(ctx context.Context, id string, limit int64) ([]*DriveItemRaw, *http.Response, error)

GetItemsInFolder retrieves a list of DriveItemRaw objects in a folder with the given ID.

func (*DriveService) MoveItemByDriveID

func (d *DriveService) MoveItemByDriveID(ctx context.Context, id, etag, dstID string, force bool) (*DriveItem, *http.Response, error)

MoveItemByDriveID moves an item by its drive ID.

func (*DriveService) MoveItemByItemID

func (d *DriveService) MoveItemByItemID(ctx context.Context, id, etag, dstID string, force bool) (*DriveItem, *http.Response, error)

MoveItemByItemID moves an item by its item ID to a destination item ID.

func (*DriveService) MoveItemToTrashByID

func (d *DriveService) MoveItemToTrashByID(ctx context.Context, drivewsid, etag string, force bool) (*DriveItem, *http.Response, error)

MoveItemToTrashByID moves an item to the trash based on the item ID.

func (*DriveService) MoveItemToTrashByItemID

func (d *DriveService) MoveItemToTrashByItemID(ctx context.Context, id, etag string, force bool) (*DriveItem, *http.Response, error)

MoveItemToTrashByItemID moves an item to the trash based on the item ID.

func (*DriveService) RenameItemByDriveID

func (d *DriveService) RenameItemByDriveID(ctx context.Context, id, etag, name string, force bool) (*DriveItem, *http.Response, error)

RenameItemByDriveID renames a DriveItem by its drive ID.

func (*DriveService) RenameItemByItemID

func (d *DriveService) RenameItemByItemID(ctx context.Context, id, etag, name string, force bool) (*DriveItem, *http.Response, error)

RenameItemByItemID renames a DriveItem by its item ID.

func (*DriveService) UpdateFile

func (d *DriveService) UpdateFile(ctx context.Context, r *UpdateFileInfo) (*DriveItem, *http.Response, error)

UpdateFile updates a file in the DriveService.

ctx: the context.Context object for the request. r: a pointer to the UpdateFileInfo struct containing the information for the file update. Returns a pointer to the DriveItem struct representing the updated file, the http.Response object, and an error if any.

func (*DriveService) Upload

func (d *DriveService) Upload(ctx context.Context, in io.Reader, size int64, name, uploadURL string) (*SingleFileResponse, *http.Response, error)

Upload uploads a file to the given url

type FileFlags

type FileFlags struct {
	IsExecutable bool `json:"is_executable"`
	IsHidden     bool `json:"is_hidden"`
	IsWritable   bool `json:"is_writable"`
}

FileFlags defines the file flags for a document.

type FileRequest

type FileRequest struct {
	DocumentID   string            `json:"document_id"`
	ItemID       string            `json:"item_id"`
	OwnerDsid    int64             `json:"owner_dsid"`
	DataToken    *FileRequestToken `json:"data_token,omitempty"`
	PackageToken *FileRequestToken `json:"package_token,omitempty"`
	DoubleEtag   string            `json:"double_etag"`
}

FileRequest represents the request of a file.

type FileRequestToken

type FileRequestToken struct {
	URL                string `json:"url"`
	Token              string `json:"token"`
	Signature          string `json:"signature"`
	WrappingKey        string `json:"wrapping_key"`
	ReferenceSignature string `json:"reference_signature"`
}

FileRequestToken represents the token of a file request.

type RequestError

type RequestError struct {
	Status string
	Text   string
}

RequestError holds info on a result state, icloud can return a 200 but the result is unknown

func (*RequestError) Error

func (e *RequestError) Error() string

Error satisfy the error interface.

type Session

type Session struct {
	SessionToken   string         `json:"session_token"`
	Scnt           string         `json:"scnt"`
	SessionID      string         `json:"session_id"`
	AccountCountry string         `json:"account_country"`
	TrustToken     string         `json:"trust_token"`
	ClientID       string         `json:"client_id"`
	Cookies        []*http.Cookie `json:"cookies"`
	AccountInfo    AccountInfo    `json:"account_info"`
	// contains filtered or unexported fields
}

Session represents an iCloud session

func NewSession

func NewSession() *Session

NewSession creates a new Session instance with default values.

func (*Session) AuthWithToken

func (s *Session) AuthWithToken(ctx context.Context) error

AuthWithToken authenticates the session

func (*Session) GetAuthHeaders

func (s *Session) GetAuthHeaders(overwrite map[string]string) map[string]string

GetAuthHeaders returns the authentication headers for the session.

It takes an `overwrite` map[string]string parameter which allows overwriting the default headers. It returns a map[string]string.

func (*Session) GetCookieString

func (s *Session) GetCookieString() string

GetCookieString returns the cookie header string for the session.

func (*Session) GetHeaders

func (s *Session) GetHeaders(overwrite map[string]string) map[string]string

GetHeaders Gets the authentication headers required for a request

func (*Session) Request

func (s *Session) Request(ctx context.Context, opts rest.Opts, request interface{}, response interface{}) (*http.Response, error)

Request makes a request

func (*Session) Requires2FA

func (s *Session) Requires2FA() bool

Requires2FA returns true if the session requires 2FA

func (*Session) SignIn

func (s *Session) SignIn(ctx context.Context, appleID, password string) error

SignIn signs in the session

func (*Session) TrustSession

func (s *Session) TrustSession(ctx context.Context) error

TrustSession trusts the session

func (*Session) Validate2FACode

func (s *Session) Validate2FACode(ctx context.Context, code string) error

Validate2FACode validates the 2FA code

func (*Session) ValidateSession

func (s *Session) ValidateSession(ctx context.Context) error

ValidateSession validates the session

type SingleFileInfo

type SingleFileInfo struct {
	ReferenceSignature string `json:"referenceChecksum"`
	Size               int64  `json:"size"`
	Signature          string `json:"fileChecksum"`
	WrappingKey        string `json:"wrappingKey"`
	Receipt            string `json:"receipt"`
}

SingleFileInfo represents the information of a single file.

type SingleFileResponse

type SingleFileResponse struct {
	SingleFile *SingleFileInfo `json:"singleFile"`
}

SingleFileResponse is the response of a single file request.

type UpdateFileInfo

type UpdateFileInfo struct {
	AllowConflict   bool   `json:"allow_conflict"`
	Btime           int64  `json:"btime"`
	Command         string `json:"command"`
	CreateShortGUID bool   `json:"create_short_guid"`
	Data            struct {
		Receipt            string `json:"receipt,omitempty"`
		ReferenceSignature string `json:"reference_signature,omitempty"`
		Signature          string `json:"signature,omitempty"`
		Size               int64  `json:"size,omitempty"`
		WrappingKey        string `json:"wrapping_key,omitempty"`
	} `json:"data,omitempty"`
	DocumentID string    `json:"document_id"`
	FileFlags  FileFlags `json:"file_flags"`
	Mtime      int64     `json:"mtime"`
	Path       struct {
		Path               string `json:"path"`
		StartingDocumentID string `json:"starting_document_id"`
	} `json:"path"`
}

UpdateFileInfo represents the information for an update to a file in the DriveService.

func NewUpdateFileInfo

func NewUpdateFileInfo() UpdateFileInfo

NewUpdateFileInfo creates a new UpdateFileInfo object with default values.

Returns an UpdateFileInfo object.

type UploadResponse

type UploadResponse struct {
	URL        string `json:"url"`
	DocumentID string `json:"document_id"`
}

UploadResponse is the response of an upload request.

type ValidateDataApp

type ValidateDataApp struct {
	CanLaunchWithOneFactor bool `json:"canLaunchWithOneFactor"`
	IsQualifiedForBeta     bool `json:"isQualifiedForBeta"`
}

ValidateDataApp represents an app

type ValidateDataDsInfo

type ValidateDataDsInfo struct {
	HsaVersion                         int           `json:"hsaVersion"`
	LastName                           string        `json:"lastName"`
	ICDPEnabled                        bool          `json:"iCDPEnabled"`
	TantorMigrated                     bool          `json:"tantorMigrated"`
	Dsid                               string        `json:"dsid"`
	HsaEnabled                         bool          `json:"hsaEnabled"`
	IsHideMyEmailSubscriptionActive    bool          `json:"isHideMyEmailSubscriptionActive"`
	IroncadeMigrated                   bool          `json:"ironcadeMigrated"`
	Locale                             string        `json:"locale"`
	BrZoneConsolidated                 bool          `json:"brZoneConsolidated"`
	ICDRSCapableDeviceList             string        `json:"ICDRSCapableDeviceList"`
	IsManagedAppleID                   bool          `json:"isManagedAppleID"`
	IsCustomDomainsFeatureAvailable    bool          `json:"isCustomDomainsFeatureAvailable"`
	IsHideMyEmailFeatureAvailable      bool          `json:"isHideMyEmailFeatureAvailable"`
	ContinueOnDeviceEligibleDeviceInfo []string      `json:"ContinueOnDeviceEligibleDeviceInfo"`
	Gilligvited                        bool          `json:"gilligvited"`
	AppleIDAliases                     []interface{} `json:"appleIdAliases"`
	UbiquityEOLEnabled                 bool          `json:"ubiquityEOLEnabled"`
	IsPaidDeveloper                    bool          `json:"isPaidDeveloper"`
	CountryCode                        string        `json:"countryCode"`
	NotificationID                     string        `json:"notificationId"`
	PrimaryEmailVerified               bool          `json:"primaryEmailVerified"`
	ADsID                              string        `json:"aDsID"`
	Locked                             bool          `json:"locked"`
	ICDRSCapableDeviceCount            int           `json:"ICDRSCapableDeviceCount"`
	HasICloudQualifyingDevice          bool          `json:"hasICloudQualifyingDevice"`
	PrimaryEmail                       string        `json:"primaryEmail"`
	AppleIDEntries                     []struct {
		IsPrimary bool   `json:"isPrimary"`
		Type      string `json:"type"`
		Value     string `json:"value"`
	} `json:"appleIdEntries"`
	GilliganEnabled    bool   `json:"gilligan-enabled"`
	IsWebAccessAllowed bool   `json:"isWebAccessAllowed"`
	FullName           string `json:"fullName"`
	MailFlags          struct {
		IsThreadingAvailable           bool `json:"isThreadingAvailable"`
		IsSearchV2Provisioned          bool `json:"isSearchV2Provisioned"`
		SCKMail                        bool `json:"sCKMail"`
		IsMppSupportedInCurrentCountry bool `json:"isMppSupportedInCurrentCountry"`
	} `json:"mailFlags"`
	LanguageCode         string `json:"languageCode"`
	AppleID              string `json:"appleId"`
	HasUnreleasedOS      bool   `json:"hasUnreleasedOS"`
	AnalyticsOptInStatus bool   `json:"analyticsOptInStatus"`
	FirstName            string `json:"firstName"`
	ICloudAppleIDAlias   string `json:"iCloudAppleIdAlias"`
	NotesMigrated        bool   `json:"notesMigrated"`
	BeneficiaryInfo      struct {
		IsBeneficiary bool `json:"isBeneficiary"`
	} `json:"beneficiaryInfo"`
	HasPaymentInfo bool   `json:"hasPaymentInfo"`
	PcsDelet       bool   `json:"pcsDelet"`
	AppleIDAlias   string `json:"appleIdAlias"`
	BrMigrated     bool   `json:"brMigrated"`
	StatusCode     int    `json:"statusCode"`
	FamilyEligible bool   `json:"familyEligible"`
}

ValidateDataDsInfo represents an validation info

Jump to

Keyboard shortcuts

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