Recent changes to the App Store Connect API has broken the ability to set the IN_APP_PASS_PROVISIONING capability type

We have been using this API call to set the In-App Provisioning capability for 2+ years and it just recently started returning errors.

To set the In-App Provisioning capability we had been using the App Store Connect API directly: curl "https://api.appstoreconnect.apple.com/v1/bundleIdCapabilities" -X POST --header "Authorization: Bearer #{appleApiToken}" --header "Content-Type: application/json" -d '{"data": {"type": "bundleIdCapabilities", "attributes": {"capabilityType": " IN_APP_PASS_PROVISIONING"}, "relationships": {"bundleId": {"data": {"id": "#{appStoreBundleIdentifier}", "type": "bundleIds"}}}}}'

The IN_APP_PASS_PROVISIONING capability type is shown, by getting the bundle ID capabilities, when In-App Provisioning is set on a bundle ID: curl "https://api.appstoreconnect.apple.com/v1/bundleIds/#{appStoreBundleIdentifier}/bundleIdCapabilities" --header "Authorization: Bearer #{appleApiToken}"

After manually setting the In-App Provisioning capability via the Apple Developer portal you will see the new capabilityType: {     "type" : "bundleIdCapabilities",     "id" : "##########_IN_APP_PASS_PROVISIONING",     "attributes" : {       "settings" : null,       "capabilityType" : "IN_APP_PASS_PROVISIONING"     },     "relationships" : {       "bundleId" : {         "links" : {           "self" : "https://api.appstoreconnect.apple.com/v1/bundleIdCapabilities/##########_IN_APP_PASS_PROVISIONING/relationships/bundleId",           "related" : "https://api.appstoreconnect.apple.com/v1/bundleIdCapabilities/##########_IN_APP_PASS_PROVISIONING/bundleId"         }       }     },     "links" : {       "self" : "https://api.appstoreconnect.apple.com/v1/bundleIdCapabilities/##########_IN_APP_PASS_PROVISIONING"     }   }

The problem now is Apple has recently (within the last week) removed support for setting the IN_APP_PASS_PROVISIONING capability type via the bundleIdCapabilities API endpoint. {   "errors" : [ {     "id" : "c6644913-d1c5-4eda-9faa-7766adf25c39",     "status" : "409",     "code" : "ENTITY_ERROR.ATTRIBUTE.TYPE",     "title" : "An attribute in the provided entity has the wrong type",     "detail" : "'IN_APP_PASS_PROVISIONING' is not a valid value for the attribute 'capabilityType'. Expected one of: 'ICLOUD', 'IN_APP_PURCHASE', 'GAME_CENTER', 'PUSH_NOTIFICATIONS', 'WALLET', 'INTER_APP_AUDIO', 'MAPS', 'ASSOCIATED_DOMAINS', 'PERSONAL_VPN', 'APP_GROUPS', 'HEALTHKIT', 'HOMEKIT', 'WIRELESS_ACCESSORY_CONFIGURATION', 'APPLE_PAY', 'DATA_PROTECTION', 'SIRIKIT', 'NETWORK_EXTENSIONS', 'MULTIPATH', 'HOT_SPOT', 'NFC_TAG_READING', 'CLASSKIT', 'AUTOFILL_CREDENTIAL_PROVIDER', 'ACCESS_WIFI_INFORMATION', 'NETWORK_CUSTOM_PROTOCOL', 'COREMEDIA_HLS_LOW_LATENCY', 'SYSTEM_EXTENSION_INSTALL', 'USER_MANAGEMENT', 'APPLE_ID_AUTH'",     "source" : {       "pointer" : "/data/attributes/capabilityType"     }   } ] }

How do we set the In-App Provisioning (IN_APP_PASS_PROVISIONING) capability type via the Apple API on bundle IDs that have been approved by Wallet Entitlements?

Just helping everyone read the post above since it lacks formatting (formatted using gen AI):


Overview

We have been using this API call to set the In-App Provisioning capability for 2+ years, and it just recently started returning errors.

