{
"id": "app.ocho.plugin.defs",
"defs": {
"db": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The ID of the database."
}
}
},
"ios": {
"type": "object",
"properties": {
"supportsTablet": {
"type": "boolean",
"description": "Whether the app supports iPad."
}
}
},
"web": {
"type": "object",
"properties": {
"output": {
"enum": [
"static",
"server",
"single"
],
"type": "string",
"description": "The output directory for the web app."
},
"bundler": {
"enum": [
"webpack",
"metro"
],
"type": "string",
"description": "The bundler used for the web app."
},
"favicon": {
"type": "string",
"description": "The URL to the favicon for the web app."
},
"faviconBlob": {
"type": "blob"
}
}
},
"asset": {
"type": "object",
"required": [
"hash",
"blob",
"type"
],
"properties": {
"blob": {
"type": "blob",
"description": "The blob of the asset"
},
"hash": {
"type": "string",
"description": "The hash of the asset"
},
"type": {
"type": "string",
"description": "The type of the asset"
},
"updatedAt": {
"type": "string",
"format": "datetime",
"description": "The date and time when this asset was last updated. Used to reset the jetstream cache, among other things."
}
}
},
"expoGo": {
"type": "object",
"required": [
"developer"
],
"properties": {
"developer": {
"ref": "#developer",
"type": "ref",
"description": "Developer-specific configuration for the Expo Go app."
}
}
},
"plugin": {
"type": "array",
"items": {
"refs": [
"#stringId",
"#pluginConfig"
],
"type": "union"
}
},
"android": {
"type": "object",
"properties": {
"adaptiveIcon": {
"ref": "#adaptiveIcon",
"type": "ref",
"description": "Configuration for the adaptive icon on Android."
},
"edgeToEdgeEnabled": {
"type": "boolean",
"description": "Whether edge-to-edge mode is enabled for the app."
}
}
},
"manifest": {
"type": "object",
"required": [
"id",
"createdAt",
"runtimeVersion",
"launchAsset",
"metadata",
"extra"
],
"properties": {
"id": {
"type": "string",
"description": "The unique identifier for this plugin manifest."
},
"extra": {
"ref": "app.ocho.plugin.defs#manifestExtra",
"type": "ref",
"description": "Additional metadata for the plugin, including Expo client and Go configurations."
},
"metadata": {
"type": "unknown"
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "The date and time when this plugin manifest was created."
},
"launchAsset": {
"ref": "app.ocho.plugin.defs#launchAsset",
"type": "ref",
"description": "The launch asset for the plugin (the main javascipt bundle)."
},
"runtimeVersion": {
"type": "string",
"description": "The version of the Expo runtime this plugin is compatible with."
}
}
},
"stringId": {
"type": "string",
"description": "A string identifier for a plugin, used to reference it in the app."
},
"developer": {
"type": "object",
"required": [
"tool"
],
"properties": {
"tool": {
"type": "string",
"description": "The tool used for development, e.g., 'expo-cli'."
}
}
},
"expoClient": {
"type": "object",
"required": [
"name",
"slug"
],
"properties": {
"ios": {
"ref": "#ios",
"type": "ref",
"description": "ios-specific configuration for the app."
},
"web": {
"ref": "#web",
"type": "ref",
"description": "Web-specific configuration for the app."
},
"icon": {
"type": "string",
"description": "The URL to the app icon."
},
"name": {
"type": "string",
"description": "The name of the Expo client application."
},
"slug": {
"type": "string",
"description": "A URL-friendly identifier for the app."
},
"extra": {
"type": "unknown",
"description": "Additional configuration for the app."
},
"scheme": {
"type": "string",
"description": "The custom URI scheme for deep linking."
},
"android": {
"ref": "#android",
"type": "ref",
"description": "Android-specific configuration for the app."
},
"locales": {
"type": "unknown",
"description": "Localization settings for the app."
},
"plugins": {
"type": "unknown",
"description": "A list of plugins used by the app."
},
"version": {
"type": "string",
"description": "The version of the app."
},
"platforms": {
"type": "array",
"items": {
"enum": [
"ios",
"android",
"web"
],
"type": "string"
},
"description": "The platforms supported by the app."
},
"sdkVersion": {
"type": "string",
"description": "The SDK version of the Expo client."
},
"expirements": {
"type": "unknown",
"description": "Experimental features enabled for the app."
},
"orientation": {
"enum": [
"portrait",
"landscape",
"default"
],
"type": "string",
"description": "The default orientation of the app."
},
"newArchEnabled": {
"type": "boolean",
"description": "Whether the new architecture is enabled for the app."
},
"androidStatusBar": {
"ref": "#androidStatusBar",
"type": "ref",
"description": "Configuration for the Android status bar."
},
"userInterfaceStyle": {
"type": "string",
"description": "The default user interface style."
}
}
},
"launchAsset": {
"type": "object",
"required": [
"key",
"contentType",
"url"
],
"properties": {
"key": {
"type": "string",
"description": "The unique key for this asset, used to reference it in the plugin."
},
"url": {
"type": "string",
"format": "uri",
"description": "The URL where the asset can be accessed."
},
"contentType": {
"type": "string",
"description": "The MIME type of the asset, e.g., 'image/png'."
}
}
},
"adaptiveIcon": {
"type": "object",
"properties": {
"backgroundColor": {
"type": "string",
"description": "The background color of the adaptive icon."
},
"foregroundImage": {
"type": "string",
"description": "The URL to the foreground image of the adaptive icon."
},
"foregroundImageBlob": {
"type": "blob"
}
}
},
"pluginConfig": {
"type": "unknown",
"description": "Configuration object for a plugin, can be any valid JSON object."
},
"manifestExtra": {
"type": "object",
"required": [
"expoClient",
"expoGo"
],
"properties": {
"expoGo": {
"ref": "#expoGo",
"type": "ref"
},
"expoClient": {
"ref": "#expoClient",
"type": "ref"
}
}
},
"androidStatusBar": {
"type": "object",
"properties": {
"backgroundColor": {
"type": "string",
"description": "The background color of the Android status bar."
}
},
"description": "Android status bar configuration."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}