Raw schema
{
"type": "object",
"properties": {
"inventory": {
"type": "object",
"properties": {
"app_name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"developer_name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Legal name that appears in the policies, usually the company or the individual developer."
},
"support_email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Public contact address for privacy and deletion requests."
},
"platforms": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"enum": [
"ios",
"android",
"web"
]
}
},
"has_user_accounts": {
"type": "boolean",
"description": "True if users can sign up or log in."
},
"account_deletion_in_app": {
"description": "True if the app already lets users delete their account from inside the app.",
"type": [
"boolean",
"null"
]
},
"data_collected": {
"default": [],
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Kind of data, e.g. \"email\", \"precise location\", \"photos\", \"purchase history\"."
},
"purpose": {
"type": "string",
"description": "Why it is collected, e.g. \"account login\", \"analytics\"."
},
"shared_with": {
"description": "Third parties that receive this data.",
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
}
},
"required": [
"type",
"purpose"
]
}
},
"third_party_sdks": {
"default": [],
"description": "SDKs found in the dependencies, e.g. \"Firebase Analytics\", \"RevenueCat\", \"Sentry\".",
"type": "array",
"items": {
"type": "string"
}
},
"google_oauth_scopes": {
"default": [],
"description": "Full Google OAuth scope URLs the app requests, if it uses Sign in with Google or Google APIs.",
"type": "array",
"items": {
"type": "string"
}
},
"privacy_policy_url": {
"description": "Existing privacy policy URL, if any.",
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
},
"account_deletion_url": {
"description": "Existing public page where users can request account deletion, if any.",
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
},
"takes_payments": {
"type": [
"boolean",
"null"
]
},
"auth_providers": {
"default": [],
"description": "How users sign in, e.g. \"Sign in with Apple\", \"Google\", \"email and password\", \"Supabase Auth\".",
"type": "array",
"items": {
"type": "string"
}
},
"permissions": {
"default": [],
"description": "iOS usage-description keys and Android permissions the app declares, e.g. NSCameraUsageDescription, android.permission.READ_CONTACTS.",
"type": "array",
"items": {
"type": "string"
}
},
"bundle_ids": {
"description": "iOS bundle identifier and Android application id.",
"anyOf": [
{
"type": "object",
"properties": {
"ios": {
"type": [
"string",
"null"
]
},
"android": {
"type": [
"string",
"null"
]
}
}
},
{
"type": "null"
}
]
},
"stack": {
"description": "How the app is built. Expo config plugins add permission strings automatically, so some checks differ.",
"anyOf": [
{
"type": "string",
"enum": [
"expo",
"react-native",
"flutter",
"ios",
"android",
"web"
]
},
{
"type": "null"
}
]
},
"android_target_sdk": {
"description": "targetSdkVersion from build.gradle, if known.",
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"play_developer_account": {
"description": "Google Play account type: personal created after 2023-11-13 (closed-testing requirement applies), personal created before, or organization. Ask the user.",
"anyOf": [
{
"type": "string",
"enum": [
"personal-new",
"personal-old",
"organization"
]
},
{
"type": "null"
}
]
}
},
"required": [
"app_name",
"developer_name",
"support_email",
"platforms",
"has_user_accounts"
]
},
"app_token": {
"description": "The app_token returned by audit_app. It is stored in .approvekit.json at the project root. Omit on the first audit of an app.",
"type": "string"
}
},
"required": [
"inventory"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}