From 785cdcefd6da189f2809074d51c60430624e845f Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 12 Dec 2018 10:27:18 -0500 Subject: [PATCH] Closes #2671: Add documentation of API brief format --- docs/api/overview.md | 48 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/docs/api/overview.md b/docs/api/overview.md index 85d972008..1115759d8 100644 --- a/docs/api/overview.md +++ b/docs/api/overview.md @@ -104,7 +104,7 @@ The base serializer is used to represent the default view of a model. This inclu } ``` -Related objects (e.g. `ForeignKey` fields) are represented using a nested serializer. A nested serializer provides a minimal representation of an object, including only its URL and enough information to construct its name. When performing write api actions (`POST`, `PUT`, and `PATCH`), any `ForeignKey` relationships do not use the nested serializer, instead you will pass just the integer ID of the related model. +Related objects (e.g. `ForeignKey` fields) are represented using a nested serializer. A nested serializer provides a minimal representation of an object, including only its URL and enough information to construct its name. When performing write api actions (`POST`, `PUT`, and `PATCH`), any `ForeignKey` relationships do not use the nested serializer, instead you will pass just the integer ID of the related model. When a base serializer includes one or more nested serializers, the hierarchical structure precludes it from being used for write operations. Thus, a flat representation of an object may be provided using a writable serializer. This serializer includes only raw database values and is not typically used for retrieval, except as part of the response to the creation or updating of an object. @@ -122,6 +122,52 @@ When a base serializer includes one or more nested serializers, the hierarchical } ``` +## Brief Format + +Most API endpoints support an optional "brief" format, which returns only a minimal representation of each object in the response. This is useful when you need only a list of the objects themselves without any related data, such as when populating a drop-down list in a form. + +For example, the default (complete) format of an IP address looks like this: + +``` +GET /api/ipam/prefixes/13980/ + +{ + "id": 13980, + "family": 4, + "prefix": "192.0.2.0/24", + "site": null, + "vrf": null, + "tenant": null, + "vlan": null, + "status": { + "value": 1, + "label": "Active" + }, + "role": null, + "is_pool": false, + "description": "", + "tags": [], + "custom_fields": {}, + "created": "2018-12-11", + "last_updated": "2018-12-11T16:27:55.073174-05:00" +} +``` + +The brief format is much more terse, but includes a link to the object's full representation: + +``` +GET /api/ipam/prefixes/13980/?brief=1 + +{ + "id": 13980, + "url": "https://netbox/api/ipam/prefixes/13980/", + "family": 4, + "prefix": "192.0.2.0/24" +} +``` + +The brief format is supported for both lists and individual objects. + ## Static Choice Fields Some model fields, such as the `status` field in the above example, utilize static integers corresponding to static choices. The available choices can be retrieved from the read-only `_choices` endpoint within each app. A specific `model:field` tuple may optionally be specified in the URL.