play data-safety: PSL_SUPPORT_DATA_DELETION_BY_USER is the general 'can users request deletion?' question; a delete-account URL answers yes (with PSL_DATA_DELETION_URL), dataSafety.dataDeletion for apps without one; check flags a no next to a delete-account URL
This commit is contained in:
parent
e01a27d7b7
commit
dbd9f2973c
15 changed files with 95 additions and 66 deletions
|
|
@ -82,21 +82,22 @@ export interface DataUsage {
|
|||
export interface DataSafety {
|
||||
collectsData: boolean;
|
||||
encryptedInTransit: boolean;
|
||||
/**
|
||||
* @deprecated Not written any more: Play removed "Do you provide a way for users to request that their data is
|
||||
* deleted?" (PSL_DATA_COLLECTION_USER_REQUEST_DELETE) from the Data safety form. `check` notes it; remove it. With
|
||||
* accounts, Play asks partialDeletion instead.
|
||||
*/
|
||||
/** "Do you provide a way for users to request that their data is deleted?" under the form's old id; now written as
|
||||
* PSL_SUPPORT_DATA_DELETION_BY_USER (true = yes, false = no). dataDeletion and a delete-account URL take precedence. */
|
||||
deletionRequest?: boolean;
|
||||
/** Response ids for PSL_SUPPORTED_ACCOUNT_CREATION_METHODS. Default ["PSL_ACM_NONE"] (no accounts). */
|
||||
accountCreation?: string[];
|
||||
/**
|
||||
* Play "Do you provide a way for users to request that their data is deleted?" (PSL_SUPPORT_DATA_DELETION_BY_USER, a
|
||||
* single choice Play asks once accountCreation is not PSL_ACM_NONE): true = yes, people can request that some or all
|
||||
* of their data is deleted without deleting the account (DATA_DELETION_YES, plus partialDeletionUrl); false = no
|
||||
* (DATA_DELETION_NO); 'auto90' = no, but user data is automatically deleted within 90 days
|
||||
* (DATA_DELETION_NO_AUTO_DELETED). Only the owner knows the answer: leave it out and `check` /
|
||||
* `play data-safety --dry` say it is missing.
|
||||
* single choice Play asks once accountCreation is not PSL_ACM_NONE). It is the general question: a delete-account
|
||||
* page (accounts.deletionUrl) answers it with yes, and that is the default. 'no' / 'auto90' (no, but data is deleted
|
||||
* automatically within 90 days) only for an app without one.
|
||||
*/
|
||||
dataDeletion?: 'yes' | 'no' | 'auto90';
|
||||
/**
|
||||
* Whether people can delete some or all of their data without deleting the account. true: partialDeletionUrl (default
|
||||
* accounts.deletionUrl) is the "Delete data URL". false: the delete-account page is given as that URL. Older configs:
|
||||
* 'auto90' means dataDeletion 'auto90'.
|
||||
*/
|
||||
partialDeletion?: boolean | 'auto90';
|
||||
/** Web page for that data-only deletion (PSL_DATA_DELETION_URL, required when partialDeletion is true). Default:
|
||||
|
|
@ -911,6 +912,7 @@ export function validateConfig(c: unknown): string[] {
|
|||
if (u.shared && !u.share?.length) e.push(`dataSafety.data.${t}: shared, so it needs sharing purposes`);
|
||||
}
|
||||
if (cfg.dataSafety.partialDeletion !== undefined && typeof cfg.dataSafety.partialDeletion !== 'boolean' && cfg.dataSafety.partialDeletion !== 'auto90') e.push("dataSafety.partialDeletion: true | false | 'auto90'");
|
||||
if (cfg.dataSafety.dataDeletion !== undefined && !['yes', 'no', 'auto90'].includes(cfg.dataSafety.dataDeletion)) e.push("dataSafety.dataDeletion: 'yes' | 'no' | 'auto90'");
|
||||
if (cfg.dataSafety.partialDeletionUrl !== undefined && !URL_RE.test(cfg.dataSafety.partialDeletionUrl)) e.push('dataSafety.partialDeletionUrl: must be an https URL');
|
||||
for (const [i, x] of (cfg.dataSafety.extra ?? []).entries()) if (!/^[A-Z][A-Z0-9_:]+$/.test(x?.question ?? '') || typeof x.value !== 'string')
|
||||
e.push(`dataSafety.extra[${i}]: { question: "<PSL_... id from a Play Console export>", value: "..." }`);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue