* initial v0 creator
* working json api for generic reports
* add require login
* move report swagger into plugin, and set new default layout of noop
* require proper role and also use new util func
* start to tidy authn
* some work on cleaning up web authn
* clean up the authN checks
* fix bug
* fix the auth for api
* fixes to json handling
* set swagger sort order
* enable most reports for api endpoints
* fix doc
* add paramters to reports
* add missed report
* allow api_parameters in reports config
* reorganise api
* add vlan search
* add port search
* make sure to enable layout processing
* add device search
* add v1 to api paths
* add Node Search
* support api_responses
* add device object search; fix spurious ports field in device result class
* handle some plugins just returning undef if search fails
* errors from api seamlessley
* fix error in date range default
* more sensible default for prefix
* change order of endpoints in swagger-ui
* all db row classes can now TO_JSON
* add device_port api endpoint
* add device ports endpoint
* do not expand docs
* add swagger ui json tree formatter
* add all relations from Device table
* add port relations
* add nodes retrieve on device or vlan
* rename to GetAPIKey
* update config for previous commit
* We meant well but it turns out that the array unnest and join is
actually very slow, as the join arguments do not get pushed down
into the CTE (in Postgres 9/10 at least, later versions remove some
of the optimization barriers in that specifc type of query)
* This caused a seq scan on both device and device_port, and the query
is executed many times during macsuck
* The query is now rewritten to use ANY (macaddr[]) and without CTE,
which seems to be around 20x faster
* initial token-based-api login handler
* add token schema and validation
* initial import of pyro3d api code
* basic Swagger spec support
* Merge in working copy of API/Device.pm
* Fix some error handling for API/Device.pm
* Break out utility functions into separate file, to allow other api portions to use
* Add NodeIP support.
* Add nodeip plugin to config
* remove double define of "plugin:" (#448)
disclaimer: i did not test this is any way, came across it when looking for something else.
* only AuthZ header for api use, and alway regen key on login
* use RFC7235
* workaround for Swagger plugin weird response body
* do not autodiscover swagger routes
* code formatting only
* move api util to utils area
* initial full swagger spec for nodeip search
* add api user role and fix api auth failure response
* update version of swagger-ui to 3.20.3
* add more openapi defs
* fixes to SQL and api spec
* clean up subs
* improvements to login/logout for API
* make api logout work
* add openapi tags to group operations
* allow api params to be generated from DBIC schema spec
* remove API calls for nodes and devices
* remove some poor assumptions about api calls
* tidy up
* remove DDP
* make login and logout similar
* example of api call being handled by ajax call
* make the branch authonly
this has a bug whereby if the list of remote_ports is not the same
size as the list of real matching ports, then the list of port names
will be short, and port descriptions may be assigned to the wrong
ports, or the query may crash. needs testing.