requiredReasonApis top-level property
Apple's required-reason API categories, checked by PrivacyManifestAudit.
Implementation
final List<RequiredReasonApi> requiredReasonApis = [
RequiredReasonApi(
category: 'NSPrivacyAccessedAPICategoryFileTimestamp',
displayName: 'File timestamp',
pattern: RegExp(
r'\bNSFile(?:Creation|Modification)Date\b'
r'|\bfileModificationDate\b'
r'|\b(?:contentModification|creation)DateKey\b'
r'|\bf?getattrlist(?:bulk|at)?\s*\('
r'|\b[fl]?stat(?:at)?\s*\(',
),
validReasons: {'DDA9.1', 'C617.1', '3B52.1', '0A2A.1'},
),
RequiredReasonApi(
category: 'NSPrivacyAccessedAPICategorySystemBootTime',
displayName: 'System boot time',
pattern: RegExp(r'\bsystemUptime\b|\bmach_absolute_time\s*\('),
validReasons: {'35F9.1', '8FFB.1', '3D61.1'},
),
RequiredReasonApi(
category: 'NSPrivacyAccessedAPICategoryDiskSpace',
displayName: 'Disk space',
pattern: RegExp(
r'\bvolume(?:AvailableCapacity(?:ForImportantUsage|ForOpportunisticUsage)?|TotalCapacity)Key\b'
r'|\bNSFileSystem(?:Free)?Size\b'
r'|\bsystem(?:Free)?Size\b'
r'|\bf?statv?fs\s*\(',
),
validReasons: {'85F4.1', 'E174.1', '7D9E.1', 'B728.1'},
),
RequiredReasonApi(
category: 'NSPrivacyAccessedAPICategoryActiveKeyboards',
displayName: 'Active keyboards',
pattern: RegExp(r'\bactiveInputModes\b'),
validReasons: {'3EC4.1', '54BD.1'},
),
RequiredReasonApi(
category: 'NSPrivacyAccessedAPICategoryUserDefaults',
displayName: 'User defaults',
pattern: RegExp(r'\b(?:NS)?UserDefaults\b'),
validReasons: {'CA92.1', '1C8F.1', 'C56D.1', 'AC6B.1'},
),
];