nautobot 2.2.9__py3-none-any.whl → 2.3.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of nautobot might be problematic. Click here for more details.

Files changed (697) hide show
  1. nautobot/apps/forms.py +4 -0
  2. nautobot/apps/models.py +10 -1
  3. nautobot/circuits/__init__.py +0 -1
  4. nautobot/circuits/apps.py +1 -0
  5. nautobot/circuits/factory.py +15 -3
  6. nautobot/circuits/filters.py +13 -0
  7. nautobot/circuits/forms.py +13 -0
  8. nautobot/circuits/migrations/0021_alter_circuit_status_alter_circuittermination__path.py +32 -0
  9. nautobot/circuits/migrations/0022_circuittermination_cloud_network.py +25 -0
  10. nautobot/circuits/models.py +16 -3
  11. nautobot/circuits/tables.py +16 -2
  12. nautobot/circuits/templates/circuits/circuittermination_create.html +10 -2
  13. nautobot/circuits/templates/circuits/circuittermination_retrieve.html +6 -0
  14. nautobot/circuits/templates/circuits/inc/circuit_termination.html +6 -1
  15. nautobot/circuits/tests/test_api.py +7 -5
  16. nautobot/circuits/tests/test_filters.py +12 -5
  17. nautobot/circuits/tests/test_models.py +33 -2
  18. nautobot/circuits/views.py +2 -3
  19. nautobot/cloud/__init__.py +0 -0
  20. nautobot/cloud/api/__init__.py +0 -0
  21. nautobot/cloud/api/serializers.py +54 -0
  22. nautobot/cloud/api/urls.py +16 -0
  23. nautobot/cloud/api/views.py +48 -0
  24. nautobot/cloud/apps.py +13 -0
  25. nautobot/cloud/factory.py +113 -0
  26. nautobot/cloud/filters.py +187 -0
  27. nautobot/cloud/forms.py +339 -0
  28. nautobot/cloud/homepage.py +43 -0
  29. nautobot/cloud/migrations/0001_initial.py +304 -0
  30. nautobot/cloud/migrations/__init__.py +0 -0
  31. nautobot/cloud/models.py +246 -0
  32. nautobot/cloud/navigation.py +85 -0
  33. nautobot/cloud/tables.py +157 -0
  34. nautobot/cloud/templates/cloud/cloudaccount_retrieve.html +43 -0
  35. nautobot/cloud/templates/cloud/cloudnetwork_retrieve.html +122 -0
  36. nautobot/cloud/templates/cloud/cloudnetwork_update.html +33 -0
  37. nautobot/cloud/templates/cloud/cloudresourcetype_retrieve.html +111 -0
  38. nautobot/cloud/templates/cloud/cloudservice_retrieve.html +69 -0
  39. nautobot/cloud/templates/cloud/cloudservice_update.html +25 -0
  40. nautobot/cloud/tests/__init__.py +0 -0
  41. nautobot/cloud/tests/test_api.py +248 -0
  42. nautobot/cloud/tests/test_filters.py +125 -0
  43. nautobot/cloud/tests/test_models.py +43 -0
  44. nautobot/cloud/tests/test_views.py +153 -0
  45. nautobot/cloud/urls.py +14 -0
  46. nautobot/cloud/views.py +181 -0
  47. nautobot/core/__init__.py +0 -3
  48. nautobot/core/api/metadata.py +1 -0
  49. nautobot/core/api/parsers.py +7 -1
  50. nautobot/core/api/urls.py +1 -0
  51. nautobot/core/api/utils.py +1 -0
  52. nautobot/core/api/views.py +4 -0
  53. nautobot/core/apps/__init__.py +6 -3
  54. nautobot/core/constants.py +8 -0
  55. nautobot/core/factory.py +32 -1
  56. nautobot/core/filters.py +95 -13
  57. nautobot/core/forms/fields.py +10 -4
  58. nautobot/core/forms/forms.py +11 -3
  59. nautobot/core/forms/widgets.py +18 -1
  60. nautobot/core/graphql/schema.py +26 -4
  61. nautobot/core/jobs/__init__.py +16 -2
  62. nautobot/core/jobs/cleanup.py +100 -0
  63. nautobot/core/jobs/groups.py +38 -0
  64. nautobot/core/management/commands/generate_test_data.py +116 -3
  65. nautobot/core/models/__init__.py +34 -9
  66. nautobot/core/models/generics.py +19 -3
  67. nautobot/core/models/name_color_content_types.py +7 -28
  68. nautobot/core/models/querysets.py +4 -3
  69. nautobot/core/models/tree_queries.py +1 -1
  70. nautobot/core/models/utils.py +21 -5
  71. nautobot/core/settings.py +2 -17
  72. nautobot/core/settings.yaml +34 -13
  73. nautobot/core/settings_funcs.py +103 -0
  74. nautobot/core/tables.py +130 -56
  75. nautobot/core/templates/admin/search_form.html +1 -1
  76. nautobot/core/templates/buttons/add.html +11 -3
  77. nautobot/core/templates/buttons/consolidated_bulk_action_buttons.html +13 -0
  78. nautobot/core/templates/buttons/consolidated_detail_view_action_buttons.html +13 -0
  79. nautobot/core/templates/buttons/export.html +101 -53
  80. nautobot/core/templates/buttons/job_import.html +11 -3
  81. nautobot/core/templates/generic/object_bulk_destroy.html +3 -1
  82. nautobot/core/templates/generic/object_bulk_update.html +3 -1
  83. nautobot/core/templates/generic/object_changelog.html +0 -9
  84. nautobot/core/templates/generic/object_list.html +156 -17
  85. nautobot/core/templates/generic/object_retrieve.html +80 -16
  86. nautobot/core/templates/inc/extras_features_edit_form_fields.html +8 -0
  87. nautobot/core/templates/inc/javascript.html +2 -0
  88. nautobot/core/templates/inc/media.html +2 -2
  89. nautobot/core/templates/inc/nav_menu.html +1 -0
  90. nautobot/core/templates/inc/paginator.html +7 -7
  91. nautobot/core/templates/inc/search_panel.html +2 -2
  92. nautobot/core/templates/inc/table.html +2 -2
  93. nautobot/core/templates/nautobot_config.py.j2 +13 -8
  94. nautobot/core/templates/utilities/templatetags/dynamic_group_assignment_modal.html +37 -0
  95. nautobot/core/templates/utilities/templatetags/filter_form_modal.html +2 -2
  96. nautobot/core/templates/utilities/templatetags/saved_view_modal.html +38 -0
  97. nautobot/core/templates/utilities/theme_preview.html +25 -8
  98. nautobot/core/templates/utilities/worker_status.html +152 -0
  99. nautobot/core/templatetags/buttons.py +335 -38
  100. nautobot/core/templatetags/form_helpers.py +1 -1
  101. nautobot/core/templatetags/helpers.py +181 -11
  102. nautobot/core/testing/api.py +5 -4
  103. nautobot/core/testing/filters.py +63 -14
  104. nautobot/core/testing/mixins.py +46 -0
  105. nautobot/core/testing/models.py +22 -0
  106. nautobot/core/testing/schema.py +4 -8
  107. nautobot/core/testing/views.py +31 -14
  108. nautobot/core/tests/integration/test_import_objects_ui.py +1 -0
  109. nautobot/core/tests/integration/test_swagger.py +1 -1
  110. nautobot/core/tests/nautobot_config.py +0 -1
  111. nautobot/core/tests/runner.py +2 -2
  112. nautobot/core/tests/test_api.py +1 -0
  113. nautobot/core/tests/test_authentication.py +7 -2
  114. nautobot/core/tests/test_filters.py +11 -9
  115. nautobot/core/tests/test_forms.py +9 -0
  116. nautobot/core/tests/test_graphql.py +27 -16
  117. nautobot/core/tests/test_jobs.py +122 -0
  118. nautobot/core/tests/test_tables.py +3 -1
  119. nautobot/core/tests/test_templatetags_helpers.py +12 -5
  120. nautobot/core/tests/test_utils.py +31 -20
  121. nautobot/core/tests/test_views.py +6 -6
  122. nautobot/core/urls.py +8 -3
  123. nautobot/core/utils/deprecation.py +29 -0
  124. nautobot/core/utils/filtering.py +12 -9
  125. nautobot/core/utils/lookup.py +37 -2
  126. nautobot/core/utils/requests.py +4 -1
  127. nautobot/core/views/__init__.py +137 -24
  128. nautobot/core/views/generic.py +119 -67
  129. nautobot/core/views/mixins.py +105 -36
  130. nautobot/core/views/paginator.py +9 -3
  131. nautobot/core/views/renderers.py +121 -56
  132. nautobot/core/views/utils.py +81 -1
  133. nautobot/dcim/__init__.py +0 -1
  134. nautobot/dcim/api/serializers.py +180 -44
  135. nautobot/dcim/api/urls.py +7 -3
  136. nautobot/dcim/api/views.py +53 -7
  137. nautobot/dcim/apps.py +3 -0
  138. nautobot/dcim/choices.py +25 -0
  139. nautobot/dcim/constants.py +7 -0
  140. nautobot/dcim/factory.py +252 -18
  141. nautobot/dcim/filters/__init__.py +373 -193
  142. nautobot/dcim/filters/mixins.py +274 -1
  143. nautobot/dcim/forms.py +834 -121
  144. nautobot/dcim/graphql/types.py +2 -2
  145. nautobot/dcim/homepage.py +1 -1
  146. nautobot/dcim/migrations/0059_add_role_field_to_interface_models.py +27 -0
  147. nautobot/dcim/migrations/0060_alter_cable_status_alter_consoleport__path_and_more.py +303 -0
  148. nautobot/dcim/migrations/0061_module_models.py +862 -0
  149. nautobot/dcim/migrations/0062_module_data_migration.py +25 -0
  150. nautobot/dcim/models/__init__.py +8 -0
  151. nautobot/dcim/models/cables.py +15 -0
  152. nautobot/dcim/models/device_component_templates.py +207 -53
  153. nautobot/dcim/models/device_components.py +275 -99
  154. nautobot/dcim/models/devices.py +468 -13
  155. nautobot/dcim/models/racks.py +0 -1
  156. nautobot/dcim/navigation.py +47 -0
  157. nautobot/dcim/signals.py +3 -3
  158. nautobot/dcim/tables/__init__.py +35 -23
  159. nautobot/dcim/tables/devices.py +229 -43
  160. nautobot/dcim/tables/devicetypes.py +65 -9
  161. nautobot/dcim/tables/racks.py +5 -1
  162. nautobot/dcim/tables/template_code.py +46 -26
  163. nautobot/dcim/templates/dcim/cable_connect.html +76 -3
  164. nautobot/dcim/templates/dcim/console_port_connection_list.html +7 -5
  165. nautobot/dcim/templates/dcim/device/base.html +14 -6
  166. nautobot/dcim/templates/dcim/device/consoleports.html +2 -3
  167. nautobot/dcim/templates/dcim/device/consoleserverports.html +2 -3
  168. nautobot/dcim/templates/dcim/device/devicebays.html +6 -7
  169. nautobot/dcim/templates/dcim/device/frontports.html +2 -3
  170. nautobot/dcim/templates/dcim/device/interfaces.html +2 -3
  171. nautobot/dcim/templates/dcim/device/inventory.html +2 -3
  172. nautobot/dcim/templates/dcim/device/modulebays.html +49 -0
  173. nautobot/dcim/templates/dcim/device/poweroutlets.html +2 -3
  174. nautobot/dcim/templates/dcim/device/powerports.html +2 -3
  175. nautobot/dcim/templates/dcim/device/rearports.html +2 -3
  176. nautobot/dcim/templates/dcim/device.html +45 -1
  177. nautobot/dcim/templates/dcim/device_component.html +13 -5
  178. nautobot/dcim/templates/dcim/device_list.html +2 -1
  179. nautobot/dcim/templates/dcim/devicetype.html +99 -98
  180. nautobot/dcim/templates/dcim/devicetype_list.html +8 -16
  181. nautobot/dcim/templates/dcim/inc/devicetype_component_table.html +1 -1
  182. nautobot/dcim/templates/dcim/inc/moduletype_component_table.html +39 -0
  183. nautobot/dcim/templates/dcim/interface.html +17 -2
  184. nautobot/dcim/templates/dcim/interface_connection_list.html +7 -5
  185. nautobot/dcim/templates/dcim/interface_edit.html +1 -0
  186. nautobot/dcim/templates/dcim/manufacturer.html +24 -0
  187. nautobot/dcim/templates/dcim/module/base.html +97 -0
  188. nautobot/dcim/templates/dcim/module_bulk_destroy.html +5 -0
  189. nautobot/dcim/templates/dcim/module_consoleports.html +53 -0
  190. nautobot/dcim/templates/dcim/module_consoleserverports.html +53 -0
  191. nautobot/dcim/templates/dcim/module_destroy.html +5 -0
  192. nautobot/dcim/templates/dcim/module_frontports.html +53 -0
  193. nautobot/dcim/templates/dcim/module_interfaces.html +57 -0
  194. nautobot/dcim/templates/dcim/module_list.html +20 -0
  195. nautobot/dcim/templates/dcim/module_modulebays.html +49 -0
  196. nautobot/dcim/templates/dcim/module_poweroutlets.html +53 -0
  197. nautobot/dcim/templates/dcim/module_powerports.html +53 -0
  198. nautobot/dcim/templates/dcim/module_rearports.html +53 -0
  199. nautobot/dcim/templates/dcim/module_retrieve.html +63 -0
  200. nautobot/dcim/templates/dcim/module_update.html +71 -0
  201. nautobot/dcim/templates/dcim/modulebay_bulk_destroy.html +5 -0
  202. nautobot/dcim/templates/dcim/modulebay_destroy.html +8 -0
  203. nautobot/dcim/templates/dcim/modulebay_retrieve.html +101 -0
  204. nautobot/dcim/templates/dcim/moduletype_list.html +11 -0
  205. nautobot/dcim/templates/dcim/moduletype_retrieve.html +159 -0
  206. nautobot/dcim/templates/dcim/power_port_connection_list.html +7 -5
  207. nautobot/dcim/templates/dcim/softwareimagefile_retrieve.html +65 -19
  208. nautobot/dcim/tests/integration/test_cable_connect_form.py +4 -4
  209. nautobot/dcim/tests/test_api.py +693 -208
  210. nautobot/dcim/tests/test_filters.py +843 -217
  211. nautobot/dcim/tests/test_models.py +1072 -8
  212. nautobot/dcim/tests/test_views.py +1510 -341
  213. nautobot/dcim/urls.py +17 -2
  214. nautobot/dcim/utils.py +2 -3
  215. nautobot/dcim/views.py +1106 -116
  216. nautobot/extras/__init__.py +0 -1
  217. nautobot/extras/api/serializers.py +115 -3
  218. nautobot/extras/api/urls.py +12 -0
  219. nautobot/extras/api/views.py +66 -0
  220. nautobot/extras/apps.py +2 -2
  221. nautobot/extras/choices.py +43 -0
  222. nautobot/extras/context_managers.py +13 -8
  223. nautobot/extras/datasources/git.py +2 -0
  224. nautobot/extras/factory.py +460 -9
  225. nautobot/extras/filters/__init__.py +174 -3
  226. nautobot/extras/filters/mixins.py +46 -43
  227. nautobot/extras/forms/base.py +24 -5
  228. nautobot/extras/forms/forms.py +227 -8
  229. nautobot/extras/forms/mixins.py +93 -0
  230. nautobot/extras/graphql/types.py +23 -10
  231. nautobot/extras/homepage.py +14 -1
  232. nautobot/extras/management/__init__.py +1 -0
  233. nautobot/extras/management/commands/refresh_dynamic_group_member_caches.py +1 -16
  234. nautobot/extras/migrations/0021_customfield_changelog_data.py +1 -0
  235. nautobot/extras/migrations/0109_dynamicgroup_group_type_dynamicgroup_tags_and_more.py +108 -0
  236. nautobot/extras/migrations/0110_alter_configcontext_cluster_groups_and_more.py +111 -0
  237. nautobot/extras/migrations/0111_metadata.py +162 -0
  238. nautobot/extras/migrations/0112_dynamic_group_group_type_data_migration.py +28 -0
  239. nautobot/extras/migrations/0113_saved_views.py +77 -0
  240. nautobot/extras/models/__init__.py +15 -1
  241. nautobot/extras/models/change_logging.py +3 -3
  242. nautobot/extras/models/contacts.py +4 -0
  243. nautobot/extras/models/customfields.py +18 -3
  244. nautobot/extras/models/groups.py +389 -225
  245. nautobot/extras/models/jobs.py +6 -3
  246. nautobot/extras/models/metadata.py +441 -0
  247. nautobot/extras/models/mixins.py +72 -62
  248. nautobot/extras/models/models.py +118 -9
  249. nautobot/extras/models/relationships.py +9 -2
  250. nautobot/extras/models/tags.py +13 -2
  251. nautobot/extras/navigation.py +57 -0
  252. nautobot/extras/plugins/__init__.py +3 -1
  253. nautobot/extras/querysets.py +30 -66
  254. nautobot/extras/signals.py +95 -100
  255. nautobot/extras/tables.py +165 -12
  256. nautobot/extras/templates/extras/dynamicgroup.html +44 -15
  257. nautobot/extras/templates/extras/dynamicgroup_edit.html +2 -0
  258. nautobot/extras/templates/extras/job.html +1 -1
  259. nautobot/extras/templates/extras/jobresult.html +61 -74
  260. nautobot/extras/templates/extras/metadatatype_create.html +89 -0
  261. nautobot/extras/templates/extras/metadatatype_retrieve.html +67 -0
  262. nautobot/extras/templates/extras/object_dynamicgroups.html +7 -0
  263. nautobot/extras/templates/extras/objectchange_list.html +0 -12
  264. nautobot/extras/templates/extras/plugins_list.html +1 -3
  265. nautobot/extras/templates/extras/role_retrieve.html +48 -0
  266. nautobot/extras/templates/extras/staticgroupassociation_retrieve.html +20 -0
  267. nautobot/extras/tests/integration/test_customfields.py +1 -0
  268. nautobot/extras/tests/test_api.py +509 -23
  269. nautobot/extras/tests/test_changelog.py +20 -9
  270. nautobot/extras/tests/test_context_managers.py +22 -15
  271. nautobot/extras/tests/test_datasources.py +13 -1
  272. nautobot/extras/tests/test_dynamicgroups.py +201 -171
  273. nautobot/extras/tests/test_filters.py +211 -12
  274. nautobot/extras/tests/test_jobs.py +6 -6
  275. nautobot/extras/tests/test_models.py +501 -4
  276. nautobot/extras/tests/test_relationships.py +1 -0
  277. nautobot/extras/tests/test_views.py +565 -8
  278. nautobot/extras/tests/test_webhooks.py +1 -1
  279. nautobot/extras/urls.py +5 -0
  280. nautobot/extras/utils.py +51 -11
  281. nautobot/extras/views.py +542 -76
  282. nautobot/ipam/__init__.py +0 -1
  283. nautobot/ipam/apps.py +1 -0
  284. nautobot/ipam/factory.py +17 -19
  285. nautobot/ipam/filters.py +13 -0
  286. nautobot/ipam/forms.py +8 -4
  287. nautobot/ipam/graphql/types.py +2 -2
  288. nautobot/ipam/migrations/0047_alter_ipaddress_role_alter_ipaddress_status_and_more.py +59 -0
  289. nautobot/ipam/models.py +11 -8
  290. nautobot/ipam/querysets.py +1 -1
  291. nautobot/ipam/signals.py +4 -2
  292. nautobot/ipam/tables.py +5 -0
  293. nautobot/ipam/templates/ipam/ipaddress_interfaces.html +1 -1
  294. nautobot/ipam/templates/ipam/ipaddress_vm_interfaces.html +1 -1
  295. nautobot/ipam/templates/ipam/prefix.html +1 -0
  296. nautobot/ipam/tests/test_api.py +37 -18
  297. nautobot/ipam/tests/test_filters.py +26 -2
  298. nautobot/ipam/tests/test_models.py +6 -0
  299. nautobot/ipam/tests/test_querysets.py +1 -1
  300. nautobot/ipam/tests/test_views.py +3 -2
  301. nautobot/ipam/urls.py +2 -2
  302. nautobot/ipam/views.py +18 -26
  303. nautobot/project-static/css/base.css +20 -0
  304. nautobot/project-static/css/dark.css +11 -0
  305. nautobot/project-static/docs/404.html +892 -88
  306. nautobot/project-static/docs/apps/index.html +892 -88
  307. nautobot/project-static/docs/apps/nautobot-apps.html +892 -88
  308. nautobot/project-static/docs/assets/_mkdocstrings.css +5 -0
  309. nautobot/project-static/docs/assets/stylesheets/main.3cba04c6.min.css +1 -0
  310. nautobot/project-static/docs/assets/stylesheets/main.3cba04c6.min.css.map +1 -0
  311. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +919 -120
  312. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +904 -101
  313. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +1618 -903
  314. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +935 -144
  315. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +977 -188
  316. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +901 -99
  317. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +897 -93
  318. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +991 -193
  319. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +974 -131
  320. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +1078 -272
  321. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +1242 -334
  322. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +1727 -875
  323. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +1164 -381
  324. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +2088 -1374
  325. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +2246 -1422
  326. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +912 -111
  327. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +963 -163
  328. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +1010 -223
  329. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +1913 -1277
  330. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +1846 -1102
  331. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +904 -101
  332. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +2331 -1699
  333. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +1802 -1024
  334. nautobot/project-static/docs/development/apps/api/configuration-view.html +892 -88
  335. nautobot/project-static/docs/development/apps/api/database-backend-config.html +892 -88
  336. nautobot/project-static/docs/development/apps/api/models/django-admin.html +892 -88
  337. nautobot/project-static/docs/development/apps/api/models/global-search.html +892 -88
  338. nautobot/project-static/docs/development/apps/api/models/graphql.html +892 -88
  339. nautobot/project-static/docs/development/apps/api/models/index.html +942 -90
  340. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +892 -88
  341. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +892 -88
  342. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +892 -88
  343. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +892 -88
  344. nautobot/project-static/docs/development/apps/api/platform-features/index.html +892 -88
  345. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +892 -88
  346. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +892 -88
  347. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +892 -88
  348. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +892 -88
  349. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +892 -88
  350. nautobot/project-static/docs/development/apps/api/prometheus.html +892 -88
  351. nautobot/project-static/docs/development/apps/api/setup.html +892 -88
  352. nautobot/project-static/docs/development/apps/api/testing.html +892 -88
  353. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +892 -88
  354. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +892 -88
  355. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +892 -88
  356. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +892 -88
  357. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +892 -88
  358. nautobot/project-static/docs/development/apps/api/views/base-template.html +892 -88
  359. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +892 -88
  360. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +892 -88
  361. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +892 -88
  362. nautobot/project-static/docs/development/apps/api/views/index.html +892 -88
  363. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +892 -88
  364. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +892 -88
  365. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +892 -88
  366. nautobot/project-static/docs/development/apps/api/views/notes.html +892 -88
  367. nautobot/project-static/docs/development/apps/api/views/rest-api.html +892 -88
  368. nautobot/project-static/docs/development/apps/api/views/urls.html +892 -88
  369. nautobot/project-static/docs/development/apps/index.html +892 -88
  370. nautobot/project-static/docs/development/apps/migration/code-updates.html +892 -88
  371. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +892 -88
  372. nautobot/project-static/docs/development/apps/migration/from-v1.html +892 -88
  373. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +892 -88
  374. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +892 -88
  375. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +892 -88
  376. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +892 -88
  377. nautobot/project-static/docs/development/apps/porting-from-netbox.html +892 -88
  378. nautobot/project-static/docs/development/core/application-registry.html +892 -88
  379. nautobot/project-static/docs/development/core/best-practices.html +893 -88
  380. nautobot/project-static/docs/development/core/bootstrap-ui.html +892 -88
  381. nautobot/project-static/docs/development/core/caching.html +892 -88
  382. nautobot/project-static/docs/development/core/controllers.html +892 -88
  383. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +892 -88
  384. nautobot/project-static/docs/development/core/generic-views.html +892 -88
  385. nautobot/project-static/docs/development/core/getting-started.html +892 -88
  386. nautobot/project-static/docs/development/core/homepage.html +892 -88
  387. nautobot/project-static/docs/development/core/index.html +892 -88
  388. nautobot/project-static/docs/development/core/model-checklist.html +901 -89
  389. nautobot/project-static/docs/development/core/model-features.html +892 -88
  390. nautobot/project-static/docs/development/core/natural-keys.html +892 -88
  391. nautobot/project-static/docs/development/core/navigation-menu.html +892 -88
  392. nautobot/project-static/docs/development/core/release-checklist.html +895 -91
  393. nautobot/project-static/docs/development/core/role-internals.html +892 -88
  394. nautobot/project-static/docs/development/core/settings.html +892 -88
  395. nautobot/project-static/docs/development/core/style-guide.html +893 -89
  396. nautobot/project-static/docs/development/core/templates.html +904 -89
  397. nautobot/project-static/docs/development/core/testing.html +892 -88
  398. nautobot/project-static/docs/development/core/user-preferences.html +892 -88
  399. nautobot/project-static/docs/development/index.html +892 -88
  400. nautobot/project-static/docs/development/jobs/index.html +893 -89
  401. nautobot/project-static/docs/development/jobs/migration/from-v1.html +892 -88
  402. nautobot/project-static/docs/index.html +892 -88
  403. nautobot/project-static/docs/media/models/cloud_aws_direct_connect_dark.png +0 -0
  404. nautobot/project-static/docs/media/models/cloud_aws_direct_connect_light.png +0 -0
  405. nautobot/project-static/docs/models/cloud/cloudaccount.html +15 -0
  406. nautobot/project-static/docs/models/cloud/cloudnetwork.html +15 -0
  407. nautobot/project-static/docs/models/cloud/cloudnetworkprefixassignment.html +15 -0
  408. nautobot/project-static/docs/models/cloud/cloudresourcetype.html +15 -0
  409. nautobot/project-static/docs/models/cloud/cloudservice.html +15 -0
  410. nautobot/project-static/docs/models/cloud/cloudservicenetworkassignment.html +15 -0
  411. nautobot/project-static/docs/models/dcim/module.html +15 -0
  412. nautobot/project-static/docs/models/dcim/modulebay.html +15 -0
  413. nautobot/project-static/docs/models/dcim/modulebaytemplate.html +15 -0
  414. nautobot/project-static/docs/models/dcim/moduletype.html +15 -0
  415. nautobot/project-static/docs/models/extras/metadatachoice.html +15 -0
  416. nautobot/project-static/docs/models/extras/metadatatype.html +15 -0
  417. nautobot/project-static/docs/models/extras/objectmetadata.html +15 -0
  418. nautobot/project-static/docs/models/extras/role.html +15 -0
  419. nautobot/project-static/docs/models/extras/savedview.html +15 -0
  420. nautobot/project-static/docs/models/extras/staticgroupassociation.html +15 -0
  421. nautobot/project-static/docs/models/extras/status.html +15 -0
  422. nautobot/project-static/docs/objects.inv +0 -0
  423. nautobot/project-static/docs/overview/application_stack.html +900 -89
  424. nautobot/project-static/docs/overview/design_philosophy.html +892 -88
  425. nautobot/project-static/docs/release-notes/index.html +1129 -92
  426. nautobot/project-static/docs/release-notes/version-1.0.html +892 -88
  427. nautobot/project-static/docs/release-notes/version-1.1.html +892 -88
  428. nautobot/project-static/docs/release-notes/version-1.2.html +892 -88
  429. nautobot/project-static/docs/release-notes/version-1.3.html +892 -88
  430. nautobot/project-static/docs/release-notes/version-1.4.html +892 -88
  431. nautobot/project-static/docs/release-notes/version-1.5.html +893 -89
  432. nautobot/project-static/docs/release-notes/version-1.6.html +893 -89
  433. nautobot/project-static/docs/release-notes/version-2.0.html +892 -88
  434. nautobot/project-static/docs/release-notes/version-2.1.html +892 -88
  435. nautobot/project-static/docs/release-notes/version-2.2.html +895 -91
  436. nautobot/project-static/docs/release-notes/version-2.3.html +9954 -0
  437. nautobot/project-static/docs/requirements.txt +5 -5
  438. nautobot/project-static/docs/search/search_index.json +1 -1
  439. nautobot/project-static/docs/sitemap.xml +331 -256
  440. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  441. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +892 -88
  442. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +892 -88
  443. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +892 -88
  444. nautobot/project-static/docs/user-guide/administration/configuration/index.html +892 -88
  445. nautobot/project-static/docs/user-guide/administration/configuration/optional-settings.html +992 -174
  446. nautobot/project-static/docs/user-guide/administration/configuration/required-settings.html +892 -88
  447. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +892 -88
  448. nautobot/project-static/docs/user-guide/administration/guides/caching.html +892 -88
  449. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +896 -88
  450. nautobot/project-static/docs/user-guide/administration/guides/healthcheck.html +892 -88
  451. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +892 -88
  452. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +892 -88
  453. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +892 -88
  454. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +892 -88
  455. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +892 -88
  456. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +892 -88
  457. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +892 -88
  458. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +944 -153
  459. nautobot/project-static/docs/user-guide/administration/installation/index.html +901 -93
  460. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +934 -122
  461. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +954 -157
  462. nautobot/project-static/docs/user-guide/administration/installation/services.html +913 -112
  463. nautobot/project-static/docs/user-guide/administration/installation-extras/docker.html +908 -99
  464. nautobot/project-static/docs/user-guide/administration/installation-extras/health-checks.html +892 -88
  465. nautobot/project-static/docs/user-guide/administration/installation-extras/selinux-troubleshooting.html +892 -88
  466. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +892 -88
  467. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +892 -88
  468. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +893 -89
  469. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +892 -88
  470. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +892 -88
  471. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +892 -88
  472. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +892 -88
  473. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +892 -88
  474. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +892 -88
  475. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +892 -88
  476. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +892 -88
  477. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +892 -88
  478. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +892 -88
  479. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +892 -88
  480. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +893 -89
  481. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +892 -88
  482. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +896 -88
  483. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +895 -91
  484. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +8984 -0
  485. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +8828 -0
  486. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +8829 -0
  487. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +8828 -0
  488. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +8829 -0
  489. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +8833 -0
  490. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +8828 -0
  491. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +906 -102
  492. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +923 -105
  493. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +923 -105
  494. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +918 -100
  495. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +923 -105
  496. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +906 -102
  497. nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +906 -102
  498. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +913 -105
  499. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +920 -116
  500. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +921 -117
  501. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +918 -114
  502. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +906 -102
  503. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +914 -105
  504. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +926 -108
  505. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +936 -118
  506. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +928 -106
  507. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +906 -102
  508. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +937 -119
  509. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +928 -110
  510. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +918 -114
  511. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +921 -117
  512. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +923 -115
  513. nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +8828 -0
  514. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +8846 -0
  515. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +8843 -0
  516. nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +8823 -0
  517. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +916 -112
  518. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +906 -102
  519. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +940 -83
  520. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +924 -106
  521. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +906 -102
  522. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +943 -86
  523. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +921 -103
  524. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +929 -125
  525. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +918 -114
  526. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +906 -102
  527. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +922 -104
  528. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +924 -106
  529. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +906 -102
  530. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +906 -102
  531. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +906 -102
  532. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +936 -88
  533. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +892 -88
  534. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +897 -89
  535. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +897 -89
  536. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +892 -88
  537. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +892 -88
  538. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +892 -88
  539. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +892 -88
  540. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +892 -88
  541. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +892 -88
  542. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +892 -88
  543. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +892 -88
  544. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +892 -88
  545. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +892 -88
  546. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +901 -96
  547. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +892 -88
  548. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +892 -88
  549. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +892 -88
  550. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +892 -88
  551. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +892 -88
  552. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +897 -89
  553. nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +892 -88
  554. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +892 -88
  555. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +892 -88
  556. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +892 -88
  557. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +892 -88
  558. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +892 -88
  559. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +892 -88
  560. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +892 -88
  561. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +892 -88
  562. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +892 -88
  563. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +892 -88
  564. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +892 -88
  565. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +892 -88
  566. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/clear-view-button.png +0 -0
  567. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/cleared-view.png +0 -0
  568. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/config-table-columns-to-locations.png +0 -0
  569. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/configure-button.png +0 -0
  570. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/create-saved-view-success.png +0 -0
  571. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/current-saved-view-drop-down-menu.png +0 -0
  572. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/default-location-list-view.png +0 -0
  573. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/dropdown-button-after-new-saved-view.png +0 -0
  574. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/filter-application-to-locations.png +0 -0
  575. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/filter-button.png +0 -0
  576. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/global-default-location-list-view.png +0 -0
  577. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/location-list-view-with-saved-views.png +0 -0
  578. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/navigation-menu.png +0 -0
  579. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/save-as-new-view-drop-down.png +0 -0
  580. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/save-view-modal.png +0 -0
  581. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-admin-edit-buttons.png +0 -0
  582. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-admin-edit-success.png +0 -0
  583. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-admin-edit-view-unchecked.png +0 -0
  584. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-admin-edit-view.png +0 -0
  585. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-different-user.png +0 -0
  586. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-modal-unchecked.png +0 -0
  587. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/set-as-my-default-button.png +0 -0
  588. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/set-as-my-default-success.png +0 -0
  589. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/unsaved-saved-view.png +0 -0
  590. nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/updated-saved-view.png +0 -0
  591. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +892 -88
  592. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +892 -88
  593. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +892 -88
  594. nautobot/project-static/docs/user-guide/index.html +892 -88
  595. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +892 -88
  596. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +892 -88
  597. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +892 -88
  598. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +892 -88
  599. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +1258 -785
  600. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +895 -91
  601. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +892 -88
  602. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +892 -88
  603. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +892 -88
  604. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +892 -88
  605. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +892 -88
  606. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +892 -88
  607. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +892 -88
  608. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +892 -88
  609. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +892 -88
  610. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +896 -88
  611. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +892 -88
  612. nautobot/project-static/docs/user-guide/platform-functionality/note.html +895 -91
  613. nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +9061 -0
  614. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +895 -91
  615. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +892 -88
  616. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +892 -88
  617. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +892 -88
  618. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +892 -88
  619. nautobot/project-static/docs/user-guide/platform-functionality/role.html +895 -91
  620. nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +9137 -0
  621. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +895 -91
  622. nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +8933 -0
  623. nautobot/project-static/docs/user-guide/platform-functionality/status.html +892 -88
  624. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +892 -88
  625. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +950 -121
  626. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +892 -88
  627. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +892 -88
  628. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +892 -88
  629. nautobot/project-static/js/forms.js +71 -0
  630. nautobot/project-static/js/table_sorting_indicator.js +46 -0
  631. nautobot/project-static/js/tableconfig.js +6 -1
  632. nautobot/project-static/materialdesignicons-7.4.47/css/materialdesignicons.min.css +3 -0
  633. nautobot/project-static/{materialdesignicons-6.5.95 → materialdesignicons-7.4.47}/fonts/materialdesignicons-webfont.eot +0 -0
  634. nautobot/project-static/{materialdesignicons-6.5.95 → materialdesignicons-7.4.47}/fonts/materialdesignicons-webfont.ttf +0 -0
  635. nautobot/project-static/materialdesignicons-7.4.47/fonts/materialdesignicons-webfont.woff +0 -0
  636. nautobot/project-static/materialdesignicons-7.4.47/fonts/materialdesignicons-webfont.woff2 +0 -0
  637. nautobot/tenancy/__init__.py +0 -1
  638. nautobot/tenancy/apps.py +1 -0
  639. nautobot/tenancy/factory.py +3 -2
  640. nautobot/tenancy/filters/__init__.py +1 -0
  641. nautobot/tenancy/forms.py +1 -1
  642. nautobot/tenancy/templates/tenancy/tenant.html +24 -20
  643. nautobot/tenancy/views.py +11 -10
  644. nautobot/users/__init__.py +0 -1
  645. nautobot/users/api/serializers.py +1 -1
  646. nautobot/users/api/views.py +4 -2
  647. nautobot/users/apps.py +3 -2
  648. nautobot/users/factory.py +3 -3
  649. nautobot/users/migrations/0010_user_default_saved_views.py +20 -0
  650. nautobot/users/models.py +12 -0
  651. nautobot/users/tests/test_filters.py +6 -3
  652. nautobot/users/urls.py +8 -0
  653. nautobot/virtualization/__init__.py +0 -1
  654. nautobot/virtualization/apps.py +1 -0
  655. nautobot/virtualization/filters.py +6 -1
  656. nautobot/virtualization/forms.py +11 -3
  657. nautobot/virtualization/graphql/types.py +2 -2
  658. nautobot/virtualization/migrations/0029_add_role_field_to_interface_models.py +27 -0
  659. nautobot/virtualization/migrations/0030_alter_virtualmachine_local_config_context_data_owner_content_type_and_more.py +67 -0
  660. nautobot/virtualization/models.py +0 -2
  661. nautobot/virtualization/tables.py +10 -3
  662. nautobot/virtualization/templates/virtualization/virtualmachine.html +1 -1
  663. nautobot/virtualization/templates/virtualization/vminterface.html +7 -1
  664. nautobot/virtualization/templates/virtualization/vminterface_edit.html +1 -0
  665. nautobot/virtualization/tests/test_api.py +9 -4
  666. nautobot/virtualization/tests/test_filters.py +22 -0
  667. nautobot/virtualization/tests/test_models.py +7 -3
  668. nautobot/virtualization/tests/test_views.py +19 -3
  669. nautobot/virtualization/urls.py +2 -2
  670. nautobot/virtualization/views.py +10 -32
  671. {nautobot-2.2.9.dist-info → nautobot-2.3.0.dist-info}/METADATA +20 -18
  672. {nautobot-2.2.9.dist-info → nautobot-2.3.0.dist-info}/RECORD +677 -557
  673. nautobot/project-static/docs/assets/stylesheets/main.76a95c52.min.css +0 -1
  674. nautobot/project-static/docs/assets/stylesheets/main.76a95c52.min.css.map +0 -1
  675. nautobot/project-static/materialdesignicons-6.5.95/.github/ISSUE_TEMPLATE.md +0 -3
  676. nautobot/project-static/materialdesignicons-6.5.95/README.md +0 -25
  677. nautobot/project-static/materialdesignicons-6.5.95/css/materialdesignicons.css +0 -26654
  678. nautobot/project-static/materialdesignicons-6.5.95/css/materialdesignicons.css.map +0 -16
  679. nautobot/project-static/materialdesignicons-6.5.95/css/materialdesignicons.min.css +0 -3
  680. nautobot/project-static/materialdesignicons-6.5.95/css/materialdesignicons.min.css.map +0 -16
  681. nautobot/project-static/materialdesignicons-6.5.95/fonts/materialdesignicons-webfont.woff +0 -0
  682. nautobot/project-static/materialdesignicons-6.5.95/fonts/materialdesignicons-webfont.woff2 +0 -0
  683. nautobot/project-static/materialdesignicons-6.5.95/package.json +0 -28
  684. nautobot/project-static/materialdesignicons-6.5.95/preview.html +0 -717
  685. nautobot/project-static/materialdesignicons-6.5.95/scss/_animated.scss +0 -27
  686. nautobot/project-static/materialdesignicons-6.5.95/scss/_core.scss +0 -10
  687. nautobot/project-static/materialdesignicons-6.5.95/scss/_extras.scss +0 -65
  688. nautobot/project-static/materialdesignicons-6.5.95/scss/_functions.scss +0 -20
  689. nautobot/project-static/materialdesignicons-6.5.95/scss/_icons.scss +0 -10
  690. nautobot/project-static/materialdesignicons-6.5.95/scss/_path.scss +0 -10
  691. nautobot/project-static/materialdesignicons-6.5.95/scss/_variables.scss +0 -6606
  692. nautobot/project-static/materialdesignicons-6.5.95/scss/materialdesignicons.scss +0 -8
  693. /nautobot/project-static/{materialdesignicons-6.5.95 → materialdesignicons-7.4.47}/LICENSE +0 -0
  694. {nautobot-2.2.9.dist-info → nautobot-2.3.0.dist-info}/LICENSE.txt +0 -0
  695. {nautobot-2.2.9.dist-info → nautobot-2.3.0.dist-info}/NOTICE +0 -0
  696. {nautobot-2.2.9.dist-info → nautobot-2.3.0.dist-info}/WHEEL +0 -0
  697. {nautobot-2.2.9.dist-info → nautobot-2.3.0.dist-info}/entry_points.txt +0 -0
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.29">
21
+ <meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.31">
22
22
 
