Swagger API Spec indicate custom_fields as String instead of Object #1523

Closed
opened 2025-12-29 16:32:40 +01:00 by adam · 2 comments
Owner

Originally created by @dgarros on GitHub (Feb 1, 2018).

Issue type

[ ] Feature request
[X ] Bug report
[ ] Documentation

Environment

  • Python version: 3.6
  • NetBox version: 2.2.8

Description

I noticed that for all PUT, POST and PATCH API endpoints that support Custom_fields, the parameter custom_fields in the body is defined as a string instead of an object (AKA dict)

See below an example for POST /api/circuits/circuits/ captured from /api/docs/?format=openapi

    "/api/circuits/circuits/": {
      "post": {
        "tags": [
          "circuits"
        ],
        "consumes": [
          "application/json"
        ],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "parameters": [
          {
            "schema": {
              "required": [
                "cid",
                "provider",
                "type"
              ],
              "type": "object",
              "properties": {
                "description": {
                  "type": "string",
                  "description": ""
                },
                "commit_rate": {
                  "type": "integer",
                  "description": ""
                },
                "cid": {
                  "type": "string",
                  "description": ""
                },
                "install_date": {
                  "type": "string",
                  "description": ""
                },
                "comments": {
                  "type": "string",
                  "description": ""
                },
                "custom_fields": {
                  "type": "string",   <<<<<<<<<<<<<
                  "description": ""
                },
                "provider": {
                  "type": "string",
                  "description": ""
                },
                "type": {
                  "type": "string",
                  "description": ""
                },
                "tenant": {
                  "type": "string",
                  "description": ""
                }
              }
            },
            "name": "data",
            "in": "body"
          }
        ],
        "operationId": "circuits_circuits_create"
      }
    },

Here is the full list of path that have the issue as far as I can tell

/api/circuits/circuits/ (POST): 
/api/circuits/circuits/{id}/ (PUT): 
/api/circuits/circuits/{id}/ (PATCH): 
/api/circuits/providers/ (POST): 
/api/circuits/providers/{id}/ (PUT): 
/api/circuits/providers/{id}/ (PATCH): 
/api/dcim/device-types/ (POST): 
/api/dcim/device-types/{id}/ (PUT): 
/api/dcim/device-types/{id}/ (PATCH): 
/api/dcim/devices/ (POST): 
/api/dcim/devices/{id}/ (PUT): 
/api/dcim/devices/{id}/ (PATCH): 
/api/dcim/racks/ (POST): 
/api/dcim/racks/{id}/ (PUT): 
/api/dcim/racks/{id}/ (PATCH): 
/api/dcim/sites/ (POST): 
/api/dcim/sites/{id}/ (PUT): 
/api/dcim/sites/{id}/ (PATCH): 
/api/ipam/aggregates/ (POST): 
/api/ipam/aggregates/{id}/ (PUT): 
/api/ipam/aggregates/{id}/ (PATCH): 
/api/ipam/ip-addresses/ (POST): 
/api/ipam/ip-addresses/{id}/ (PUT): 
/api/ipam/ip-addresses/{id}/ (PATCH): 
/api/ipam/prefixes/ (POST): 
/api/ipam/prefixes/{id}/ (PUT): 
/api/ipam/prefixes/{id}/ (PATCH): 
/api/ipam/prefixes/{id}/available-ips/ (POST): 
/api/ipam/vlans/ (POST): 
/api/ipam/vlans/{id}/ (PUT): 
/api/ipam/vlans/{id}/ (PATCH): 
/api/ipam/vrfs/ (POST): 
/api/ipam/vrfs/{id}/ (PUT): 
/api/ipam/vrfs/{id}/ (PATCH): 
/api/tenancy/tenants/ (POST): 
/api/tenancy/tenants/{id}/ (PUT): 
/api/tenancy/tenants/{id}/ (PATCH): 
/api/virtualization/clusters/ (POST): 
/api/virtualization/clusters/{id}/ (PUT): 
/api/virtualization/clusters/{id}/ (PATCH): 
/api/virtualization/virtual-machines/ (POST): 
/api/virtualization/virtual-machines/{id}/ (PUT): 
/api/virtualization/virtual-machines/{id}/ (PATCH): 
Originally created by @dgarros on GitHub (Feb 1, 2018). ### Issue type [ ] Feature request <!-- An enhancement of existing functionality --> [X ] Bug report <!-- Unexpected or erroneous behavior --> [ ] Documentation <!-- A modification to the documentation --> ### Environment * Python version: 3.6 * NetBox version: 2.2.8 ### Description I noticed that for all PUT, POST and PATCH API endpoints that support Custom_fields, the parameter `custom_fields` in the body is defined as a `string` instead of an object (AKA dict) See below an example for `POST /api/circuits/circuits/` captured from `/api/docs/?format=openapi` ```json "/api/circuits/circuits/": { "post": { "tags": [ "circuits" ], "consumes": [ "application/json" ], "responses": { "201": { "description": "" } }, "parameters": [ { "schema": { "required": [ "cid", "provider", "type" ], "type": "object", "properties": { "description": { "type": "string", "description": "" }, "commit_rate": { "type": "integer", "description": "" }, "cid": { "type": "string", "description": "" }, "install_date": { "type": "string", "description": "" }, "comments": { "type": "string", "description": "" }, "custom_fields": { "type": "string", <<<<<<<<<<<<< "description": "" }, "provider": { "type": "string", "description": "" }, "type": { "type": "string", "description": "" }, "tenant": { "type": "string", "description": "" } } }, "name": "data", "in": "body" } ], "operationId": "circuits_circuits_create" } }, ``` Here is the full list of path that have the issue as far as I can tell ``` /api/circuits/circuits/ (POST): /api/circuits/circuits/{id}/ (PUT): /api/circuits/circuits/{id}/ (PATCH): /api/circuits/providers/ (POST): /api/circuits/providers/{id}/ (PUT): /api/circuits/providers/{id}/ (PATCH): /api/dcim/device-types/ (POST): /api/dcim/device-types/{id}/ (PUT): /api/dcim/device-types/{id}/ (PATCH): /api/dcim/devices/ (POST): /api/dcim/devices/{id}/ (PUT): /api/dcim/devices/{id}/ (PATCH): /api/dcim/racks/ (POST): /api/dcim/racks/{id}/ (PUT): /api/dcim/racks/{id}/ (PATCH): /api/dcim/sites/ (POST): /api/dcim/sites/{id}/ (PUT): /api/dcim/sites/{id}/ (PATCH): /api/ipam/aggregates/ (POST): /api/ipam/aggregates/{id}/ (PUT): /api/ipam/aggregates/{id}/ (PATCH): /api/ipam/ip-addresses/ (POST): /api/ipam/ip-addresses/{id}/ (PUT): /api/ipam/ip-addresses/{id}/ (PATCH): /api/ipam/prefixes/ (POST): /api/ipam/prefixes/{id}/ (PUT): /api/ipam/prefixes/{id}/ (PATCH): /api/ipam/prefixes/{id}/available-ips/ (POST): /api/ipam/vlans/ (POST): /api/ipam/vlans/{id}/ (PUT): /api/ipam/vlans/{id}/ (PATCH): /api/ipam/vrfs/ (POST): /api/ipam/vrfs/{id}/ (PUT): /api/ipam/vrfs/{id}/ (PATCH): /api/tenancy/tenants/ (POST): /api/tenancy/tenants/{id}/ (PUT): /api/tenancy/tenants/{id}/ (PATCH): /api/virtualization/clusters/ (POST): /api/virtualization/clusters/{id}/ (PUT): /api/virtualization/clusters/{id}/ (PATCH): /api/virtualization/virtual-machines/ (POST): /api/virtualization/virtual-machines/{id}/ (PUT): /api/virtualization/virtual-machines/{id}/ (PATCH): ```
adam closed this issue 2025-12-29 16:32:40 +01:00
Author
Owner

@jeremystretch commented on GitHub (Mar 22, 2018):

#1930 has been merged into develop. Can we confirm whether this issue has been resolved?

@jeremystretch commented on GitHub (Mar 22, 2018): #1930 has been merged into `develop`. Can we confirm whether this issue has been resolved?
Author
Owner

@bbock commented on GitHub (Apr 18, 2018):

I can confirm that with netbox 2.3.2, the swagger file contains custom_fields as object for the endpoint /api/circuits/circuits/ and not as string as described above.

IMO this bug is resolved.

@bbock commented on GitHub (Apr 18, 2018): I can confirm that with netbox 2.3.2, the swagger file contains `custom_fields` as object for the endpoint `/api/circuits/circuits/` and not as string as described above. IMO this bug is resolved.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#1523