API interface changes when you move a device to "Product"

It would appear that devices (all?) need to be in “Product” buckets in order to switch to the new pricing system? At least it is not possible to switch without supplying Product IDs (?).

But we have just discovered that if you move a device into a product, the API for accessing data about the related SIM changes. Which seems odd. That is, things like:

    https://api.particle.io/v1/sims?iccid=foobar

start returning 403s and you have to change to:

    https://api.particle.io/v1/products/foo/sims?iccid=foobar

but that only works for devices that are in the product bin. Anyone know a workaround where you can just get SIM information, activate, deactivate, etc. without having to make different calls to different endpoints depending on what product bin your device is in?

The free plan does not require the use of a product, but there is a limit of 100 devices per account. This is a mix of cellular and Wi-Fi, so you can 100 SIMs if they are all cellular devices, otherwise there are fewer based on how many Wi-Fi devices you have in your account.

Once you exceed 100 devices you must move to a product. In this case, there is no way to keep the original activation URL, as you need to activate a product SIM using this product URL, which is how it knows which product you want to activate it in.

The product URLs work with all types of accounts, free, growth, and enterprise. So you can prototype with products in the free plan, then you exceed the number of devices (100), data operations, or cellular data limit you can migrate to the growth plan.

Once you are in a product, the product can move between free, growth, and enterprise with no changes, so the only change will be from going from developer to product. The product ID, API endpoints, and tokens remain with the product, not the type of account it’s in.