Great question. I’m Jeff, a product manager at Particle. I want to break down my answers into two parts: what is possible right now, and what will be possible in the future.
So, first, what’s possible now. Currently, you can create customers through the API. There is no UI for the console to do this. Here is the API documentation to do this. Our architecture right now is set up in such a way that if you are using customers, we assume they will be setting the device up and “claiming” it. If you are not building a product like this, using customers might not make sense (in the way it’s currently implemented).
To your second question: Yes, unclaiming and reclaiming devices is possible on the console. You can do so on the devices page for your product:
You can send firmware updates on a per-customer basis, but what this would really look like is doing so on a device-by-device basis. You would first get a list of all the devices owned by a customer, then iterate through each one and call the firmware flash endpoint. However again, your use case sounds like it might not be suited for use of customers in the way we’re thinking about it right now.
OK, now let’s talk about long-term. What you seem to really be asking for is a way to divide your fleet into sub-groups, and access/manage those sub-groups separately. This is a feature that we are currently seriously considering internally, as more and more use cases for this are coming up. If I may, I’d love to think about how your problems could be solved if we had a feature like this. I’ll divide it up by your questions:
You could create one account per customer, and give that account access to a group of devices in your fleet. In your case, you could create one customer per enterprise, and associate all devices with the customer with a group. No claiming would need to happen, that customer would have access to the group of devices needed
At any time, you could add/remove devices from a group, so the customer would instantly gain or lose access to devices in the case of returns and refurbishments
Firmware could be released and delivered on a per-group basis, allowing you to divide up the fleet effectively and get the right firmware to the right customer
Now, this architecture is still very much being brainstormed/considered internally, and nothing is set in stone. However, how does that feel to you? Would something like this solve your problem?