Previously Working Setup

To set the In-App Provisioning capability, we had been using the App Store Connect API directly:

curl "https://api.appstoreconnect.apple.com/v1/bundleIdCapabilities" \
  -X POST \
  --header "Authorization: Bearer #{appleApiToken}" \
  --header "Content-Type: application/json" \
  -d '{
    "data": {
      "type": "bundleIdCapabilities",
      "attributes": {
        "capabilityType": "IN_APP_PASS_PROVISIONING"
      },
      "relationships": {
        "bundleId": {
          "data": {
            "id": "#{appStoreBundleIdentifier}",
            "type": "bundleIds"
          }
        }
      }
    }
  }'

The IN_APP_PASS_PROVISIONING capability type is shown when retrieving the bundle ID capabilities, if In-App Provisioning is set on a bundle ID:

curl "https://api.appstoreconnect.apple.com/v1/bundleIds/#{appStoreBundleIdentifier}/bundleIdCapabilities" \
  --header "Authorization: Bearer #{appleApiToken}"

Example Response (after manual setup via the Developer Portal)

After manually setting the In-App Provisioning capability via the Apple Developer Portal, you'll see:

{
  "type": "bundleIdCapabilities",
  "id": "##########_IN_APP_PASS_PROVISIONING",
  "attributes": {
    "settings": null,
    "capabilityType": "IN_APP_PASS_PROVISIONING"
  },
  "relationships": {
    "bundleId": {
      "links": {
        "self": "https://api.appstoreconnect.apple.com/v1/bundleIdCapabilities/##########_IN_APP_PASS_PROVISIONING/relationships/bundleId",
        "related": "https://api.appstoreconnect.apple.com/v1/bundleIdCapabilities/##########_IN_APP_PASS_PROVISIONING/bundleId"
      }
    }
  },
  "links": {
    "self": "https://api.appstoreconnect.apple.com/v1/bundleIdCapabilities/##########_IN_APP_PASS_PROVISIONING"
  }
}

Current Issue

Apple has recently (within the last week) removed support for setting the IN_APP_PASS_PROVISIONING capability via the bundleIdCapabilities API endpoint.

Here’s the error returned:

{
  "errors": [
    {
      "id": "c6644913-d1c5-4eda-9faa-7766adf25c39",
      "status": "409",
      "code": "ENTITY_ERROR.ATTRIBUTE.TYPE",
      "title": "An attribute in the provided entity has the wrong type",
      "detail": "'IN_APP_PASS_PROVISIONING' is not a valid value for the attribute 'capabilityType'. Expected one of: 'ICLOUD', 'IN_APP_PURCHASE', 'GAME_CENTER', 'PUSH_NOTIFICATIONS', 'WALLET', 'INTER_APP_AUDIO', 'MAPS', 'ASSOCIATED_DOMAINS', 'PERSONAL_VPN', 'APP_GROUPS', 'HEALTHKIT', 'HOMEKIT', 'WIRELESS_ACCESSORY_CONFIGURATION', 'APPLE_PAY', 'DATA_PROTECTION', 'SIRIKIT', 'NETWORK_EXTENSIONS', 'MULTIPATH', 'HOT_SPOT', 'NFC_TAG_READING', 'CLASSKIT', 'AUTOFILL_CREDENTIAL_PROVIDER', 'ACCESS_WIFI_INFORMATION', 'NETWORK_CUSTOM_PROTOCOL', 'COREMEDIA_HLS_LOW_LATENCY', 'SYSTEM_EXTENSION_INSTALL', 'USER_MANAGEMENT', 'APPLE_ID_AUTH'",
      "source": {
        "pointer": "/data/attributes/capabilityType"
      }
    }
  ]
}

Question

How do we set the In-App Provisioning (IN_APP_PASS_PROVISIONING) capability type via the Apple API on bundle IDs that have been approved by Wallet Entitlements?

Recent changes to the App Store Connect API has broken the ability to set the IN_APP_PASS_PROVISIONING capability type
 
 
Q