1515'''
1616from collections import defaultdict
1717
18- from pynetbox .lib .query import Request
18+ from pynetbox .lib .query import Request , url_param_builder
1919from pynetbox .lib .response import Record , IPRecord
2020
2121CACHE = defaultdict (list )
@@ -327,14 +327,25 @@ def __init__(self, name, parent_obj=None):
327327 version = self .version ,
328328 )
329329
330- def list (self ):
330+ def list (self , ** kwargs ):
331331 """The view operation for a detail endpoint
332332
333333 Returns the response from NetBox for a detail endpoint.
334334
335+ :args \**kwargs: key/value pairs that get converted into url
336+ parameters when passed to the endpoint.
337+ E.g. ``.list(method='get_facts')`` would be converted to
338+ ``.../?method=get_facts``.
339+
335340 :returns: A dictionary or list of dictionaries its retrieved
336341 from NetBox.
337342 """
343+ if kwargs :
344+ self .request_kwargs ['base' ] = '{}{}' .format (
345+ self .url ,
346+ url_param_builder (kwargs )
347+ )
348+
338349 return Request (** self .request_kwargs ).get ()
339350
340351 def create (self , data = {}):
@@ -351,3 +362,11 @@ def create(self, data={}):
351362 NetBox.
352363 """
353364 return Request (** self .request_kwargs ).post (data )
365+
366+
367+ class RODetailEndpoint (DetailEndpoint ):
368+
369+ def create (self , data = {}):
370+ raise NotImplementedError (
371+ 'Writes are not supported for this endpoint.'
372+ )
0 commit comments