Setting to Return Brief API Responses by Default #3471

Closed
opened 2025-12-29 18:29:23 +01:00 by adam · 1 comment
Owner

Originally created by @dstarner on GitHub (Mar 12, 2020).

Environment

  • Python version: 3.7
  • NetBox version: 2.7.10

Proposed Functionality

Implement a setting such as REST_FRAMEWORK['DEFAULT_TO_BRIEF_RESPONSE'] (or something named better that would default list/get endpoints to return the brief response (no config_context to details other than ID, name, slug).

REST_FRAMEWORK = {
    'DEFAULT_TO_BRIEF_RESPONSE': [True|False]
}

If this setting is False, then default to doing it as it happens now...Return the detailed response by default and pass brief=true for brevity.

If this setting is True, then default to returning the brief contents of the data and the caller must pass detail=True to get the full details.

Use Case

In many of our use cases, API callers just want to get a list of all known devices but don't need all of the detail that adds expensive overhead to compute. And due to brief and exclude not being in the Swagger documentation (see #4356) this means that a naive Swagger client is now sitting for a long period of time as unneeded data is computed. It would be nice to default to the brief view and have the client explicitly ask for the detailed view, as this fits most of our use cases.

Database Changes

None

External Dependencies

None

Originally created by @dstarner on GitHub (Mar 12, 2020). <!-- NOTE: IF YOUR ISSUE DOES NOT FOLLOW THIS TEMPLATE, IT WILL BE CLOSED. This form is only for proposing specific new features or enhancements. If you have a general idea or question, please post to our mailing list instead of opening an issue: https://groups.google.com/forum/#!forum/netbox-discuss NOTE: Due to an excessive backlog of feature requests, we are not currently accepting any proposals which significantly extend NetBox's feature scope. Please describe the environment in which you are running NetBox. Be sure that you are running an unmodified instance of the latest stable release before submitting a bug report. --> ### Environment * Python version: 3.7 * NetBox version: 2.7.10 <!-- Describe in detail the new functionality you are proposing. Include any specific changes to work flows, data models, or the user interface. --> ### Proposed Functionality Implement a setting such as `REST_FRAMEWORK['DEFAULT_TO_BRIEF_RESPONSE']` (or something named better that would default list/get endpoints to return the brief response (no config_context to details other than ID, name, slug). ```python REST_FRAMEWORK = { 'DEFAULT_TO_BRIEF_RESPONSE': [True|False] } ``` If this setting is `False`, then default to doing it as it happens now...Return the detailed response by default and pass `brief=true` for brevity. If this setting is `True`, then default to returning the brief contents of the data and the caller must pass `detail=True` to get the full details. <!-- Convey an example use case for your proposed feature. Write from the perspective of a NetBox user who would benefit from the proposed functionality and describe how. ---> ### Use Case In many of our use cases, API callers just want to get a list of all known devices but don't need all of the detail that adds expensive overhead to compute. And due to `brief` and `exclude` not being in the Swagger documentation (see #4356) this means that a naive Swagger client is now sitting for a long period of time as unneeded data is computed. It would be nice to default to the brief view and have the client explicitly ask for the detailed view, as this fits most of our use cases. <!-- Note any changes to the database schema necessary to support the new feature. For example, does the proposal require adding a new model or field? (Not all new features require database changes.) ---> ### Database Changes None <!-- List any new dependencies on external libraries or services that this new feature would introduce. For example, does the proposal require the installation of a new Python package? (Not all new features introduce new dependencies.) --> ### External Dependencies None
adam closed this issue 2025-12-29 18:29:23 +01:00
Author
Owner

@jeremystretch commented on GitHub (Mar 12, 2020):

One of the core tenets of an API is to be consistent, and this would lead to inconsistency. Given that the client already has the option of passing brief as a request parameter, I do not see value in this.

@jeremystretch commented on GitHub (Mar 12, 2020): One of the core tenets of an API is to be consistent, and this would lead to inconsistency. Given that the client already has the option of passing `brief` as a request parameter, I do not see value in this.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#3471