23
23
 
24
24
 
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- <link rel="stylesheet" href="../../../assets/stylesheets/main.76a95c52.min.css">
29
+ <link rel="stylesheet" href="../../../assets/stylesheets/main.3cba04c6.min.css">
30
30
 
31
31
 
32
32
  <link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css">
@@ -38,7 +38,7 @@
38
38
 
39
39
 
40
40
 
41
- <style>:root{--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M288 0H128c-17.7 0-32 14.3-32 32s14.3 32 32 32v132.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6 0 480.9 31.1 512 69.4 512h309.2c38.3 0 69.4-31.1 69.4-69.4 0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32S337.7 0 320 0h-32zm-96 196.8V64h64v132.8c0 23.7 6.6 46.9 19 67.1l34.5 56.1h-171l34.5-56.1c12.4-20.2 19-43.4 19-67.1z"/></svg>');}</style>
41
+ <style>:root{--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M288 0H128c-17.7 0-32 14.3-32 32s14.3 32 32 32v132.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6 0 480.9 31.1 512 69.4 512h309.2c38.3 0 69.4-31.1 69.4-69.4 0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32S337.7 0 320 0h-32zm-96 196.8V64h64v132.8c0 23.7 6.6 46.9 19 67.1l34.5 56.1h-171l34.5-56.1c12.4-20.2 19-43.4 19-67.1z"/></svg>');}</style>
42
42
 
43
43
 
44
44
 
@@ -217,7 +217,7 @@
217
217
  <a href="https://github.com/nautobot/nautobot" title="Go to repository" class="md-source" data-md-component="source">
218
218
  <div class="md-source__icon md-icon">
219
219
 
220
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
220
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
221
221
  </div>
222
222
  <div class="md-source__repository">
223
223
  GitHub
@@ -377,7 +377,7 @@
377
377
  <a href="https://github.com/nautobot/nautobot" title="Go to repository" class="md-source" data-md-component="source">
378
378
  <div class="md-source__icon md-icon">
379
379
 
380
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
380
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
381
381
  </div>
382
382
  <div class="md-source__repository">
383
383
  GitHub
@@ -2484,21 +2484,29 @@
2484
2484
  <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_3" >
2485
2485
 
2486
2486
 
2487
- <label class="md-nav__link" for="__nav_2_3_3" id="__nav_2_3_3_label" tabindex="0">
2488
-
2487
+
2488
+ <div class="md-nav__link md-nav__container">
2489
+ <a href="../../../user-guide/core-data-model/cloud/cloud.html" class="md-nav__link ">
2490
+
2489
2491
 
2490
2492
  <span class="md-ellipsis">
2491
- DCIM
2493
+ Cloud
2492
2494
  </span>
2493
2495
 
2494
2496
 
2495
- <span class="md-nav__icon md-icon"></span>
2496
- </label>
2497
+ </a>
2498
+
2499
+
2500
+ <label class="md-nav__link " for="__nav_2_3_3" id="__nav_2_3_3_label" tabindex="0">
2501
+ <span class="md-nav__icon md-icon"></span>
2502
+ </label>
2503
+
2504
+ </div>
2497
2505
 
2498
2506
  <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_3_label" aria-expanded="false">
2499
2507
  <label class="md-nav__title" for="__nav_2_3_3">
2500
2508
  <span class="md-nav__icon md-icon"></span>
2501
- DCIM
2509
+ Cloud
2502
2510
  </label>
2503
2511
  <ul class="md-nav__list" data-md-scrollfix>
2504
2512
 
@@ -2509,11 +2517,11 @@
2509
2517
 
2510
2518
 
2511
2519
  <li class="md-nav__item">
2512
- <a href="../../../user-guide/core-data-model/dcim/locationtype.html" class="md-nav__link">
2520
+ <a href="../../../user-guide/core-data-model/cloud/cloudaccount.html" class="md-nav__link">
2513
2521
 
2514
2522
 
2515
2523
  <span class="md-ellipsis">
2516
- Location Type
2524
+ Cloud Account
2517
2525
  </span>
2518
2526
 
2519
2527
 
@@ -2530,11 +2538,11 @@
2530
2538
 
2531
2539
 
2532
2540
  <li class="md-nav__item">
2533
- <a href="../../../user-guide/core-data-model/dcim/location.html" class="md-nav__link">
2541
+ <a href="../../../user-guide/core-data-model/cloud/cloudnetwork.html" class="md-nav__link">
2534
2542
 
2535
2543
 
2536
2544
  <span class="md-ellipsis">
2537
- Location
2545
+ Cloud Network
2538
2546
  </span>
2539
2547
 
2540
2548
 
@@ -2551,11 +2559,11 @@
2551
2559
 
2552
2560
 
2553
2561
  <li class="md-nav__item">
2554
- <a href="../../../user-guide/core-data-model/dcim/rackgroup.html" class="md-nav__link">
2562
+ <a href="../../../user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html" class="md-nav__link">
2555
2563
 
2556
2564
 
2557
2565
  <span class="md-ellipsis">
2558
- Rack Group
2566
+ Cloud Network Prefix Assignment
2559
2567
  </span>
2560
2568
 
2561
2569
 
@@ -2572,11 +2580,11 @@
2572
2580
 
2573
2581
 
2574
2582
  <li class="md-nav__item">
2575
- <a href="../../../user-guide/core-data-model/dcim/rack.html" class="md-nav__link">
2583
+ <a href="../../../user-guide/core-data-model/cloud/cloudresourcetype.html" class="md-nav__link">
2576
2584
 
2577
2585
 
2578
2586
  <span class="md-ellipsis">
2579
- Rack
2587
+ Cloud Resource Type
2580
2588
  </span>
2581
2589
 
2582
2590
 
@@ -2593,11 +2601,11 @@
2593
2601
 
2594
2602
 
2595
2603
  <li class="md-nav__item">
2596
- <a href="../../../user-guide/core-data-model/dcim/manufacturer.html" class="md-nav__link">
2604
+ <a href="../../../user-guide/core-data-model/cloud/cloudservice.html" class="md-nav__link">
2597
2605
 
2598
2606
 
2599
2607
  <span class="md-ellipsis">
2600
- Manufacturer
2608
+ Cloud Service
2601
2609
  </span>
2602
2610
 
2603
2611
 
@@ -2614,11 +2622,11 @@
2614
2622
 
2615
2623
 
2616
2624
  <li class="md-nav__item">
2617
- <a href="../../../user-guide/core-data-model/dcim/devicefamily.html" class="md-nav__link">
2625
+ <a href="../../../user-guide/core-data-model/cloud/cloudservicenetworkassignment.html" class="md-nav__link">
2618
2626
 
2619
2627
 
2620
2628
  <span class="md-ellipsis">
2621
- Device Family
2629
+ Cloud Service Network Assignment
2622
2630
  </span>
2623
2631
 
2624
2632
 
@@ -2628,22 +2636,9 @@
2628
2636
 
2629
2637
 
2630
2638
 
2631
-
2632
-
2633
-
2634
-
2635
-
2636
-
2637
- <li class="md-nav__item">
2638
- <a href="../../../user-guide/core-data-model/dcim/platform.html" class="md-nav__link">
2639
-
2640
-
2641
- <span class="md-ellipsis">
2642
- Platform
2643
- </span>
2644
-
2645
-
2646
- </a>
2639
+ </ul>
2640
+ </nav>
2641
+
2647
2642
  </li>
2648
2643
 
2649
2644
 
@@ -2666,32 +2661,24 @@
2666
2661
 
2667
2662
 
2668
2663
 
2669
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_3_8" >
2664
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4" >
2670
2665
 
2671
2666
 
2672
-
2673
- <div class="md-nav__link md-nav__container">
2674
- <a href="../../../user-guide/core-data-model/dcim/devicetype.html" class="md-nav__link ">
2675
-
2667
+ <label class="md-nav__link" for="__nav_2_3_4" id="__nav_2_3_4_label" tabindex="0">
2668
+
2676
2669
 
2677
2670
  <span class="md-ellipsis">
2678
- Device Type
2671
+ DCIM
2679
2672
  </span>
2680
2673
 
2681
2674
 
2682
- </a>
2683
-
2684
-
2685
- <label class="md-nav__link " for="__nav_2_3_3_8" id="__nav_2_3_3_8_label" tabindex="0">
2686
- <span class="md-nav__icon md-icon"></span>
2687
- </label>
2688
-
2689
- </div>
2675
+ <span class="md-nav__icon md-icon"></span>
2676
+ </label>
2690
2677
 
2691
- <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_3_8_label" aria-expanded="false">
2692
- <label class="md-nav__title" for="__nav_2_3_3_8">
2678
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_4_label" aria-expanded="false">
2679
+ <label class="md-nav__title" for="__nav_2_3_4">
2693
2680
  <span class="md-nav__icon md-icon"></span>
2694
- Device Type
2681
+ DCIM
2695
2682
  </label>
2696
2683
  <ul class="md-nav__list" data-md-scrollfix>
2697
2684
 
@@ -2702,32 +2689,11 @@
2702
2689
 
2703
2690
 
2704
2691
  <li class="md-nav__item">
2705
- <a href="../../../user-guide/core-data-model/dcim/consoleporttemplate.html" class="md-nav__link">
2706
-
2707
-
2708
- <span class="md-ellipsis">
2709
- Console Port Template
2710
- </span>
2711
-
2712
-
2713
- </a>
2714
- </li>
2715
-
2716
-
2717
-
2718
-
2719
-
2720
-
2721
-
2722
-
2723
-
2724
-
2725
- <li class="md-nav__item">
2726
- <a href="../../../user-guide/core-data-model/dcim/consoleserverporttemplate.html" class="md-nav__link">
2692
+ <a href="../../../user-guide/core-data-model/dcim/locationtype.html" class="md-nav__link">
2727
2693
 
2728
2694
 
2729
2695
  <span class="md-ellipsis">
2730
- Console Server Port Template
2696
+ Location Type
2731
2697
  </span>
2732
2698
 
2733
2699
 
@@ -2744,11 +2710,11 @@
2744
2710
 
2745
2711
 
2746
2712
  <li class="md-nav__item">
2747
- <a href="../../../user-guide/core-data-model/dcim/devicebaytemplate.html" class="md-nav__link">
2713
+ <a href="../../../user-guide/core-data-model/dcim/location.html" class="md-nav__link">
2748
2714
 
2749
2715
 
2750
2716
  <span class="md-ellipsis">
2751
- Device Bay Template
2717
+ Location
2752
2718
  </span>
2753
2719
 
2754
2720
 
@@ -2765,11 +2731,11 @@
2765
2731
 
2766
2732
 
2767
2733
  <li class="md-nav__item">
2768
- <a href="../../../user-guide/core-data-model/dcim/frontporttemplate.html" class="md-nav__link">
2734
+ <a href="../../../user-guide/core-data-model/dcim/rackgroup.html" class="md-nav__link">
2769
2735
 
2770
2736
 
2771
2737
  <span class="md-ellipsis">
2772
- Front Port Template
2738
+ Rack Group
2773
2739
  </span>
2774
2740
 
2775
2741
 
@@ -2786,11 +2752,11 @@
2786
2752
 
2787
2753
 
2788
2754
  <li class="md-nav__item">
2789
- <a href="../../../user-guide/core-data-model/dcim/interfacetemplate.html" class="md-nav__link">
2755
+ <a href="../../../user-guide/core-data-model/dcim/rack.html" class="md-nav__link">
2790
2756
 
2791
2757
 
2792
2758
  <span class="md-ellipsis">
2793
- Interface Template
2759
+ Rack
2794
2760
  </span>
2795
2761
 
2796
2762
 
@@ -2807,11 +2773,11 @@
2807
2773
 
2808
2774
 
2809
2775
  <li class="md-nav__item">
2810
- <a href="../../../user-guide/core-data-model/dcim/poweroutlettemplate.html" class="md-nav__link">
2776
+ <a href="../../../user-guide/core-data-model/dcim/manufacturer.html" class="md-nav__link">
2811
2777
 
2812
2778
 
2813
2779
  <span class="md-ellipsis">
2814
- Power Outlet Template
2780
+ Manufacturer
2815
2781
  </span>
2816
2782
 
2817
2783
 
@@ -2828,11 +2794,11 @@
2828
2794
 
2829
2795
 
2830
2796
  <li class="md-nav__item">
2831
- <a href="../../../user-guide/core-data-model/dcim/powerporttemplate.html" class="md-nav__link">
2797
+ <a href="../../../user-guide/core-data-model/dcim/devicefamily.html" class="md-nav__link">
2832
2798
 
2833
2799
 
2834
2800
  <span class="md-ellipsis">
2835
- Power Port Template
2801
+ Device Family
2836
2802
  </span>
2837
2803
 
2838
2804
 
@@ -2849,11 +2815,11 @@
2849
2815
 
2850
2816
 
2851
2817
  <li class="md-nav__item">
2852
- <a href="../../../user-guide/core-data-model/dcim/rearporttemplate.html" class="md-nav__link">
2818
+ <a href="../../../user-guide/core-data-model/dcim/platform.html" class="md-nav__link">
2853
2819
 
2854
2820
 
2855
2821
  <span class="md-ellipsis">
2856
- Rear Port Template
2822
+ Platform
2857
2823
  </span>
2858
2824
 
2859
2825
 
@@ -2863,14 +2829,6 @@
2863
2829
 
2864
2830
 
2865
2831
 
2866
- </ul>
2867
- </nav>
2868
-
2869
- </li>
2870
-
2871
-
2872
-
2873
-
2874
2832
 
2875
2833
 
2876
2834
 
@@ -2888,32 +2846,32 @@
2888
2846
 
2889
2847
 
2890
2848
 
2891
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_3_9" >
2849
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_8" >
2892
2850
 
2893
2851
 
2894
2852
 
2895
2853
  <div class="md-nav__link md-nav__container">
2896
- <a href="../../../user-guide/core-data-model/dcim/device.html" class="md-nav__link ">
2854
+ <a href="../../../user-guide/core-data-model/dcim/devicetype.html" class="md-nav__link ">
2897
2855
 
2898
2856
 
2899
2857
  <span class="md-ellipsis">
2900
- Device
2858
+ Device Type
2901
2859
  </span>
2902
2860
 
2903
2861
 
2904
2862
  </a>
2905
2863
 
2906
2864
 
2907
- <label class="md-nav__link " for="__nav_2_3_3_9" id="__nav_2_3_3_9_label" tabindex="0">
2865
+ <label class="md-nav__link " for="__nav_2_3_4_8" id="__nav_2_3_4_8_label" tabindex="0">
2908
2866
  <span class="md-nav__icon md-icon"></span>
2909
2867
  </label>
2910
2868
 
2911
2869
  </div>
2912
2870
 
2913
- <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_3_9_label" aria-expanded="false">
2914
- <label class="md-nav__title" for="__nav_2_3_3_9">
2871
+ <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_8_label" aria-expanded="false">
2872
+ <label class="md-nav__title" for="__nav_2_3_4_8">
2915
2873
  <span class="md-nav__icon md-icon"></span>
2916
- Device
2874
+ Device Type
2917
2875
  </label>
2918
2876
  <ul class="md-nav__list" data-md-scrollfix>
2919
2877
 
@@ -2924,11 +2882,11 @@
2924
2882
 
2925
2883
 
2926
2884
  <li class="md-nav__item">
2927
- <a href="../../../user-guide/core-data-model/dcim/consoleport.html" class="md-nav__link">
2885
+ <a href="../../../user-guide/core-data-model/dcim/consoleporttemplate.html" class="md-nav__link">
2928
2886
 
2929
2887
 
2930
2888
  <span class="md-ellipsis">
2931
- Console Port
2889
+ Console Port Template
2932
2890
  </span>
2933
2891
 
2934
2892
 
@@ -2945,11 +2903,11 @@
2945
2903
 
2946
2904
 
2947
2905
  <li class="md-nav__item">
2948
- <a href="../../../user-guide/core-data-model/dcim/consoleserverport.html" class="md-nav__link">
2906
+ <a href="../../../user-guide/core-data-model/dcim/consoleserverporttemplate.html" class="md-nav__link">
2949
2907
 
2950
2908
 
2951
2909
  <span class="md-ellipsis">
2952
- Console Server Port
2910
+ Console Server Port Template
2953
2911
  </span>
2954
2912
 
2955
2913
 
@@ -2966,11 +2924,11 @@
2966
2924
 
2967
2925
 
2968
2926
  <li class="md-nav__item">
2969
- <a href="../../../user-guide/core-data-model/dcim/devicebay.html" class="md-nav__link">
2927
+ <a href="../../../user-guide/core-data-model/dcim/devicebaytemplate.html" class="md-nav__link">
2970
2928
 
2971
2929
 
2972
2930
  <span class="md-ellipsis">
2973
- Device Bay
2931
+ Device Bay Template
2974
2932
  </span>
2975
2933
 
2976
2934
 
@@ -2987,11 +2945,11 @@
2987
2945
 
2988
2946
 
2989
2947
  <li class="md-nav__item">
2990
- <a href="../../../user-guide/core-data-model/dcim/frontport.html" class="md-nav__link">
2948
+ <a href="../../../user-guide/core-data-model/dcim/frontporttemplate.html" class="md-nav__link">
2991
2949
 
2992
2950
 
2993
2951
  <span class="md-ellipsis">
2994
- Front Port
2952
+ Front Port Template
2995
2953
  </span>
2996
2954
 
2997
2955
 
@@ -3008,11 +2966,11 @@
3008
2966
 
3009
2967
 
3010
2968
  <li class="md-nav__item">
3011
- <a href="../../../user-guide/core-data-model/dcim/interface.html" class="md-nav__link">
2969
+ <a href="../../../user-guide/core-data-model/dcim/interfacetemplate.html" class="md-nav__link">
3012
2970
 
3013
2971
 
3014
2972
  <span class="md-ellipsis">
3015
- Interface
2973
+ Interface Template
3016
2974
  </span>
3017
2975
 
3018
2976
 
@@ -3029,11 +2987,11 @@
3029
2987
 
3030
2988
 
3031
2989
  <li class="md-nav__item">
3032
- <a href="../../../user-guide/core-data-model/dcim/inventoryitem.html" class="md-nav__link">
2990
+ <a href="../../../user-guide/core-data-model/dcim/modulebaytemplate.html" class="md-nav__link">
3033
2991
 
3034
2992
 
3035
2993
  <span class="md-ellipsis">
3036
- Inventory Item
2994
+ Module Bay Template
3037
2995
  </span>
3038
2996
 
3039
2997
 
@@ -3050,11 +3008,11 @@
3050
3008
 
3051
3009
 
3052
3010
  <li class="md-nav__item">
3053
- <a href="../../../user-guide/core-data-model/dcim/powerport.html" class="md-nav__link">
3011
+ <a href="../../../user-guide/core-data-model/dcim/poweroutlettemplate.html" class="md-nav__link">
3054
3012
 
3055
3013
 
3056
3014
  <span class="md-ellipsis">
3057
- Power Port
3015
+ Power Outlet Template
3058
3016
  </span>
3059
3017
 
3060
3018
 
@@ -3071,11 +3029,11 @@
3071
3029
 
3072
3030
 
3073
3031
  <li class="md-nav__item">
3074
- <a href="../../../user-guide/core-data-model/dcim/poweroutlet.html" class="md-nav__link">
3032
+ <a href="../../../user-guide/core-data-model/dcim/powerporttemplate.html" class="md-nav__link">
3075
3033
 
3076
3034
 
3077
3035
  <span class="md-ellipsis">
3078
- Power Outlet
3036
+ Power Port Template
3079
3037
  </span>
3080
3038
 
3081
3039
 
@@ -3092,11 +3050,11 @@
3092
3050
 
3093
3051
 
3094
3052
  <li class="md-nav__item">
3095
- <a href="../../../user-guide/core-data-model/dcim/rearport.html" class="md-nav__link">
3053
+ <a href="../../../user-guide/core-data-model/dcim/rearporttemplate.html" class="md-nav__link">
3096
3054
 
3097
3055
 
3098
3056
  <span class="md-ellipsis">
3099
- Rear Port
3057
+ Rear Port Template
3100
3058
  </span>
3101
3059
 
3102
3060
 
@@ -3120,20 +3078,45 @@
3120
3078
 
3121
3079
 
3122
3080
 
3123
- <li class="md-nav__item">
3124
- <a href="../../../user-guide/core-data-model/dcim/cable.html" class="md-nav__link">
3081
+
3082
+
3083
+
3084
+
3085
+
3086
+
3087
+
3088
+ <li class="md-nav__item md-nav__item--nested">
3089
+
3125
3090
 
3091
+
3092
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_9" >
3093
+
3094
+
3095
+
3096
+ <div class="md-nav__link md-nav__container">
3097
+ <a href="../../../user-guide/core-data-model/dcim/device.html" class="md-nav__link ">
3098
+
3126
3099
 
3127
3100
  <span class="md-ellipsis">
3128
- Cable
3101
+ Device
3129
3102
  </span>
3130
3103
 
3131
3104
 
3132
- </a>
3133
- </li>
3134
-
3135
-
3105
+ </a>
3106
+
3136
3107
 
3108
+ <label class="md-nav__link " for="__nav_2_3_4_9" id="__nav_2_3_4_9_label" tabindex="0">
3109
+ <span class="md-nav__icon md-icon"></span>
3110
+ </label>
3111
+
3112
+ </div>
3113
+
3114
+ <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_9_label" aria-expanded="false">
3115
+ <label class="md-nav__title" for="__nav_2_3_4_9">
3116
+ <span class="md-nav__icon md-icon"></span>
3117
+ Device
3118
+ </label>
3119
+ <ul class="md-nav__list" data-md-scrollfix>
3137
3120
 
3138
3121
 
3139
3122
 
@@ -3142,11 +3125,11 @@
3142
3125
 
3143
3126
 
3144
3127
  <li class="md-nav__item">
3145
- <a href="../../../user-guide/core-data-model/dcim/deviceredundancygroup.html" class="md-nav__link">
3128
+ <a href="../../../user-guide/core-data-model/dcim/consoleport.html" class="md-nav__link">
3146
3129
 
3147
3130
 
3148
3131
  <span class="md-ellipsis">
3149
- Device Redundancy Group
3132
+ Console Port
3150
3133
  </span>
3151
3134
 
3152
3135
 
@@ -3163,11 +3146,11 @@
3163
3146
 
3164
3147
 
3165
3148
  <li class="md-nav__item">
3166
- <a href="../../../user-guide/core-data-model/dcim/interfaceredundancygroup.html" class="md-nav__link">
3149
+ <a href="../../../user-guide/core-data-model/dcim/consoleserverport.html" class="md-nav__link">
3167
3150
 
3168
3151
 
3169
3152
  <span class="md-ellipsis">
3170
- Interface Redundancy Group
3153
+ Console Server Port
3171
3154
  </span>
3172
3155
 
3173
3156
 
@@ -3184,11 +3167,11 @@
3184
3167
 
3185
3168
 
3186
3169
  <li class="md-nav__item">
3187
- <a href="../../../user-guide/core-data-model/dcim/powerpanel.html" class="md-nav__link">
3170
+ <a href="../../../user-guide/core-data-model/dcim/devicebay.html" class="md-nav__link">
3188
3171
 
3189
3172
 
3190
3173
  <span class="md-ellipsis">
3191
- Power Panel
3174
+ Device Bay
3192
3175
  </span>
3193
3176
 
3194
3177
 
@@ -3205,11 +3188,11 @@
3205
3188
 
3206
3189
 
3207
3190
  <li class="md-nav__item">
3208
- <a href="../../../user-guide/core-data-model/dcim/powerfeed.html" class="md-nav__link">
3191
+ <a href="../../../user-guide/core-data-model/dcim/frontport.html" class="md-nav__link">
3209
3192
 
3210
3193
 
3211
3194
  <span class="md-ellipsis">
3212
- Power Feed
3195
+ Front Port
3213
3196
  </span>
3214
3197
 
3215
3198
 
@@ -3226,11 +3209,11 @@
3226
3209
 
3227
3210
 
3228
3211
  <li class="md-nav__item">
3229
- <a href="../../../user-guide/core-data-model/dcim/rackreservation.html" class="md-nav__link">
3212
+ <a href="../../../user-guide/core-data-model/dcim/interface.html" class="md-nav__link">
3230
3213
 
3231
3214
 
3232
3215
  <span class="md-ellipsis">
3233
- Rack Reservation
3216
+ Interface
3234
3217
  </span>
3235
3218
 
3236
3219
 
@@ -3247,11 +3230,11 @@
3247
3230
 
3248
3231
 
3249
3232
  <li class="md-nav__item">
3250
- <a href="../../../user-guide/core-data-model/dcim/softwareimagefile.html" class="md-nav__link">
3233
+ <a href="../../../user-guide/core-data-model/dcim/inventoryitem.html" class="md-nav__link">
3251
3234
 
3252
3235
 
3253
3236
  <span class="md-ellipsis">
3254
- Software Image File
3237
+ Inventory Item
3255
3238
  </span>
3256
3239
 
3257
3240
 
@@ -3268,11 +3251,11 @@
3268
3251
 
3269
3252
 
3270
3253
  <li class="md-nav__item">
3271
- <a href="../../../user-guide/core-data-model/dcim/softwareversion.html" class="md-nav__link">
3254
+ <a href="../../../user-guide/core-data-model/dcim/modulebay.html" class="md-nav__link">
3272
3255
 
3273
3256
 
3274
3257
  <span class="md-ellipsis">
3275
- Software Version
3258
+ Module Bay
3276
3259
  </span>
3277
3260
 
3278
3261
 
@@ -3289,11 +3272,11 @@
3289
3272
 
3290
3273
 
3291
3274
  <li class="md-nav__item">
3292
- <a href="../../../user-guide/core-data-model/dcim/virtualchassis.html" class="md-nav__link">
3275
+ <a href="../../../user-guide/core-data-model/dcim/powerport.html" class="md-nav__link">
3293
3276
 
3294
3277
 
3295
3278
  <span class="md-ellipsis">
3296
- Virtual Chassis
3279
+ Power Port
3297
3280
  </span>
3298
3281
 
3299
3282
 
@@ -3310,11 +3293,11 @@
3310
3293
 
3311
3294
 
3312
3295
  <li class="md-nav__item">
3313
- <a href="../../../user-guide/core-data-model/dcim/controller.html" class="md-nav__link">
3296
+ <a href="../../../user-guide/core-data-model/dcim/poweroutlet.html" class="md-nav__link">
3314
3297
 
3315
3298
 
3316
3299
  <span class="md-ellipsis">
3317
- Controller
3300
+ Power Outlet
3318
3301
  </span>
3319
3302
 
3320
3303
 
@@ -3331,11 +3314,11 @@
3331
3314
 
3332
3315
 
3333
3316
  <li class="md-nav__item">
3334
- <a href="../../../user-guide/core-data-model/dcim/controllermanageddevicegroup.html" class="md-nav__link">
3317
+ <a href="../../../user-guide/core-data-model/dcim/rearport.html" class="md-nav__link">
3335
3318
 
3336
3319
 
3337
3320
  <span class="md-ellipsis">
3338
- Controller Managed Device Group
3321
+ Rear Port
3339
3322
  </span>
3340
3323
 
3341
3324
 
@@ -3370,29 +3353,733 @@
3370
3353
 
3371
3354
 
3372
3355
 
3373
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4" >
3356
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_10" >
3374
3357
 
3375
3358
 
3376
- <label class="md-nav__link" for="__nav_2_3_4" id="__nav_2_3_4_label" tabindex="0">
3377
-
3359
+
3360
+ <div class="md-nav__link md-nav__container">
3361
+ <a href="../../../user-guide/core-data-model/dcim/moduletype.html" class="md-nav__link ">
3362
+
3378
3363
 
3379
3364
  <span class="md-ellipsis">
3380
- Extras
3365
+ Module Type
3381
3366
  </span>
3382
3367
 
3383
3368
 
3384
- <span class="md-nav__icon md-icon"></span>
3385
- </label>
3386
-
3387
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_4_label" aria-expanded="false">
3388
- <label class="md-nav__title" for="__nav_2_3_4">
3389
- <span class="md-nav__icon md-icon"></span>
3390
- Extras
3391
- </label>
3392
- <ul class="md-nav__list" data-md-scrollfix>
3369
+ </a>
3393
3370
 
3394
3371
 
3395
-
3372
+ <label class="md-nav__link " for="__nav_2_3_4_10" id="__nav_2_3_4_10_label" tabindex="0">
3373
+ <span class="md-nav__icon md-icon"></span>
3374
+ </label>
3375
+
3376
+ </div>
3377
+
3378
+ <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_10_label" aria-expanded="false">
3379
+ <label class="md-nav__title" for="__nav_2_3_4_10">
3380
+ <span class="md-nav__icon md-icon"></span>
3381
+ Module Type
3382
+ </label>
3383
+ <ul class="md-nav__list" data-md-scrollfix>
3384
+
3385
+
3386
+
3387
+
3388
+
3389
+
3390
+
3391
+ <li class="md-nav__item">
3392
+ <a href="../../../user-guide/core-data-model/dcim/consoleporttemplate.html" class="md-nav__link">
3393
+
3394
+
3395
+ <span class="md-ellipsis">
3396
+ Console Port Template
3397
+ </span>
3398
+
3399
+
3400
+ </a>
3401
+ </li>
3402
+
3403
+
3404
+
3405
+
3406
+
3407
+
3408
+
3409
+
3410
+
3411
+
3412
+ <li class="md-nav__item">
3413
+ <a href="../../../user-guide/core-data-model/dcim/consoleserverporttemplate.html" class="md-nav__link">
3414
+
3415
+
3416
+ <span class="md-ellipsis">
3417
+ Console Server Port Template
3418
+ </span>
3419
+
3420
+
3421
+ </a>
3422
+ </li>
3423
+
3424
+
3425
+
3426
+
3427
+
3428
+
3429
+
3430
+
3431
+
3432
+
3433
+ <li class="md-nav__item">
3434
+ <a href="../../../user-guide/core-data-model/dcim/frontporttemplate.html" class="md-nav__link">
3435
+
3436
+
3437
+ <span class="md-ellipsis">
3438
+ Front Port Template
3439
+ </span>
3440
+
3441
+
3442
+ </a>
3443
+ </li>
3444
+
3445
+
3446
+
3447
+
3448
+
3449
+
3450
+
3451
+
3452
+
3453
+
3454
+ <li class="md-nav__item">
3455
+ <a href="../../../user-guide/core-data-model/dcim/interfacetemplate.html" class="md-nav__link">
3456
+
3457
+
3458
+ <span class="md-ellipsis">
3459
+ Interface Template
3460
+ </span>
3461
+
3462
+
3463
+ </a>
3464
+ </li>
3465
+
3466
+
3467
+
3468
+
3469
+
3470
+
3471
+
3472
+
3473
+
3474
+
3475
+ <li class="md-nav__item">
3476
+ <a href="../../../user-guide/core-data-model/dcim/modulebaytemplate.html" class="md-nav__link">
3477
+
3478
+
3479
+ <span class="md-ellipsis">
3480
+ Module Bay Template
3481
+ </span>
3482
+
3483
+
3484
+ </a>
3485
+ </li>
3486
+
3487
+
3488
+
3489
+
3490
+
3491
+
3492
+
3493
+
3494
+
3495
+
3496
+ <li class="md-nav__item">
3497
+ <a href="../../../user-guide/core-data-model/dcim/poweroutlettemplate.html" class="md-nav__link">
3498
+
3499
+
3500
+ <span class="md-ellipsis">
3501
+ Power Outlet Template
3502
+ </span>
3503
+
3504
+
3505
+ </a>
3506
+ </li>
3507
+
3508
+
3509
+
3510
+
3511
+
3512
+
3513
+
3514
+
3515
+
3516
+
3517
+ <li class="md-nav__item">
3518
+ <a href="../../../user-guide/core-data-model/dcim/powerporttemplate.html" class="md-nav__link">
3519
+
3520
+
3521
+ <span class="md-ellipsis">
3522
+ Power Port Template
3523
+ </span>
3524
+
3525
+
3526
+ </a>
3527
+ </li>
3528
+
3529
+
3530
+
3531
+
3532
+
3533
+
3534
+
3535
+
3536
+
3537
+
3538
+ <li class="md-nav__item">
3539
+ <a href="../../../user-guide/core-data-model/dcim/rearporttemplate.html" class="md-nav__link">
3540
+
3541
+
3542
+ <span class="md-ellipsis">
3543
+ Rear Port Template
3544
+ </span>
3545
+
3546
+
3547
+ </a>
3548
+ </li>
3549
+
3550
+
3551
+
3552
+
3553
+ </ul>
3554
+ </nav>
3555
+
3556
+ </li>
3557
+
3558
+
3559
+
3560
+
3561
+
3562
+
3563
+
3564
+
3565
+
3566
+
3567
+
3568
+
3569
+
3570
+
3571
+
3572
+
3573
+
3574
+ <li class="md-nav__item md-nav__item--nested">
3575
+
3576
+
3577
+
3578
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_11" >
3579
+
3580
+
3581
+
3582
+ <div class="md-nav__link md-nav__container">
3583
+ <a href="../../../user-guide/core-data-model/dcim/module.html" class="md-nav__link ">
3584
+
3585
+
3586
+ <span class="md-ellipsis">
3587
+ Module
3588
+ </span>
3589
+
3590
+
3591
+ </a>
3592
+
3593
+
3594
+ <label class="md-nav__link " for="__nav_2_3_4_11" id="__nav_2_3_4_11_label" tabindex="0">
3595
+ <span class="md-nav__icon md-icon"></span>
3596
+ </label>
3597
+
3598
+ </div>
3599
+
3600
+ <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_11_label" aria-expanded="false">
3601
+ <label class="md-nav__title" for="__nav_2_3_4_11">
3602
+ <span class="md-nav__icon md-icon"></span>
3603
+ Module
3604
+ </label>
3605
+ <ul class="md-nav__list" data-md-scrollfix>
3606
+
3607
+
3608
+
3609
+
3610
+
3611
+
3612
+
3613
+ <li class="md-nav__item">
3614
+ <a href="../../../user-guide/core-data-model/dcim/consoleport.html" class="md-nav__link">
3615
+
3616
+
3617
+ <span class="md-ellipsis">
3618
+ Console Port
3619
+ </span>
3620
+
3621
+
3622
+ </a>
3623
+ </li>
3624
+
3625
+
3626
+
3627
+
3628
+
3629
+
3630
+
3631
+
3632
+
3633
+
3634
+ <li class="md-nav__item">
3635
+ <a href="../../../user-guide/core-data-model/dcim/consoleserverport.html" class="md-nav__link">
3636
+
3637
+
3638
+ <span class="md-ellipsis">
3639
+ Console Server Port
3640
+ </span>
3641
+
3642
+
3643
+ </a>
3644
+ </li>
3645
+
3646
+
3647
+
3648
+
3649
+
3650
+
3651
+
3652
+
3653
+
3654
+
3655
+ <li class="md-nav__item">
3656
+ <a href="../../../user-guide/core-data-model/dcim/frontport.html" class="md-nav__link">
3657
+
3658
+
3659
+ <span class="md-ellipsis">
3660
+ Front Port
3661
+ </span>
3662
+
3663
+
3664
+ </a>
3665
+ </li>
3666
+
3667
+
3668
+
3669
+
3670
+
3671
+
3672
+
3673
+
3674
+
3675
+
3676
+ <li class="md-nav__item">
3677
+ <a href="../../../user-guide/core-data-model/dcim/interface.html" class="md-nav__link">
3678
+
3679
+
3680
+ <span class="md-ellipsis">
3681
+ Interface
3682
+ </span>
3683
+
3684
+
3685
+ </a>
3686
+ </li>
3687
+
3688
+
3689
+
3690
+
3691
+
3692
+
3693
+
3694
+
3695
+
3696
+
3697
+ <li class="md-nav__item">
3698
+ <a href="../../../user-guide/core-data-model/dcim/inventoryitem.html" class="md-nav__link">
3699
+
3700
+
3701
+ <span class="md-ellipsis">
3702
+ Inventory Item
3703
+ </span>
3704
+
3705
+
3706
+ </a>
3707
+ </li>
3708
+
3709
+
3710
+
3711
+
3712
+
3713
+
3714
+
3715
+
3716
+
3717
+
3718
+ <li class="md-nav__item">
3719
+ <a href="../../../user-guide/core-data-model/dcim/modulebay.html" class="md-nav__link">
3720
+
3721
+
3722
+ <span class="md-ellipsis">
3723
+ Module Bay
3724
+ </span>
3725
+
3726
+
3727
+ </a>
3728
+ </li>
3729
+
3730
+
3731
+
3732
+
3733
+
3734
+
3735
+
3736
+
3737
+
3738
+
3739
+ <li class="md-nav__item">
3740
+ <a href="../../../user-guide/core-data-model/dcim/powerport.html" class="md-nav__link">
3741
+
3742
+
3743
+ <span class="md-ellipsis">
3744
+ Power Port
3745
+ </span>
3746
+
3747
+
3748
+ </a>
3749
+ </li>
3750
+
3751
+
3752
+
3753
+
3754
+
3755
+
3756
+
3757
+
3758
+
3759
+
3760
+ <li class="md-nav__item">
3761
+ <a href="../../../user-guide/core-data-model/dcim/poweroutlet.html" class="md-nav__link">
3762
+
3763
+
3764
+ <span class="md-ellipsis">
3765
+ Power Outlet
3766
+ </span>
3767
+
3768
+
3769
+ </a>
3770
+ </li>
3771
+
3772
+
3773
+
3774
+
3775
+
3776
+
3777
+
3778
+
3779
+
3780
+
3781
+ <li class="md-nav__item">
3782
+ <a href="../../../user-guide/core-data-model/dcim/rearport.html" class="md-nav__link">
3783
+
3784
+
3785
+ <span class="md-ellipsis">
3786
+ Rear Port
3787
+ </span>
3788
+
3789
+
3790
+ </a>
3791
+ </li>
3792
+
3793
+
3794
+
3795
+
3796
+ </ul>
3797
+ </nav>
3798
+
3799
+ </li>
3800
+
3801
+
3802
+
3803
+
3804
+
3805
+
3806
+
3807
+
3808
+
3809
+
3810
+ <li class="md-nav__item">
3811
+ <a href="../../../user-guide/core-data-model/dcim/cable.html" class="md-nav__link">
3812
+
3813
+
3814
+ <span class="md-ellipsis">
3815
+ Cable
3816
+ </span>
3817
+
3818
+
3819
+ </a>
3820
+ </li>
3821
+
3822
+
3823
+
3824
+
3825
+
3826
+
3827
+
3828
+
3829
+
3830
+
3831
+ <li class="md-nav__item">
3832
+ <a href="../../../user-guide/core-data-model/dcim/deviceredundancygroup.html" class="md-nav__link">
3833
+
3834
+
3835
+ <span class="md-ellipsis">
3836
+ Device Redundancy Group
3837
+ </span>
3838
+
3839
+
3840
+ </a>
3841
+ </li>
3842
+
3843
+
3844
+
3845
+
3846
+
3847
+
3848
+
3849
+
3850
+
3851
+
3852
+ <li class="md-nav__item">
3853
+ <a href="../../../user-guide/core-data-model/dcim/interfaceredundancygroup.html" class="md-nav__link">
3854
+
3855
+
3856
+ <span class="md-ellipsis">
3857
+ Interface Redundancy Group
3858
+ </span>
3859
+
3860
+
3861
+ </a>
3862
+ </li>
3863
+
3864
+
3865
+
3866
+
3867
+
3868
+
3869
+
3870
+
3871
+
3872
+
3873
+ <li class="md-nav__item">
3874
+ <a href="../../../user-guide/core-data-model/dcim/powerpanel.html" class="md-nav__link">
3875
+
3876
+
3877
+ <span class="md-ellipsis">
3878
+ Power Panel
3879
+ </span>
3880
+
3881
+
3882
+ </a>
3883
+ </li>
3884
+
3885
+
3886
+
3887
+
3888
+
3889
+
3890
+
3891
+
3892
+
3893
+
3894
+ <li class="md-nav__item">
3895
+ <a href="../../../user-guide/core-data-model/dcim/powerfeed.html" class="md-nav__link">
3896
+
3897
+
3898
+ <span class="md-ellipsis">
3899
+ Power Feed
3900
+ </span>
3901
+
3902
+
3903
+ </a>
3904
+ </li>
3905
+
3906
+
3907
+
3908
+
3909
+
3910
+
3911
+
3912
+
3913
+
3914
+
3915
+ <li class="md-nav__item">
3916
+ <a href="../../../user-guide/core-data-model/dcim/rackreservation.html" class="md-nav__link">
3917
+
3918
+
3919
+ <span class="md-ellipsis">
3920
+ Rack Reservation
3921
+ </span>
3922
+
3923
+
3924
+ </a>
3925
+ </li>
3926
+
3927
+
3928
+
3929
+
3930
+
3931
+
3932
+
3933
+
3934
+
3935
+
3936
+ <li class="md-nav__item">
3937
+ <a href="../../../user-guide/core-data-model/dcim/softwareimagefile.html" class="md-nav__link">
3938
+
3939
+
3940
+ <span class="md-ellipsis">
3941
+ Software Image File
3942
+ </span>
3943
+
3944
+
3945
+ </a>
3946
+ </li>
3947
+
3948
+
3949
+
3950
+
3951
+
3952
+
3953
+
3954
+
3955
+
3956
+
3957
+ <li class="md-nav__item">
3958
+ <a href="../../../user-guide/core-data-model/dcim/softwareversion.html" class="md-nav__link">
3959
+
3960
+
3961
+ <span class="md-ellipsis">
3962
+ Software Version
3963
+ </span>
3964
+
3965
+
3966
+ </a>
3967
+ </li>
3968
+
3969
+
3970
+
3971
+
3972
+
3973
+
3974
+
3975
+
3976
+
3977
+
3978
+ <li class="md-nav__item">
3979
+ <a href="../../../user-guide/core-data-model/dcim/virtualchassis.html" class="md-nav__link">
3980
+
3981
+
3982
+ <span class="md-ellipsis">
3983
+ Virtual Chassis
3984
+ </span>
3985
+
3986
+
3987
+ </a>
3988
+ </li>
3989
+
3990
+
3991
+
3992
+
3993
+
3994
+
3995
+
3996
+
3997
+
3998
+
3999
+ <li class="md-nav__item">
4000
+ <a href="../../../user-guide/core-data-model/dcim/controller.html" class="md-nav__link">
4001
+
4002
+
4003
+ <span class="md-ellipsis">
4004
+ Controller
4005
+ </span>
4006
+
4007
+
4008
+ </a>
4009
+ </li>
4010
+
4011
+
4012
+
4013
+
4014
+
4015
+
4016
+
4017
+
4018
+
4019
+
4020
+ <li class="md-nav__item">
4021
+ <a href="../../../user-guide/core-data-model/dcim/controllermanageddevicegroup.html" class="md-nav__link">
4022
+
4023
+
4024
+ <span class="md-ellipsis">
4025
+ Controller Managed Device Group
4026
+ </span>
4027
+
4028
+
4029
+ </a>
4030
+ </li>
4031
+
4032
+
4033
+
4034
+
4035
+ </ul>
4036
+ </nav>
4037
+
4038
+ </li>
4039
+
4040
+
4041
+
4042
+
4043
+
4044
+
4045
+
4046
+
4047
+
4048
+
4049
+
4050
+
4051
+
4052
+
4053
+
4054
+
4055
+
4056
+ <li class="md-nav__item md-nav__item--nested">
4057
+
4058
+
4059
+
4060
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_5" >
4061
+
4062
+
4063
+ <label class="md-nav__link" for="__nav_2_3_5" id="__nav_2_3_5_label" tabindex="0">
4064
+
4065
+
4066
+ <span class="md-ellipsis">
4067
+ Extras
4068
+ </span>
4069
+
4070
+
4071
+ <span class="md-nav__icon md-icon"></span>
4072
+ </label>
4073
+
4074
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_5_label" aria-expanded="false">
4075
+ <label class="md-nav__title" for="__nav_2_3_5">
4076
+ <span class="md-nav__icon md-icon"></span>
4077
+ Extras
4078
+ </label>
4079
+ <ul class="md-nav__list" data-md-scrollfix>
4080
+
4081
+
4082
+
3396
4083
 
3397
4084
 
3398
4085
 
@@ -3500,10 +4187,10 @@
3500
4187
 
3501
4188
 
3502
4189
 
3503
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_5" >
4190
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_6" >
3504
4191
 
3505
4192
 
3506
- <label class="md-nav__link" for="__nav_2_3_5" id="__nav_2_3_5_label" tabindex="0">
4193
+ <label class="md-nav__link" for="__nav_2_3_6" id="__nav_2_3_6_label" tabindex="0">
3507
4194
 
3508
4195
 
3509
4196
  <span class="md-ellipsis">
@@ -3514,8 +4201,8 @@
3514
4201
  <span class="md-nav__icon md-icon"></span>
3515
4202
  </label>
3516
4203
 
3517
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_5_label" aria-expanded="false">
3518
- <label class="md-nav__title" for="__nav_2_3_5">
4204
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_6_label" aria-expanded="false">
4205
+ <label class="md-nav__title" for="__nav_2_3_6">
3519
4206
  <span class="md-nav__icon md-icon"></span>
3520
4207
  IPAM
3521
4208
  </label>
@@ -3735,10 +4422,10 @@
3735
4422
 
3736
4423
 
3737
4424
 
3738
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_6" >
4425
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_7" >
3739
4426
 
3740
4427
 
3741
- <label class="md-nav__link" for="__nav_2_3_6" id="__nav_2_3_6_label" tabindex="0">
4428
+ <label class="md-nav__link" for="__nav_2_3_7" id="__nav_2_3_7_label" tabindex="0">
3742
4429
 
3743
4430
 
3744
4431
  <span class="md-ellipsis">
@@ -3749,8 +4436,8 @@
3749
4436
  <span class="md-nav__icon md-icon"></span>
3750
4437
  </label>
3751
4438
 
3752
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_6_label" aria-expanded="false">
3753
- <label class="md-nav__title" for="__nav_2_3_6">
4439
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_7_label" aria-expanded="false">
4440
+ <label class="md-nav__title" for="__nav_2_3_7">
3754
4441
  <span class="md-nav__icon md-icon"></span>
3755
4442
  Tenancy
3756
4443
  </label>
@@ -3823,10 +4510,10 @@
3823
4510
 
3824
4511
 
3825
4512
 
3826
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_7" >
4513
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_8" >
3827
4514
 
3828
4515
 
3829
- <label class="md-nav__link" for="__nav_2_3_7" id="__nav_2_3_7_label" tabindex="0">
4516
+ <label class="md-nav__link" for="__nav_2_3_8" id="__nav_2_3_8_label" tabindex="0">
3830
4517
 
3831
4518
 
3832
4519
  <span class="md-ellipsis">
@@ -3837,8 +4524,8 @@
3837
4524
  <span class="md-nav__icon md-icon"></span>
3838
4525
  </label>
3839
4526
 
3840
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_7_label" aria-expanded="false">
3841
- <label class="md-nav__title" for="__nav_2_3_7">
4527
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_8_label" aria-expanded="false">
4528
+ <label class="md-nav__title" for="__nav_2_3_8">
3842
4529
  <span class="md-nav__icon md-icon"></span>
3843
4530
  Virtualization
3844
4531
  </label>
@@ -4093,21 +4780,75 @@
4093
4780
 
4094
4781
 
4095
4782
 
4096
- <li class="md-nav__item">
4097
- <a href="../../../user-guide/platform-functionality/dynamicgroup.html" class="md-nav__link">
4783
+
4784
+
4785
+
4786
+
4787
+
4788
+
4789
+
4790
+ <li class="md-nav__item md-nav__item--nested">
4791
+
4792
+
4098
4793
 
4794
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_5" >
4795
+
4796
+
4797
+
4798
+ <div class="md-nav__link md-nav__container">
4799
+ <a href="../../../user-guide/platform-functionality/dynamicgroup.html" class="md-nav__link ">
4800
+
4099
4801
 
4100
4802
  <span class="md-ellipsis">
4101
4803
  Dynamic Groups
4102
4804
  </span>
4103
4805
 
4104
4806
 
4807
+ </a>
4808
+
4809
+
4810
+ <label class="md-nav__link " for="__nav_2_4_5" id="__nav_2_4_5_label" tabindex="0">
4811
+ <span class="md-nav__icon md-icon"></span>
4812
+ </label>
4813
+
4814
+ </div>
4815
+
4816
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_5_label" aria-expanded="false">
4817
+ <label class="md-nav__title" for="__nav_2_4_5">
4818
+ <span class="md-nav__icon md-icon"></span>
4819
+ Dynamic Groups
4820
+ </label>
4821
+ <ul class="md-nav__list" data-md-scrollfix>
4822
+
4823
+
4824
+
4825
+
4826
+
4827
+
4828
+
4829
+ <li class="md-nav__item">
4830
+ <a href="../../../user-guide/platform-functionality/staticgroupassociation.html" class="md-nav__link">
4831
+
4832
+
4833
+ <span class="md-ellipsis">
4834
+ Static Group Associations
4835
+ </span>
4836
+
4837
+
4105
4838
  </a>
4106
4839
  </li>
4107
4840
 
4108
4841
 
4109
4842
 
4110
4843
 
4844
+ </ul>
4845
+ </nav>
4846
+
4847
+ </li>
4848
+
4849
+
4850
+
4851
+
4111
4852
 
4112
4853
 
4113
4854
 
@@ -4453,6 +5194,27 @@
4453
5194
 
4454
5195
 
4455
5196
 
5197
+ <li class="md-nav__item">
5198
+ <a href="../../../user-guide/platform-functionality/objectmetadata.html" class="md-nav__link">
5199
+
5200
+
5201
+ <span class="md-ellipsis">
5202
+ Object Metadata
5203
+ </span>
5204
+
5205
+
5206
+ </a>
5207
+ </li>
5208
+
5209
+
5210
+
5211
+
5212
+
5213
+
5214
+
5215
+
5216
+
5217
+
4456
5218
  <li class="md-nav__item">
4457
5219
  <a href="../../../user-guide/platform-functionality/relationship.html" class="md-nav__link">
4458
5220
 
@@ -4485,7 +5247,7 @@
4485
5247
 
4486
5248
 
4487
5249
 
4488
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_15" >
5250
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_16" >
4489
5251
 
4490
5252
 
4491
5253
 
@@ -4501,14 +5263,14 @@
4501
5263
  </a>
4502
5264
 
4503
5265
 
4504
- <label class="md-nav__link " for="__nav_2_4_15" id="__nav_2_4_15_label" tabindex="0">
5266
+ <label class="md-nav__link " for="__nav_2_4_16" id="__nav_2_4_16_label" tabindex="0">
4505
5267
  <span class="md-nav__icon md-icon"></span>
4506
5268
  </label>
4507
5269
 
4508
5270
  </div>
4509
5271
 
4510
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_15_label" aria-expanded="false">
4511
- <label class="md-nav__title" for="__nav_2_4_15">
5272
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_16_label" aria-expanded="false">
5273
+ <label class="md-nav__title" for="__nav_2_4_16">
4512
5274
  <span class="md-nav__icon md-icon"></span>
4513
5275
  REST API
4514
5276
  </label>
@@ -4612,6 +5374,27 @@
4612
5374
 
4613
5375
 
4614
5376
 
5377
+ <li class="md-nav__item">
5378
+ <a href="../../../user-guide/platform-functionality/savedview.html" class="md-nav__link">
5379
+
5380
+
5381
+ <span class="md-ellipsis">
5382
+ Saved Views
5383
+ </span>
5384
+
5385
+
5386
+ </a>
5387
+ </li>
5388
+
5389
+
5390
+
5391
+
5392
+
5393
+
5394
+
5395
+
5396
+
5397
+
4615
5398
  <li class="md-nav__item">
4616
5399
  <a href="../../../user-guide/platform-functionality/secret.html" class="md-nav__link">
4617
5400
 
@@ -4707,10 +5490,10 @@
4707
5490
 
4708
5491
 
4709
5492
 
4710
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_21" >
5493
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_23" >
4711
5494
 
4712
5495
 
4713
- <label class="md-nav__link" for="__nav_2_4_21" id="__nav_2_4_21_label" tabindex="0">
5496
+ <label class="md-nav__link" for="__nav_2_4_23" id="__nav_2_4_23_label" tabindex="0">
4714
5497
 
4715
5498
 
4716
5499
  <span class="md-ellipsis">
@@ -4721,8 +5504,8 @@
4721
5504
  <span class="md-nav__icon md-icon"></span>
4722
5505
  </label>
4723
5506
 
4724
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_21_label" aria-expanded="false">
4725
- <label class="md-nav__title" for="__nav_2_4_21">
5507
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_23_label" aria-expanded="false">
5508
+ <label class="md-nav__title" for="__nav_2_4_23">
4726
5509
  <span class="md-nav__icon md-icon"></span>
4727
5510
  Users
4728
5511
  </label>
@@ -8189,6 +8972,27 @@
8189
8972
 
8190
8973
 
8191
8974
 
8975
+ <li class="md-nav__item">
8976
+ <a href="../../../release-notes/version-2.3.html" class="md-nav__link">
8977
+
8978
+
8979
+ <span class="md-ellipsis">
8980
+ Version 2.3
8981
+ </span>
8982
+
8983
+
8984
+ </a>
8985
+ </li>
8986
+
8987
+
8988
+
8989
+
8990
+
8991
+
8992
+
8993
+
8994
+
8995
+
8192
8996
  <li class="md-nav__item">
8193
8997
  <a href="../../../release-notes/version-2.2.html" class="md-nav__link">
8194
8998
 
@@ -9648,16 +10452,16 @@
9648
10452
 
9649
10453
 
9650
10454
  <h1 id="nautobot.apps.api" class="doc doc-heading">
9651
- <code>nautobot.apps.api</code>
10455
+ <code>nautobot.apps.api</code>
9652
10456
 
9653
10457
 
9654
10458
  <a href="#nautobot.apps.api" class="headerlink" title="Permanent link">&para;</a></h1>
9655
10459
 
9656
- <div class="doc doc-contents first">
9657
-
10460
+ <div class="doc doc-contents first">
10461
+
9658
10462
  <p>Helpers for an app to implement a REST API.</p>
9659
10463
 
9660
-
10464
+
9661
10465
 
9662
10466
  <div class="doc doc-children">
9663
10467
 
@@ -9673,24 +10477,23 @@
9673
10477
 
9674
10478
 
9675
10479
  <h2 id="nautobot.apps.api.APIRootView" class="doc doc-heading">
9676
- <code>nautobot.apps.api.APIRootView</code>
10480
+ <code>nautobot.apps.api.APIRootView</code>
9677
10481
 
9678
10482
 
9679
10483
  <a href="#nautobot.apps.api.APIRootView" class="headerlink" title="Permanent link">&para;</a></h2>
9680
10484
 
9681
10485
 
9682
- <div class="doc doc-contents ">
9683
- <p class="doc doc-class-bases">
9684
- Bases: <code><span title="nautobot.core.api.views.NautobotAPIVersionMixin">NautobotAPIVersionMixin</span></code>, <code><span title="rest_framework.routers.APIRootView">APIRootView</span></code></p>
10486
+ <div class="doc doc-contents ">
10487
+ <p class="doc doc-class-bases">
10488
+ Bases: <code><span title="nautobot.core.api.views.NautobotAPIVersionMixin">NautobotAPIVersionMixin</span></code>, <code><span title="rest_framework.routers.APIRootView">APIRootView</span></code></p>
10489
+
9685
10490
 
9686
-
9687
10491
  <p>Extends DRF's base APIRootView class to enforce user authentication.</p>
9688
10492
 
9689
10493
 
9690
-
9691
10494
 
9692
- <div class="doc doc-children">
9693
10495
 
10496
+ <div class="doc doc-children">
9694
10497
 
9695
10498
 
9696
10499
 
@@ -9701,10 +10504,10 @@
9701
10504
 
9702
10505
 
9703
10506
 
9704
- </div>
9705
10507
 
9706
10508
  </div>
9707
10509
 
10510
+ </div>
9708
10511
 
9709
10512
  </div>
9710
10513
 
@@ -9713,17 +10516,17 @@
9713
10516
 
9714
10517
 
9715
10518
  <h2 id="nautobot.apps.api.BaseModelSerializer" class="doc doc-heading">
9716
- <code>nautobot.apps.api.BaseModelSerializer</code>
10519
+ <code>nautobot.apps.api.BaseModelSerializer</code>
9717
10520
 
9718
10521
 
9719
10522
  <a href="#nautobot.apps.api.BaseModelSerializer" class="headerlink" title="Permanent link">&para;</a></h2>
9720
10523
 
9721
10524
 
9722
- <div class="doc doc-contents ">
9723
- <p class="doc doc-class-bases">
9724
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.OptInFieldsMixin" href="#nautobot.apps.api.OptInFieldsMixin">OptInFieldsMixin</a></code>, <code><span title="rest_framework.serializers.HyperlinkedModelSerializer">HyperlinkedModelSerializer</span></code></p>
10525
+ <div class="doc doc-contents ">
10526
+ <p class="doc doc-class-bases">
10527
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.OptInFieldsMixin" href="#nautobot.apps.api.OptInFieldsMixin">OptInFieldsMixin</a></code>, <code><span title="rest_framework.serializers.HyperlinkedModelSerializer">HyperlinkedModelSerializer</span></code></p>
10528
+
9725
10529
 
9726
-
9727
10530
  <p>This base serializer implements common fields and logic for all ModelSerializers.</p>
9728
10531
  <p>Namely, it:</p>
9729
10532
  <ul>
@@ -9739,7 +10542,7 @@
9739
10542
  </ul>
9740
10543
 
9741
10544
 
9742
-
10545
+
9743
10546
 
9744
10547
  <div class="doc doc-children">
9745
10548
 
@@ -9754,8 +10557,8 @@
9754
10557
 
9755
10558
 
9756
10559
  <h3 id="nautobot.apps.api.BaseModelSerializer.is_nested" class="doc doc-heading">
9757
- <code class="highlight language-python"><span class="n">is_nested</span></code>
9758
-
10560
+ <code class="highlight language-python"><span class="n">is_nested</span></code>
10561
+
9759
10562
  <span class="doc doc-labels">
9760
10563
  <small class="doc doc-label doc-label-property"><code>property</code></small>
9761
10564
  </span>
@@ -9763,227 +10566,206 @@
9763
10566
  <a href="#nautobot.apps.api.BaseModelSerializer.is_nested" class="headerlink" title="Permanent link">&para;</a></h3>
9764
10567
 
9765
10568
 
9766
- <div class="doc doc-contents ">
9767
-
10569
+ <div class="doc doc-contents ">
10570
+
9768
10571
  <p>Return whether this is a nested serializer.</p>
9769
- </div>
10572
+ </div>
9770
10573
 
9771
10574
  </div>
9772
10575
 
9773
10576
 
9774
10577
 
9775
-
9776
10578
  <div class="doc doc-object doc-function">
9777
10579
 
9778
10580
 
9779
-
9780
10581
  <h3 id="nautobot.apps.api.BaseModelSerializer.__init__" class="doc doc-heading">
9781
- <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">force_csv</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
10582
+ <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">force_csv</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
9782
10583
 
9783
10584
  <a href="#nautobot.apps.api.BaseModelSerializer.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
9784
10585
 
9785
10586
 
9786
- <div class="doc doc-contents ">
9787
-
10587
+ <div class="doc doc-contents ">
10588
+
9788
10589
  <p>Instantiate a BaseModelSerializer.</p>
9789
10590
  <p>The force_csv kwarg allows you to force _is_csv_request() to evaluate True without passing a Request object,
9790
10591
  which is necessary to be able to export appropriately structured CSV from a Job that doesn't have a Request.</p>
9791
10592
 
9792
- </div>
10593
+ </div>
9793
10594
 
9794
10595
  </div>
9795
10596
 
9796
-
9797
10597
  <div class="doc doc-object doc-function">
9798
10598
 
9799
10599
 
9800
-
9801
10600
  <h3 id="nautobot.apps.api.BaseModelSerializer.build_field" class="doc doc-heading">
9802
- <code class="highlight language-python"><span class="n">build_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">,</span> <span class="n">info</span><span class="p">,</span> <span class="n">model_class</span><span class="p">,</span> <span class="n">nested_depth</span><span class="p">)</span></code>
10601
+ <code class="highlight language-python"><span class="n">build_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">,</span> <span class="n">info</span><span class="p">,</span> <span class="n">model_class</span><span class="p">,</span> <span class="n">nested_depth</span><span class="p">)</span></code>
9803
10602
 
9804
10603
  <a href="#nautobot.apps.api.BaseModelSerializer.build_field" class="headerlink" title="Permanent link">&para;</a></h3>
9805
10604
 
9806
10605
 
9807
- <div class="doc doc-contents ">
9808
-
10606
+ <div class="doc doc-contents ">
10607
+
9809
10608
  <p>Return a two tuple of (cls, kwargs) to build a serializer field with.</p>
9810
10609
 
9811
- </div>
10610
+ </div>
9812
10611
 
9813
10612
  </div>
9814
10613
 
9815
-
9816
10614
  <div class="doc doc-object doc-function">
9817
10615
 
9818
10616
 
9819
-
9820
10617
  <h3 id="nautobot.apps.api.BaseModelSerializer.build_property_field" class="doc doc-heading">
9821
- <code class="highlight language-python"><span class="n">build_property_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">,</span> <span class="n">model_class</span><span class="p">)</span></code>
10618
+ <code class="highlight language-python"><span class="n">build_property_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">,</span> <span class="n">model_class</span><span class="p">)</span></code>
9822
10619
 
9823
10620
  <a href="#nautobot.apps.api.BaseModelSerializer.build_property_field" class="headerlink" title="Permanent link">&para;</a></h3>
9824
10621
 
9825
10622
 
9826
- <div class="doc doc-contents ">
9827
-
10623
+ <div class="doc doc-contents ">
10624
+
9828
10625
  <p>Create a property field for model methods and properties.</p>
9829
10626
 
9830
- </div>
10627
+ </div>
9831
10628
 
9832
10629
  </div>
9833
10630
 
9834
-
9835
10631
  <div class="doc doc-object doc-function">
9836
10632
 
9837
10633
 
9838
-
9839
10634
  <h3 id="nautobot.apps.api.BaseModelSerializer.build_relational_field" class="doc doc-heading">
9840
- <code class="highlight language-python"><span class="n">build_relational_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">,</span> <span class="n">relation_info</span><span class="p">)</span></code>
10635
+ <code class="highlight language-python"><span class="n">build_relational_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">,</span> <span class="n">relation_info</span><span class="p">)</span></code>
9841
10636
 
9842
10637
  <a href="#nautobot.apps.api.BaseModelSerializer.build_relational_field" class="headerlink" title="Permanent link">&para;</a></h3>
9843
10638
 
9844
10639
 
9845
- <div class="doc doc-contents ">
9846
-
10640
+ <div class="doc doc-contents ">
10641
+
9847
10642
  <p>Override DRF's default relational-field construction to be app-aware.</p>
9848
10643
 
9849
- </div>
10644
+ </div>
9850
10645
 
9851
10646
  </div>
9852
10647
 
9853
-
9854
10648
  <div class="doc doc-object doc-function">
9855
10649
 
9856
10650
 
9857
-
9858
10651
  <h3 id="nautobot.apps.api.BaseModelSerializer.build_url_field" class="doc doc-heading">
9859
- <code class="highlight language-python"><span class="n">build_url_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">,</span> <span class="n">model_class</span><span class="p">)</span></code>
10652
+ <code class="highlight language-python"><span class="n">build_url_field</span><span class="p">(</span><span class="n">field_name</span><span class="p">,</span> <span class="n">model_class</span><span class="p">)</span></code>
9860
10653
 
9861
10654
  <a href="#nautobot.apps.api.BaseModelSerializer.build_url_field" class="headerlink" title="Permanent link">&para;</a></h3>
9862
10655
 
9863
10656
 
9864
- <div class="doc doc-contents ">
9865
-
10657
+ <div class="doc doc-contents ">
10658
+
9866
10659
  <p>Override DRF's default 'url' field construction to be app-aware.</p>
9867
10660
 
9868
- </div>
10661
+ </div>
9869
10662
 
9870
10663
  </div>
9871
10664
 
9872
-
9873
10665
  <div class="doc doc-object doc-function">
9874
10666
 
9875
10667
 
9876
-
9877
10668
  <h3 id="nautobot.apps.api.BaseModelSerializer.determine_view_options" class="doc doc-heading">
9878
- <code class="highlight language-python"><span class="n">determine_view_options</span><span class="p">(</span><span class="n">request</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
10669
+ <code class="highlight language-python"><span class="n">determine_view_options</span><span class="p">(</span><span class="n">request</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
9879
10670
 
9880
10671
  <a href="#nautobot.apps.api.BaseModelSerializer.determine_view_options" class="headerlink" title="Permanent link">&para;</a></h3>
9881
10672
 
9882
10673
 
9883
- <div class="doc doc-contents ">
9884
-
10674
+ <div class="doc doc-contents ">
10675
+
9885
10676
  <p>Determine view options to use for rendering the list and detail views associated with this serializer.</p>
9886
10677
 
9887
- </div>
10678
+ </div>
9888
10679
 
9889
10680
  </div>
9890
10681
 
9891
-
9892
10682
  <div class="doc doc-object doc-function">
9893
10683
 
9894
10684
 
9895
-
9896
10685
  <h3 id="nautobot.apps.api.BaseModelSerializer.extend_field_names" class="doc doc-heading">
9897
- <code class="highlight language-python"><span class="n">extend_field_names</span><span class="p">(</span><span class="n">fields</span><span class="p">,</span> <span class="n">field_name</span><span class="p">,</span> <span class="n">at_start</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">opt_in_only</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
10686
+ <code class="highlight language-python"><span class="n">extend_field_names</span><span class="p">(</span><span class="n">fields</span><span class="p">,</span> <span class="n">field_name</span><span class="p">,</span> <span class="n">at_start</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">opt_in_only</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
9898
10687
 
9899
10688
  <a href="#nautobot.apps.api.BaseModelSerializer.extend_field_names" class="headerlink" title="Permanent link">&para;</a></h3>
9900
10689
 
9901
10690
 
9902
- <div class="doc doc-contents ">
9903
-
10691
+ <div class="doc doc-contents ">
10692
+
9904
10693
  <p>Prepend or append the given field_name to <code>fields</code> and optionally self.Meta.opt_in_fields as well.</p>
9905
10694
 
9906
- </div>
10695
+ </div>
9907
10696
 
9908
10697
  </div>
9909
10698
 
9910
-
9911
10699
  <div class="doc doc-object doc-function">
9912
10700
 
9913
10701
 
9914
-
9915
10702
  <h3 id="nautobot.apps.api.BaseModelSerializer.get_additional_detail_view_tabs" class="doc doc-heading">
9916
- <code class="highlight language-python"><span class="n">get_additional_detail_view_tabs</span><span class="p">()</span></code>
10703
+ <code class="highlight language-python"><span class="n">get_additional_detail_view_tabs</span><span class="p">()</span></code>
9917
10704
 
9918
10705
  <a href="#nautobot.apps.api.BaseModelSerializer.get_additional_detail_view_tabs" class="headerlink" title="Permanent link">&para;</a></h3>
9919
10706
 
9920
10707
 
9921
- <div class="doc doc-contents ">
9922
-
10708
+ <div class="doc doc-contents ">
10709
+
9923
10710
  <p>Retrieve definitions of non-default detail view tabs.</p>
9924
10711
  <p>By default provides an "Advanced" tab containing <code>self.advanced_tab_fields</code>, but subclasses
9925
10712
  can override this to move additional serializer fields to this or other tabs.</p>
9926
10713
 
9927
10714
 
9928
-
9929
- <p><strong>Returns:</strong></p>
9930
- <table>
9931
- <thead>
9932
- <tr>
9933
- <th>Type</th>
9934
- <th>Description</th>
9935
- </tr>
9936
- </thead>
9937
- <tbody>
10715
+ <p><span class="doc-section-title">Returns:</span></p>
10716
+ <table>
10717
+ <thead>
9938
10718
  <tr>
9939
- <td>
9940
- <code>dict</code>
9941
- </td>
9942
- <td>
9943
- <div class="doc-md-description">
9944
- <p><code>{&lt;tab label&gt;: [{&lt;panel label&gt;: {"fields": [&lt;list of fields&gt;]}, ...}, ...], ...}</code></p>
9945
- </div>
9946
- </td>
10719
+ <th>Type</th>
10720
+ <th>Description</th>
9947
10721
  </tr>
9948
- </tbody>
9949
- </table>
10722
+ </thead>
10723
+ <tbody>
10724
+ <tr class="doc-section-item">
10725
+ <td>
10726
+ <code>dict</code>
10727
+ </td>
10728
+ <td>
10729
+ <div class="doc-md-description">
10730
+ <p><code>{&lt;tab label&gt;: [{&lt;panel label&gt;: {"fields": [&lt;list of fields&gt;]}, ...}, ...], ...}</code></p>
10731
+ </div>
10732
+ </td>
10733
+ </tr>
10734
+ </tbody>
10735
+ </table>
9950
10736
 
9951
- </div>
10737
+ </div>
9952
10738
 
9953
10739
  </div>
9954
10740
 
9955
-
9956
10741
  <div class="doc doc-object doc-function">
9957
10742
 
9958
10743
 
9959
-
9960
10744
  <h3 id="nautobot.apps.api.BaseModelSerializer.get_display" class="doc doc-heading">
9961
- <code class="highlight language-python"><span class="n">get_display</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span></code>
10745
+ <code class="highlight language-python"><span class="n">get_display</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span></code>
9962
10746
 
9963
10747
  <a href="#nautobot.apps.api.BaseModelSerializer.get_display" class="headerlink" title="Permanent link">&para;</a></h3>
9964
10748
 
9965
10749
 
9966
- <div class="doc doc-contents ">
9967
-
10750
+ <div class="doc doc-contents ">
10751
+
9968
10752
  <p>Return either the <code>display</code> property of the instance or <code>str(instance)</code></p>
9969
10753
 
9970
- </div>
10754
+ </div>
9971
10755
 
9972
10756
  </div>
9973
10757
 
9974
-
9975
10758
  <div class="doc doc-object doc-function">
9976
10759
 
9977
10760
 
9978
-
9979
10761
  <h3 id="nautobot.apps.api.BaseModelSerializer.get_field_names" class="doc doc-heading">
9980
- <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
10762
+ <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
9981
10763
 
9982
10764
  <a href="#nautobot.apps.api.BaseModelSerializer.get_field_names" class="headerlink" title="Permanent link">&para;</a></h3>
9983
10765
 
9984
10766
 
9985
- <div class="doc doc-contents ">
9986
-
10767
+ <div class="doc doc-contents ">
10768
+
9987
10769
  <p>Override get_field_names() to add some custom logic.</p>
9988
10770
  <p>Assuming that we follow the pattern where <code>fields = "__all__" for the vast majority of serializers in Nautobot,
9989
10771
  we do not strictly need to use this method to protect against inadvertently omitting standard fields
@@ -9991,7 +10773,7 @@ like</code>display<code>,</code>created<code>, and</code>last_updated`. However,
9991
10773
  <p>The other purpose of this method now is to manipulate the set of fields that "<strong>all</strong>" actually means as a
9992
10774
  way of <em>excluding</em> fields that we <em>don't</em> want to include by default for performance or data exposure reasons.</p>
9993
10775
 
9994
- </div>
10776
+ </div>
9995
10777
 
9996
10778
  </div>
9997
10779
 
@@ -9999,8 +10781,7 @@ way of <em>excluding</em> fields that we <em>don't</em> want to include by defau
9999
10781
 
10000
10782
  </div>
10001
10783
 
10002
- </div>
10003
-
10784
+ </div>
10004
10785
 
10005
10786
  </div>
10006
10787
 
@@ -10009,15 +10790,15 @@ way of <em>excluding</em> fields that we <em>don't</em> want to include by defau
10009
10790
 
10010
10791
 
10011
10792
  <h2 id="nautobot.apps.api.BulkDestroyModelMixin" class="doc doc-heading">
10012
- <code>nautobot.apps.api.BulkDestroyModelMixin</code>
10793
+ <code>nautobot.apps.api.BulkDestroyModelMixin</code>
10013
10794
 
10014
10795
 
10015
10796
  <a href="#nautobot.apps.api.BulkDestroyModelMixin" class="headerlink" title="Permanent link">&para;</a></h2>
10016
10797
 
10017
10798
 
10018
- <div class="doc doc-contents ">
10799
+ <div class="doc doc-contents ">
10800
+
10019
10801
 
10020
-
10021
10802
  <p>Support bulk deletion of objects using the list endpoint for a model. Accepts a DELETE action with a list of one
10022
10803
  or more JSON objects, each specifying the UUID of an object to be deleted. For example:</p>
10023
10804
  <p>DELETE /api/dcim/locations/
@@ -10027,10 +10808,9 @@ or more JSON objects, each specifying the UUID of an object to be deleted. For e
10027
10808
  ]</p>
10028
10809
 
10029
10810
 
10030
-
10031
10811
 
10032
- <div class="doc doc-children">
10033
10812
 
10813
+ <div class="doc doc-children">
10034
10814
 
10035
10815
 
10036
10816
 
@@ -10041,10 +10821,10 @@ or more JSON objects, each specifying the UUID of an object to be deleted. For e
10041
10821
 
10042
10822
 
10043
10823
 
10044
- </div>
10045
10824
 
10046
10825
  </div>
10047
10826
 
10827
+ </div>
10048
10828
 
10049
10829
  </div>
10050
10830
 
@@ -10053,15 +10833,15 @@ or more JSON objects, each specifying the UUID of an object to be deleted. For e
10053
10833
 
10054
10834
 
10055
10835
  <h2 id="nautobot.apps.api.BulkUpdateModelMixin" class="doc doc-heading">
10056
- <code>nautobot.apps.api.BulkUpdateModelMixin</code>
10836
+ <code>nautobot.apps.api.BulkUpdateModelMixin</code>
10057
10837
 
10058
10838
 
10059
10839
  <a href="#nautobot.apps.api.BulkUpdateModelMixin" class="headerlink" title="Permanent link">&para;</a></h2>
10060
10840
 
10061
10841
 
10062
- <div class="doc doc-contents ">
10842
+ <div class="doc doc-contents ">
10843
+
10063
10844
 
10064
-
10065
10845
  <p>Support bulk modification of objects using the list endpoint for a model. Accepts a PATCH action with a list of one
10066
10846
  or more JSON objects, each specifying the UUID of an object to be updated as well as the attributes to be set.
10067
10847
  For example:</p>
@@ -10078,10 +10858,9 @@ For example:</p>
10078
10858
  ]</p>
10079
10859
 
10080
10860
 
10081
-
10082
10861
 
10083
- <div class="doc doc-children">
10084
10862
 
10863
+ <div class="doc doc-children">
10085
10864
 
10086
10865
 
10087
10866
 
@@ -10092,10 +10871,10 @@ For example:</p>
10092
10871
 
10093
10872
 
10094
10873
 
10095
- </div>
10096
10874
 
10097
10875
  </div>
10098
10876
 
10877
+ </div>
10099
10878
 
10100
10879
  </div>
10101
10880
 
@@ -10104,26 +10883,25 @@ For example:</p>
10104
10883
 
10105
10884
 
10106
10885
  <h2 id="nautobot.apps.api.ChoiceField" class="doc doc-heading">
10107
- <code>nautobot.apps.api.ChoiceField</code>
10886
+ <code>nautobot.apps.api.ChoiceField</code>
10108
10887
 
10109
10888
 
10110
10889
  <a href="#nautobot.apps.api.ChoiceField" class="headerlink" title="Permanent link">&para;</a></h2>
10111
10890
 
10112
10891
 
10113
- <div class="doc doc-contents ">
10114
- <p class="doc doc-class-bases">
10115
- Bases: <code><span title="rest_framework.serializers.Field">Field</span></code></p>
10892
+ <div class="doc doc-contents ">
10893
+ <p class="doc doc-class-bases">
10894
+ Bases: <code><span title="rest_framework.serializers.Field">Field</span></code></p>
10895
+
10116
10896
 
10117
-
10118
10897
  <p>Represent a ChoiceField as {'value': <DB value>, 'label': <string>}. Accepts a single value on write.</p>
10119
10898
  <p>:param choices: An iterable of choices in the form (value, key).
10120
10899
  :param allow_blank: Allow blank values in addition to the listed choices.</p>
10121
10900
 
10122
10901
 
10123
-
10124
10902
 
10125
- <div class="doc doc-children">
10126
10903
 
10904
+ <div class="doc doc-children">
10127
10905
 
10128
10906
 
10129
10907
 
@@ -10134,10 +10912,10 @@ For example:</p>
10134
10912
 
10135
10913
 
10136
10914
 
10137
- </div>
10138
10915
 
10139
10916
  </div>
10140
10917
 
10918
+ </div>
10141
10919
 
10142
10920
  </div>
10143
10921
 
@@ -10146,24 +10924,23 @@ For example:</p>
10146
10924
 
10147
10925
 
10148
10926
  <h2 id="nautobot.apps.api.ContentTypeField" class="doc doc-heading">
10149
- <code>nautobot.apps.api.ContentTypeField</code>
10927
+ <code>nautobot.apps.api.ContentTypeField</code>
10150
10928
 
10151
10929
 
10152
10930
  <a href="#nautobot.apps.api.ContentTypeField" class="headerlink" title="Permanent link">&para;</a></h2>
10153
10931
 
10154
10932
 
10155
- <div class="doc doc-contents ">
10156
- <p class="doc doc-class-bases">
10157
- Bases: <code><span title="rest_framework.relations.RelatedField">RelatedField</span></code></p>
10933
+ <div class="doc doc-contents ">
10934
+ <p class="doc doc-class-bases">
10935
+ Bases: <code><span title="rest_framework.relations.RelatedField">RelatedField</span></code></p>
10936
+
10158
10937
 
10159
-
10160
10938
  <p>Represent a ContentType as '<app_label>.<model>'</p>
10161
10939
 
10162
10940
 
10163
-
10164
10941
 
10165
- <div class="doc doc-children">
10166
10942
 
10943
+ <div class="doc doc-children">
10167
10944
 
10168
10945
 
10169
10946
 
@@ -10174,10 +10951,10 @@ For example:</p>
10174
10951
 
10175
10952
 
10176
10953
 
10177
- </div>
10178
10954
 
10179
10955
  </div>
10180
10956
 
10957
+ </div>
10181
10958
 
10182
10959
  </div>
10183
10960
 
@@ -10186,24 +10963,23 @@ For example:</p>
10186
10963
 
10187
10964
 
10188
10965
  <h2 id="nautobot.apps.api.CustomFieldModelSerializerMixin" class="doc doc-heading">
10189
- <code>nautobot.apps.api.CustomFieldModelSerializerMixin</code>
10966
+ <code>nautobot.apps.api.CustomFieldModelSerializerMixin</code>
10190
10967
 
10191
10968
 
10192
10969
  <a href="#nautobot.apps.api.CustomFieldModelSerializerMixin" class="headerlink" title="Permanent link">&para;</a></h2>
10193
10970
 
10194
10971
 
10195
- <div class="doc doc-contents ">
10196
- <p class="doc doc-class-bases">
10197
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.ValidatedModelSerializer" href="#nautobot.apps.api.ValidatedModelSerializer">ValidatedModelSerializer</a></code></p>
10972
+ <div class="doc doc-contents ">
10973
+ <p class="doc doc-class-bases">
10974
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.ValidatedModelSerializer" href="#nautobot.apps.api.ValidatedModelSerializer">ValidatedModelSerializer</a></code></p>
10975
+
10198
10976
 
10199
-
10200
10977
  <p>Extends ModelSerializer to render any CustomFields and their values associated with an object.</p>
10201
10978
 
10202
10979
 
10203
-
10204
10980
 
10205
- <div class="doc doc-children">
10206
10981
 
10982
+ <div class="doc doc-children">
10207
10983
 
10208
10984
 
10209
10985
 
@@ -10216,18 +10992,17 @@ For example:</p>
10216
10992
  <div class="doc doc-object doc-function">
10217
10993
 
10218
10994
 
10219
-
10220
10995
  <h3 id="nautobot.apps.api.CustomFieldModelSerializerMixin.get_field_names" class="doc doc-heading">
10221
- <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
10996
+ <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
10222
10997
 
10223
10998
  <a href="#nautobot.apps.api.CustomFieldModelSerializerMixin.get_field_names" class="headerlink" title="Permanent link">&para;</a></h3>
10224
10999
 
10225
11000
 
10226
- <div class="doc doc-contents ">
10227
-
11001
+ <div class="doc doc-contents ">
11002
+
10228
11003
  <p>Ensure that "custom_fields" and "computed_fields" are included appropriately.</p>
10229
11004
 
10230
- </div>
11005
+ </div>
10231
11006
 
10232
11007
  </div>
10233
11008
 
@@ -10235,8 +11010,7 @@ For example:</p>
10235
11010
 
10236
11011
  </div>
10237
11012
 
10238
- </div>
10239
-
11013
+ </div>
10240
11014
 
10241
11015
  </div>
10242
11016
 
@@ -10245,24 +11019,23 @@ For example:</p>
10245
11019
 
10246
11020
 
10247
11021
  <h2 id="nautobot.apps.api.CustomFieldModelViewSet" class="doc doc-heading">
10248
- <code>nautobot.apps.api.CustomFieldModelViewSet</code>
11022
+ <code>nautobot.apps.api.CustomFieldModelViewSet</code>
10249
11023
 
10250
11024
 
10251
11025
  <a href="#nautobot.apps.api.CustomFieldModelViewSet" class="headerlink" title="Permanent link">&para;</a></h2>
10252
11026
 
10253
11027
 
10254
- <div class="doc doc-contents ">
10255
- <p class="doc doc-class-bases">
10256
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.ModelViewSet" href="#nautobot.apps.api.ModelViewSet">ModelViewSet</a></code></p>
11028
+ <div class="doc doc-contents ">
11029
+ <p class="doc doc-class-bases">
11030
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.ModelViewSet" href="#nautobot.apps.api.ModelViewSet">ModelViewSet</a></code></p>
11031
+
10257
11032
 
10258
-
10259
11033
  <p>Include the applicable set of CustomFields in the ModelViewSet context.</p>
10260
11034
 
10261
11035
 
10262
-
10263
11036
 
10264
- <div class="doc doc-children">
10265
11037
 
11038
+ <div class="doc doc-children">
10266
11039
 
10267
11040
 
10268
11041
 
@@ -10273,10 +11046,10 @@ For example:</p>
10273
11046
 
10274
11047
 
10275
11048
 
10276
- </div>
10277
11049
 
10278
11050
  </div>
10279
11051
 
11052
+ </div>
10280
11053
 
10281
11054
  </div>
10282
11055
 
@@ -10285,25 +11058,24 @@ For example:</p>
10285
11058
 
10286
11059
 
10287
11060
  <h2 id="nautobot.apps.api.GetObjectCountsView" class="doc doc-heading">
10288
- <code>nautobot.apps.api.GetObjectCountsView</code>
11061
+ <code>nautobot.apps.api.GetObjectCountsView</code>
10289
11062
 
10290
11063
 
10291
11064
  <a href="#nautobot.apps.api.GetObjectCountsView" class="headerlink" title="Permanent link">&para;</a></h2>
10292
11065
 
10293
11066
 
10294
- <div class="doc doc-contents ">
10295
- <p class="doc doc-class-bases">
10296
- Bases: <code><span title="nautobot.core.api.views.NautobotAPIVersionMixin">NautobotAPIVersionMixin</span></code>, <code><span title="rest_framework.views.APIView">APIView</span></code></p>
11067
+ <div class="doc doc-contents ">
11068
+ <p class="doc doc-class-bases">
11069
+ Bases: <code><span title="nautobot.core.api.views.NautobotAPIVersionMixin">NautobotAPIVersionMixin</span></code>, <code><span title="rest_framework.views.APIView">APIView</span></code></p>
11070
+
10297
11071
 
10298
-
10299
11072
  <p>Enumerate the models listed on the Nautobot home page and return data structure
10300
11073
  containing verbose_name_plural, url and count.</p>
10301
11074
 
10302
11075
 
10303
-
10304
11076
 
10305
- <div class="doc doc-children">
10306
11077
 
11078
+ <div class="doc doc-children">
10307
11079
 
10308
11080
 
10309
11081
 
@@ -10314,10 +11086,10 @@ containing verbose_name_plural, url and count.</p>
10314
11086
 
10315
11087
 
10316
11088
 
10317
- </div>
10318
11089
 
10319
11090
  </div>
10320
11091
 
11092
+ </div>
10321
11093
 
10322
11094
  </div>
10323
11095
 
@@ -10326,24 +11098,23 @@ containing verbose_name_plural, url and count.</p>
10326
11098
 
10327
11099
 
10328
11100
  <h2 id="nautobot.apps.api.ModelViewSet" class="doc doc-heading">
10329
- <code>nautobot.apps.api.ModelViewSet</code>
11101
+ <code>nautobot.apps.api.ModelViewSet</code>
10330
11102
 
10331
11103
 
10332
11104
  <a href="#nautobot.apps.api.ModelViewSet" class="headerlink" title="Permanent link">&para;</a></h2>
10333
11105
 
10334
11106
 
10335
- <div class="doc doc-contents ">
10336
- <p class="doc doc-class-bases">
10337
- Bases: <code><span title="nautobot.core.api.views.NautobotAPIVersionMixin">NautobotAPIVersionMixin</span></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.BulkUpdateModelMixin" href="#nautobot.apps.api.BulkUpdateModelMixin">BulkUpdateModelMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.BulkDestroyModelMixin" href="#nautobot.apps.api.BulkDestroyModelMixin">BulkDestroyModelMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.ModelViewSetMixin" href="#nautobot.apps.api.ModelViewSetMixin">ModelViewSetMixin</a></code>, <code><span title="rest_framework.viewsets.ModelViewSet">ModelViewSet</span></code></p>
11107
+ <div class="doc doc-contents ">
11108
+ <p class="doc doc-class-bases">
11109
+ Bases: <code><span title="nautobot.core.api.views.NautobotAPIVersionMixin">NautobotAPIVersionMixin</span></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.BulkUpdateModelMixin" href="#nautobot.apps.api.BulkUpdateModelMixin">BulkUpdateModelMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.BulkDestroyModelMixin" href="#nautobot.apps.api.BulkDestroyModelMixin">BulkDestroyModelMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.ModelViewSetMixin" href="#nautobot.apps.api.ModelViewSetMixin">ModelViewSetMixin</a></code>, <code><span title="rest_framework.viewsets.ModelViewSet">ModelViewSet</span></code></p>
11110
+
10338
11111
 
10339
-
10340
11112
  <p>Extend DRF's ModelViewSet to support bulk update and delete functions.</p>
10341
11113
 
10342
11114
 
10343
-
10344
11115
 
10345
- <div class="doc doc-children">
10346
11116
 
11117
+ <div class="doc doc-children">
10347
11118
 
10348
11119
 
10349
11120
 
@@ -10354,10 +11125,10 @@ containing verbose_name_plural, url and count.</p>
10354
11125
 
10355
11126
 
10356
11127
 
10357
- </div>
10358
11128
 
10359
11129
  </div>
10360
11130
 
11131
+ </div>
10361
11132
 
10362
11133
  </div>
10363
11134
 
@@ -10366,20 +11137,19 @@ containing verbose_name_plural, url and count.</p>
10366
11137
 
10367
11138
 
10368
11139
  <h2 id="nautobot.apps.api.ModelViewSetMixin" class="doc doc-heading">
10369
- <code>nautobot.apps.api.ModelViewSetMixin</code>
11140
+ <code>nautobot.apps.api.ModelViewSetMixin</code>
10370
11141
 
10371
11142
 
10372
11143
  <a href="#nautobot.apps.api.ModelViewSetMixin" class="headerlink" title="Permanent link">&para;</a></h2>
10373
11144
 
10374
11145
 
10375
- <div class="doc doc-contents ">
11146
+ <div class="doc doc-contents ">
10376
11147
 
10377
11148
 
10378
11149
 
10379
-
10380
11150
 
10381
- <div class="doc doc-children">
10382
11151
 
11152
+ <div class="doc doc-children">
10383
11153
 
10384
11154
 
10385
11155
 
@@ -10392,59 +11162,54 @@ containing verbose_name_plural, url and count.</p>
10392
11162
  <div class="doc doc-object doc-function">
10393
11163
 
10394
11164
 
10395
-
10396
11165
  <h3 id="nautobot.apps.api.ModelViewSetMixin.get_object" class="doc doc-heading">
10397
- <code class="highlight language-python"><span class="n">get_object</span><span class="p">()</span></code>
11166
+ <code class="highlight language-python"><span class="n">get_object</span><span class="p">()</span></code>
10398
11167
 
10399
11168
  <a href="#nautobot.apps.api.ModelViewSetMixin.get_object" class="headerlink" title="Permanent link">&para;</a></h3>
10400
11169
 
10401
11170
 
10402
- <div class="doc doc-contents ">
10403
-
11171
+ <div class="doc doc-contents ">
11172
+
10404
11173
  <p>Extend rest_framework.generics.GenericAPIView.get_object to allow "pk" lookups to use a composite-key.</p>
10405
11174
 
10406
- </div>
11175
+ </div>
10407
11176
 
10408
11177
  </div>
10409
11178
 
10410
-
10411
11179
  <div class="doc doc-object doc-function">
10412
11180
 
10413
11181
 
10414
-
10415
11182
  <h3 id="nautobot.apps.api.ModelViewSetMixin.initial" class="doc doc-heading">
10416
- <code class="highlight language-python"><span class="n">initial</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
11183
+ <code class="highlight language-python"><span class="n">initial</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
10417
11184
 
10418
11185
  <a href="#nautobot.apps.api.ModelViewSetMixin.initial" class="headerlink" title="Permanent link">&para;</a></h3>
10419
11186
 
10420
11187
 
10421
- <div class="doc doc-contents ">
10422
-
11188
+ <div class="doc doc-contents ">
11189
+
10423
11190
  <p>Runs anything that needs to occur prior to calling the method handler.</p>
10424
11191
  <p>Override of internal Django Rest Framework API.</p>
10425
11192
 
10426
- </div>
11193
+ </div>
10427
11194
 
10428
11195
  </div>
10429
11196
 
10430
-
10431
11197
  <div class="doc doc-object doc-function">
10432
11198
 
10433
11199
 
10434
-
10435
11200
  <h3 id="nautobot.apps.api.ModelViewSetMixin.restrict_queryset" class="doc doc-heading">
10436
- <code class="highlight language-python"><span class="n">restrict_queryset</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
11201
+ <code class="highlight language-python"><span class="n">restrict_queryset</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
10437
11202
 
10438
11203
  <a href="#nautobot.apps.api.ModelViewSetMixin.restrict_queryset" class="headerlink" title="Permanent link">&para;</a></h3>
10439
11204
 
10440
11205
 
10441
- <div class="doc doc-contents ">
10442
-
11206
+ <div class="doc doc-contents ">
11207
+
10443
11208
  <p>Restrict the view's queryset to allow only the permitted objects for the given request.</p>
10444
11209
  <p>Subclasses (such as nautobot.extras.api.views.JobModelViewSet) may wish to override this.</p>
10445
11210
  <p>Called by initial(), below.</p>
10446
11211
 
10447
- </div>
11212
+ </div>
10448
11213
 
10449
11214
  </div>
10450
11215
 
@@ -10452,8 +11217,7 @@ containing verbose_name_plural, url and count.</p>
10452
11217
 
10453
11218
  </div>
10454
11219
 
10455
- </div>
10456
-
11220
+ </div>
10457
11221
 
10458
11222
  </div>
10459
11223
 
@@ -10462,24 +11226,23 @@ containing verbose_name_plural, url and count.</p>
10462
11226
 
10463
11227
 
10464
11228
  <h2 id="nautobot.apps.api.MultipleChoiceJSONField" class="doc doc-heading">
10465
- <code>nautobot.apps.api.MultipleChoiceJSONField</code>
11229
+ <code>nautobot.apps.api.MultipleChoiceJSONField</code>
10466
11230
 
10467
11231
 
10468
11232
  <a href="#nautobot.apps.api.MultipleChoiceJSONField" class="headerlink" title="Permanent link">&para;</a></h2>
10469
11233
 
10470
11234
 
10471
- <div class="doc doc-contents ">
10472
- <p class="doc doc-class-bases">
10473
- Bases: <code><span title="rest_framework.serializers.MultipleChoiceField">MultipleChoiceField</span></code></p>
11235
+ <div class="doc doc-contents ">
11236
+ <p class="doc doc-class-bases">
11237
+ Bases: <code><span title="rest_framework.serializers.MultipleChoiceField">MultipleChoiceField</span></code></p>
11238
+
10474
11239
 
10475
-
10476
11240
  <p>A MultipleChoiceField that renders the received value as a JSON-compatible list rather than a set.</p>
10477
11241
 
10478
11242
 
10479
-
10480
11243
 
10481
- <div class="doc doc-children">
10482
11244
 
11245
+ <div class="doc doc-children">
10483
11246
 
10484
11247
 
10485
11248
 
@@ -10492,18 +11255,17 @@ containing verbose_name_plural, url and count.</p>
10492
11255
  <div class="doc doc-object doc-function">
10493
11256
 
10494
11257
 
10495
-
10496
11258
  <h3 id="nautobot.apps.api.MultipleChoiceJSONField.__init__" class="doc doc-heading">
10497
- <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
11259
+ <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
10498
11260
 
10499
11261
  <a href="#nautobot.apps.api.MultipleChoiceJSONField.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
10500
11262
 
10501
11263
 
10502
- <div class="doc doc-contents ">
10503
-
11264
+ <div class="doc doc-contents ">
11265
+
10504
11266
  <p>Overload default choices handling to also accept a callable.</p>
10505
11267
 
10506
- </div>
11268
+ </div>
10507
11269
 
10508
11270
  </div>
10509
11271
 
@@ -10511,8 +11273,7 @@ containing verbose_name_plural, url and count.</p>
10511
11273
 
10512
11274
  </div>
10513
11275
 
10514
- </div>
10515
-
11276
+ </div>
10516
11277
 
10517
11278
  </div>
10518
11279
 
@@ -10521,21 +11282,21 @@ containing verbose_name_plural, url and count.</p>
10521
11282
 
10522
11283
 
10523
11284
  <h2 id="nautobot.apps.api.NautobotAutoSchema" class="doc doc-heading">
10524
- <code>nautobot.apps.api.NautobotAutoSchema</code>
11285
+ <code>nautobot.apps.api.NautobotAutoSchema</code>
10525
11286
 
10526
11287
 
10527
11288
  <a href="#nautobot.apps.api.NautobotAutoSchema" class="headerlink" title="Permanent link">&para;</a></h2>
10528
11289
 
10529
11290
 
10530
- <div class="doc doc-contents ">
10531
- <p class="doc doc-class-bases">
10532
- Bases: <code><span title="drf_spectacular.openapi.AutoSchema">AutoSchema</span></code></p>
11291
+ <div class="doc doc-contents ">
11292
+ <p class="doc doc-class-bases">
11293
+ Bases: <code><span title="drf_spectacular.openapi.AutoSchema">AutoSchema</span></code></p>
11294
+
10533
11295
 
10534
-
10535
11296
  <p>Nautobot-specific extensions to drf-spectacular's AutoSchema.</p>
10536
11297
 
10537
11298
 
10538
-
11299
+
10539
11300
 
10540
11301
  <div class="doc doc-children">
10541
11302
 
@@ -10550,8 +11311,8 @@ containing verbose_name_plural, url and count.</p>
10550
11311
 
10551
11312
 
10552
11313
  <h3 id="nautobot.apps.api.NautobotAutoSchema.is_bulk_action" class="doc doc-heading">
10553
- <code class="highlight language-python"><span class="n">is_bulk_action</span></code>
10554
-
11314
+ <code class="highlight language-python"><span class="n">is_bulk_action</span></code>
11315
+
10555
11316
  <span class="doc doc-labels">
10556
11317
  <small class="doc doc-label doc-label-property"><code>property</code></small>
10557
11318
  </span>
@@ -10559,10 +11320,10 @@ containing verbose_name_plural, url and count.</p>
10559
11320
  <a href="#nautobot.apps.api.NautobotAutoSchema.is_bulk_action" class="headerlink" title="Permanent link">&para;</a></h3>
10560
11321
 
10561
11322
 
10562
- <div class="doc doc-contents ">
10563
-
11323
+ <div class="doc doc-contents ">
11324
+
10564
11325
  <p>Custom property for convenience.</p>
10565
- </div>
11326
+ </div>
10566
11327
 
10567
11328
  </div>
10568
11329
 
@@ -10571,8 +11332,8 @@ containing verbose_name_plural, url and count.</p>
10571
11332
 
10572
11333
 
10573
11334
  <h3 id="nautobot.apps.api.NautobotAutoSchema.is_partial_action" class="doc doc-heading">
10574
- <code class="highlight language-python"><span class="n">is_partial_action</span></code>
10575
-
11335
+ <code class="highlight language-python"><span class="n">is_partial_action</span></code>
11336
+
10576
11337
  <span class="doc doc-labels">
10577
11338
  <small class="doc doc-label doc-label-property"><code>property</code></small>
10578
11339
  </span>
@@ -10580,28 +11341,26 @@ containing verbose_name_plural, url and count.</p>
10580
11341
  <a href="#nautobot.apps.api.NautobotAutoSchema.is_partial_action" class="headerlink" title="Permanent link">&para;</a></h3>
10581
11342
 
10582
11343
 
10583
- <div class="doc doc-contents ">
10584
-
11344
+ <div class="doc doc-contents ">
11345
+
10585
11346
  <p>Custom property for convenience.</p>
10586
- </div>
11347
+ </div>
10587
11348
 
10588
11349
  </div>
10589
11350
 
10590
11351
 
10591
11352
 
10592
-
10593
11353
  <div class="doc doc-object doc-function">
10594
11354
 
10595
11355
 
10596
-
10597
11356
  <h3 id="nautobot.apps.api.NautobotAutoSchema.get_description" class="doc doc-heading">
10598
- <code class="highlight language-python"><span class="n">get_description</span><span class="p">()</span></code>
11357
+ <code class="highlight language-python"><span class="n">get_description</span><span class="p">()</span></code>
10599
11358
 
10600
11359
  <a href="#nautobot.apps.api.NautobotAutoSchema.get_description" class="headerlink" title="Permanent link">&para;</a></h3>
10601
11360
 
10602
11361
 
10603
- <div class="doc doc-contents ">
10604
-
11362
+ <div class="doc doc-contents ">
11363
+
10605
11364
  <p>Get the appropriate description for a given API endpoint.</p>
10606
11365
  <p>By default, if a specific action doesn't have its own docstring, and neither does the view class,
10607
11366
  drf-spectacular will walk up the MRO of the view class until it finds a docstring, and use that.
@@ -10610,65 +11369,59 @@ docstring of the <code>NautobotModelViewSet</code> class, which isn't very usefu
10610
11369
  we only use the docstring of the view itself (ignoring its parent class docstrings), or if none exists, we
10611
11370
  make an attempt at rendering a basically accurate default description.</p>
10612
11371
 
10613
- </div>
11372
+ </div>
10614
11373
 
10615
11374
  </div>
10616
11375
 
10617
-
10618
11376
  <div class="doc doc-object doc-function">
10619
11377
 
10620
11378
 
10621
-
10622
11379
  <h3 id="nautobot.apps.api.NautobotAutoSchema.get_filter_backends" class="doc doc-heading">
10623
- <code class="highlight language-python"><span class="n">get_filter_backends</span><span class="p">()</span></code>
11380
+ <code class="highlight language-python"><span class="n">get_filter_backends</span><span class="p">()</span></code>
10624
11381
 
10625
11382
  <a href="#nautobot.apps.api.NautobotAutoSchema.get_filter_backends" class="headerlink" title="Permanent link">&para;</a></h3>
10626
11383
 
10627
11384
 
10628
- <div class="doc doc-contents ">
10629
-
11385
+ <div class="doc doc-contents ">
11386
+
10630
11387
  <p>Nautobot's custom bulk operations, even though they return a list of records, are NOT filterable.</p>
10631
11388
 
10632
- </div>
11389
+ </div>
10633
11390
 
10634
11391
  </div>
10635
11392
 
10636
-
10637
11393
  <div class="doc doc-object doc-function">
10638
11394
 
10639
11395
 
10640
-
10641
11396
  <h3 id="nautobot.apps.api.NautobotAutoSchema.get_operation_id" class="doc doc-heading">
10642
- <code class="highlight language-python"><span class="n">get_operation_id</span><span class="p">()</span></code>
11397
+ <code class="highlight language-python"><span class="n">get_operation_id</span><span class="p">()</span></code>
10643
11398
 
10644
11399
  <a href="#nautobot.apps.api.NautobotAutoSchema.get_operation_id" class="headerlink" title="Permanent link">&para;</a></h3>
10645
11400
 
10646
11401
 
10647
- <div class="doc doc-contents ">
10648
-
11402
+ <div class="doc doc-contents ">
11403
+
10649
11404
  <p>Extend the base method to handle Nautobot's REST API bulk operations.</p>
10650
11405
  <p>Without this extension, every one of our ModelViewSet classes will result in drf-spectacular complaining
10651
11406
  about operationId collisions, e.g. between DELETE /api/dcim/devices/ and DELETE /api/dcim/devices/<pk>/ would
10652
11407
  both get resolved to the same "dcim_devices_destroy" operation-id and this would make drf-spectacular complain.</p>
10653
11408
  <p>With this extension, the bulk endpoints automatically get a different operation-id from the non-bulk endpoints.</p>
10654
11409
 
10655
- </div>
11410
+ </div>
10656
11411
 
10657
11412
  </div>
10658
11413
 
10659
-
10660
11414
  <div class="doc doc-object doc-function">
10661
11415
 
10662
11416
 
10663
-
10664
11417
  <h3 id="nautobot.apps.api.NautobotAutoSchema.get_request_serializer" class="doc doc-heading">
10665
- <code class="highlight language-python"><span class="n">get_request_serializer</span><span class="p">()</span></code>
11418
+ <code class="highlight language-python"><span class="n">get_request_serializer</span><span class="p">()</span></code>
10666
11419
 
10667
11420
  <a href="#nautobot.apps.api.NautobotAutoSchema.get_request_serializer" class="headerlink" title="Permanent link">&para;</a></h3>
10668
11421
 
10669
11422
 
10670
- <div class="doc doc-contents ">
10671
-
11423
+ <div class="doc doc-contents ">
11424
+
10672
11425
  <p>Return the request serializer (used for describing/parsing the request payload) for this endpoint.</p>
10673
11426
  <p>We override the default drf-spectacular behavior for the case where the endpoint describes a write request
10674
11427
  with required data (PATCH, POST, PUT). In those cases we replace FooSerializer with a dynamically-defined
@@ -10676,89 +11429,81 @@ WritableFooSerializer class in order to more accurately represent the available
10676
11429
  <p>We also override for the case where the endpoint is one of Nautobot's custom bulk API endpoints, which
10677
11430
  require a list of serializers as input, rather than a single one.</p>
10678
11431
 
10679
- </div>
11432
+ </div>
10680
11433
 
10681
11434
  </div>
10682
11435
 
10683
-
10684
11436
  <div class="doc doc-object doc-function">
10685
11437
 
10686
11438
 
10687
-
10688
11439
  <h3 id="nautobot.apps.api.NautobotAutoSchema.get_response_serializers" class="doc doc-heading">
10689
- <code class="highlight language-python"><span class="n">get_response_serializers</span><span class="p">()</span></code>
11440
+ <code class="highlight language-python"><span class="n">get_response_serializers</span><span class="p">()</span></code>
10690
11441
 
10691
11442
  <a href="#nautobot.apps.api.NautobotAutoSchema.get_response_serializers" class="headerlink" title="Permanent link">&para;</a></h3>
10692
11443
 
10693
11444
 
10694
- <div class="doc doc-contents ">
10695
-
11445
+ <div class="doc doc-contents ">
11446
+
10696
11447
  <p>Return the response serializer (used for describing the response payload) for this endpoint.</p>
10697
11448
  <p>We override the default drf-spectacular behavior for the case where the endpoint describes a write request
10698
11449
  to a bulk endpoint, which returns a list of serializers, rather than a single one.</p>
10699
11450
 
10700
- </div>
11451
+ </div>
10701
11452
 
10702
11453
  </div>
10703
11454
 
10704
-
10705
11455
  <div class="doc doc-object doc-function">
10706
11456
 
10707
11457
 
10708
-
10709
11458
  <h3 id="nautobot.apps.api.NautobotAutoSchema.get_serializer_ref_name" class="doc doc-heading">
10710
- <code class="highlight language-python"><span class="n">get_serializer_ref_name</span><span class="p">(</span><span class="n">serializer</span><span class="p">)</span></code>
11459
+ <code class="highlight language-python"><span class="n">get_serializer_ref_name</span><span class="p">(</span><span class="n">serializer</span><span class="p">)</span></code>
10711
11460
 
10712
11461
  <a href="#nautobot.apps.api.NautobotAutoSchema.get_serializer_ref_name" class="headerlink" title="Permanent link">&para;</a></h3>
10713
11462
 
10714
11463
 
10715
- <div class="doc doc-contents ">
10716
-
11464
+ <div class="doc doc-contents ">
11465
+
10717
11466
  <p>Get the serializer's ref_name Meta attribute if set, or else derive a ref_name automatically.</p>
10718
11467
  <p>Based on drf_yasg.utils.get_serializer_ref_name().</p>
10719
11468
 
10720
- </div>
11469
+ </div>
10721
11470
 
10722
11471
  </div>
10723
11472
 
10724
-
10725
11473
  <div class="doc doc-object doc-function">
10726
11474
 
10727
11475
 
10728
-
10729
11476
  <h3 id="nautobot.apps.api.NautobotAutoSchema.get_writable_class" class="doc doc-heading">
10730
- <code class="highlight language-python"><span class="n">get_writable_class</span><span class="p">(</span><span class="n">serializer</span><span class="p">,</span> <span class="n">bulk</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
11477
+ <code class="highlight language-python"><span class="n">get_writable_class</span><span class="p">(</span><span class="n">serializer</span><span class="p">,</span> <span class="n">bulk</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
10731
11478
 
10732
11479
  <a href="#nautobot.apps.api.NautobotAutoSchema.get_writable_class" class="headerlink" title="Permanent link">&para;</a></h3>
10733
11480
 
10734
11481
 
10735
- <div class="doc doc-contents ">
10736
-
11482
+ <div class="doc doc-contents ">
11483
+
10737
11484
  <p>Given a FooSerializer instance, look up or construct a [Bulk]WritableFooSerializer class if necessary.</p>
10738
11485
  <p>If no [Bulk]WritableFooSerializer class is needed, returns None instead.</p>
10739
11486
 
10740
- </div>
11487
+ </div>
10741
11488
 
10742
11489
  </div>
10743
11490
 
10744
-
10745
11491
  <div class="doc doc-object doc-function">
10746
11492
 
10747
11493
 
10748
-
10749
11494
  <h3 id="nautobot.apps.api.NautobotAutoSchema.resolve_serializer" class="doc doc-heading">
10750
- <code class="highlight language-python"><span class="n">resolve_serializer</span><span class="p">(</span><span class="n">serializer</span><span class="p">,</span> <span class="n">direction</span><span class="p">,</span> <span class="n">bypass_extensions</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
11495
+ <code class="highlight language-python"><span class="n">resolve_serializer</span><span class="p">(</span><span class="n">serializer</span><span class="p">,</span> <span class="n">direction</span><span class="p">,</span> <span class="n">bypass_extensions</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
10751
11496
 
10752
11497
  <a href="#nautobot.apps.api.NautobotAutoSchema.resolve_serializer" class="headerlink" title="Permanent link">&para;</a></h3>
10753
11498
 
10754
11499
 
10755
- <div class="doc doc-contents ">
10756
-
11500
+ <div class="doc doc-contents ">
11501
+
10757
11502
  <p>Re-add required <code>id</code> field on bulk_partial_update action.</p>
10758
11503
  <p>drf-spectacular clears the <code>required</code> list for any partial serializers in its <code>_map_basic_serializer()</code>,
10759
11504
  but Nautobot bulk partial updates require the <code>id</code> field to be specified for each object to update.</p>
10760
11505
 
10761
- </div>
11506
+ </div>
10762
11507
 
10763
11508
  </div>
10764
11509
 
@@ -10766,8 +11511,7 @@ but Nautobot bulk partial updates require the <code>id</code> field to be specif
10766
11511
 
10767
11512
  </div>
10768
11513
 
10769
- </div>
10770
-
11514
+ </div>
10771
11515
 
10772
11516
  </div>
10773
11517
 
@@ -10776,24 +11520,23 @@ but Nautobot bulk partial updates require the <code>id</code> field to be specif
10776
11520
 
10777
11521
 
10778
11522
  <h2 id="nautobot.apps.api.NautobotCSVParser" class="doc doc-heading">
10779
- <code>nautobot.apps.api.NautobotCSVParser</code>
11523
+ <code>nautobot.apps.api.NautobotCSVParser</code>
10780
11524
 
10781
11525
 
10782
11526
  <a href="#nautobot.apps.api.NautobotCSVParser" class="headerlink" title="Permanent link">&para;</a></h2>
10783
11527
 
10784
11528
 
10785
- <div class="doc doc-contents ">
10786
- <p class="doc doc-class-bases">
10787
- Bases: <code><span title="rest_framework.parsers.BaseParser">BaseParser</span></code></p>
11529
+ <div class="doc doc-contents ">
11530
+ <p class="doc doc-class-bases">
11531
+ Bases: <code><span title="rest_framework.parsers.BaseParser">BaseParser</span></code></p>
11532
+
10788
11533
 
10789
-
10790
11534
  <p>Counterpart to NautobotCSVRenderer - import CSV data.</p>
10791
11535
 
10792
11536
 
10793
-
10794
11537
 
10795
- <div class="doc doc-children">
10796
11538
 
11539
+ <div class="doc doc-children">
10797
11540
 
10798
11541
 
10799
11542
 
@@ -10806,20 +11549,19 @@ but Nautobot bulk partial updates require the <code>id</code> field to be specif
10806
11549
  <div class="doc doc-object doc-function">
10807
11550
 
10808
11551
 
10809
-
10810
11552
  <h3 id="nautobot.apps.api.NautobotCSVParser.row_elements_to_data" class="doc doc-heading">
10811
- <code class="highlight language-python"><span class="n">row_elements_to_data</span><span class="p">(</span><span class="n">counter</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">serializer</span><span class="p">)</span></code>
11553
+ <code class="highlight language-python"><span class="n">row_elements_to_data</span><span class="p">(</span><span class="n">counter</span><span class="p">,</span> <span class="n">row</span><span class="p">,</span> <span class="n">serializer</span><span class="p">)</span></code>
10812
11554
 
10813
11555
  <a href="#nautobot.apps.api.NautobotCSVParser.row_elements_to_data" class="headerlink" title="Permanent link">&para;</a></h3>
10814
11556
 
10815
11557
 
10816
- <div class="doc doc-contents ">
10817
-
11558
+ <div class="doc doc-contents ">
11559
+
10818
11560
  <p>Parse a single row of CSV data (represented as a dict) into a dict suitable for consumption by the serializer.</p>
10819
11561
  <p>TODO: it would be more elegant if our serializer fields knew how to deserialize the CSV data themselves;
10820
11562
  could we then literally have the parser just return list(reader) and not need this function at all?</p>
10821
11563
 
10822
- </div>
11564
+ </div>
10823
11565
 
10824
11566
  </div>
10825
11567
 
@@ -10827,8 +11569,7 @@ could we then literally have the parser just return list(reader) and not need th
10827
11569
 
10828
11570
  </div>
10829
11571
 
10830
- </div>
10831
-
11572
+ </div>
10832
11573
 
10833
11574
  </div>
10834
11575
 
@@ -10837,24 +11578,23 @@ could we then literally have the parser just return list(reader) and not need th
10837
11578
 
10838
11579
 
10839
11580
  <h2 id="nautobot.apps.api.NautobotHyperlinkedRelatedField" class="doc doc-heading">
10840
- <code>nautobot.apps.api.NautobotHyperlinkedRelatedField</code>
11581
+ <code>nautobot.apps.api.NautobotHyperlinkedRelatedField</code>
10841
11582
 
10842
11583
 
10843
11584
  <a href="#nautobot.apps.api.NautobotHyperlinkedRelatedField" class="headerlink" title="Permanent link">&para;</a></h2>
10844
11585
 
10845
11586
 
10846
- <div class="doc doc-contents ">
10847
- <p class="doc doc-class-bases">
10848
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.mixins.WritableSerializerMixin" href="#nautobot.apps.api.WritableSerializerMixin">WritableSerializerMixin</a></code>, <code><span title="rest_framework.serializers.HyperlinkedRelatedField">HyperlinkedRelatedField</span></code></p>
11587
+ <div class="doc doc-contents ">
11588
+ <p class="doc doc-class-bases">
11589
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.mixins.WritableSerializerMixin" href="#nautobot.apps.api.WritableSerializerMixin">WritableSerializerMixin</a></code>, <code><span title="rest_framework.serializers.HyperlinkedRelatedField">HyperlinkedRelatedField</span></code></p>
11590
+
10849
11591
 
10850
-
10851
11592
  <p>Extend HyperlinkedRelatedField to include URL namespace-awareness, add 'object_type' field, and read composite-keys.</p>
10852
11593
 
10853
11594
 
10854
-
10855
11595
 
10856
- <div class="doc doc-children">
10857
11596
 
11597
+ <div class="doc doc-children">
10858
11598
 
10859
11599
 
10860
11600
 
@@ -10867,57 +11607,52 @@ could we then literally have the parser just return list(reader) and not need th
10867
11607
  <div class="doc doc-object doc-function">
10868
11608
 
10869
11609
 
10870
-
10871
11610
  <h3 id="nautobot.apps.api.NautobotHyperlinkedRelatedField.__init__" class="doc doc-heading">
10872
- <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
11611
+ <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
10873
11612
 
10874
11613
  <a href="#nautobot.apps.api.NautobotHyperlinkedRelatedField.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
10875
11614
 
10876
11615
 
10877
- <div class="doc doc-contents ">
10878
-
11616
+ <div class="doc doc-contents ">
11617
+
10879
11618
  <p>Override DRF's namespace-unaware default view_name logic for HyperlinkedRelatedField.</p>
10880
11619
  <p>DRF defaults to '{model_name}-detail' instead of '{app_label}:{model_name}-detail'.</p>
10881
11620
 
10882
- </div>
11621
+ </div>
10883
11622
 
10884
11623
  </div>
10885
11624
 
10886
-
10887
11625
  <div class="doc doc-object doc-function">
10888
11626
 
10889
11627
 
10890
-
10891
11628
  <h3 id="nautobot.apps.api.NautobotHyperlinkedRelatedField.to_internal_value" class="doc doc-heading">
10892
- <code class="highlight language-python"><span class="n">to_internal_value</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></code>
11629
+ <code class="highlight language-python"><span class="n">to_internal_value</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></code>
10893
11630
 
10894
11631
  <a href="#nautobot.apps.api.NautobotHyperlinkedRelatedField.to_internal_value" class="headerlink" title="Permanent link">&para;</a></h3>
10895
11632
 
10896
11633
 
10897
- <div class="doc doc-contents ">
10898
-
11634
+ <div class="doc doc-contents ">
11635
+
10899
11636
  <p>Convert potentially nested representation to a model instance.</p>
10900
11637
 
10901
- </div>
11638
+ </div>
10902
11639
 
10903
11640
  </div>
10904
11641
 
10905
-
10906
11642
  <div class="doc doc-object doc-function">
10907
11643
 
10908
11644
 
10909
-
10910
11645
  <h3 id="nautobot.apps.api.NautobotHyperlinkedRelatedField.to_representation" class="doc doc-heading">
10911
- <code class="highlight language-python"><span class="n">to_representation</span><span class="p">(</span><span class="n">value</span><span class="p">)</span></code>
11646
+ <code class="highlight language-python"><span class="n">to_representation</span><span class="p">(</span><span class="n">value</span><span class="p">)</span></code>
10912
11647
 
10913
11648
  <a href="#nautobot.apps.api.NautobotHyperlinkedRelatedField.to_representation" class="headerlink" title="Permanent link">&para;</a></h3>
10914
11649
 
10915
11650
 
10916
- <div class="doc doc-contents ">
10917
-
11651
+ <div class="doc doc-contents ">
11652
+
10918
11653
  <p>Convert URL representation to a brief nested representation.</p>
10919
11654
 
10920
- </div>
11655
+ </div>
10921
11656
 
10922
11657
  </div>
10923
11658
 
@@ -10925,8 +11660,7 @@ could we then literally have the parser just return list(reader) and not need th
10925
11660
 
10926
11661
  </div>
10927
11662
 
10928
- </div>
10929
-
11663
+ </div>
10930
11664
 
10931
11665
  </div>
10932
11666
 
@@ -10935,23 +11669,38 @@ could we then literally have the parser just return list(reader) and not need th
10935
11669
 
10936
11670
 
10937
11671
  <h2 id="nautobot.apps.api.NautobotModelSerializer" class="doc doc-heading">
10938
- <code>nautobot.apps.api.NautobotModelSerializer</code>
11672
+ <code>nautobot.apps.api.NautobotModelSerializer</code>
10939
11673
 
10940
11674
 
10941
11675
  <a href="#nautobot.apps.api.NautobotModelSerializer" class="headerlink" title="Permanent link">&para;</a></h2>
10942
11676
 
10943
11677
 
10944
- <div class="doc doc-contents ">
10945
- <p class="doc doc-class-bases">
10946
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.RelationshipModelSerializerMixin" href="#nautobot.apps.api.RelationshipModelSerializerMixin">RelationshipModelSerializerMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.CustomFieldModelSerializerMixin" href="#nautobot.apps.api.CustomFieldModelSerializerMixin">CustomFieldModelSerializerMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.NotesSerializerMixin" href="#nautobot.apps.api.NotesSerializerMixin">NotesSerializerMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.ValidatedModelSerializer" href="#nautobot.apps.api.ValidatedModelSerializer">ValidatedModelSerializer</a></code></p>
11678
+ <div class="doc doc-contents ">
11679
+ <p class="doc doc-class-bases">
11680
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.RelationshipModelSerializerMixin" href="#nautobot.apps.api.RelationshipModelSerializerMixin">RelationshipModelSerializerMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.CustomFieldModelSerializerMixin" href="#nautobot.apps.api.CustomFieldModelSerializerMixin">CustomFieldModelSerializerMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.NotesSerializerMixin" href="#nautobot.apps.api.NotesSerializerMixin">NotesSerializerMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.ValidatedModelSerializer" href="#nautobot.apps.api.ValidatedModelSerializer">ValidatedModelSerializer</a></code></p>
11681
+
10947
11682
 
10948
-
10949
11683
  <p>Base class to use for serializers based on OrganizationalModel or PrimaryModel.</p>
10950
11684
  <p>Can also be used for models derived from BaseModel, so long as they support custom fields, notes, and relationships.</p>
10951
11685
 
10952
11686
 
11687
+
11688
+
11689
+ <div class="doc doc-children">
11690
+
11691
+
11692
+
11693
+
11694
+
11695
+
11696
+
11697
+
11698
+
11699
+
11700
+
10953
11701
  </div>
10954
11702
 
11703
+ </div>
10955
11704
 
10956
11705
  </div>
10957
11706
 
@@ -10960,23 +11709,38 @@ could we then literally have the parser just return list(reader) and not need th
10960
11709
 
10961
11710
 
10962
11711
  <h2 id="nautobot.apps.api.NautobotModelViewSet" class="doc doc-heading">
10963
- <code>nautobot.apps.api.NautobotModelViewSet</code>
11712
+ <code>nautobot.apps.api.NautobotModelViewSet</code>
10964
11713
 
10965
11714
 
10966
11715
  <a href="#nautobot.apps.api.NautobotModelViewSet" class="headerlink" title="Permanent link">&para;</a></h2>
10967
11716
 
10968
11717
 
10969
- <div class="doc doc-contents ">
10970
- <p class="doc doc-class-bases">
10971
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.extras.api.views.NotesViewSetMixin" href="#nautobot.apps.api.NotesViewSetMixin">NotesViewSetMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.api.views.CustomFieldModelViewSet" href="#nautobot.apps.api.CustomFieldModelViewSet">CustomFieldModelViewSet</a></code></p>
11718
+ <div class="doc doc-contents ">
11719
+ <p class="doc doc-class-bases">
11720
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.extras.api.views.NotesViewSetMixin" href="#nautobot.apps.api.NotesViewSetMixin">NotesViewSetMixin</a></code>, <code><a class="autorefs autorefs-internal" title="nautobot.extras.api.views.CustomFieldModelViewSet" href="#nautobot.apps.api.CustomFieldModelViewSet">CustomFieldModelViewSet</a></code></p>
11721
+
10972
11722
 
10973
-
10974
11723
  <p>Base class to use for API ViewSets based on OrganizationalModel or PrimaryModel.</p>
10975
11724
  <p>Can also be used for models derived from BaseModel, so long as they support Notes.</p>
10976
11725
 
10977
11726
 
11727
+
11728
+
11729
+ <div class="doc doc-children">
11730
+
11731
+
11732
+
11733
+
11734
+
11735
+
11736
+
11737
+
11738
+
11739
+
11740
+
10978
11741
  </div>
10979
11742
 
11743
+ </div>
10980
11744
 
10981
11745
  </div>
10982
11746
 
@@ -10985,24 +11749,23 @@ could we then literally have the parser just return list(reader) and not need th
10985
11749
 
10986
11750
 
10987
11751
  <h2 id="nautobot.apps.api.NotesSerializerMixin" class="doc doc-heading">
10988
- <code>nautobot.apps.api.NotesSerializerMixin</code>
11752
+ <code>nautobot.apps.api.NotesSerializerMixin</code>
10989
11753
 
10990
11754
 
10991
11755
  <a href="#nautobot.apps.api.NotesSerializerMixin" class="headerlink" title="Permanent link">&para;</a></h2>
10992
11756
 
10993
11757
 
10994
- <div class="doc doc-contents ">
10995
- <p class="doc doc-class-bases">
10996
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.BaseModelSerializer" href="#nautobot.apps.api.BaseModelSerializer">BaseModelSerializer</a></code></p>
11758
+ <div class="doc doc-contents ">
11759
+ <p class="doc doc-class-bases">
11760
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.BaseModelSerializer" href="#nautobot.apps.api.BaseModelSerializer">BaseModelSerializer</a></code></p>
11761
+
10997
11762
 
10998
-
10999
11763
  <p>Extend Serializer with a <code>notes</code> field.</p>
11000
11764
 
11001
11765
 
11002
-
11003
11766
 
11004
- <div class="doc doc-children">
11005
11767
 
11768
+ <div class="doc doc-children">
11006
11769
 
11007
11770
 
11008
11771
 
@@ -11015,18 +11778,17 @@ could we then literally have the parser just return list(reader) and not need th
11015
11778
  <div class="doc doc-object doc-function">
11016
11779
 
11017
11780
 
11018
-
11019
11781
  <h3 id="nautobot.apps.api.NotesSerializerMixin.get_field_names" class="doc doc-heading">
11020
- <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
11782
+ <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
11021
11783
 
11022
11784
  <a href="#nautobot.apps.api.NotesSerializerMixin.get_field_names" class="headerlink" title="Permanent link">&para;</a></h3>
11023
11785
 
11024
11786
 
11025
- <div class="doc doc-contents ">
11026
-
11787
+ <div class="doc doc-contents ">
11788
+
11027
11789
  <p>Ensure that fields includes "notes_url" field if applicable.</p>
11028
11790
 
11029
- </div>
11791
+ </div>
11030
11792
 
11031
11793
  </div>
11032
11794
 
@@ -11034,8 +11796,7 @@ could we then literally have the parser just return list(reader) and not need th
11034
11796
 
11035
11797
  </div>
11036
11798
 
11037
- </div>
11038
-
11799
+ </div>
11039
11800
 
11040
11801
  </div>
11041
11802
 
@@ -11044,17 +11805,17 @@ could we then literally have the parser just return list(reader) and not need th
11044
11805
 
11045
11806
 
11046
11807
  <h2 id="nautobot.apps.api.NotesViewSetMixin" class="doc doc-heading">
11047
- <code>nautobot.apps.api.NotesViewSetMixin</code>
11808
+ <code>nautobot.apps.api.NotesViewSetMixin</code>
11048
11809
 
11049
11810
 
11050
11811
  <a href="#nautobot.apps.api.NotesViewSetMixin" class="headerlink" title="Permanent link">&para;</a></h2>
11051
11812
 
11052
11813
 
11053
- <div class="doc doc-contents ">
11814
+ <div class="doc doc-contents ">
11815
+
11054
11816
 
11055
11817
 
11056
11818
 
11057
-
11058
11819
 
11059
11820
  <div class="doc doc-children">
11060
11821
 
@@ -11070,24 +11831,23 @@ could we then literally have the parser just return list(reader) and not need th
11070
11831
 
11071
11832
 
11072
11833
  <h3 id="nautobot.apps.api.NotesViewSetMixin.CreateNotePermissions" class="doc doc-heading">
11073
- <code>CreateNotePermissions</code>
11834
+ <code>CreateNotePermissions</code>
11074
11835
 
11075
11836
 
11076
11837
  <a href="#nautobot.apps.api.NotesViewSetMixin.CreateNotePermissions" class="headerlink" title="Permanent link">&para;</a></h3>
11077
11838
 
11078
11839
 
11079
- <div class="doc doc-contents ">
11080
- <p class="doc doc-class-bases">
11081
- Bases: <code><span title="nautobot.core.api.authentication.TokenPermissions">TokenPermissions</span></code></p>
11840
+ <div class="doc doc-contents ">
11841
+ <p class="doc doc-class-bases">
11842
+ Bases: <code><span title="nautobot.core.api.authentication.TokenPermissions">TokenPermissions</span></code></p>
11843
+
11082
11844
 
11083
-
11084
11845
  <p>As nautobot.core.api.authentication.TokenPermissions, but enforcing add_note permission.</p>
11085
11846
 
11086
11847
 
11087
-
11088
11848
 
11089
- <div class="doc doc-children">
11090
11849
 
11850
+ <div class="doc doc-children">
11091
11851
 
11092
11852
 
11093
11853
 
@@ -11098,49 +11858,45 @@ could we then literally have the parser just return list(reader) and not need th
11098
11858
 
11099
11859
 
11100
11860
 
11101
- </div>
11102
11861
 
11103
11862
  </div>
11104
11863
 
11864
+ </div>
11105
11865
 
11106
11866
  </div>
11107
11867
 
11108
11868
 
11109
-
11110
11869
  <div class="doc doc-object doc-function">
11111
11870
 
11112
11871
 
11113
-
11114
11872
  <h3 id="nautobot.apps.api.NotesViewSetMixin.notes" class="doc doc-heading">
11115
- <code class="highlight language-python"><span class="n">notes</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
11873
+ <code class="highlight language-python"><span class="n">notes</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
11116
11874
 
11117
11875
  <a href="#nautobot.apps.api.NotesViewSetMixin.notes" class="headerlink" title="Permanent link">&para;</a></h3>
11118
11876
 
11119
11877
 
11120
- <div class="doc doc-contents ">
11121
-
11878
+ <div class="doc doc-contents ">
11879
+
11122
11880
  <p>API methods for returning or creating notes on an object.</p>
11123
11881
 
11124
- </div>
11882
+ </div>
11125
11883
 
11126
11884
  </div>
11127
11885
 
11128
-
11129
11886
  <div class="doc doc-object doc-function">
11130
11887
 
11131
11888
 
11132
-
11133
11889
  <h3 id="nautobot.apps.api.NotesViewSetMixin.restrict_queryset" class="doc doc-heading">
11134
- <code class="highlight language-python"><span class="n">restrict_queryset</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
11890
+ <code class="highlight language-python"><span class="n">restrict_queryset</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
11135
11891
 
11136
11892
  <a href="#nautobot.apps.api.NotesViewSetMixin.restrict_queryset" class="headerlink" title="Permanent link">&para;</a></h3>
11137
11893
 
11138
11894
 
11139
- <div class="doc doc-contents ">
11140
-
11895
+ <div class="doc doc-contents ">
11896
+
11141
11897
  <p>Apply "view" permissions on the POST /notes/ endpoint, otherwise as ModelViewSetMixin.</p>
11142
11898
 
11143
- </div>
11899
+ </div>
11144
11900
 
11145
11901
  </div>
11146
11902
 
@@ -11148,8 +11904,7 @@ could we then literally have the parser just return list(reader) and not need th
11148
11904
 
11149
11905
  </div>
11150
11906
 
11151
- </div>
11152
-
11907
+ </div>
11153
11908
 
11154
11909
  </div>
11155
11910
 
@@ -11158,24 +11913,23 @@ could we then literally have the parser just return list(reader) and not need th
11158
11913
 
11159
11914
 
11160
11915
  <h2 id="nautobot.apps.api.ObjectTypeField" class="doc doc-heading">
11161
- <code>nautobot.apps.api.ObjectTypeField</code>
11916
+ <code>nautobot.apps.api.ObjectTypeField</code>
11162
11917
 
11163
11918
 
11164
11919
  <a href="#nautobot.apps.api.ObjectTypeField" class="headerlink" title="Permanent link">&para;</a></h2>
11165
11920
 
11166
11921
 
11167
- <div class="doc doc-contents ">
11168
- <p class="doc doc-class-bases">
11169
- Bases: <code><span title="rest_framework.serializers.CharField">CharField</span></code></p>
11922
+ <div class="doc doc-contents ">
11923
+ <p class="doc doc-class-bases">
11924
+ Bases: <code><span title="rest_framework.serializers.CharField">CharField</span></code></p>
11925
+
11170
11926
 
11171
-
11172
11927
  <p>Represent the ContentType of this serializer's model as "<app_label>.<model>".</p>
11173
11928
 
11174
11929
 
11175
-
11176
11930
 
11177
- <div class="doc doc-children">
11178
11931
 
11932
+ <div class="doc doc-children">
11179
11933
 
11180
11934
 
11181
11935
 
@@ -11188,38 +11942,35 @@ could we then literally have the parser just return list(reader) and not need th
11188
11942
  <div class="doc doc-object doc-function">
11189
11943
 
11190
11944
 
11191
-
11192
11945
  <h3 id="nautobot.apps.api.ObjectTypeField.__init__" class="doc doc-heading">
11193
- <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">read_only</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">source</span><span class="o">=</span><span class="s1">&#39;*&#39;</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
11946
+ <code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">read_only</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">source</span><span class="o">=</span><span class="s1">&#39;*&#39;</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
11194
11947
 
11195
11948
  <a href="#nautobot.apps.api.ObjectTypeField.__init__" class="headerlink" title="Permanent link">&para;</a></h3>
11196
11949
 
11197
11950
 
11198
- <div class="doc doc-contents ">
11199
-
11951
+ <div class="doc doc-contents ">
11952
+
11200
11953
  <p>Default read_only to True as this should never be a writable field.</p>
11201
11954
 
11202
- </div>
11955
+ </div>
11203
11956
 
11204
11957
  </div>
11205
11958
 
11206
-
11207
11959
  <div class="doc doc-object doc-function">
11208
11960
 
11209
11961
 
11210
-
11211
11962
  <h3 id="nautobot.apps.api.ObjectTypeField.to_representation" class="doc doc-heading">
11212
- <code class="highlight language-python"><span class="n">to_representation</span><span class="p">(</span><span class="n">_value</span><span class="p">)</span></code>
11963
+ <code class="highlight language-python"><span class="n">to_representation</span><span class="p">(</span><span class="n">_value</span><span class="p">)</span></code>
11213
11964
 
11214
11965
  <a href="#nautobot.apps.api.ObjectTypeField.to_representation" class="headerlink" title="Permanent link">&para;</a></h3>
11215
11966
 
11216
11967
 
11217
- <div class="doc doc-contents ">
11218
-
11968
+ <div class="doc doc-contents ">
11969
+
11219
11970
  <p>Get the content-type of this serializer's model.</p>
11220
11971
  <p>Implemented this way because <code>_value</code> may be None when generating the schema.</p>
11221
11972
 
11222
- </div>
11973
+ </div>
11223
11974
 
11224
11975
  </div>
11225
11976
 
@@ -11227,8 +11978,7 @@ could we then literally have the parser just return list(reader) and not need th
11227
11978
 
11228
11979
  </div>
11229
11980
 
11230
- </div>
11231
-
11981
+ </div>
11232
11982
 
11233
11983
  </div>
11234
11984
 
@@ -11237,20 +11987,20 @@ could we then literally have the parser just return list(reader) and not need th
11237
11987
 
11238
11988
 
11239
11989
  <h2 id="nautobot.apps.api.OptInFieldsMixin" class="doc doc-heading">
11240
- <code>nautobot.apps.api.OptInFieldsMixin</code>
11990
+ <code>nautobot.apps.api.OptInFieldsMixin</code>
11241
11991
 
11242
11992
 
11243
11993
  <a href="#nautobot.apps.api.OptInFieldsMixin" class="headerlink" title="Permanent link">&para;</a></h2>
11244
11994
 
11245
11995
 
11246
- <div class="doc doc-contents ">
11996
+ <div class="doc doc-contents ">
11997
+
11247
11998
 
11248
-
11249
11999
  <p>A serializer mixin that takes an additional <code>opt_in_fields</code> argument that controls
11250
12000
  which fields should be displayed.</p>
11251
12001
 
11252
12002
 
11253
-
12003
+
11254
12004
 
11255
12005
  <div class="doc doc-children">
11256
12006
 
@@ -11265,8 +12015,8 @@ which fields should be displayed.</p>
11265
12015
 
11266
12016
 
11267
12017
  <h3 id="nautobot.apps.api.OptInFieldsMixin.fields" class="doc doc-heading">
11268
- <code class="highlight language-python"><span class="n">fields</span></code>
11269
-
12018
+ <code class="highlight language-python"><span class="n">fields</span></code>
12019
+
11270
12020
  <span class="doc doc-labels">
11271
12021
  <small class="doc doc-label doc-label-property"><code>property</code></small>
11272
12022
  </span>
@@ -11274,14 +12024,14 @@ which fields should be displayed.</p>
11274
12024
  <a href="#nautobot.apps.api.OptInFieldsMixin.fields" class="headerlink" title="Permanent link">&para;</a></h3>
11275
12025
 
11276
12026
 
11277
- <div class="doc doc-contents ">
11278
-
12027
+ <div class="doc doc-contents ">
12028
+
11279
12029
  <p>Removes all serializer fields specified in a serializers <code>opt_in_fields</code> list that aren't specified in the
11280
12030
  <code>include</code> query parameter.</p>
11281
12031
  <p>As an example, if the serializer specifies that <code>opt_in_fields = ["computed_fields"]</code>
11282
12032
  but <code>computed_fields</code> is not specified in the <code>?include</code> query parameter, <code>computed_fields</code> will be popped
11283
12033
  from the list of fields.</p>
11284
- </div>
12034
+ </div>
11285
12035
 
11286
12036
  </div>
11287
12037
 
@@ -11291,8 +12041,7 @@ from the list of fields.</p>
11291
12041
 
11292
12042
  </div>
11293
12043
 
11294
- </div>
11295
-
12044
+ </div>
11296
12045
 
11297
12046
  </div>
11298
12047
 
@@ -11301,22 +12050,21 @@ from the list of fields.</p>
11301
12050
 
11302
12051
 
11303
12052
  <h2 id="nautobot.apps.api.OrderedDefaultRouter" class="doc doc-heading">
11304
- <code>nautobot.apps.api.OrderedDefaultRouter</code>
12053
+ <code>nautobot.apps.api.OrderedDefaultRouter</code>
11305
12054
 
11306
12055
 
11307
12056
  <a href="#nautobot.apps.api.OrderedDefaultRouter" class="headerlink" title="Permanent link">&para;</a></h2>
11308
12057
 
11309
12058
 
11310
- <div class="doc doc-contents ">
11311
- <p class="doc doc-class-bases">
11312
- Bases: <code><span title="rest_framework.routers.DefaultRouter">DefaultRouter</span></code></p>
12059
+ <div class="doc doc-contents ">
12060
+ <p class="doc doc-class-bases">
12061
+ Bases: <code><span title="rest_framework.routers.DefaultRouter">DefaultRouter</span></code></p>
11313
12062
 
11314
12063
 
11315
12064
 
11316
-
11317
12065
 
11318
- <div class="doc doc-children">
11319
12066
 
12067
+ <div class="doc doc-children">
11320
12068
 
11321
12069
 
11322
12070
 
@@ -11329,38 +12077,35 @@ from the list of fields.</p>
11329
12077
  <div class="doc doc-object doc-function">
11330
12078
 
11331
12079
 
11332
-
11333
12080
  <h3 id="nautobot.apps.api.OrderedDefaultRouter.get_api_root_view" class="doc doc-heading">
11334
- <code class="highlight language-python"><span class="n">get_api_root_view</span><span class="p">(</span><span class="n">api_urls</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
12081
+ <code class="highlight language-python"><span class="n">get_api_root_view</span><span class="p">(</span><span class="n">api_urls</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
11335
12082
 
11336
12083
  <a href="#nautobot.apps.api.OrderedDefaultRouter.get_api_root_view" class="headerlink" title="Permanent link">&para;</a></h3>
11337
12084
 
11338
12085
 
11339
- <div class="doc doc-contents ">
11340
-
12086
+ <div class="doc doc-contents ">
12087
+
11341
12088
  <p>Wrap DRF's DefaultRouter to return an alphabetized list of endpoints.</p>
11342
12089
 
11343
- </div>
12090
+ </div>
11344
12091
 
11345
12092
  </div>
11346
12093
 
11347
-
11348
12094
  <div class="doc doc-object doc-function">
11349
12095
 
11350
12096
 
11351
-
11352
12097
  <h3 id="nautobot.apps.api.OrderedDefaultRouter.register" class="doc doc-heading">
11353
- <code class="highlight language-python"><span class="n">register</span><span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">viewset</span><span class="p">,</span> <span class="n">basename</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
12098
+ <code class="highlight language-python"><span class="n">register</span><span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">viewset</span><span class="p">,</span> <span class="n">basename</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
11354
12099
 
11355
12100
  <a href="#nautobot.apps.api.OrderedDefaultRouter.register" class="headerlink" title="Permanent link">&para;</a></h3>
11356
12101
 
11357
12102
 
11358
- <div class="doc doc-contents ">
11359
-
12103
+ <div class="doc doc-contents ">
12104
+
11360
12105
  <p>Override DRF's BaseRouter.register() to bypass an unnecessary restriction added in version 3.15.0.</p>
11361
12106
  <p>(Reference: https://github.com/encode/django-rest-framework/pull/8438)</p>
11362
12107
 
11363
- </div>
12108
+ </div>
11364
12109
 
11365
12110
  </div>
11366
12111
 
@@ -11368,8 +12113,7 @@ from the list of fields.</p>
11368
12113
 
11369
12114
  </div>
11370
12115
 
11371
- </div>
11372
-
12116
+ </div>
11373
12117
 
11374
12118
  </div>
11375
12119
 
@@ -11378,22 +12122,37 @@ from the list of fields.</p>
11378
12122
 
11379
12123
 
11380
12124
  <h2 id="nautobot.apps.api.ReadOnlyModelViewSet" class="doc doc-heading">
11381
- <code>nautobot.apps.api.ReadOnlyModelViewSet</code>
12125
+ <code>nautobot.apps.api.ReadOnlyModelViewSet</code>
11382
12126
 
11383
12127
 
11384
12128
  <a href="#nautobot.apps.api.ReadOnlyModelViewSet" class="headerlink" title="Permanent link">&para;</a></h2>
11385
12129
 
11386
12130
 
11387
- <div class="doc doc-contents ">
11388
- <p class="doc doc-class-bases">
11389
- Bases: <code><span title="nautobot.core.api.views.NautobotAPIVersionMixin">NautobotAPIVersionMixin</span></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.ModelViewSetMixin" href="#nautobot.apps.api.ModelViewSetMixin">ModelViewSetMixin</a></code>, <code><span title="rest_framework.viewsets.ReadOnlyModelViewSet">ReadOnlyModelViewSet</span></code></p>
12131
+ <div class="doc doc-contents ">
12132
+ <p class="doc doc-class-bases">
12133
+ Bases: <code><span title="nautobot.core.api.views.NautobotAPIVersionMixin">NautobotAPIVersionMixin</span></code>, <code><a class="autorefs autorefs-internal" title="nautobot.core.api.views.ModelViewSetMixin" href="#nautobot.apps.api.ModelViewSetMixin">ModelViewSetMixin</a></code>, <code><span title="rest_framework.viewsets.ReadOnlyModelViewSet">ReadOnlyModelViewSet</span></code></p>
12134
+
11390
12135
 
11391
-
11392
12136
  <p>Extend DRF's ReadOnlyModelViewSet to support queryset restriction.</p>
11393
12137
 
11394
12138
 
12139
+
12140
+
12141
+ <div class="doc doc-children">
12142
+
12143
+
12144
+
12145
+
12146
+
12147
+
12148
+
12149
+
12150
+
12151
+
12152
+
11395
12153
  </div>
11396
12154
 
12155
+ </div>
11397
12156
 
11398
12157
  </div>
11399
12158
 
@@ -11402,24 +12161,23 @@ from the list of fields.</p>
11402
12161
 
11403
12162
 
11404
12163
  <h2 id="nautobot.apps.api.RelationshipModelSerializerMixin" class="doc doc-heading">
11405
- <code>nautobot.apps.api.RelationshipModelSerializerMixin</code>
12164
+ <code>nautobot.apps.api.RelationshipModelSerializerMixin</code>
11406
12165
 
11407
12166
 
11408
12167
  <a href="#nautobot.apps.api.RelationshipModelSerializerMixin" class="headerlink" title="Permanent link">&para;</a></h2>
11409
12168
 
11410
12169
 
11411
- <div class="doc doc-contents ">
11412
- <p class="doc doc-class-bases">
11413
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.ValidatedModelSerializer" href="#nautobot.apps.api.ValidatedModelSerializer">ValidatedModelSerializer</a></code></p>
12170
+ <div class="doc doc-contents ">
12171
+ <p class="doc doc-class-bases">
12172
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.ValidatedModelSerializer" href="#nautobot.apps.api.ValidatedModelSerializer">ValidatedModelSerializer</a></code></p>
12173
+
11414
12174
 
11415
-
11416
12175
  <p>Extend ValidatedModelSerializer with a <code>relationships</code> field.</p>
11417
12176
 
11418
12177
 
11419
-
11420
12178
 
11421
- <div class="doc doc-children">
11422
12179
 
12180
+ <div class="doc doc-children">
11423
12181
 
11424
12182
 
11425
12183
 
@@ -11432,18 +12190,17 @@ from the list of fields.</p>
11432
12190
  <div class="doc doc-object doc-function">
11433
12191
 
11434
12192
 
11435
-
11436
12193
  <h3 id="nautobot.apps.api.RelationshipModelSerializerMixin.get_field_names" class="doc doc-heading">
11437
- <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
12194
+ <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
11438
12195
 
11439
12196
  <a href="#nautobot.apps.api.RelationshipModelSerializerMixin.get_field_names" class="headerlink" title="Permanent link">&para;</a></h3>
11440
12197
 
11441
12198
 
11442
- <div class="doc doc-contents ">
11443
-
12199
+ <div class="doc doc-contents ">
12200
+
11444
12201
  <p>Ensure that "relationships" is included as an opt-in field on root serializers.</p>
11445
12202
 
11446
- </div>
12203
+ </div>
11447
12204
 
11448
12205
  </div>
11449
12206
 
@@ -11451,8 +12208,7 @@ from the list of fields.</p>
11451
12208
 
11452
12209
  </div>
11453
12210
 
11454
- </div>
11455
-
12211
+ </div>
11456
12212
 
11457
12213
  </div>
11458
12214
 
@@ -11461,25 +12217,24 @@ from the list of fields.</p>
11461
12217
 
11462
12218
 
11463
12219
  <h2 id="nautobot.apps.api.SerializedPKRelatedField" class="doc doc-heading">
11464
- <code>nautobot.apps.api.SerializedPKRelatedField</code>
12220
+ <code>nautobot.apps.api.SerializedPKRelatedField</code>
11465
12221
 
11466
12222
 
11467
12223
  <a href="#nautobot.apps.api.SerializedPKRelatedField" class="headerlink" title="Permanent link">&para;</a></h2>
11468
12224
 
11469
12225
 
11470
- <div class="doc doc-contents ">
11471
- <p class="doc doc-class-bases">
11472
- Bases: <code><span title="rest_framework.relations.PrimaryKeyRelatedField">PrimaryKeyRelatedField</span></code></p>
12226
+ <div class="doc doc-contents ">
12227
+ <p class="doc doc-class-bases">
12228
+ Bases: <code><span title="rest_framework.relations.PrimaryKeyRelatedField">PrimaryKeyRelatedField</span></code></p>
12229
+
11473
12230
 
11474
-
11475
12231
  <p>Extends PrimaryKeyRelatedField to return a serialized object on read. This is useful for representing related
11476
12232
  objects in a ManyToManyField while still allowing a set of primary keys to be written.</p>
11477
12233
 
11478
12234
 
11479
-
11480
12235
 
11481
- <div class="doc doc-children">
11482
12236
 
12237
+ <div class="doc doc-children">
11483
12238
 
11484
12239
 
11485
12240
 
@@ -11490,10 +12245,10 @@ objects in a ManyToManyField while still allowing a set of primary keys to be wr
11490
12245
 
11491
12246
 
11492
12247
 
11493
- </div>
11494
12248
 
11495
12249
  </div>
11496
12250
 
12251
+ </div>
11497
12252
 
11498
12253
  </div>
11499
12254
 
@@ -11502,22 +12257,21 @@ objects in a ManyToManyField while still allowing a set of primary keys to be wr
11502
12257
 
11503
12258
 
11504
12259
  <h2 id="nautobot.apps.api.TaggedModelSerializerMixin" class="doc doc-heading">
11505
- <code>nautobot.apps.api.TaggedModelSerializerMixin</code>
12260
+ <code>nautobot.apps.api.TaggedModelSerializerMixin</code>
11506
12261
 
11507
12262
 
11508
12263
  <a href="#nautobot.apps.api.TaggedModelSerializerMixin" class="headerlink" title="Permanent link">&para;</a></h2>
11509
12264
 
11510
12265
 
11511
- <div class="doc doc-contents ">
11512
- <p class="doc doc-class-bases">
11513
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.BaseModelSerializer" href="#nautobot.apps.api.BaseModelSerializer">BaseModelSerializer</a></code></p>
12266
+ <div class="doc doc-contents ">
12267
+ <p class="doc doc-class-bases">
12268
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.BaseModelSerializer" href="#nautobot.apps.api.BaseModelSerializer">BaseModelSerializer</a></code></p>
11514
12269
 
11515
12270
 
11516
12271
 
11517
-
11518
12272
 
11519
- <div class="doc doc-children">
11520
12273
 
12274
+ <div class="doc doc-children">
11521
12275
 
11522
12276
 
11523
12277
 
@@ -11530,18 +12284,17 @@ objects in a ManyToManyField while still allowing a set of primary keys to be wr
11530
12284
  <div class="doc doc-object doc-function">
11531
12285
 
11532
12286
 
11533
-
11534
12287
  <h3 id="nautobot.apps.api.TaggedModelSerializerMixin.get_field_names" class="doc doc-heading">
11535
- <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
12288
+ <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
11536
12289
 
11537
12290
  <a href="#nautobot.apps.api.TaggedModelSerializerMixin.get_field_names" class="headerlink" title="Permanent link">&para;</a></h3>
11538
12291
 
11539
12292
 
11540
- <div class="doc doc-contents ">
11541
-
12293
+ <div class="doc doc-contents ">
12294
+
11542
12295
  <p>Ensure that 'tags' field is always present except on nested serializers.</p>
11543
12296
 
11544
- </div>
12297
+ </div>
11545
12298
 
11546
12299
  </div>
11547
12300
 
@@ -11549,8 +12302,7 @@ objects in a ManyToManyField while still allowing a set of primary keys to be wr
11549
12302
 
11550
12303
  </div>
11551
12304
 
11552
- </div>
11553
-
12305
+ </div>
11554
12306
 
11555
12307
  </div>
11556
12308
 
@@ -11559,22 +12311,21 @@ objects in a ManyToManyField while still allowing a set of primary keys to be wr
11559
12311
 
11560
12312
 
11561
12313
  <h2 id="nautobot.apps.api.TimeZoneSerializerField" class="doc doc-heading">
11562
- <code>nautobot.apps.api.TimeZoneSerializerField</code>
12314
+ <code>nautobot.apps.api.TimeZoneSerializerField</code>
11563
12315
 
11564
12316
 
11565
12317
  <a href="#nautobot.apps.api.TimeZoneSerializerField" class="headerlink" title="Permanent link">&para;</a></h2>
11566
12318
 
11567
12319
 
11568
- <div class="doc doc-contents ">
11569
- <p class="doc doc-class-bases">
11570
- Bases: <code><span title="timezone_field.rest_framework.TimeZoneSerializerField">TimeZoneSerializerField</span></code></p>
12320
+ <div class="doc doc-contents ">
12321
+ <p class="doc doc-class-bases">
12322
+ Bases: <code><span title="timezone_field.rest_framework.TimeZoneSerializerField">TimeZoneSerializerField</span></code></p>
11571
12323
 
11572
-
11573
- <p>Represents a time zone as a string.</p>
11574
12324
 
12325
+ <p>Represents a time zone as a string.</p>
11575
12326
 
11576
- </div>
11577
12327
 
12328
+ </div>
11578
12329
 
11579
12330
  </div>
11580
12331
 
@@ -11583,24 +12334,23 @@ objects in a ManyToManyField while still allowing a set of primary keys to be wr
11583
12334
 
11584
12335
 
11585
12336
  <h2 id="nautobot.apps.api.TreeModelSerializerMixin" class="doc doc-heading">
11586
- <code>nautobot.apps.api.TreeModelSerializerMixin</code>
12337
+ <code>nautobot.apps.api.TreeModelSerializerMixin</code>
11587
12338
 
11588
12339
 
11589
12340
  <a href="#nautobot.apps.api.TreeModelSerializerMixin" class="headerlink" title="Permanent link">&para;</a></h2>
11590
12341
 
11591
12342
 
11592
- <div class="doc doc-contents ">
11593
- <p class="doc doc-class-bases">
11594
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.BaseModelSerializer" href="#nautobot.apps.api.BaseModelSerializer">BaseModelSerializer</a></code></p>
12343
+ <div class="doc doc-contents ">
12344
+ <p class="doc doc-class-bases">
12345
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.BaseModelSerializer" href="#nautobot.apps.api.BaseModelSerializer">BaseModelSerializer</a></code></p>
12346
+
11595
12347
 
11596
-
11597
12348
  <p>Add a <code>tree_depth</code> field to non-nested model serializers based on django-tree-queries.</p>
11598
12349
 
11599
12350
 
11600
-
11601
12351
 
11602
- <div class="doc doc-children">
11603
12352
 
12353
+ <div class="doc doc-children">
11604
12354
 
11605
12355
 
11606
12356
 
@@ -11613,37 +12363,34 @@ objects in a ManyToManyField while still allowing a set of primary keys to be wr
11613
12363
  <div class="doc doc-object doc-function">
11614
12364
 
11615
12365
 
11616
-
11617
12366
  <h3 id="nautobot.apps.api.TreeModelSerializerMixin.get_field_names" class="doc doc-heading">
11618
- <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
12367
+ <code class="highlight language-python"><span class="n">get_field_names</span><span class="p">(</span><span class="n">declared_fields</span><span class="p">,</span> <span class="n">info</span><span class="p">)</span></code>
11619
12368
 
11620
12369
  <a href="#nautobot.apps.api.TreeModelSerializerMixin.get_field_names" class="headerlink" title="Permanent link">&para;</a></h3>
11621
12370
 
11622
12371
 
11623
- <div class="doc doc-contents ">
11624
-
12372
+ <div class="doc doc-contents ">
12373
+
11625
12374
  <p>Ensure that "tree_depth" is included on root serializers only, as nested objects are not annotated.</p>
11626
12375
 
11627
- </div>
12376
+ </div>
11628
12377
 
11629
12378
  </div>
11630
12379
 
11631
-
11632
12380
  <div class="doc doc-object doc-function">
11633
12381
 
11634
12382
 
11635
-
11636
12383
  <h3 id="nautobot.apps.api.TreeModelSerializerMixin.get_tree_depth" class="doc doc-heading">
11637
- <code class="highlight language-python"><span class="n">get_tree_depth</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span></code>
12384
+ <code class="highlight language-python"><span class="n">get_tree_depth</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span></code>
11638
12385
 
11639
12386
  <a href="#nautobot.apps.api.TreeModelSerializerMixin.get_tree_depth" class="headerlink" title="Permanent link">&para;</a></h3>
11640
12387
 
11641
12388
 
11642
- <div class="doc doc-contents ">
11643
-
12389
+ <div class="doc doc-contents ">
12390
+
11644
12391
  <p>The <code>tree_depth</code> is not a database field, but an annotation automatically added by django-tree-queries.</p>
11645
12392
 
11646
- </div>
12393
+ </div>
11647
12394
 
11648
12395
  </div>
11649
12396
 
@@ -11651,8 +12398,7 @@ objects in a ManyToManyField while still allowing a set of primary keys to be wr
11651
12398
 
11652
12399
  </div>
11653
12400
 
11654
- </div>
11655
-
12401
+ </div>
11656
12402
 
11657
12403
  </div>
11658
12404
 
@@ -11661,25 +12407,24 @@ objects in a ManyToManyField while still allowing a set of primary keys to be wr
11661
12407
 
11662
12408
 
11663
12409
  <h2 id="nautobot.apps.api.ValidatedModelSerializer" class="doc doc-heading">
11664
- <code>nautobot.apps.api.ValidatedModelSerializer</code>
12410
+ <code>nautobot.apps.api.ValidatedModelSerializer</code>
11665
12411
 
11666
12412
 
11667
12413
  <a href="#nautobot.apps.api.ValidatedModelSerializer" class="headerlink" title="Permanent link">&para;</a></h2>
11668
12414
 
11669
12415
 
11670
- <div class="doc doc-contents ">
11671
- <p class="doc doc-class-bases">
11672
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.BaseModelSerializer" href="#nautobot.apps.api.BaseModelSerializer">BaseModelSerializer</a></code></p>
12416
+ <div class="doc doc-contents ">
12417
+ <p class="doc doc-class-bases">
12418
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.BaseModelSerializer" href="#nautobot.apps.api.BaseModelSerializer">BaseModelSerializer</a></code></p>
12419
+
11673
12420
 
11674
-
11675
12421
  <p>Extends the built-in ModelSerializer to enforce calling full_clean() on a copy of the associated instance during
11676
12422
  validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144)</p>
11677
12423
 
11678
12424
 
11679
-
11680
12425
 
11681
- <div class="doc doc-children">
11682
12426
 
12427
+ <div class="doc doc-children">
11683
12428
 
11684
12429
 
11685
12430
 
@@ -11690,10 +12435,10 @@ validation. (DRF does not do this by default; see https://github.com/encode/djan
11690
12435
 
11691
12436
 
11692
12437
 
11693
- </div>
11694
12438
 
11695
12439
  </div>
11696
12440
 
12441
+ </div>
11697
12442
 
11698
12443
  </div>
11699
12444
 
@@ -11702,17 +12447,17 @@ validation. (DRF does not do this by default; see https://github.com/encode/djan
11702
12447
 
11703
12448
 
11704
12449
  <h2 id="nautobot.apps.api.WritableNestedSerializer" class="doc doc-heading">
11705
- <code>nautobot.apps.api.WritableNestedSerializer</code>
12450
+ <code>nautobot.apps.api.WritableNestedSerializer</code>
11706
12451
 
11707
12452
 
11708
12453
  <a href="#nautobot.apps.api.WritableNestedSerializer" class="headerlink" title="Permanent link">&para;</a></h2>
11709
12454
 
11710
12455
 
11711
- <div class="doc doc-contents ">
11712
- <p class="doc doc-class-bases">
11713
- Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.BaseModelSerializer" href="#nautobot.apps.api.BaseModelSerializer">BaseModelSerializer</a></code></p>
12456
+ <div class="doc doc-contents ">
12457
+ <p class="doc doc-class-bases">
12458
+ Bases: <code><a class="autorefs autorefs-internal" title="nautobot.core.api.serializers.BaseModelSerializer" href="#nautobot.apps.api.BaseModelSerializer">BaseModelSerializer</a></code></p>
12459
+
11714
12460
 
11715
-
11716
12461
  <p>Returns a nested representation of an object on read, but accepts either the nested representation or the
11717
12462
  primary key value on write operations.</p>
11718
12463
  <p>Note that subclasses will always have a read-only <code>object_type</code> field, which represents the content-type of this
@@ -11721,10 +12466,9 @@ PolymorphicProxySerializer class defined below, relies upon this field as a way
11721
12466
  which of several possible nested serializers are in use for a given attribute.</p>
11722
12467
 
11723
12468
 
11724
-
11725
12469
 
11726
- <div class="doc doc-children">
11727
12470
 
12471
+ <div class="doc doc-children">
11728
12472
 
11729
12473
 
11730
12474
 
@@ -11735,10 +12479,10 @@ which of several possible nested serializers are in use for a given attribute.</
11735
12479
 
11736
12480
 
11737
12481
 
11738
- </div>
11739
12482
 
11740
12483
  </div>
11741
12484
 
12485
+ </div>
11742
12486
 
11743
12487
  </div>
11744
12488
 
@@ -11747,15 +12491,15 @@ which of several possible nested serializers are in use for a given attribute.</
11747
12491
 
11748
12492
 
11749
12493
  <h2 id="nautobot.apps.api.WritableSerializerMixin" class="doc doc-heading">
11750
- <code>nautobot.apps.api.WritableSerializerMixin</code>
12494
+ <code>nautobot.apps.api.WritableSerializerMixin</code>
11751
12495
 
11752
12496
 
11753
12497
  <a href="#nautobot.apps.api.WritableSerializerMixin" class="headerlink" title="Permanent link">&para;</a></h2>
11754
12498
 
11755
12499
 
11756
- <div class="doc doc-contents ">
12500
+ <div class="doc doc-contents ">
12501
+
11757
12502
 
11758
-
11759
12503
  <p>WritableSerializerMixin provides the to_internal_value() function.
11760
12504
  The function provides the ability to write API requests that identify unique objects based on
11761
12505
  combinations of fields other than the primary key.
@@ -11765,10 +12509,9 @@ vs
11765
12509
  "parent": "10dff139-7333-46b0-bef6-f6a5a7b5497c"</p>
11766
12510
 
11767
12511
 
11768
-
11769
12512
 
11770
- <div class="doc doc-children">
11771
12513
 
12514
+ <div class="doc doc-children">
11772
12515
 
11773
12516
 
11774
12517
 
@@ -11781,78 +12524,71 @@ vs
11781
12524
  <div class="doc doc-object doc-function">
11782
12525
 
11783
12526
 
11784
-
11785
12527
  <h3 id="nautobot.apps.api.WritableSerializerMixin.get_object" class="doc doc-heading">
11786
- <code class="highlight language-python"><span class="n">get_object</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">queryset</span><span class="p">)</span></code>
12528
+ <code class="highlight language-python"><span class="n">get_object</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">queryset</span><span class="p">)</span></code>
11787
12529
 
11788
12530
  <a href="#nautobot.apps.api.WritableSerializerMixin.get_object" class="headerlink" title="Permanent link">&para;</a></h3>
11789
12531
 
11790
12532
 
11791
- <div class="doc doc-contents ">
11792
-
12533
+ <div class="doc doc-contents ">
12534
+
11793
12535
  <p>Retrieve an unique object based on a dictionary of data attributes and raise errors accordingly if the object is not found.</p>
11794
12536
 
11795
- </div>
12537
+ </div>
11796
12538
 
11797
12539
  </div>
11798
12540
 
11799
-
11800
12541
  <div class="doc doc-object doc-function">
11801
12542
 
11802
12543
 
11803
-
11804
12544
  <h3 id="nautobot.apps.api.WritableSerializerMixin.get_queryset_filter_params" class="doc doc-heading">
11805
- <code class="highlight language-python"><span class="n">get_queryset_filter_params</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">queryset</span><span class="p">)</span></code>
12545
+ <code class="highlight language-python"><span class="n">get_queryset_filter_params</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">queryset</span><span class="p">)</span></code>
11806
12546
 
11807
12547
  <a href="#nautobot.apps.api.WritableSerializerMixin.get_queryset_filter_params" class="headerlink" title="Permanent link">&para;</a></h3>
11808
12548
 
11809
12549
 
11810
- <div class="doc doc-contents ">
11811
-
12550
+ <div class="doc doc-contents ">
12551
+
11812
12552
  <p>Data could be a dictionary and an int (for the User model) or a str that represents the primary key.
11813
12553
  If it is a dictionary, we return it after remove non-filter fields.
11814
12554
  If it is a primary key, we return a dictionary object formatted like this {"pk": pk}</p>
11815
12555
 
11816
- </div>
12556
+ </div>
11817
12557
 
11818
12558
  </div>
11819
12559
 
11820
-
11821
12560
  <div class="doc doc-object doc-function">
11822
12561
 
11823
12562
 
11824
-
11825
12563
  <h3 id="nautobot.apps.api.WritableSerializerMixin.remove_non_filter_fields" class="doc doc-heading">
11826
- <code class="highlight language-python"><span class="n">remove_non_filter_fields</span><span class="p">(</span><span class="n">filter_params</span><span class="p">)</span></code>
12564
+ <code class="highlight language-python"><span class="n">remove_non_filter_fields</span><span class="p">(</span><span class="n">filter_params</span><span class="p">)</span></code>
11827
12565
 
11828
12566
  <a href="#nautobot.apps.api.WritableSerializerMixin.remove_non_filter_fields" class="headerlink" title="Permanent link">&para;</a></h3>
11829
12567
 
11830
12568
 
11831
- <div class="doc doc-contents ">
11832
-
12569
+ <div class="doc doc-contents ">
12570
+
11833
12571
  <p>Make output from a WritableSerializer "round-trip" capable by automatically stripping from the
11834
12572
  data any serializer fields that do not correspond to a specific model field</p>
11835
12573
 
11836
- </div>
12574
+ </div>
11837
12575
 
11838
12576
  </div>
11839
12577
 
11840
-
11841
12578
  <div class="doc doc-object doc-function">
11842
12579
 
11843
12580
 
11844
-
11845
12581
  <h3 id="nautobot.apps.api.WritableSerializerMixin.to_internal_value" class="doc doc-heading">
11846
- <code class="highlight language-python"><span class="n">to_internal_value</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></code>
12582
+ <code class="highlight language-python"><span class="n">to_internal_value</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></code>
11847
12583
 
11848
12584
  <a href="#nautobot.apps.api.WritableSerializerMixin.to_internal_value" class="headerlink" title="Permanent link">&para;</a></h3>
11849
12585
 
11850
12586
 
11851
- <div class="doc doc-contents ">
11852
-
12587
+ <div class="doc doc-contents ">
12588
+
11853
12589
  <p>Return an object or a list of objects based on a dictionary of data attributes or an UUID.</p>
11854
12590
 
11855
- </div>
12591
+ </div>
11856
12592
 
11857
12593
  </div>
11858
12594
 
@@ -11860,25 +12596,22 @@ data any serializer fields that do not correspond to a specific model field</p>
11860
12596
 
11861
12597
  </div>
11862
12598
 
11863
- </div>
11864
-
12599
+ </div>
11865
12600
 
11866
12601
  </div>
11867
12602
 
11868
12603
 
11869
-
11870
12604
  <div class="doc doc-object doc-function">
11871
12605
 
11872
12606
 
11873
-
11874
12607
  <h2 id="nautobot.apps.api.dict_to_filter_params" class="doc doc-heading">
11875
- <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">dict_to_filter_params</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span></code>
12608
+ <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">dict_to_filter_params</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span></code>
11876
12609
 
11877
12610
  <a href="#nautobot.apps.api.dict_to_filter_params" class="headerlink" title="Permanent link">&para;</a></h2>
11878
12611
 
11879
12612
 
11880
- <div class="doc doc-contents ">
11881
-
12613
+ <div class="doc doc-contents ">
12614
+
11882
12615
  <p>Translate a dictionary of attributes to a nested set of parameters suitable for QuerySet filtering. For example:</p>
11883
12616
  <div class="highlight"><pre><span></span><code>{
11884
12617
  &quot;name&quot;: &quot;Foo&quot;,
@@ -11897,290 +12630,272 @@ data any serializer fields that do not correspond to a specific model field</p>
11897
12630
  <div class="highlight"><pre><span></span><code>Device.objects.filter(**dict_to_filter(attrs_dict))
11898
12631
  </code></pre></div>
11899
12632
 
11900
- </div>
12633
+ </div>
11901
12634
 
11902
12635
  </div>
11903
12636
 
11904
-
11905
12637
  <div class="doc doc-object doc-function">
11906
12638
 
11907
12639
 
11908
-
11909
12640
  <h2 id="nautobot.apps.api.dynamic_import" class="doc doc-heading">
11910
- <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">dynamic_import</span><span class="p">(</span><span class="n">name</span><span class="p">)</span></code>
12641
+ <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">dynamic_import</span><span class="p">(</span><span class="n">name</span><span class="p">)</span></code>
11911
12642
 
11912
12643
  <a href="#nautobot.apps.api.dynamic_import" class="headerlink" title="Permanent link">&para;</a></h2>
11913
12644
 
11914
12645
 
11915
- <div class="doc doc-contents ">
11916
-
12646
+ <div class="doc doc-contents ">
12647
+
11917
12648
  <p>Dynamically import a class from an absolute path string</p>
11918
12649
 
11919
- </div>
12650
+ </div>
11920
12651
 
11921
12652
  </div>
11922
12653
 
11923
-
11924
12654
  <div class="doc doc-object doc-function">
11925
12655
 
11926
12656
 
11927
-
11928
12657
  <h2 id="nautobot.apps.api.get_api_version_serializer" class="doc doc-heading">
11929
- <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">get_api_version_serializer</span><span class="p">(</span><span class="n">serializer_choices</span><span class="p">,</span> <span class="n">api_version</span><span class="p">)</span></code>
12658
+ <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">get_api_version_serializer</span><span class="p">(</span><span class="n">serializer_choices</span><span class="p">,</span> <span class="n">api_version</span><span class="p">)</span></code>
11930
12659
 
11931
12660
  <a href="#nautobot.apps.api.get_api_version_serializer" class="headerlink" title="Permanent link">&para;</a></h2>
11932
12661
 
11933
12662
 
11934
- <div class="doc doc-contents ">
11935
-
11936
- <p>Returns the serializer of an api_version</p>
12663
+ <div class="doc doc-contents ">
11937
12664
 
12665
+ <p>Returns the serializer of an api_version</p>
11938
12666
 
11939
12667
 
11940
- <p><strong>Parameters:</strong></p>
11941
- <table>
11942
- <thead>
11943
- <tr>
11944
- <th>Name</th>
11945
- <th>Type</th>
11946
- <th>Description</th>
11947
- <th>Default</th>
11948
- </tr>
11949
- </thead>
11950
- <tbody>
11951
- <tr>
11952
- <td><code>serializer_choices</code></td>
11953
- <td>
11954
- <code>tuple</code>
11955
- </td>
11956
- <td>
11957
- <div class="doc-md-description">
11958
- <p>list of SerializerVersions</p>
11959
- </div>
11960
- </td>
11961
- <td>
11962
- <em>required</em>
11963
- </td>
11964
- </tr>
12668
+ <p><span class="doc-section-title">Parameters:</span></p>
12669
+ <table>
12670
+ <thead>
11965
12671
  <tr>
11966
- <td><code>api_version</code></td>
11967
- <td>
11968
- <code>str</code>
11969
- </td>
11970
- <td>
11971
- <div class="doc-md-description">
11972
- <p>Request API version</p>
11973
- </div>
11974
- </td>
11975
- <td>
11976
- <em>required</em>
11977
- </td>
12672
+ <th>Name</th>
12673
+ <th>Type</th>
12674
+ <th>Description</th>
12675
+ <th>Default</th>
11978
12676
  </tr>
11979
- </tbody>
11980
- </table>
11981
-
11982
-
11983
-
11984
- <p><strong>Returns:</strong></p>
11985
- <table>
11986
- <thead>
11987
- <tr>
11988
- <th>Type</th>
11989
- <th>Description</th>
11990
- </tr>
11991
- </thead>
11992
- <tbody>
12677
+ </thead>
12678
+ <tbody>
12679
+ <tr class="doc-section-item">
12680
+ <td><code>serializer_choices</code></td>
12681
+ <td>
12682
+ <code>tuple</code>
12683
+ </td>
12684
+ <td>
12685
+ <div class="doc-md-description">
12686
+ <p>list of SerializerVersions</p>
12687
+ </div>
12688
+ </td>
12689
+ <td>
12690
+ <em>required</em>
12691
+ </td>
12692
+ </tr>
12693
+ <tr class="doc-section-item">
12694
+ <td><code>api_version</code></td>
12695
+ <td>
12696
+ <code>str</code>
12697
+ </td>
12698
+ <td>
12699
+ <div class="doc-md-description">
12700
+ <p>Request API version</p>
12701
+ </div>
12702
+ </td>
12703
+ <td>
12704
+ <em>required</em>
12705
+ </td>
12706
+ </tr>
12707
+ </tbody>
12708
+ </table>
12709
+
12710
+
12711
+ <p><span class="doc-section-title">Returns:</span></p>
12712
+ <table>
12713
+ <thead>
11993
12714
  <tr>
11994
- <td>
11995
- <code>Serializer</code>
11996
- </td>
11997
- <td>
11998
- <div class="doc-md-description">
11999
- <p>the serializer for the api_version if found in serializer_choices else None</p>
12000
- </div>
12001
- </td>
12715
+ <th>Type</th>
12716
+ <th>Description</th>
12002
12717
  </tr>
12003
- </tbody>
12004
- </table>
12718
+ </thead>
12719
+ <tbody>
12720
+ <tr class="doc-section-item">
12721
+ <td>
12722
+ <code>Serializer</code>
12723
+ </td>
12724
+ <td>
12725
+ <div class="doc-md-description">
12726
+ <p>the serializer for the api_version if found in serializer_choices else None</p>
12727
+ </div>
12728
+ </td>
12729
+ </tr>
12730
+ </tbody>
12731
+ </table>
12005
12732
 
12006
- </div>
12733
+ </div>
12007
12734
 
12008
12735
  </div>
12009
12736
 
12010
-
12011
12737
  <div class="doc doc-object doc-function">
12012
12738
 
12013
12739
 
12014
-
12015
12740
  <h2 id="nautobot.apps.api.get_serializer_for_model" class="doc doc-heading">
12016
- <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">get_serializer_for_model</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span></code>
12741
+ <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">get_serializer_for_model</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="p">)</span></code>
12017
12742
 
12018
12743
  <a href="#nautobot.apps.api.get_serializer_for_model" class="headerlink" title="Permanent link">&para;</a></h2>
12019
12744
 
12020
12745
 
12021
- <div class="doc doc-contents ">
12022
-
12023
- <p>Dynamically resolve and return the appropriate serializer for a model.</p>
12746
+ <div class="doc doc-contents ">
12024
12747
 
12748
+ <p>Dynamically resolve and return the appropriate serializer for a model.</p>
12025
12749
 
12026
12750
 
12027
- <p><strong>Raises:</strong></p>
12028
- <table>
12029
- <thead>
12030
- <tr>
12031
- <th>Type</th>
12032
- <th>Description</th>
12033
- </tr>
12034
- </thead>
12035
- <tbody>
12751
+ <p><span class="doc-section-title">Raises:</span></p>
12752
+ <table>
12753
+ <thead>
12036
12754
  <tr>
12037
- <td>
12038
- <code>SerializerNotFound</code>
12039
- </td>
12040
- <td>
12041
- <div class="doc-md-description">
12042
- <p>if the requested serializer cannot be located.</p>
12043
- </div>
12044
- </td>
12755
+ <th>Type</th>
12756
+ <th>Description</th>
12045
12757
  </tr>
12046
- </tbody>
12047
- </table>
12758
+ </thead>
12759
+ <tbody>
12760
+ <tr class="doc-section-item">
12761
+ <td>
12762
+ <code>SerializerNotFound</code>
12763
+ </td>
12764
+ <td>
12765
+ <div class="doc-md-description">
12766
+ <p>if the requested serializer cannot be located.</p>
12767
+ </div>
12768
+ </td>
12769
+ </tr>
12770
+ </tbody>
12771
+ </table>
12048
12772
 
12049
- </div>
12773
+ </div>
12050
12774
 
12051
12775
  </div>
12052
12776
 
12053
-
12054
12777
  <div class="doc doc-object doc-function">
12055
12778
 
12056
12779
 
12057
-
12058
12780
  <h2 id="nautobot.apps.api.get_view_name" class="doc doc-heading">
12059
- <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">get_view_name</span><span class="p">(</span><span class="n">view</span><span class="p">)</span></code>
12781
+ <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">get_view_name</span><span class="p">(</span><span class="n">view</span><span class="p">)</span></code>
12060
12782
 
12061
12783
  <a href="#nautobot.apps.api.get_view_name" class="headerlink" title="Permanent link">&para;</a></h2>
12062
12784
 
12063
12785
 
12064
- <div class="doc doc-contents ">
12065
-
12786
+ <div class="doc doc-contents ">
12787
+
12066
12788
  <p>Derive the view name from its associated model, if it has one. Fall back to DRF's built-in <code>get_view_name</code>.</p>
12067
12789
 
12068
- </div>
12790
+ </div>
12069
12791
 
12070
12792
  </div>
12071
12793
 
12072
-
12073
12794
  <div class="doc doc-object doc-function">
12074
12795
 
12075
12796
 
12076
-
12077
12797
  <h2 id="nautobot.apps.api.is_api_request" class="doc doc-heading">
12078
- <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">is_api_request</span><span class="p">(</span><span class="n">request</span><span class="p">)</span></code>
12798
+ <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">is_api_request</span><span class="p">(</span><span class="n">request</span><span class="p">)</span></code>
12079
12799
 
12080
12800
  <a href="#nautobot.apps.api.is_api_request" class="headerlink" title="Permanent link">&para;</a></h2>
12081
12801
 
12082
12802
 
12083
- <div class="doc doc-contents ">
12084
-
12803
+ <div class="doc doc-contents ">
12804
+
12085
12805
  <p>Return True of the request is being made via the REST API.</p>
12086
12806
 
12087
- </div>
12807
+ </div>
12088
12808
 
12089
12809
  </div>
12090
12810
 
12091
-
12092
12811
  <div class="doc doc-object doc-function">
12093
12812
 
12094
12813
 
12095
-
12096
12814
  <h2 id="nautobot.apps.api.rest_api_server_error" class="doc doc-heading">
12097
- <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">rest_api_server_error</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
12815
+ <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">rest_api_server_error</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
12098
12816
 
12099
12817
  <a href="#nautobot.apps.api.rest_api_server_error" class="headerlink" title="Permanent link">&para;</a></h2>
12100
12818
 
12101
12819
 
12102
- <div class="doc doc-contents ">
12103
-
12820
+ <div class="doc doc-contents ">
12821
+
12104
12822
  <p>Handle exceptions and return a useful error message for REST API requests.</p>
12105
12823
 
12106
- </div>
12824
+ </div>
12107
12825
 
12108
12826
  </div>
12109
12827
 
12110
-
12111
12828
  <div class="doc doc-object doc-function">
12112
12829
 
12113
12830
 
12114
-
12115
12831
  <h2 id="nautobot.apps.api.versioned_serializer_selector" class="doc doc-heading">
12116
- <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">versioned_serializer_selector</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">serializer_choices</span><span class="p">,</span> <span class="n">default_serializer</span><span class="p">)</span></code>
12832
+ <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">versioned_serializer_selector</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">serializer_choices</span><span class="p">,</span> <span class="n">default_serializer</span><span class="p">)</span></code>
12117
12833
 
12118
12834
  <a href="#nautobot.apps.api.versioned_serializer_selector" class="headerlink" title="Permanent link">&para;</a></h2>
12119
12835
 
12120
12836
 
12121
- <div class="doc doc-contents ">
12122
-
12123
- <p>Returns appropriate serializer class depending on request api_version, and swagger_fake_view</p>
12837
+ <div class="doc doc-contents ">
12124
12838
 
12839
+ <p>Returns appropriate serializer class depending on request api_version, and swagger_fake_view</p>
12125
12840
 
12126
12841
 
12127
- <p><strong>Parameters:</strong></p>
12128
- <table>
12129
- <thead>
12130
- <tr>
12131
- <th>Name</th>
12132
- <th>Type</th>
12133
- <th>Description</th>
12134
- <th>Default</th>
12135
- </tr>
12136
- </thead>
12137
- <tbody>
12842
+ <p><span class="doc-section-title">Parameters:</span></p>
12843
+ <table>
12844
+ <thead>
12138
12845
  <tr>
12139
- <td><code>obj</code></td>
12140
- <td>
12141
- <code>ViewSet instance</code>
12142
- </td>
12143
- <td>
12144
- <div class="doc-md-description">
12145
-
12146
- </div>
12147
- </td>
12148
- <td>
12149
- <em>required</em>
12150
- </td>
12151
- </tr>
12152
- <tr>
12153
- <td><code>serializer_choices</code></td>
12154
- <td>
12155
- <code>tuple</code>
12156
- </td>
12157
- <td>
12158
- <div class="doc-md-description">
12159
- <p>Tuple of SerializerVersions</p>
12160
- </div>
12161
- </td>
12162
- <td>
12163
- <em>required</em>
12164
- </td>
12165
- </tr>
12166
- <tr>
12167
- <td><code>default_serializer</code></td>
12168
- <td>
12169
- <code>Serializer</code>
12170
- </td>
12171
- <td>
12172
- <div class="doc-md-description">
12173
- <p>Default Serializer class</p>
12174
- </div>
12175
- </td>
12176
- <td>
12177
- <em>required</em>
12178
- </td>
12846
+ <th>Name</th>
12847
+ <th>Type</th>
12848
+ <th>Description</th>
12849
+ <th>Default</th>
12179
12850
  </tr>
12180
- </tbody>
12181
- </table>
12851
+ </thead>
12852
+ <tbody>
12853
+ <tr class="doc-section-item">
12854
+ <td><code>obj</code></td>
12855
+ <td>
12856
+ <code>ViewSet instance</code>
12857
+ </td>
12858
+ <td>
12859
+ <div class="doc-md-description">
12860
+
12861
+ </div>
12862
+ </td>
12863
+ <td>
12864
+ <em>required</em>
12865
+ </td>
12866
+ </tr>
12867
+ <tr class="doc-section-item">
12868
+ <td><code>serializer_choices</code></td>
12869
+ <td>
12870
+ <code>tuple</code>
12871
+ </td>
12872
+ <td>
12873
+ <div class="doc-md-description">
12874
+ <p>Tuple of SerializerVersions</p>
12875
+ </div>
12876
+ </td>
12877
+ <td>
12878
+ <em>required</em>
12879
+ </td>
12880
+ </tr>
12881
+ <tr class="doc-section-item">
12882
+ <td><code>default_serializer</code></td>
12883
+ <td>
12884
+ <code>Serializer</code>
12885
+ </td>
12886
+ <td>
12887
+ <div class="doc-md-description">
12888
+ <p>Default Serializer class</p>
12889
+ </div>
12890
+ </td>
12891
+ <td>
12892
+ <em>required</em>
12893
+ </td>
12894
+ </tr>
12895
+ </tbody>
12896
+ </table>
12182
12897
 
12183
- </div>
12898
+ </div>
12184
12899
 
12185
12900
  </div>
12186
12901
 
@@ -12188,7 +12903,7 @@ data any serializer fields that do not correspond to a specific model field</p>
12188
12903
 
12189
12904
  </div>
12190
12905
 
12191
- </div>
12906
+ </div>
12192
12907
 
12193
12908
  </div>
12194
12909
 
@@ -12287,7 +13002,7 @@ data any serializer fields that do not correspond to a specific model field</p>
12287
13002
 
12288
13003
 
12289
13004
  <a href="https://blog.networktocode.com/blog/tags/nautobot" target="_blank" rel="noopener" title="Network to Code Blog" class="md-social__link">
12290
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M0 64c0-17.7 14.3-32 32-32 229.8 0 416 186.2 416 416 0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96 14.3 96 0 81.7 0 64zm0 352a64 64 0 1 1 128 0 64 64 0 1 1-128 0zm32-256c159.1 0 288 128.9 288 288 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224-17.7 0-32-14.3-32-32s14.3-32 32-32z"/></svg>
13005
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M0 64c0-17.7 14.3-32 32-32 229.8 0 416 186.2 416 416 0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96 14.3 96 0 81.7 0 64zm0 352a64 64 0 1 1 128 0 64 64 0 1 1-128 0zm32-256c159.1 0 288 128.9 288 288 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224-17.7 0-32-14.3-32-32s14.3-32 32-32z"/></svg>
12291
13006
  </a>
12292
13007
 
12293
13008
 
@@ -12295,7 +13010,7 @@ data any serializer fields that do not correspond to a specific model field</p>
12295
13010
 
12296
13011
 
12297
13012
  <a href="https://www.youtube.com/playlist?list=PLjA0bhxgryJ2Ts4GJMDA-tPzVWEncv4pb" target="_blank" rel="noopener" title="Nautobot Videos" class="md-social__link">
12298
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"/></svg>
13013
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"/></svg>
12299
13014
  </a>
12300
13015
 
12301
13016
 
@@ -12303,7 +13018,7 @@ data any serializer fields that do not correspond to a specific model field</p>
12303
13018
 
12304
13019
 
12305
13020
  <a href="https://www.networktocode.com/community/" target="_blank" rel="noopener" title="Network to Code Community" class="md-social__link">
12306
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"/></svg>
13021
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"/></svg>
12307
13022
  </a>
12308
13023
 
12309
13024
 
@@ -12311,7 +13026,7 @@ data any serializer fields that do not correspond to a specific model field</p>
12311
13026
 
12312
13027
 
12313
13028
  <a href="https://github.com/nautobot/nautobot" target="_blank" rel="noopener" title="GitHub Repo" class="md-social__link">
12314
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
13029
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
12315
13030
  </a>
12316
13031
 
12317
13032
 
@@ -12319,7 +13034,7 @@ data any serializer fields that do not correspond to a specific model field</p>
12319
13034
 
12320
13035
 
12321
13036
  <a href="https://twitter.com/networktocode" target="_blank" rel="noopener" title="Network to Code Twitter" class="md-social__link">
12322
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg>
13037
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg>
12323
13038
  </a>
12324
13039
 
12325
13040
  </div>