Documentation ¶
Overview ¶
Package api provides functionality for interacting with the iCloud API.
Index ¶
- func ConstructDriveID(id string, zone string, t string) string
- func DeconstructDriveID(id string) (docType, zone, docid string)
- func GetCommonHeaders(overwrite map[string]string) map[string]string
- func GetContentTypeForFile(name string) string
- func GetCookiesForDomain(url *url.URL, cookies []*http.Cookie) ([]*http.Cookie, error)
- func GetDocIDFromDriveID(id string) string
- func IntoReader(values any) (*bytes.Reader, error)
- func MergeCookies(left []*http.Cookie, right []*http.Cookie) ([]*http.Cookie, error)
- type AccountInfo
- type Client
- func (c *Client) Authenticate(ctx context.Context) error
- func (c *Client) DriveService() (*DriveService, error)
- func (c *Client) Request(ctx context.Context, opts rest.Opts, request interface{}, response interface{}) (resp *http.Response, err error)
- func (c *Client) RequestNoReAuth(ctx context.Context, opts rest.Opts, request interface{}, response interface{}) (resp *http.Response, err error)
- func (c *Client) SignIn(ctx context.Context) error
- type CreateFoldersResponse
- type Document
- type DocumentData
- type DocumentUpdateResponse
- type DriveItem
- type DriveItemRaw
- type DriveItemRawInfo
- type DriveService
- func (d *DriveService) CopyDocByItemID(ctx context.Context, itemID string) (*DriveItemRaw, *http.Response, error)
- func (d *DriveService) CreateNewFolderByDriveID(ctx context.Context, drivewsid, name string) (*DriveItem, *http.Response, error)
- func (d *DriveService) CreateNewFolderByItemID(ctx context.Context, id, name string) (*DriveItem, *http.Response, error)
- func (d *DriveService) CreateUpload(ctx context.Context, size int64, name string) (*UploadResponse, *http.Response, error)
- func (d *DriveService) DownloadFile(ctx context.Context, url string, opt []fs.OpenOption) (*http.Response, error)
- func (d *DriveService) GetDocByItemID(ctx context.Context, id string) (*Document, *http.Response, error)
- func (d *DriveService) GetDocByPath(ctx context.Context, path string) (*Document, *http.Response, error)
- func (d *DriveService) GetDownloadURLByDriveID(ctx context.Context, id string) (string, *http.Response, error)
- func (d *DriveService) GetItemByDriveID(ctx context.Context, id string, includeChildren bool) (*DriveItem, *http.Response, error)
- func (d *DriveService) GetItemByPath(ctx context.Context, path string) (*DriveItem, *http.Response, error)
- func (d *DriveService) GetItemRawByItemID(ctx context.Context, id string) (*DriveItemRaw, *http.Response, error)
- func (d *DriveService) GetItemsByDriveID(ctx context.Context, ids []string, includeChildren bool) ([]*DriveItem, *http.Response, error)
- func (d *DriveService) GetItemsInFolder(ctx context.Context, id string, limit int64) ([]*DriveItemRaw, *http.Response, error)
- func (d *DriveService) MoveItemByDriveID(ctx context.Context, id, etag, dstID string, force bool) (*DriveItem, *http.Response, error)
- func (d *DriveService) MoveItemByItemID(ctx context.Context, id, etag, dstID string, force bool) (*DriveItem, *http.Response, error)
- func (d *DriveService) MoveItemToTrashByID(ctx context.Context, drivewsid, etag string, force bool) (*DriveItem, *http.Response, error)
- func (d *DriveService) MoveItemToTrashByItemID(ctx context.Context, id, etag string, force bool) (*DriveItem, *http.Response, error)
- func (d *DriveService) RenameItemByDriveID(ctx context.Context, id, etag, name string, force bool) (*DriveItem, *http.Response, error)
- func (d *DriveService) RenameItemByItemID(ctx context.Context, id, etag, name string, force bool) (*DriveItem, *http.Response, error)
- func (d *DriveService) UpdateFile(ctx context.Context, r *UpdateFileInfo) (*DriveItem, *http.Response, error)
- func (d *DriveService) Upload(ctx context.Context, in io.Reader, size int64, name, uploadURL string) (*SingleFileResponse, *http.Response, error)
- type FileFlags
- type FileRequest
- type FileRequestToken
- type RequestError
- type Session
- func (s *Session) AuthWithToken(ctx context.Context) error
- func (s *Session) GetAuthHeaders(overwrite map[string]string) map[string]string
- func (s *Session) GetCookieString() string
- func (s *Session) GetHeaders(overwrite map[string]string) map[string]string
- func (s *Session) Request(ctx context.Context, opts rest.Opts, request interface{}, response interface{}) (*http.Response, error)
- func (s *Session) Requires2FA() bool
- func (s *Session) SignIn(ctx context.Context, appleID, password string) error
- func (s *Session) TrustSession(ctx context.Context) error
- func (s *Session) Validate2FACode(ctx context.Context, code string) error
- func (s *Session) ValidateSession(ctx context.Context) error
- type SingleFileInfo
- type SingleFileResponse
- type UpdateFileInfo
- type UploadResponse
- type ValidateDataApp
- type ValidateDataDsInfo
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ConstructDriveID ¶
ConstructDriveID constructs a drive ID from the given components.
func DeconstructDriveID ¶
DeconstructDriveID returns the document type, zone, and document ID from the drive ID.
func GetCommonHeaders ¶
GetCommonHeaders generates common HTTP headers with optional overwrite.
func GetContentTypeForFile ¶
GetContentTypeForFile detects content type for given file name.
func GetCookiesForDomain ¶
GetCookiesForDomain filters the provided cookies based on the domain of the given URL.
func GetDocIDFromDriveID ¶
GetDocIDFromDriveID returns the DocumentID from the drive ID.
func IntoReader ¶
IntoReader marshals the provided values into a JSON encoded reader
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 ¶
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.
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.
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"` 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 ¶
DownloadURL returns the download URL of the item.
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.
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 ¶
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 ¶
AuthWithToken authenticates the session
func (*Session) GetAuthHeaders ¶
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 ¶
GetCookieString returns the cookie header string for the session.
func (*Session) GetHeaders ¶
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 ¶
Requires2FA returns true if the session requires 2FA
func (*Session) TrustSession ¶
TrustSession trusts the session
func (*Session) Validate2FACode ¶
Validate2FACode validates the 2FA code
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 ¶
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