On Mon, 7 Aug 2023 09:18:51 +0000 (1 day, 3 hours, 16 minutes ago) Håvard Ose Nordstrand havard.o.nordstrand@ntnu.no wrote:
Hi! We're using a Python script to import devices from a Cisco DNA inventory, but I can't seem to find a way to set a device group for the devices through the API. I'm using PATCH with the "/api/1/netbox/{netbox_id}/" endpoint, but as far as I can understand from the source code, it only supports certain special attributes like "organizationid", "roomid" etc. and not arbitrary device attributes.
The endpoint should support modification of all Netbox attributes that aren't reserved for internal use by NAV.
Is this implemented?
No, as device groups aren't an attribute of the Netbox model. Device groups (or rather, `NetboxGroup`, as the model is named internally) have a many-to-many relationship with the `Netbox` model, but the `netbox` API endpoint provides the meta-attribute `groups` that is an auto-generated/computed read-only attribute.
If not, would it be easy for me to implement a new API endpoint attribute for this or would this tie into a lot of other things?
The API currently lacks an endpoint for manipulating even groups themselves. `netboxgroup` would be the natural name for an endpoint dealing with the groups themselves. Implementing this should be rather straightforward and standalone.
The question is what would be the best way to manipulate actual memberships through the API. IMHO, there are at least two ways to go about it:
1. Add a new endpoint to manipulate the `NetboxCategory` model (the M2M intermediary table that maps memberships in groups) directly.
or
2. Alter the `netbox` endpoint to handle patch operations on the computed `groups` attribute. Conversely, the `netboxgroup` endpoint should be implemented and have a similarly writable `netboxes` field in its API to list the members of each group.
None of this should have any impact on the API version as long as existing formats and operations are changed in a non-compatible way.