{
  "id": "apple_bundle_id",
  "kind": "datatype",
  "status": "draft",
  "name": "Apple bundle ID",
  "doc": "Identifier of an app or other bundle on Apple platforms (iOS, iPadOS, macOS, tvOS, visionOS and watchOS), stored as CFBundleIdentifier in Info.plist. Apple allows only the letters A-Z and a-z, the digits 0-9, hyphens and periods, and compares bundle IDs without regard to case. Developers usually write it in reverse-DNS form (com.example.app). The system uses it to find apps and their preferences, it is part of the code signature and of the App ID (Team ID, a period and the bundle ID), and it cannot change after an upload to App Store Connect. The regexp also requires at least one period, as in reverse-DNS names.",
  "is_pii": false,
  "categories": [
    "software"
  ],
  "langs": [
    "common"
  ],
  "classification": "identifier",
  "regexp": "^[A-Za-z0-9-]+(?:\\.[A-Za-z0-9-]+)+$",
  "examples": [
    {
      "value": "com.example.apple-samplecode.ProfileExplainer",
      "description": "Bundle ID of the sample app in Apple TN3125",
      "valid": true
    },
    {
      "value": "com.example.apple-samplecode.AppWithTool",
      "description": "Bundle ID of the sample app in Apple TN3127",
      "valid": true
    },
    {
      "value": "com.example.my_app",
      "description": "Underscore is not allowed",
      "valid": false
    }
  ],
  "mappings": {
    "wikidata": "P7429"
  },
  "links": [
    {
      "type": "doc",
      "url": "https://developer.apple.com/documentation/bundleresources/information-property-list/cfbundleidentifier"
    },
    {
      "type": "wikidata",
      "url": "https://www.wikidata.org/wiki/Property:P7429"
    }
  ],
  "quality": {
    "score": 85,
    "missing": [
      "translation",
      "detector coverage"
    ]
  },
  "source": {
    "path": "data/datatypes/any/software/apple_bundle_id.yaml",
    "url": "https://github.com/apicrafter/metacrafter-registry/blob/main/data/datatypes/any/software/apple_bundle_id.yaml",
    "edit_url": "https://github.com/apicrafter/metacrafter-registry/edit/main/data/datatypes/any/software/apple_bundle_id.yaml"
  },
  "urls": {
    "html": "https://registry.apicrafter.io/datatype/apple_bundle_id",
    "json": "https://registry.apicrafter.io/api/v1/datatypes/apple_bundle_id.json"
  }
}