├── .gitignore ├── AccessoriesGetIDRequestExample.py ├── AccessoriesGetRequestExample.py ├── AccessoriesPostRequestExample.py ├── AccessoriesViewIDRequestExample.py ├── AssetDeleteRequestExample.py ├── AssetGetIDRequestExample.py ├── AssetGetRequestExample.py ├── AssetPostRequestExample.py ├── AssetUpdateDeviceRequestExample.py ├── CompanyDeleteRequestExample.py ├── CompanyGetIDRequestExample.py ├── CompanyGetRequestExample.py ├── CompanyPostRequestExample.py ├── CompanyUpdateCompanyRequestExample.py ├── ComponentsGetIDRequestExample.py ├── ComponentsGetRequestExample.py ├── ComponentsPostRequestExample.py ├── ComponentsViewIDRequestExample.py ├── ConsumablesGetIDRequestExample.py ├── ConsumablesGetRequestExample.py ├── ConsumablesPostRequestExample.py ├── ConsumablesViewIDRequestExample.py ├── DataUtilUsageExample.py ├── LocationsDeleteRequestExample.py ├── LocationsGetIDRequestExample.py ├── LocationsGetRequestExample.py ├── LocationsPostRequestExample.py ├── LocationsUpdateDeviceRequestExample.py ├── ModelsDeleteRequestExample.py ├── ModelsGetIDRequestExample.py ├── ModelsGetRequestExample.py ├── ModelsPostRequestExample.py ├── ModelsUpdateDeviceRequestExample.py ├── README.rst ├── SimpleAssetBrowser.py ├── StatusLabelsDeleteRequestExample.py ├── StatusLabelsGetIDRequestExample.py ├── StatusLabelsGetRequestExample.py ├── StatusLabelsPostRequestExample.py ├── StatusLabelsUpdateDeviceRequestExample.py ├── UserDeleteRequestExample.py ├── UsersGetAssetsRequestExample.py ├── UsersGetIDRequestExample.py ├── UsersGetRequestExample.py ├── UsersPostRequestExample.py ├── UsersUpdateUserRequestExample.py ├── dist ├── snipeit-1.0.tar.gz ├── snipeit-1.1.tar.gz └── snipeit-1.2.tar.gz ├── doc └── snipeit │ ├── Accessories.html │ ├── Assets.html │ ├── Categories.html │ ├── Company.html │ ├── Components.html │ ├── Consumables.html │ ├── Fieldsets.html │ ├── Licenses.html │ ├── Locations.html │ ├── Maintenances.html │ ├── Manufacturers.html │ ├── Models.html │ ├── StatusLabels.html │ ├── Users.html │ └── index.html ├── setup.py └── snipeit ├── Accessories.py ├── Assets.py ├── AssetsMaintenances.py ├── Categories.py ├── Company.py ├── Components.py ├── Consumables.py ├── DataUtil.py ├── Fieldsets.py ├── Licenses.py ├── Locations.py ├── Maintenances.py ├── Manufacturers.py ├── Models.py ├── StatusLabels.py ├── Users.py └── __init__.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Distribution / packaging 2 | *.egg-info/ 3 | 4 | ### Python ### 5 | # Byte-compiled / optimized / DLL files 6 | *.pyc 7 | .pypirc 8 | 9 | /build 10 | /env 11 | -------------------------------------------------------------------------------- /AccessoriesGetIDRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Accessories 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | A = Accessories() 10 | r = A.getID(server, token, "thisisunique17") 11 | print r 12 | -------------------------------------------------------------------------------- /AccessoriesGetRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Accessories 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | A = Accessories() 10 | r = A.get(server, token) 11 | print r 12 | -------------------------------------------------------------------------------- /AccessoriesPostRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Accessories 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | A = Accessories() 9 | payload = '{"name":"thisisunique17","qty":1,"category_id":8}' 10 | r = A.create(server, token, payload) 11 | print r 12 | -------------------------------------------------------------------------------- /AccessoriesViewIDRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Accessories 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | A = Accessories() 10 | r = A.viewID(server, token, "1") 11 | print r 12 | -------------------------------------------------------------------------------- /AssetDeleteRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Assets 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | A = Assets() 10 | r = A.delete(server, token, "2652") 11 | print r 12 | -------------------------------------------------------------------------------- /AssetGetIDRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Assets 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | A = Assets() 10 | r = A.getID(server, token, "thisisunique17") 11 | print r 12 | -------------------------------------------------------------------------------- /AssetGetRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Assets 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | A = Assets() 10 | #r = A.get(server, token, 5) # With a limit of results 11 | r = A.get(server, token) # Using default limit of 50 for results 12 | print r 13 | -------------------------------------------------------------------------------- /AssetPostRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Assets 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | A = Assets() 9 | payload = '{"asset_tag":"thisisunique17","status_id":1,"model_id": 5}' 10 | r = A.create(server, token, payload) 11 | print r 12 | -------------------------------------------------------------------------------- /AssetUpdateDeviceRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Assets 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | A = Assets() 10 | #payload = '{"asset_tag":"thisisunique17","model_id": 5,"_snipeit_application_3": "Test Application"}' 11 | payload = '{"asset_tag":"thisisunique17","status_id": 1,"model_id": 5}' 12 | r = A.updateDevice(server, token, "2654", payload) 13 | print r 14 | -------------------------------------------------------------------------------- /CompanyDeleteRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Company 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | C = Company() 10 | r = C.delete(server, token, "5") 11 | print r 12 | -------------------------------------------------------------------------------- /CompanyGetIDRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Company 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | C = Company() 10 | r = C.getID(server, token, "My Test Company") 11 | print r 12 | -------------------------------------------------------------------------------- /CompanyGetRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Company 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | C = Company() 10 | r = C.get(server, token) 11 | print r 12 | -------------------------------------------------------------------------------- /CompanyPostRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Company 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | C = Company() 9 | payload = '{"name":"My Test Company"}' 10 | r = C.create(server, token, payload) 11 | print r 12 | -------------------------------------------------------------------------------- /CompanyUpdateCompanyRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Company 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | C = Company() 10 | payload = '{"name":"Another Company"}' 11 | r = C.updateCompany(server, token, "6", payload) 12 | print r 13 | -------------------------------------------------------------------------------- /ComponentsGetIDRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Components 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | C = Components() 10 | r = C.getID(server, token, "thisisunique17") 11 | print r 12 | -------------------------------------------------------------------------------- /ComponentsGetRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Components 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | C = Components() 10 | r = C.get(server, token) 11 | print r 12 | -------------------------------------------------------------------------------- /ComponentsPostRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Components 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | C = Components() 9 | payload = '{"name":"thisisunique17","qty":"1","category_id":9}' 10 | r = C.create(server, token, payload) 11 | print r 12 | -------------------------------------------------------------------------------- /ComponentsViewIDRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Components 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | C = Components() 10 | r = C.viewID(server, token, "1") 11 | print r 12 | -------------------------------------------------------------------------------- /ConsumablesGetIDRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Consumables 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | C = Consumables() 10 | r = C.getID(server, token, "thisisunique17") 11 | print r 12 | -------------------------------------------------------------------------------- /ConsumablesGetRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Consumables 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | C = Consumables() 10 | r = C.get(server, token) 11 | print r 12 | -------------------------------------------------------------------------------- /ConsumablesPostRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Consumables 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | C = Consumables() 9 | payload = '{"name":"thisisunique17","qty":"1","category_id":9}' 10 | r = C.create(server, token, payload) 11 | print r 12 | -------------------------------------------------------------------------------- /ConsumablesViewIDRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Consumables 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | C = Consumables() 10 | r = C.viewID(server, token, "1") 11 | print r 12 | -------------------------------------------------------------------------------- /DataUtilUsageExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Assets, Users, Categories 4 | from snipeit import DataUtil 5 | import json 6 | import ast 7 | import pandas as pd 8 | 9 | server='' 10 | token='' 11 | 12 | 13 | A = Assets() 14 | r = A.get(server, token) # Using default limit of 50 for results 15 | jsondata = DataUtil.getjson(r) 16 | print (DataUtil.prettyprint(r)) 17 | 18 | 19 | -------------------------------------------------------------------------------- /LocationsDeleteRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Locations 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | L = Locations() 10 | r = L.delete(server, token, "864") 11 | print r 12 | -------------------------------------------------------------------------------- /LocationsGetIDRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Locations 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | L = Locations() 10 | r = L.getID(server, token, "Test Location") 11 | print r 12 | -------------------------------------------------------------------------------- /LocationsGetRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Locations 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | L = Locations() 10 | r = L.get(server, token) 11 | print r 12 | -------------------------------------------------------------------------------- /LocationsPostRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Locations 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | L = Locations() 9 | payload = '{"name":"Test Location","address":"123 Some Street","address2":"Suite 2","state":"GA","country":"US","zip":"30328"}' 10 | r = L.create(server, token, payload) 11 | print r 12 | -------------------------------------------------------------------------------- /LocationsUpdateDeviceRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Locations 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | L = Locations() 10 | payload = '{"name":"Test Location2","address":"123 Some Street","address2":"Suite 2","state":"GA","country":"US","zip":"30328"}' 11 | r = L.updateLocation(server, token, "864", payload) 12 | print r 13 | -------------------------------------------------------------------------------- /ModelsDeleteRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Models 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | M = Models() 10 | r = M.delete(server, token, "13") 11 | print r 12 | -------------------------------------------------------------------------------- /ModelsGetIDRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Models 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | M = Models() 10 | r = M.getID(server, token, "testModel") 11 | print r 12 | -------------------------------------------------------------------------------- /ModelsGetRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Models 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | M = Models() 10 | #r = A.get(server, token, 5) # With a limit of results 11 | r = M.get(server, token) # Using default limit of 50 for results 12 | print r 13 | -------------------------------------------------------------------------------- /ModelsPostRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Models 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | M = Models() 9 | payload = '{"name":"testModel", "category_id":"3", "manufacturer_id":"2"}' 10 | r = M.create(server, token, payload) 11 | print r 12 | -------------------------------------------------------------------------------- /ModelsUpdateDeviceRequestExample.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from snipeit import Models 4 | 5 | server='http://snipeitserver.example.com' 6 | token='eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjU5MjFlNDUxZDlkZGJjNjIyOWIyZGQxYzRkNzMyMTE0MzcyZTY2YTZmMmE5NTE2ZTMyNWM2Mzg2ODNjMjdlODMyODE4YmJmM2QxNTg4MjlhIn0.eyJhdWQiOiIxIiwianRpIjoiNTkyMWU0NTFkOWRkYmM2MjI5YjJkZDFjNGQ3MzIxMTQzNzJlNjZhNmYyYTk1MTZlMzI1YzYzODY4M2MyN2U4MzI4MThiYmYzZDE1ODgyOWEiLCJpYXQiOjE1MTUxODI1OTcsIm5iZiI6MTUxNTE4MjU5NywiZXhwIjoxNTQ2NzE4NTk3LCJzdWIiOiIyMzQ2Iiwic2NvcGVzIjpbXX0.E4aHV0NQDlylBXfkfexYl2UBr043wb2suoNrLD2dSwwptIFxNyy8NSWFQxgvYtVeenIbva9dUhI_dYkY7h0W56RZW3DAoqOlzKjFUnhDU3FEqBMsI-CuiGQPwVJ5QQRIzP9VZVpypqokOf-OTZyc-ZyxyGnqz9_dqMFySYZ7EicbtpdYvWVgelK5HF4gxodeBmLm7igVSNkRm_SxHesyjVIvsefnXFF5idUWSwHBn3jXhv-Jm0fhAz8xAw7XjsXMPQXGMAkQHXYpEmobiGSJsvlVPyf4aZjB7FJVzz-1EecFOqBMAS5ZE4YUYi-DOH4YtS6JL_54UOJMeJ3gPh22f4_3yzjNoZ20_ru_O4au2yraG7INCc53XyFj2qgfh9n9eKqRJH2pTB_5jemMCVLjZRDhXA7H0pMxGr_iSlWCXcJGpXjTtW3au53zlqXxgSYtYuti_pU5rahcQWgKEyh7QGdepOa-xaXG_td5pJs2ewmW1Qw3YfFw1ryVZICnloYrGwnoIehXH_7gCBpuUx-NhlKEzhXEQlV0Vcq_btKB5M-AdPD7XSP4Y5SaTmC8B38J6h-uT5cw8XAUv0vR0NMfY9gs-JXZExTqzVcu_GIhy1v_lkeeh7Xud8ZzSlvR6zdDN3LTxh1IReHZBEX8gSh7bFsGe-bGTp40S_RbSilF_pg' 7 | 8 | 9 | M = Models() 10 | payload = '{"id":"13","name":"testModel","category_id":"5","manufacturer_id":"2"}' 11 | r = M.updateModel(server, token, "13", payload) 12 | print r 13 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | SnipeIT Python API 2 | ================== 3 | 4 | Use this package to interface with the SnipeIT (https://snipeitapp.com/) 5 | API directly from Python. 6 | 7 | Installation 8 | ------------ 9 | 10 | Run the command ``pip install snipeit`` 11 | 12 | Usage 13 | ----- 14 | 15 | - See Example Scripts included in package for specific calls 16 | 17 | API Features 18 | ------------ 19 | 20 | - ☒ Hardware 21 | - ☒ Companies 22 | - ☒ Locations 23 | - ☒ Accessories 24 | - ☒ Consumables 25 | - ☒ Components 26 | - ☒ Users 27 | - ☒ Status Labels 28 | - ☒ Models 29 | - ☒ Licenses 30 | - ☒ Categories 31 | - ☒ Manufacturers 32 | - ☒ Custom Fieldsets 33 | - ☒ Maintenances 34 | 35 | |Completed| 36 | 37 | Release History 38 | --------------- 39 | 40 | - 0.12 41 | 42 | - Synchronizing API features based on Snipe-IT version 4.7.5 43 | - Added audit command under Assets class 44 | - Added audit due & overdue under Assets class 45 | - Added asset checkin & checkout under Assets class 46 | - Fix various typos on input parameters in some classes 47 | - Add DataUtil module for some small response data management functions 48 | - Add SimpleAssetBrowser script as an example of asset browsing by utilizing pySimpleGUI & pandas 49 | - Add DataUtilUsageExample 50 | - Updating Doc folder 51 | 52 | - 0.11 53 | 54 | - Completing API features based on Snipe-IT version 4.6.14 55 | 56 | - Added Categories class 57 | - Added Fieldsets class 58 | - Added Missing Licenses class 59 | - Added Manufacturers class 60 | - Added Maintenances class 61 | - Added docstrings for each methods 62 | - Removed unrelated methods in some classes 63 | - Added search() method for all supported APIs 64 | - Update get() methods to incorporate ordering 65 | - Added many new methods in each class (see documentation files) 66 | - Added documentation files 67 | 68 | - 0.10 69 | 70 | - Update import issue in python3 71 | 72 | - Updated **init**.py to python 3 import style 73 | 74 | - 0.9 75 | 76 | - Created Support for Models 77 | 78 | - Added get() method to get JSON dump of Models 79 | - Added create() method to add new items to Models 80 | - Added getID() method to get the ID of a specified Models 81 | - Added delete() method to remove items from Models 82 | - Added updateModel() method (Uses PATCH call) to update details 83 | on a existing Model 84 | 85 | - 0.8 86 | 87 | - Created Support for StatusLabels 88 | 89 | - Added get() method to get JSON dump of Status Labels 90 | - Added create() method to add new items to Status Labels 91 | - Added getID() method to get the ID of a specified Status Labels 92 | - Added delete() method to remove items from Status Labels 93 | - Added updateStatusLabels() method (Uses PATCH call) to update 94 | details on a existing Status Label 95 | 96 | - 0.7 97 | 98 | - Created Support for Users 99 | 100 | - Added get() method to get JSON dump of Users 101 | - Added create() method to add new items to Users 102 | - Added getID() method to get the ID of a specified Users 103 | - Added delete() method to remove items from Users 104 | - Added updateUser() method (Uses PATCH call) to update details 105 | on a existing Users 106 | - Added getCheckedOutAssets() method to get a list of Assets 107 | assigned to that User 108 | 109 | - 0.6 110 | 111 | - Created Support for Components 112 | 113 | - Added get() method to get JSON dump of Components 114 | - Added create() method to add new items to Components 115 | - Added getID() method to get the ID of a specified Components 116 | - Added viewID() method to see details of Components 117 | 118 | - 0.5 119 | 120 | - Creating Support for Consumable API Calls 121 | 122 | - Added get() method to get JSON dump of Consumables 123 | - Added create() method to add new items to Consumables 124 | - Added getID() method to get the ID of a specified consumable 125 | - Added viewID() method to get details of a specific consumable 126 | 127 | - 0.4 128 | 129 | - Creating Support for Accessory API Calls 130 | 131 | - Added get() method to get JSON dump of AccessoriesID 132 | - Added create() method to add new items to Accessories 133 | - Added getID() method to get the ID of a specified accessories 134 | - Added viewID() method to get details of a specific accessory 135 | 136 | - 0.3 137 | 138 | - Creating Support for Locations API Calls 139 | 140 | - Added get() method to get JSON dump of locations 141 | - Added create() method to add new items to locations 142 | - Added getID() method to get the ID of a specified locations 143 | - Added updateCompany() method (Uses PATCH call) to update the 144 | name of an existing location. 145 | - Added delete() method to remove items from locations 146 | 147 | - 0.2 148 | 149 | - Creating Support for Company API Calls 150 | 151 | - Added get() method to get JSON dump of companies 152 | - Added create() method to add new items to companies 153 | - Added getID() method to get the ID of a specified company 154 | - Added delete() method to remove items from companies 155 | - Added updateCompany() method (Uses PATCH call) to update the 156 | name of an existing company. 157 | 158 | - 0.1 159 | 160 | - Created Support for Assets 161 | 162 | - Added get() method to get JSON dump of inventory 163 | - Added create() method to add new items to inventory 164 | - Added getID() method to get the ID of a specified device in the 165 | inventory 166 | - Added delete() method to remove items from inventory 167 | - Added updateDevice() method (Uses PATCH call) to update details 168 | on a device currently in inventory. 169 | 170 | Contributing 171 | ------------ 172 | 173 | 1. Fork it! 174 | 2. Create your feature branch: ``git checkout -b my-new-feature`` 175 | 3. Commit your changes: ``git commit -am 'Add some feature'`` 176 | 4. Push to the branch: ``git push origin my-new-feature`` 177 | 5. Submit a pull request :D 178 | 179 | Credits 180 | ------- 181 | 182 | Cox Automotive Inc. \* https://www.coxautoinc.com/ \* Author: Jared 183 | Bloomer 184 | 185 | License 186 | ------- 187 | 188 | This Project is currently released under the MIT license. For the latest 189 | copy of the MIT license please refer to 190 | https://opensource.org/licenses/MIT 191 | 192 | .. |Completed| image:: http://progressed.io/bar/100?title=completed 193 | 194 | -------------------------------------------------------------------------------- /SimpleAssetBrowser.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | ''' 3 | this script uses pandas. please install beforehand 4 | ''' 5 | 6 | from snipeit import Assets, Categories, DataUtil 7 | import html 8 | import sys 9 | if sys.version_info[0] >= 3: 10 | import PySimpleGUI as sg 11 | else: 12 | import PySimpleGUI27 as sg 13 | import pandas as pd 14 | 15 | server='' 16 | token=' 2 | 3 | 4 | 5 | 6 | 7 | snipeit API documentation 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 |
20 |

Module snipeit

21 |
22 |
23 |
24 | Source code 25 |
from .Assets import Assets
 26 | from .Company import Company
 27 | from .Locations import Locations
 28 | from .Accessories import Accessories
 29 | from .Consumables import Consumables
 30 | from .Components import Components
 31 | from .Users import Users
 32 | from .StatusLabels import StatusLabels
 33 | from .Models import Models
 34 | from .Categories import Categories
 35 | from .Manufacturers import Manufacturers
 36 | from .Fieldsets import Fieldsets
 37 | from .Maintenances import Maintenances
 38 | from .Licenses import Licenses
39 |
40 |
41 |
42 |

Sub-modules

43 |
44 |
snipeit.Accessories
45 |
46 |
47 |
48 |
snipeit.Assets
49 |
50 |
51 |
52 |
snipeit.AssetsMaintenances
53 |
54 |
55 |
56 |
snipeit.Categories
57 |
58 |
59 |
60 |
snipeit.Company
61 |
62 |
63 |
64 |
snipeit.Components
65 |
66 |
67 |
68 |
snipeit.Consumables
69 |
70 |
71 |
72 |
snipeit.DataUtil
73 |
74 |
75 |
76 |
snipeit.Fieldsets
77 |
78 |
79 |
80 |
snipeit.Licenses
81 |
82 |
83 |
84 |
snipeit.Locations
85 |
86 |
87 |
88 |
snipeit.Maintenances
89 |
90 |
91 |
92 |
snipeit.Manufacturers
93 |
94 |
95 |
96 |
snipeit.Models
97 |
98 |
99 |
100 |
snipeit.StatusLabels
101 |
102 |
103 |
104 |
snipeit.Users
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 | 145 |
146 | 149 | 150 | 151 | 152 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup 2 | 3 | with open("README.rst","r") as fh: 4 | long_description = fh.read() 5 | 6 | setup(name='snipeit', 7 | version='1.2', 8 | long_description=long_description, 9 | long_description_content_type="text/markdown", 10 | description=("Python library to access the SnipeIT API"), 11 | url='https://github.com/jbloomer/SnipeIT-PythonAPI', 12 | author='Jared Bloomer (Cox Automotive Inc.)', 13 | author_email='jared.bloomer@coxautoinc.com', 14 | license='MIT', 15 | packages=['snipeit'], 16 | install_requires=['requests','simplejson'], 17 | zip_safe=False) 18 | -------------------------------------------------------------------------------- /snipeit/Accessories.py: -------------------------------------------------------------------------------- 1 | import ssl 2 | try: 3 | _create_unverified_https_context = ssl._create_unverified_context 4 | except AttributeError: 5 | # Legacy Python that doesn't verify HTTPS certificates by default 6 | pass 7 | else: 8 | # Handle target environment that doesn't support HTTPS verification 9 | ssl._create_default_https_context = _create_unverified_https_context 10 | import requests 11 | try: 12 | requests.packages.urllib3.disable_warnings() 13 | except AttributeError: 14 | pass 15 | else: 16 | requests.packages.urllib3.disable_warnings() 17 | try: 18 | from .packages.urllib3.exceptions import ResponseError 19 | except: 20 | pass 21 | 22 | import json 23 | 24 | class Accessories(object): 25 | """Class to access accessories API. 26 | """ 27 | def __init__(self): 28 | pass 29 | 30 | def get(self, server, token, limit=None, offset=None): 31 | """Get list of accessories 32 | 33 | Arguments: 34 | server {string} -- Server URI 35 | token {string} -- Token value to be used for accessing the API 36 | offset {string} -- Starting offset to get the data 37 | 38 | Keyword Arguments: 39 | limit {string} -- Limit the number of data returned from the server (default: {50}) 40 | 41 | Returns: 42 | string -- List of accessories from the server, in JSON formatted 43 | """ 44 | if limit is not None: 45 | self.uri = '/api/v1/accessories?limit={0}'.format(str(limit)) 46 | if offset is not None: 47 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 48 | else: 49 | self.uri = '/api/v1/accessories' 50 | if offset is not None: 51 | self.uri = self.uri + '?offset={0}'.format(str(offset)) 52 | self.server = server + self.uri 53 | headers = {'Authorization': 'Bearer {0}'.format(token)} 54 | results = requests.get(self.server, headers=headers) 55 | return results.content 56 | 57 | def search(self, server, token, limit=None, order='asc', keyword=None): 58 | """Get list of accessories based on search keyword 59 | 60 | Arguments: 61 | server {string} -- Server URI 62 | token {string} -- Token value to be used for accessing the API 63 | 64 | Keyword Arguments: 65 | limit {string} -- Limit the number of data returned by the server (default: {50}) 66 | 67 | Returns: 68 | string -- List of accessories in JSON format. 69 | """ 70 | if keyword is None: 71 | keyword = "" 72 | 73 | if limit is not None: 74 | self.uri = '/api/v1/accessories?limit={0}&order={1}'.format(str(limit),order) 75 | else: 76 | self.uri = '/api/v1/accessories?order={0}'.format(order) 77 | self.server = server + self.uri + '&search={0}'.format(keyword) 78 | headers = {'Authorization': 'Bearer {0}'.format(token)} 79 | results = requests.get(self.server, headers=headers) 80 | return results.content 81 | 82 | def create(self, server, token, payload): 83 | """Create new accessories data. 84 | 85 | Arguments: 86 | server {string} -- Server URI 87 | token {string} -- Token value to be used for accessing the API 88 | payload {string} -- Accessories input parameters 89 | 90 | Returns: 91 | string -- data creation result 92 | """ 93 | self.uri = '/api/v1/accessories' 94 | self.server = server + self.uri 95 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 96 | results = requests.post(self.server, headers=headers, data=payload) 97 | return json.dumps(results.json(),indent=4, separators=(',', ':')) 98 | 99 | def getDetailsByID(self, server, token, accessoriesID): 100 | """Get the details of accessory data. 101 | 102 | Arguments: 103 | server {string} -- Server URI 104 | token {string} -- Token value to be used for accessing the API 105 | accessories_ID {integer} -- ID of the accessories to be found 106 | 107 | Returns: 108 | string -- Detailed information of an accessory 109 | """ 110 | self.uri = '/api/v1/accessories/' 111 | self.server = server + self.uri + str(accessoriesID) 112 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 113 | results = requests.get(self.server, headers=headers) 114 | return results.content 115 | 116 | -------------------------------------------------------------------------------- /snipeit/Assets.py: -------------------------------------------------------------------------------- 1 | import ssl 2 | try: 3 | _create_unverified_https_context = ssl._create_unverified_context 4 | except AttributeError: 5 | # Legacy Python that doesn't verify HTTPS certificates by default 6 | pass 7 | else: 8 | # Handle target environment that doesn't support HTTPS verification 9 | ssl._create_default_https_context = _create_unverified_https_context 10 | import requests 11 | try: 12 | requests.packages.urllib3.disable_warnings() 13 | except AttributeError: 14 | pass 15 | else: 16 | requests.packages.urllib3.disable_warnings() 17 | try: 18 | from .packages.urllib3.exceptions import ResponseError 19 | except: 20 | pass 21 | 22 | import json 23 | 24 | 25 | class Assets(object): 26 | def __init__(self): 27 | pass 28 | 29 | def get(self, server, token, limit=None, order='asc', offset=None): 30 | """Get list of assets 31 | 32 | Arguments: 33 | server {string} -- Server URI 34 | token {string} -- Token value to be used for accessing the API 35 | offset {string} -- Starting offset to get the data 36 | 37 | Keyword Arguments: 38 | limit {string} -- Limit the number of data returned by the server (default: {50}) 39 | order {string} -- Display order of data (asc / desc default:{asc}) 40 | 41 | Returns: 42 | [string] -- List of assets from the server, in JSON formatted 43 | """ 44 | if limit is not None: 45 | self.uri = '/api/v1/hardware?limit={0}&order={1}'.format(str(limit),order) 46 | else: 47 | self.uri = '/api/v1/hardware?order={0}'.format(order) 48 | if offset is not None: 49 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 50 | self.server = server + self.uri 51 | headers = {'Authorization': 'Bearer {0}'.format(token)} 52 | results = requests.get(self.server, headers=headers) 53 | return results.content 54 | #return json.dumps(results.json(),indent=4, separators=(',', ':')) 55 | 56 | def search(self, server, token, limit=None, order='asc', keyword=None, offset=None): 57 | """Get list of assets based on search keyword 58 | 59 | Arguments: 60 | server {string} -- Server URI 61 | token {string} -- Token value to be used for accessing the API 62 | offset {string} -- Starting offset to get the data 63 | 64 | Keyword Arguments: 65 | limit {string} -- Limit the number of data returned by the server (default: {50}) 66 | order {string} -- Display order of data (asc / desc default:{asc}) 67 | 68 | Returns: 69 | string -- List of assets in JSON format. 70 | """ 71 | if keyword is None: 72 | keyword = "" 73 | 74 | if limit is not None: 75 | self.uri = '/api/v1/hardware?limit={0}&order={1}'.format(str(limit),order) 76 | else: 77 | self.uri = '/api/v1/hardware?order={0}'.format(order) 78 | if offset is not None: 79 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 80 | self.server = server + self.uri + '&search=' + keyword 81 | headers = {'Authorization': 'Bearer {0}'.format(token)} 82 | results = requests.get(self.server, headers=headers) 83 | return results.content 84 | 85 | def getAssetsByModel(self, server, token, modelID, limit=None, order='asc', offset=None): 86 | """Get list of assets 87 | 88 | Arguments: 89 | server {string} -- Server URI 90 | token {string} -- Token value to be used for accessing the API 91 | modelID {string} -- Model ID to be limited to 92 | offset {string} -- Starting offset to get the data 93 | 94 | Keyword Arguments: 95 | limit {string} -- Limit the number of data returned by the server (default: {50}) 96 | order {string} -- Display order of data (asc / desc default:{asc}) 97 | 98 | Returns: 99 | [string] -- List of assets from the server, in JSON formatted 100 | """ 101 | if limit is not None: 102 | self.uri = '/api/v1/hardware?limit={0}&order={1}'.format(str(limit),order) 103 | else: 104 | self.uri = '/api/v1/hardware?order={0}'.format(order) 105 | if offset is not None: 106 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 107 | self.server = server + self.uri 108 | headers = {'Authorization': 'Bearer {0}'.format(token)} 109 | results = requests.get(self.server, headers=headers) 110 | return results.content 111 | 112 | def getAssetsByCategory(self, server, token, categoryID, limit=None, order='asc', offset=None): 113 | """Get list of assets 114 | 115 | Arguments: 116 | server {string} -- Server URI 117 | token {string} -- Token value to be used for accessing the API 118 | categoryID {string} -- Category ID to be limited to 119 | offset {string} -- Starting offset to get the data 120 | 121 | Keyword Arguments: 122 | limit {string} -- Limit the number of data returned by the server (default: {50}) 123 | order {string} -- Display order of data (asc / desc default:{asc}) 124 | 125 | Returns: 126 | [string] -- List of assets from the server, in JSON formatted 127 | """ 128 | if limit is not None: 129 | self.uri = '/api/v1/hardware?limit={0}&order={1}'.format(str(limit),order) 130 | else: 131 | self.uri = '/api/v1/hardware?order={0}'.format(order) 132 | if offset is not None: 133 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 134 | self.server = server + self.uri + '&category_id=' + str(categoryID) 135 | headers = {'Authorization': 'Bearer {0}'.format(token)} 136 | results = requests.get(self.server, headers=headers) 137 | return results.content 138 | 139 | def getAssetsByManufacturer(self, server, token, manufacturerID, limit=None, order='asc', offset=None): 140 | """Get list of assets 141 | 142 | Arguments: 143 | server {string} -- Server URI 144 | token {string} -- Token value to be used for accessing the API 145 | manufacturerID {string} -- Manufacturer ID to be limited to 146 | offset {string} -- Starting offset to get the data 147 | 148 | Keyword Arguments: 149 | limit {string} -- Limit the number of data returned by the server (default: {50}) 150 | order {string} -- Display order of data (asc / desc default:{asc}) 151 | 152 | Returns: 153 | [string] -- List of assets from the server, in JSON formatted 154 | """ 155 | if limit is not None: 156 | self.uri = '/api/v1/hardware?limit={0}&order={1}'.format(str(limit),order) 157 | else: 158 | self.uri = '/api/v1/hardware?order={0}'.format(order) 159 | if offset is not None: 160 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 161 | self.server = server + self.uri + '&manufacturer_id={0}'.format(manufacturerID) 162 | headers = {'Authorization': 'Bearer {0}'.format(token)} 163 | results = requests.get(self.server, headers=headers) 164 | return results.content 165 | 166 | def getAssetsByCompany(self, server, token, companyID, limit=None, order='asc', offset=None): 167 | """Get list of assets 168 | 169 | Arguments: 170 | server {string} -- Server URI 171 | token {string} -- Token value to be used for accessing the API 172 | companyID {string} -- CompanyID to be limited to 173 | offset {string} -- Starting offset to get the data 174 | 175 | Keyword Arguments: 176 | limit {string} -- Limit the number of data returned by the server (default: {50}) 177 | order {string} -- Display order of data (asc / desc default:{asc}) 178 | 179 | Returns: 180 | [string] -- List of assets from the server, in JSON formatted 181 | """ 182 | if limit is not None: 183 | self.uri = '/api/v1/hardware?limit={0}&order={1}'.format(str(limit),order) 184 | else: 185 | self.uri = '/api/v1/hardware?order={0}'.format(order) 186 | if offset is not None: 187 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 188 | self.server = server + self.uri + '&company_id={0}'.format(companyID) 189 | headers = {'Authorization': 'Bearer {0}'.format(token)} 190 | results = requests.get(self.server, headers=headers) 191 | return results.content 192 | 193 | def getAssetsByLocation(self, server, token, locationID, limit=None, order='asc', offset=None): 194 | """Get list of assets 195 | 196 | Arguments: 197 | server {string} -- Server URI 198 | token {string} -- Token value to be used for accessing the API 199 | locationID {string} -- Location ID to be limited to 200 | offset {string} -- Starting offset to get the data 201 | 202 | Keyword Arguments: 203 | limit {string} -- Limit the number of data returned by the server (default: {50}) 204 | order {string} -- Display order of data (asc / desc default:{asc}) 205 | 206 | Returns: 207 | [string] -- List of assets from the server, in JSON formatted 208 | """ 209 | if limit is not None: 210 | self.uri = '/api/v1/hardware?limit={0}&order={1}'.format(str(limit),order) 211 | else: 212 | self.uri = '/api/v1/hardware?order={0}'.format(order) 213 | if offset is not None: 214 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 215 | self.server = server + self.uri + '&location_id={0}'.format(locationID) 216 | headers = {'Authorization': 'Bearer {0}'.format(token)} 217 | results = requests.get(self.server, headers=headers) 218 | return results.content 219 | 220 | def getAssetsByStatus(self, server, token, status, limit=None, order='asc', offset=None): 221 | """Get list of assets 222 | 223 | Arguments: 224 | server {string} -- Server URI 225 | token {string} -- Token value to be used for accessing the API 226 | status {string} -- Status types (RTD, Deployed, Undeployable, Deleted, Archived, Requestable) 227 | offset {string} -- Starting offset to get the data 228 | 229 | Keyword Arguments: 230 | limit {string} -- Limit the number of data returned by the server (default: {50}) 231 | order {string} -- Display order of data (asc / desc default:{asc}) 232 | 233 | Returns: 234 | [string] -- List of assets from the server, in JSON formatted 235 | """ 236 | if limit is not None: 237 | self.uri = '/api/v1/hardware?limit={0}&order={1}'.format(str(limit),order) 238 | else: 239 | self.uri = '/api/v1/hardware?order={0}'.format(order) 240 | if offset is not None: 241 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 242 | self.server = server + self.uri + '&status={0}'.format(status) 243 | headers = {'Authorization': 'Bearer {0}'.format(token)} 244 | results = requests.get(self.server, headers=headers) 245 | return results.content 246 | 247 | def getAssetsByStatusLabel(self, server, token, statusLabelID, limit=None, order='asc', offset=None): 248 | """Get list of assets 249 | 250 | Arguments: 251 | server {string} -- Server URI 252 | token {string} -- Token value to be used for accessing the API 253 | statusLabelID {string} -- Status label ID 254 | offset {string} -- Starting offset to get the data 255 | 256 | Keyword Arguments: 257 | limit {string} -- Limit the number of data returned by the server (default: {50}) 258 | order {string} -- Display order of data (asc / desc default:{asc}) 259 | 260 | Returns: 261 | [string] -- List of assets from the server, in JSON formatted 262 | """ 263 | if limit is not None: 264 | self.uri = '/api/v1/hardware?limit={0}&order={1}'.format(str(limit),order) 265 | else: 266 | self.uri = '/api/v1/hardware' + '?order=' + order 267 | if offset is not None: 268 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 269 | self.server = server + self.uri + '&status_id={0}'.format(statusLabelID) 270 | headers = {'Authorization': 'Bearer {0}'.format(token)} 271 | results = requests.get(self.server, headers=headers) 272 | return results.content 273 | 274 | def getDetailsByID(self, server, token, AssetID): 275 | """Get asset details by ID 276 | 277 | Arguments: 278 | server {string} -- Server URI 279 | token {string} -- Token value to be used for accessing the API 280 | AssetID {string} -- Asset ID 281 | 282 | Returns: 283 | [string] -- Asset details from the server, in JSON formatted 284 | """ 285 | self.uri = '/api/v1/hardware/{0}'.format(str(AssetID)) 286 | self.server = server + self.uri 287 | headers = {'Authorization': 'Bearer {0}'.format(token)} 288 | results = requests.get(self.server, headers=headers) 289 | return results.content 290 | 291 | def getDetailsByTag(self, server, token, AssetTag): 292 | """Get asset details by ID 293 | 294 | Arguments: 295 | server {string} -- Server URI 296 | token {string} -- Token value to be used for accessing the API 297 | AssetTAG {string} -- Asset TAG 298 | 299 | Returns: 300 | [string] -- Asset details from the server, in JSON formatted 301 | """ 302 | self.uri = '/api/v1/hardware/bytag/{0}'.format(str(AssetTag)) 303 | self.server = server + self.uri 304 | headers = {'Authorization': 'Bearer {0}'.format(token)} 305 | results = requests.get(self.server, headers=headers) 306 | return results.content 307 | 308 | 309 | def getDetailsBySerial(self, server, token, AssetSerial): 310 | """Get asset details by Serial Number 311 | 312 | Arguments: 313 | server {string} -- Server URI 314 | token {string} -- Token value to be used for accessing the API 315 | AssetSerial {string} -- Asset Serial Number 316 | 317 | Returns: 318 | [string] -- List of assets from the server, in JSON formatted 319 | """ 320 | self.uri = '/api/v1/hardware/byserial/{0}'.format(str(AssetSerial)) 321 | self.server = server + self.uri 322 | headers = {'Authorization': 'Bearer {0}'.format(token)} 323 | results = requests.get(self.server, headers=headers) 324 | return results.content 325 | 326 | def create(self, server, token, payload): 327 | """Create new asset data 328 | 329 | Arguments: 330 | server {string} -- Server URI 331 | token {string} -- Token value to be used for accessing the API 332 | payload {string} -- Asset data 333 | 334 | Returns: 335 | [string] -- Server response in JSON formatted 336 | """ 337 | self.uri = '/api/v1/hardware' 338 | self.server = server + self.uri 339 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 340 | results = requests.post(self.server, headers=headers, data=payload) 341 | return json.dumps(results.json(),indent=4, separators=(',', ':')) 342 | 343 | def getID(self, server, token, asset_name): 344 | """search asset ID by its name 345 | 346 | Arguments: 347 | server {string} -- Server URI 348 | token {string} -- Token value to be used for accessing the API 349 | asset_name {string} -- Asset name 350 | 351 | Returns: 352 | [string] -- Server response in JSON formatted 353 | """ 354 | self.uri = '/api/v1/hardware?search={0}'.format(asset_name) 355 | self.server = server + self.uri 356 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 357 | results = requests.get(self.server, headers=headers) 358 | jsonData = json.loads((results.content).decode('utf-8').replace("'",'"')) 359 | #print(jsonData) 360 | if len(jsonData['rows']) < 2 and jsonData['rows'][0]['id'] is not None: 361 | AssetID = jsonData['rows'][0]['id'] 362 | return AssetID 363 | 364 | def delete(self, server, token, DeviceID): 365 | """Delete asset data 366 | 367 | Arguments: 368 | server {string} -- Server URI 369 | token {string} -- Token value to be used for accessing the API 370 | DeviceID {string} -- Asset ID to be deleted 371 | 372 | Returns: 373 | [string] -- Server response in JSON formatted 374 | """ 375 | self.uri = '/api/v1/hardware/{0}'.format(DeviceID) 376 | self.server = server + self.uri 377 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 378 | results = requests.delete(self.server, headers=headers) 379 | jsonData = json.loads(results.content) 380 | return jsonData['status'] 381 | 382 | def updateDevice(self, server, token, DeviceID, payload): 383 | """Update asset data 384 | 385 | Arguments: 386 | server {string} -- Server URI 387 | token {string} -- Token value to be used for accessing the API 388 | DeviceID {string} -- Asset ID 389 | payload {string} -- Asset data 390 | 391 | Returns: 392 | [string] -- Server response in JSON formatted 393 | """ 394 | self.uri = '/api/v1/hardware/{0}'.format(DeviceID) 395 | self.server = server + self.uri 396 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 397 | results = requests.patch(self.server, headers=headers, data=payload) 398 | jsonData = json.loads(results.content) 399 | return jsonData['status'] 400 | 401 | def checkInAsset(self, server, token, assetID, note=None, locationID=None): 402 | """Check in an asset 403 | 404 | Arguments: 405 | server {string} -- Server URI 406 | token {string} -- Token value to be used for accessing the API 407 | assetID {string} -- ID of the asset 408 | 409 | Keyword Arguments: 410 | note {string} -- Note of the checkin (default: {None}) 411 | locationID {string} -- Location id where the asset checked in (default: {None}) 412 | """ 413 | self.uri = ('/api/v1/hardware/{0}/checkin'.format(assetID)) 414 | payload = {'note':note, 'location_id':locationID} 415 | self.server = server + self.uri 416 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 417 | results = requests.post(self.server, headers=headers, data=payload) 418 | return json.dumps(results.json(),indent=4, separators=(',', ':')) 419 | 420 | 421 | def checkOutAsset(self, server, token, assetID, note=None, locationID=None): 422 | """Check out an asset 423 | 424 | Arguments: 425 | server {string} -- Server URI 426 | token {string} -- Token value to be used for accessing the API 427 | assetID {string} -- ID of the asset 428 | 429 | Keyword Arguments: 430 | note {string} -- Note of the checkin (default: {None}) 431 | locationID {string} -- Location id where the asset checked out (default: {None}) 432 | """ 433 | self.uri = ('/api/v1/hardware/{0}/checkout'.format(assetID)) 434 | payload = {'note':note, 'location_id':locationID} 435 | self.server = server + self.uri 436 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 437 | results = requests.post(self.server, headers=headers, data=payload) 438 | return json.dumps(results.json(),indent=4, separators=(',', ':')) 439 | 440 | def auditAsset(self, server, token, assetTag=None, locationID=None): 441 | """Audit an asset 442 | 443 | Arguments: 444 | server {string} -- Server URI 445 | token {string} -- Token value to be used for accessing the API 446 | 447 | Keyword Arguments: 448 | assetTag {string} -- asset tag to be audited (default: {None}) 449 | locationID {[type]} -- location ID to be audited (default: {None}) 450 | """ 451 | self.uri = '/api/v1/hardware/audit' 452 | payload = {'asset_tag':assetTag, 'location_id':locationID} 453 | self.server = server + self.uri 454 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 455 | results = requests.post(self.server, headers=headers, data=payload) 456 | return json.dumps(results.json(),indent=4, separators=(',', ':')) 457 | 458 | def getAuditDue(self, server, token): 459 | """Gets list of audit dues 460 | 461 | Arguments: 462 | server {string} -- Server URI 463 | token {string} -- Token value to be used for accessing the API 464 | """ 465 | self.uri = '/api/v1/hardware/audit/due' 466 | self.server = server + self.uri 467 | headers = {'Authorization': 'Bearer {0}'.format(token)} 468 | results = requests.get(self.server, headers=headers) 469 | return results.content 470 | 471 | def getAuditOverdue(self, server, token): 472 | """Gets list of audit overdues 473 | 474 | Arguments: 475 | server {string} -- Server URI 476 | token {string} -- Token value to be used for accessing the API 477 | """ 478 | self.uri = '/api/v1/hardware/audit/overdue' 479 | self.server = server + self.uri 480 | headers = {'Authorization': 'Bearer {0}'.format(token)} 481 | results = requests.get(self.server, headers=headers) 482 | return results.content 483 | -------------------------------------------------------------------------------- /snipeit/AssetsMaintenances.py: -------------------------------------------------------------------------------- 1 | import ssl 2 | try: 3 | _create_unverified_https_context = ssl._create_unverified_context 4 | except AttributeError: 5 | # Legacy Python that doesn't verify HTTPS certificates by default 6 | pass 7 | else: 8 | # Handle target environment that doesn't support HTTPS verification 9 | ssl._create_default_https_context = _create_unverified_https_context 10 | import requests 11 | try: 12 | requests.packages.urllib3.disable_warnings() 13 | except AttributeError: 14 | pass 15 | else: 16 | requests.packages.urllib3.disable_warnings() 17 | try: 18 | from .packages.urllib3.exceptions import ResponseError 19 | except: 20 | pass 21 | 22 | import json 23 | 24 | 25 | class AssetsMaintenances(object): 26 | def __init__(self): 27 | pass 28 | 29 | def get(self, server, token, limit=None, order='asc'): 30 | """Get list of assets 31 | 32 | Arguments: 33 | server {string} -- Server URI 34 | token {string} -- Token value to be used for accessing the API 35 | 36 | 37 | Keyword Arguments: 38 | limit {string} -- Limit the number of data returned by the server (default: {50}) 39 | order {string} -- Display order of data (asc / desc default:{asc}) 40 | 41 | Returns: 42 | [string] -- List of assets from the server, in JSON formatted 43 | """ 44 | if limit is not None: 45 | self.uri = '/api/v1/hardware?limit={0}&order={1}'.format(str(limit), order) 46 | else: 47 | self.uri = '/api/v1/hardware?order={0}'.format(order) 48 | self.server = server + self.uri 49 | headers = {'Authorization': 'Bearer {0}'.format(token)} 50 | results = requests.get(self.server, headers=headers) 51 | return results.content 52 | #return json.dumps(results.json(),indent=4, separators=(',', ':')) 53 | 54 | def search(self, server, token, limit=None, order='asc', keyword=None): 55 | """Get list of assets based on search keyword 56 | 57 | Arguments: 58 | server {string} -- Server URI 59 | token {string} -- Token value to be used for accessing the API 60 | 61 | Keyword Arguments: 62 | limit {string} -- Limit the number of data returned by the server (default: {50}) 63 | order {string} -- Display order of data (asc / desc default:{asc}) 64 | 65 | Returns: 66 | string -- List of assets in JSON format. 67 | """ 68 | if keyword is None: 69 | keyword = "" 70 | 71 | if limit is not None: 72 | self.uri = '/api/v1/hardware?limit={0}&order={1}'.format(str(limit), order) 73 | else: 74 | self.uri = '/api/v1/hardware?order={0}'.format(order) 75 | self.server = server + self.uri + '&search={0}'.format(keyword) 76 | headers = {'Authorization': 'Bearer {0}'.format(token)} 77 | results = requests.get(self.server, headers=headers) 78 | return results.content 79 | 80 | def getAssetsByModel(self, server, token, modelID, limit=None, order='asc'): 81 | """Get list of assets 82 | 83 | Arguments: 84 | server {string} -- Server URI 85 | token {string} -- Token value to be used for accessing the API 86 | modelID {string} -- Model ID to be limited to 87 | 88 | Keyword Arguments: 89 | limit {string} -- Limit the number of data returned by the server (default: {50}) 90 | order {string} -- Display order of data (asc / desc default:{asc}) 91 | 92 | Returns: 93 | [string] -- List of assets from the server, in JSON formatted 94 | """ 95 | if limit is not None: 96 | self.uri = '/api/v1/hardware?limit={0}&order={1}'.format(str(limit), order) 97 | else: 98 | self.uri = '/api/v1/hardware?order={0}'.format(order) 99 | self.server = server + self.uri 100 | headers = {'Authorization': 'Bearer {0}'.format(token)} 101 | results = requests.get(self.server, headers=headers) 102 | return results.content 103 | 104 | def getAssetsByCategory(self, server, token, categoryID, limit=None, order='asc'): 105 | """Get list of assets 106 | 107 | Arguments: 108 | server {string} -- Server URI 109 | token {string} -- Token value to be used for accessing the API 110 | categoryID {string} -- Category ID to be limited to 111 | 112 | Keyword Arguments: 113 | limit {string} -- Limit the number of data returned by the server (default: {50}) 114 | order {string} -- Display order of data (asc / desc default:{asc}) 115 | 116 | Returns: 117 | [string] -- List of assets from the server, in JSON formatted 118 | """ 119 | if limit is not None: 120 | self.uri = '/api/v1/hardware?limit={0}&order={1}'.format(str(limit), order) 121 | else: 122 | self.uri = '/api/v1/hardware?order={0}'.format(order) 123 | self.server = server + self.uri + '&category_id={0}'.format(categoryID) 124 | headers = {'Authorization': 'Bearer {0}'.format(token)} 125 | results = requests.get(self.server, headers=headers) 126 | return results.content 127 | 128 | def getAssetsByManufacturer(self, server, token, manufacturerID, limit=None, order='asc'): 129 | """Get list of assets 130 | 131 | Arguments: 132 | server {string} -- Server URI 133 | token {string} -- Token value to be used for accessing the API 134 | manufacturerID {string} -- Manufacturer ID to be limited to 135 | 136 | Keyword Arguments: 137 | limit {string} -- Limit the number of data returned by the server (default: {50}) 138 | order {string} -- Display order of data (asc / desc default:{asc}) 139 | 140 | Returns: 141 | [string] -- List of assets from the server, in JSON formatted 142 | """ 143 | if limit is not None: 144 | self.uri = '/api/v1/hardware?limit={0}&order={1}'.format(str(limit), order) 145 | else: 146 | self.uri = '/api/v1/hardware?order={0}'.format(order) 147 | self.server = server + self.uri + '&manufacturer_id={0}'.format(manufacturerID) 148 | headers = {'Authorization': 'Bearer {0}'.format(token)} 149 | results = requests.get(self.server, headers=headers) 150 | return results.content 151 | 152 | def getAssetsByCompany(self, server, token, companyID, limit=None, order='asc'): 153 | """Get list of assets 154 | 155 | Arguments: 156 | server {string} -- Server URI 157 | token {string} -- Token value to be used for accessing the API 158 | companyID {string} -- CompanyID to be limited to 159 | 160 | Keyword Arguments: 161 | limit {string} -- Limit the number of data returned by the server (default: {50}) 162 | order {string} -- Display order of data (asc / desc default:{asc}) 163 | 164 | Returns: 165 | [string] -- List of assets from the server, in JSON formatted 166 | """ 167 | if limit is not None: 168 | self.uri = '/api/v1/hardware?limit={0}&order={1}'.format(str(limit), order) 169 | else: 170 | self.uri = '/api/v1/hardware?order={0}'.format(order) 171 | self.server = server + self.uri + '&company_id={0}'.format(companyID) 172 | headers = {'Authorization': 'Bearer {0}'.format(token)} 173 | results = requests.get(self.server, headers=headers) 174 | return results.content 175 | 176 | def getAssetsByLocation(self, server, token, locationID, limit=None, order='asc'): 177 | """Get list of assets 178 | 179 | Arguments: 180 | server {string} -- Server URI 181 | token {string} -- Token value to be used for accessing the API 182 | locationID {string} -- Location ID to be limited to 183 | 184 | Keyword Arguments: 185 | limit {string} -- Limit the number of data returned by the server (default: {50}) 186 | order {string} -- Display order of data (asc / desc default:{asc}) 187 | 188 | Returns: 189 | [string] -- List of assets from the server, in JSON formatted 190 | """ 191 | if limit is not None: 192 | self.uri = '/api/v1/hardware?limit={0}&order={1}'.format(str(limit), order) 193 | else: 194 | self.uri = '/api/v1/hardware?order={0}'.format(order) 195 | self.server = server + self.uri + '&location_id={0}'.format(locationID) 196 | headers = {'Authorization': 'Bearer {0}'.format(token)} 197 | results = requests.get(self.server, headers=headers) 198 | return results.content 199 | 200 | def getAssetsByStatus(self, server, token, status, limit=None, order='asc'): 201 | """Get list of assets 202 | 203 | Arguments: 204 | server {string} -- Server URI 205 | token {string} -- Token value to be used for accessing the API 206 | status {string} -- Status types (RTD, Deployed, Undeployable, Deleted, Archived, Requestable) 207 | 208 | Keyword Arguments: 209 | limit {string} -- Limit the number of data returned by the server (default: {50}) 210 | order {string} -- Display order of data (asc / desc default:{asc}) 211 | 212 | Returns: 213 | [string] -- List of assets from the server, in JSON formatted 214 | """ 215 | if limit is not None: 216 | self.uri = '/api/v1/hardware?limit={0}&order={1}'.format(str(limit), order) 217 | else: 218 | self.uri = '/api/v1/hardware?order={0}'.format(order) 219 | self.server = server + self.uri + '&status={0}'.format(status) 220 | headers = {'Authorization': 'Bearer {0}'.format(token)} 221 | results = requests.get(self.server, headers=headers) 222 | return results.content 223 | 224 | def getAssetsByStatusLabel(self, server, token, statusLabelID, limit=None, order='asc'): 225 | """Get list of assets 226 | 227 | Arguments: 228 | server {string} -- Server URI 229 | token {string} -- Token value to be used for accessing the API 230 | statusLabelID {string} -- Status label ID 231 | 232 | Keyword Arguments: 233 | limit {string} -- Limit the number of data returned by the server (default: {50}) 234 | order {string} -- Display order of data (asc / desc default:{asc}) 235 | 236 | Returns: 237 | [string] -- List of assets from the server, in JSON formatted 238 | """ 239 | if limit is not None: 240 | self.uri = '/api/v1/hardware?limit={0}&order={1}'.format(str(limit), order) 241 | else: 242 | self.uri = '/api/v1/hardware?order={0}'.format(order) 243 | self.server = server + self.uri + '&status_id={0}'.format(statusLabelID) 244 | headers = {'Authorization': 'Bearer {0}'.format(token)} 245 | results = requests.get(self.server, headers=headers) 246 | return results.content 247 | 248 | def getDetailsByID(self, server, token, AssetID): 249 | """Get asset details by ID 250 | 251 | Arguments: 252 | server {string} -- Server URI 253 | token {string} -- Token value to be used for accessing the API 254 | AssetID {string} -- Asset ID 255 | 256 | Returns: 257 | [string] -- Asset details from the server, in JSON formatted 258 | """ 259 | self.uri = '/api/v1/hardware/{0}'.format(str(AssetID)) 260 | self.server = server + self.uri 261 | headers = {'Authorization': 'Bearer {0}'.format(token)} 262 | results = requests.get(self.server, headers=headers) 263 | return results.content 264 | 265 | def getDetailsByTag(self, server, token, AssetTAG): 266 | """Get asset details by ID 267 | 268 | Arguments: 269 | server {string} -- Server URI 270 | token {string} -- Token value to be used for accessing the API 271 | AssetTAG {string} -- Asset TAG 272 | 273 | Returns: 274 | [string] -- Asset details from the server, in JSON formatted 275 | """ 276 | self.uri = '/api/v1/hardware/bytag/{0}'.format(str(AssetTAG)) 277 | self.server = server + self.uri 278 | headers = {'Authorization': 'Bearer {0}'.format(token)} 279 | results = requests.get(self.server, headers=headers) 280 | return results.content 281 | 282 | 283 | def getDetailsBySerial(self, server, token, AssetSerial): 284 | """Get asset details by Serial Number 285 | 286 | Arguments: 287 | server {string} -- Server URI 288 | token {string} -- Token value to be used for accessing the API 289 | AssetSerial {string} -- Asset Serial Number 290 | 291 | Returns: 292 | [string] -- List of assets from the server, in JSON formatted 293 | """ 294 | self.uri = '/api/v1/hardware/byserial/{0}'.format(str(AssetSerial)) 295 | self.server = server + self.uri 296 | headers = {'Authorization': 'Bearer {0}'.format(token)} 297 | results = requests.get(self.server, headers=headers) 298 | return results.content 299 | 300 | def create(self, server, token, payload): 301 | """Create new asset data 302 | 303 | Arguments: 304 | server {string} -- Server URI 305 | token {string} -- Token value to be used for accessing the API 306 | payload {string} -- Asset data 307 | 308 | Returns: 309 | [string] -- Server response in JSON formatted 310 | """ 311 | self.uri = '/api/v1/hardware' 312 | self.server = server + self.uri 313 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 314 | results = requests.post(self.server, headers=headers, data=payload) 315 | return json.dumps(results.json(),indent=4, separators=(',', ':')) 316 | 317 | def getID(self, server, token, asset_name): 318 | """search asset ID by its name 319 | 320 | Arguments: 321 | server {string} -- Server URI 322 | token {string} -- Token value to be used for accessing the API 323 | asset_name {string} -- Asset name 324 | 325 | Returns: 326 | [string] -- Server response in JSON formatted 327 | """ 328 | self.uri = '/api/v1/hardware?search={0}'.format(asset_name) 329 | self.server = server + self.uri 330 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 331 | results = requests.get(self.server, headers=headers) 332 | jsonData = json.loads((results.content).decode('utf-8').replace("'",'"')) 333 | #print(jsonData) 334 | if len(jsonData['rows']) < 2 and jsonData['rows'][0]['id'] is not None: 335 | AssetID = jsonData['rows'][0]['id'] 336 | return AssetID 337 | 338 | def delete(self, server, token, DeviceID): 339 | """Delete asset data 340 | 341 | Arguments: 342 | server {string} -- Server URI 343 | token {string} -- Token value to be used for accessing the API 344 | DeviceID {string} -- Asset ID to be deleted 345 | 346 | Returns: 347 | [string] -- Server response in JSON formatted 348 | """ 349 | self.uri = '/api/v1/hardware/{0}'.format(DeviceID) 350 | self.server = server + self.uri 351 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 352 | results = requests.delete(self.server, headers=headers) 353 | jsonData = json.loads(results.content) 354 | return jsonData['status'] 355 | 356 | def updateDevice(self, server, token, DeviceID, payload): 357 | """Update asset data 358 | 359 | Arguments: 360 | server {string} -- Server URI 361 | token {string} -- Token value to be used for accessing the API 362 | DeviceID {string} -- Asset ID 363 | payload {string} -- Asset data 364 | 365 | Returns: 366 | [string] -- Server response in JSON formatted 367 | """ 368 | self.uri = '/api/v1/hardware/{0}'.format(DeviceID) 369 | self.server = server + self.uri 370 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 371 | results = requests.patch(self.server, headers=headers, data=payload) 372 | jsonData = json.loads(results.content) 373 | return jsonData['status'] 374 | -------------------------------------------------------------------------------- /snipeit/Categories.py: -------------------------------------------------------------------------------- 1 | import ssl 2 | try: 3 | _create_unverified_https_context = ssl._create_unverified_context 4 | except AttributeError: 5 | # Legacy Python that doesn't verify HTTPS certificates by default 6 | pass 7 | else: 8 | # Handle target environment that doesn't support HTTPS verification 9 | ssl._create_default_https_context = _create_unverified_https_context 10 | import requests 11 | try: 12 | requests.packages.urllib3.disable_warnings() 13 | except AttributeError: 14 | pass 15 | else: 16 | requests.packages.urllib3.disable_warnings() 17 | try: 18 | from .packages.urllib3.exceptions import ResponseError 19 | except: 20 | pass 21 | 22 | import json 23 | 24 | class Categories(object): 25 | def __init__(self): 26 | """Class to access categories API. 27 | """ 28 | pass 29 | 30 | def get(self, server, token, limit=None, order='asc', offset=None): 31 | """Get list of categories 32 | 33 | Arguments: 34 | server {string} -- Server URI 35 | token {string} -- Token value to be used for accessing the API 36 | offset {string} -- Starting offset to get the data 37 | 38 | Keyword Arguments: 39 | limit {string} -- Limit the number of data returned by the server (default: {50}) 40 | 41 | Returns: 42 | string -- List of categories in JSON format. 43 | """ 44 | if limit is not None: 45 | self.uri = '/api/v1/categories?limit={0}'.format(str(limit)) 46 | if offset is not None: 47 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 48 | else: 49 | self.uri = '/api/v1/categories' 50 | if offset is not None: 51 | self.uri = self.uri + '?offset={0}'.format(str(offset)) 52 | self.server = server + self.uri 53 | headers = {'Authorization': 'Bearer {0}'.format(token)} 54 | results = requests.get(self.server, headers=headers) 55 | return results.content 56 | #return json.dumps(results.json(),indent=4, separators=(',', ':')) 57 | 58 | def search(self, server, token, limit=None, order='asc', keyword=None, offset=None): 59 | """Get list of categories based on search keyword 60 | 61 | Arguments: 62 | server {string} -- Server URI 63 | token {string} -- Token value to be used for accessing the API 64 | order {string} -- Display order of data (asc / desc default:{asc}) 65 | offset {string} -- Starting offset to get the data 66 | 67 | Keyword Arguments: 68 | limit {string} -- Limit the number of data returned by the server (default: {50}) 69 | 70 | Returns: 71 | string -- List of categories in JSON format. 72 | """ 73 | if keyword is None: 74 | keyword = "" 75 | 76 | if limit is not None: 77 | self.uri = '/api/v1/categories?limit={0}&order={1}'.format(str(limit), order) 78 | else: 79 | self.uri = '/api/v1/categories?order={0}'.format(order) 80 | if offset is not None: 81 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 82 | self.server = server + self.uri + '&search={0}'.format(keyword) 83 | headers = {'Authorization': 'Bearer {0}'.format(token)} 84 | results = requests.get(self.server, headers=headers) 85 | return results.content 86 | 87 | def create(self, server, token, payload): 88 | """Create new categories data. 89 | 90 | Arguments: 91 | server {string} -- Server URI 92 | token {string} -- Token value to be used for accessing the API 93 | payload {string} -- Input parameters 94 | 95 | Returns: 96 | string -- server response in JSON format 97 | """ 98 | self.uri = '/api/v1/categories' 99 | self.server = server + self.uri 100 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 101 | results = requests.post(self.server, headers=headers, data=payload) 102 | return json.dumps(results.json(),indent=4, separators=(',', ':')) 103 | 104 | def getDetailsByID(self, server, token, categoriesID): 105 | """Get detailed information of label by ID 106 | 107 | Arguments: 108 | server {string} -- Server URI 109 | token {string} -- Token value to be used for accessing the API 110 | categoriesID {string} -- ID of the categories 111 | 112 | Returns: 113 | string -- Detailed information of categories by ID 114 | """ 115 | self.uri = '/api/v1/categories/{0}'.format(categoriesID) 116 | self.server = server + self.uri 117 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 118 | results = requests.get(self.server, headers=headers) 119 | return results.content 120 | 121 | 122 | def delete(self, server, token, categoriesID): 123 | """Delete categories data 124 | 125 | Arguments: 126 | server {string} -- Server URI 127 | token {string} -- Token value to be used for accessing the API 128 | categoriesID {string} -- ID of the categories 129 | 130 | Returns: 131 | string -- server response in JSON format 132 | """ 133 | self.uri = '/api/v1/categories/{0}'.format(categoriesID) 134 | self.server = server + self.uri 135 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 136 | results = requests.delete(self.server, headers=headers) 137 | jsonData = json.loads(results.content) 138 | return jsonData['status'] 139 | 140 | def updatecategories(self, server, token, categoriesID, payload): 141 | """[summary] 142 | 143 | Arguments: 144 | server {string} -- Server URI 145 | token {string} -- Token value to be used for accessing the API 146 | categoriesID {string} -- ID of the categories 147 | payload {string} -- Input parameters 148 | 149 | Returns: 150 | string -- server response in JSON format 151 | """ 152 | self.uri = '/api/v1/categories/{0}'.format(categoriesID) 153 | self.server = server + self.uri 154 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 155 | results = requests.patch(self.server, headers=headers, data=payload) 156 | jsonData = json.loads(results.content) 157 | return jsonData['status'] 158 | -------------------------------------------------------------------------------- /snipeit/Company.py: -------------------------------------------------------------------------------- 1 | import ssl 2 | try: 3 | _create_unverified_https_context = ssl._create_unverified_context 4 | except AttributeError: 5 | # Legacy Python that doesn't verify HTTPS certificates by default 6 | pass 7 | else: 8 | # Handle target environment that doesn't support HTTPS verification 9 | ssl._create_default_https_context = _create_unverified_https_context 10 | import requests 11 | try: 12 | requests.packages.urllib3.disable_warnings() 13 | except AttributeError: 14 | pass 15 | else: 16 | requests.packages.urllib3.disable_warnings() 17 | try: 18 | from .packages.urllib3.exceptions import ResponseError 19 | except: 20 | pass 21 | 22 | import json 23 | 24 | class Company(object): 25 | """Class to access Companies API 26 | """ 27 | def __init__(self): 28 | pass 29 | 30 | def get(self, server, token): 31 | """Gets company list 32 | 33 | Arguments: 34 | server {string} -- Server URI 35 | token {string} -- Token value to be used for accessing the API 36 | 37 | Returns: 38 | string -- List of companies from the server, in JSON formatted 39 | """ 40 | self.uri = '/api/v1/companies' 41 | self.server = server + self.uri 42 | headers = {'Authorization': 'Bearer {0}'.format(token)} 43 | results = requests.get(self.server, headers=headers) 44 | return results.content 45 | 46 | def create(self, server, token, payload): 47 | """Create new company data. 48 | 49 | Arguments: 50 | server {string} -- Server URI 51 | token {string} -- Token value to be used for accessing the API 52 | payload {string} -- Company Name 53 | 54 | Returns: 55 | string -- Status data from the server, in JSON formatted 56 | """ 57 | self.uri = '/api/v1/companies' 58 | self.server = server + self.uri 59 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 60 | results = requests.post(self.server, headers=headers, data=payload) 61 | return json.dumps(results.json(),indent=4, separators=(',', ':')) 62 | 63 | def getDetailsByID(self, server, token, companiesID): 64 | """Gets company details by ID 65 | 66 | Arguments: 67 | server {string} -- Server URI 68 | token {string} -- Token value to be used for accessing the API 69 | companiesID {[type]} -- [description] 70 | 71 | Returns: 72 | string -- Detailed information of company from the server, in JSON formatted 73 | """ 74 | self.uri = '/api/v1/companies/{0}'.format(str(companiesID)) 75 | self.server = server + self.uri 76 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 77 | results = requests.get(self.server, headers=headers) 78 | return results.content 79 | 80 | def delete(self, server, token, CompanyID): 81 | """Delete company information 82 | 83 | Arguments: 84 | server {string} -- Server URI 85 | token {string} -- Token value to be used for accessing the API 86 | CompanyID {[type]} -- [description] 87 | 88 | Returns: 89 | string -- Response message from the server, in JSON formatted 90 | """ 91 | self.uri = '/api/v1/companies/{0}'.format(CompanyID) 92 | self.server = server + self.uri 93 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 94 | results = requests.delete(self.server, headers=headers) 95 | jsonData = json.loads(results.content) 96 | return jsonData['status'] 97 | 98 | def updateCompany(self, server, token, CompanyID, payload): 99 | """Updates company name. 100 | 101 | Arguments: 102 | server {string} -- Server URI 103 | token {string} -- Token value to be used for accessing the API 104 | CompanyID {string} -- ID of company to be updated 105 | payload {string} -- Company name to be updated 106 | 107 | Returns: 108 | string -- Response message from the server, in JSON formatted 109 | """ 110 | self.uri = '/api/v1/companies/{0}'.format(CompanyID) 111 | self.server = server + self.uri 112 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 113 | results = requests.patch(self.server, headers=headers, data=payload) 114 | jsonData = json.loads(results.content) 115 | return jsonData['status'] 116 | -------------------------------------------------------------------------------- /snipeit/Components.py: -------------------------------------------------------------------------------- 1 | import ssl 2 | try: 3 | _create_unverified_https_context = ssl._create_unverified_context 4 | except AttributeError: 5 | # Legacy Python that doesn't verify HTTPS certificates by default 6 | pass 7 | else: 8 | # Handle target environment that doesn't support HTTPS verification 9 | ssl._create_default_https_context = _create_unverified_https_context 10 | import requests 11 | try: 12 | requests.packages.urllib3.disable_warnings() 13 | except AttributeError: 14 | pass 15 | else: 16 | requests.packages.urllib3.disable_warnings() 17 | try: 18 | from .packages.urllib3.exceptions import ResponseError 19 | except: 20 | pass 21 | 22 | import json 23 | 24 | class Components(object): 25 | """Class to access components API 26 | """ 27 | def __init__(self): 28 | pass 29 | 30 | def get(self, server, token, limit=None, order='asc', expand=True, offset=None): 31 | """Get list of component data 32 | 33 | Arguments: 34 | server {string} -- Server URI 35 | token {string} -- Token value to be used for accessing the API 36 | order {string} -- Display order of data (asc / desc default:{asc}) 37 | expand {boolean} -- Include detailed information or just text name (False) 38 | 39 | Keyword Arguments: 40 | limit {string} -- Limit the number of data returned by the server (default: {50}) 41 | 42 | Returns: 43 | string -- List of components from the server, in JSON formatted 44 | """ 45 | if limit is not None: 46 | self.uri = '/api/v1/components?limit={0}&order={1}'.format(str(limit),order) 47 | else: 48 | self.uri = '/api/v1/components?order={0}'.format(order) 49 | if offset is not None: 50 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 51 | self.server = server + self.uri + '&expand={0}'.format(str(expand).lower()) 52 | print(self.server) 53 | headers = {'Authorization': 'Bearer {0}'.format(token)} 54 | results = requests.get(self.server, headers=headers) 55 | return results.content 56 | 57 | def search(self, server, token, limit=None, order='asc', keyword=None, offset=None): 58 | """Get list of components based on search keyword 59 | 60 | Arguments: 61 | server {string} -- Server URI 62 | token {string} -- Token value to be used for accessing the API 63 | 64 | Keyword Arguments: 65 | limit {string} -- Limit the number of data returned by the server (default: {50}) 66 | 67 | Returns: 68 | string -- List of components in JSON format. 69 | """ 70 | if keyword is None: 71 | keyword = "" 72 | 73 | if limit is not None: 74 | self.uri = '/api/v1/components?limit={0}&order={1}'.format(str(limit),order) 75 | else: 76 | self.uri = '/api/v1/components?order={0}'.format(order) 77 | if offset is not None: 78 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 79 | self.server = server + self.uri + '&search={0}'.format(keyword) 80 | headers = {'Authorization': 'Bearer {0}'.format(token)} 81 | results = requests.get(self.server, headers=headers) 82 | return results.content 83 | 84 | def create(self, server, token, payload): 85 | """create new component data 86 | 87 | Arguments: 88 | server {string} -- Server URI 89 | token {string} -- Token value to be used for accessing the API 90 | payload {string} -- name of the component 91 | 92 | Returns: 93 | string -- server response in JSON format 94 | """ 95 | self.uri = '/api/v1/components' 96 | self.server = server + self.uri 97 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 98 | results = requests.post(self.server, headers=headers, data=payload) 99 | return json.dumps(results.json(),indent=4, separators=(',', ':')) 100 | 101 | def getDetailsByID(self, server, token, componentsID): 102 | """Get detailed information of component by ID 103 | 104 | Arguments: 105 | server {string} -- Server URI 106 | token {string} -- Token value to be used for accessing the API 107 | componentsID {string} -- ID of the component 108 | 109 | Returns: 110 | string -- Detailed information of component by ID 111 | """ 112 | self.uri = '/api/v1/components/{0}'.format(componentsID) 113 | self.server = server + self.uri 114 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 115 | results = requests.get(self.server, headers=headers) 116 | return results.content 117 | 118 | -------------------------------------------------------------------------------- /snipeit/Consumables.py: -------------------------------------------------------------------------------- 1 | import ssl 2 | try: 3 | _create_unverified_https_context = ssl._create_unverified_context 4 | except AttributeError: 5 | # Legacy Python that doesn't verify HTTPS certificates by default 6 | pass 7 | else: 8 | # Handle target environment that doesn't support HTTPS verification 9 | ssl._create_default_https_context = _create_unverified_https_context 10 | import requests 11 | try: 12 | requests.packages.urllib3.disable_warnings() 13 | except AttributeError: 14 | pass 15 | else: 16 | requests.packages.urllib3.disable_warnings() 17 | try: 18 | from .packages.urllib3.exceptions import ResponseError 19 | except: 20 | pass 21 | 22 | import json 23 | 24 | class Consumables(object): 25 | """Class to access consumables API 26 | """ 27 | def __init__(self): 28 | pass 29 | 30 | def get(self, server, token, limit=None, order='asc', offset=None): 31 | """Get list of consumables 32 | 33 | Arguments: 34 | server {string} -- Server URI 35 | token {string} -- Token value to be used for accessing the API 36 | 37 | 38 | Keyword Arguments: 39 | limit {string} -- Limit the number of data returned by the server (default: {50}) 40 | order {string} -- Display order of data (asc / desc default:{asc}) 41 | 42 | Returns: 43 | [string] -- List of consumables from the server, in JSON formatted 44 | """ 45 | if limit is not None: 46 | self.uri = '/api/v1/consumables?limit={0}&order={1}'.format(str(limit),order) 47 | else: 48 | self.uri = '/api/v1/consumables?order={0}'.format(order) 49 | if offset is not None: 50 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 51 | self.server = server + self.uri 52 | headers = {'Authorization': 'Bearer {0}'.format(token)} 53 | results = requests.get(self.server, headers=headers) 54 | return results.content 55 | 56 | 57 | def getConsumablesByOrder(self, server, token, orderNumber, limit=None, order='asc', offset=None): 58 | """Get list of consumables 59 | 60 | Arguments: 61 | server {string} -- Server URI 62 | token {string} -- Token value to be used for accessing the API 63 | orderNumber {string} -- Order Number to be used as filter 64 | 65 | Keyword Arguments: 66 | limit {string} -- Limit the number of data returned by the server (default: {50}) 67 | order {string} -- Display order of data (asc / desc default:{asc}) 68 | 69 | Returns: 70 | [string] -- List of consumables from the server, in JSON formatted 71 | """ 72 | if limit is not None: 73 | self.uri = '/api/v1/consumables?limit={0}&order={1}'.format(str(limit), order) 74 | else: 75 | self.uri = '/api/v1/consumables?order={0}'.format(order) 76 | if offset is not None: 77 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 78 | self.server = server + self.uri 79 | headers = {'Authorization': 'Bearer {0}'.format(token)} 80 | results = requests.get(self.server, headers=headers) 81 | return results.content 82 | 83 | def getConsumablesByCategory(self, server, token, categoryID, limit=None, order='asc', offset=None): 84 | """Get list of consumables 85 | 86 | Arguments: 87 | server {string} -- Server URI 88 | token {string} -- Token value to be used for accessing the API 89 | categoryID {string} -- Category ID to be used as filter 90 | 91 | Keyword Arguments: 92 | limit {string} -- Limit the number of data returned by the server (default: {50}) 93 | order {string} -- Display order of data (asc / desc default:{asc}) 94 | 95 | Returns: 96 | [string] -- List of consumables from the server, in JSON formatted 97 | """ 98 | if limit is not None: 99 | self.uri = '/api/v1/consumables?limit={0}&order={1}'.format(str(limit), order) 100 | else: 101 | self.uri = '/api/v1/consumables?order={0}'.format(order) 102 | if offset is not None: 103 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 104 | self.server = server + self.uri +'&category_id={0}'.format(categoryID) 105 | headers = {'Authorization': 'Bearer {0}'.format(token)} 106 | results = requests.get(self.server, headers=headers) 107 | return results.content 108 | 109 | def getConsumablesByCompany(self, server, token, companyID, limit=None, order='asc', offset=None): 110 | """Get list of consumables 111 | 112 | Arguments: 113 | server {string} -- Server URI 114 | token {string} -- Token value to be used for accessing the API 115 | companyID {string} -- Company ID to be used as filter 116 | 117 | 118 | Keyword Arguments: 119 | limit {string} -- Limit the number of data returned by the server (default: {50}) 120 | order {string} -- Display order of data (asc / desc default:{asc}) 121 | 122 | Returns: 123 | [string] -- List of consumables from the server, in JSON formatted 124 | """ 125 | if limit is not None: 126 | self.uri = '/api/v1/consumables?limit={0}&order={1}'.format(str(limit), order) 127 | else: 128 | self.uri = '/api/v1/consumables?order={0}'.format(order) 129 | if offset is not None: 130 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 131 | self.server = server + self.uri + '&company_id={0}'.format(companyID) 132 | headers = {'Authorization': 'Bearer {0}'.format(token)} 133 | results = requests.get(self.server, headers=headers) 134 | return results.content 135 | 136 | def getConsumablesByManufacturer(self, server, token, manufacturerID, limit=None, order='asc', offset=None): 137 | """Get list of consumables filtered by manufacturer ID 138 | 139 | Arguments: 140 | server {string} -- Server URI 141 | token {string} -- Token value to be used for accessing the API 142 | manufacturerID {string} -- Manufacturer ID to be used as filter 143 | 144 | Keyword Arguments: 145 | limit {string} -- Limit the number of data returned by the server (default: {50}) 146 | order {string} -- Display order of data (asc / desc default:{asc}) 147 | 148 | Returns: 149 | [string] -- List of consumables from the server, in JSON formatted 150 | """ 151 | if limit is not None: 152 | self.uri = '/api/v1/consumables?limit={0}&order={1}'.format(str(limit),order) 153 | else: 154 | self.uri = '/api/v1/consumables?order={0}'.format(order) 155 | if offset is not None: 156 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 157 | self.server = server + self.uri +'&manufacturer_id={0}'.format(manufacturerID) 158 | headers = {'Authorization': 'Bearer {0}'.format(token)} 159 | results = requests.get(self.server, headers=headers) 160 | return results.content 161 | 162 | def search(self, server, token, limit=None, order='asc', keyword=None, offset=None): 163 | """Get list of consumables based on search keyword 164 | 165 | Arguments: 166 | server {string} -- Server URI 167 | token {string} -- Token value to be used for accessing the API 168 | 169 | Keyword Arguments: 170 | limit {string} -- Limit the number of data returned by the server (default: {50}) 171 | 172 | Returns: 173 | string -- List of consumables in JSON format. 174 | """ 175 | if keyword is None: 176 | keyword = "" 177 | 178 | if limit is not None: 179 | self.uri = '/api/v1/consumables?limit={0}&order={1}'.format(str(limit),order) 180 | else: 181 | self.uri = '/api/v1/consumables?order={0}'.format(order) 182 | if offset is not None: 183 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 184 | self.server = server + self.uri + '&search={0}'.format(keyword) 185 | headers = {'Authorization': 'Bearer {0}'.format(token)} 186 | results = requests.get(self.server, headers=headers) 187 | return results.content 188 | 189 | def create(self, server, token, payload): 190 | """Create new consumable data. 191 | 192 | Arguments: 193 | server {string} -- Server URI 194 | token {string} -- Token value to be used for accessing the API 195 | payload {string} -- consumable name 196 | 197 | Returns: 198 | [type] -- [description] 199 | """ 200 | self.uri = '/api/v1/consumables' 201 | self.server = server + self.uri 202 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 203 | results = requests.post(self.server, headers=headers, data=payload) 204 | return json.dumps(results.json(),indent=4, separators=(',', ':')) 205 | 206 | def getDetailsByID(self, server, token, consumableID): 207 | """Get detailed information of consumables by ID. 208 | 209 | Arguments: 210 | server {string} -- Server URI 211 | token {string} -- Token value to be used for accessing the API 212 | consumableID {string} -- Consumable ID to be checked 213 | 214 | Returns: 215 | string -- detailed information of consumable in JSON 216 | """ 217 | self.uri = '/api/v1/consumables/{0}'.format(consumableID) 218 | self.server = server + self.uri 219 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 220 | results = requests.get(self.server, headers=headers) 221 | return results.content 222 | -------------------------------------------------------------------------------- /snipeit/DataUtil.py: -------------------------------------------------------------------------------- 1 | import json 2 | 3 | def prettyprint(resp_data): 4 | """format json response data into good indented format 5 | 6 | Arguments: 7 | resp_data {string} -- response data in JSON format - use getjson first 8 | """ 9 | resp_data = resp_data.decode("utf-8").replace("'",'"') 10 | parsed = json.loads(resp_data) 11 | prettystring = json.dumps(parsed, indent=4, sort_keys=True) 12 | return prettystring 13 | 14 | def getjson(resp_data): 15 | """Converts response data from binary to string json format 16 | 17 | Arguments: 18 | resp_data {string} -- response data returned by requests api 19 | """ 20 | resp_data = resp_data.decode("utf-8").replace("'",'"') 21 | parsed = json.loads(resp_data) 22 | return parsed 23 | 24 | def gettotaldata(resp_data): 25 | """Gets the total data from response data 26 | 27 | Arguments: 28 | resp_data {string} -- response data in JSON format - use getjson first 29 | """ 30 | # totaldata = getjson(resp_data) 31 | return resp_data["total"] -------------------------------------------------------------------------------- /snipeit/Fieldsets.py: -------------------------------------------------------------------------------- 1 | import ssl 2 | try: 3 | _create_unverified_https_context = ssl._create_unverified_context 4 | except AttributeError: 5 | # Legacy Python that doesn't verify HTTPS certificates by default 6 | pass 7 | else: 8 | # Handle target environment that doesn't support HTTPS verification 9 | ssl._create_default_https_context = _create_unverified_https_context 10 | import requests 11 | try: 12 | requests.packages.urllib3.disable_warnings() 13 | except AttributeError: 14 | pass 15 | else: 16 | requests.packages.urllib3.disable_warnings() 17 | try: 18 | from .packages.urllib3.exceptions import ResponseError 19 | except: 20 | pass 21 | 22 | import json 23 | 24 | class Fieldsets(object): 25 | def __init__(self): 26 | pass 27 | 28 | def get(self, server, token): 29 | """Get list of fieldsets 30 | 31 | Arguments: 32 | server {string} -- Server URI 33 | token {string} -- Token value to be used for accessing the API 34 | 35 | Keyword Arguments: 36 | limit {string} -- Limit the number of data returned by the server (default: {50}) 37 | 38 | Returns: 39 | string -- List of fieldsets in JSON format. 40 | """ 41 | self.uri = '/api/v1/fields' 42 | self.server = server + self.uri 43 | headers = {'Authorization': 'Bearer {0}'.format(token)} 44 | results = requests.get(self.server, headers=headers) 45 | return results.content 46 | #return json.dumps(results.json(),indent=4, separators=(',', ':')) 47 | 48 | def create(self, server, token, payload): 49 | """Create new fieldsets data. 50 | 51 | Arguments: 52 | server {string} -- Server URI 53 | token {string} -- Token value to be used for accessing the API 54 | payload {string} -- Input parameters 55 | 56 | Returns: 57 | string -- server response in JSON format 58 | """ 59 | self.uri = '/api/v1/fieldsets' 60 | self.server = server + self.uri 61 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 62 | results = requests.post(self.server, headers=headers, data=payload) 63 | return json.dumps(results.json(),indent=4, separators=(',', ':')) 64 | 65 | def getDetailsByID(self, server, token, fieldsetsID): 66 | """Get detailed information of label by ID 67 | 68 | Arguments: 69 | server {string} -- Server URI 70 | token {string} -- Token value to be used for accessing the API 71 | fieldsetsID {string} -- ID of the fieldsets 72 | 73 | Returns: 74 | string -- Detailed information of fieldsets by ID 75 | """ 76 | self.uri = '/api/v1/fieldsets/{0}'.format(fieldsetsID) 77 | self.server = server + self.uri 78 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 79 | results = requests.get(self.server, headers=headers) 80 | return results.content 81 | 82 | 83 | def delete(self, server, token, fieldsetsID): 84 | """Delete fieldsets data 85 | 86 | Arguments: 87 | server {string} -- Server URI 88 | token {string} -- Token value to be used for accessing the API 89 | fieldsetsID {string} -- ID of the fieldsets 90 | 91 | Returns: 92 | string -- server response in JSON format 93 | """ 94 | self.uri = '/api/v1/fieldsets/{0}'.format(fieldsetsID) 95 | self.server = server + self.uri 96 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 97 | results = requests.delete(self.server, headers=headers) 98 | jsonData = json.loads(results.content) 99 | return jsonData['status'] 100 | 101 | def updatefieldsets(self, server, token, fieldsetsID, payload): 102 | """[summary] 103 | 104 | Arguments: 105 | server {string} -- Server URI 106 | token {string} -- Token value to be used for accessing the API 107 | fieldsetsID {string} -- ID of the fieldsets 108 | payload {string} -- Input parameters 109 | 110 | Returns: 111 | string -- server response in JSON format 112 | """ 113 | self.uri = '/api/v1/fieldsets/{0}'.format(fieldsetsID) 114 | self.server = server + self.uri 115 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 116 | results = requests.patch(self.server, headers=headers, data=payload) 117 | jsonData = json.loads(results.content) 118 | return jsonData['status'] 119 | -------------------------------------------------------------------------------- /snipeit/Licenses.py: -------------------------------------------------------------------------------- 1 | import ssl 2 | try: 3 | _create_unverified_https_context = ssl._create_unverified_context 4 | except AttributeError: 5 | # Legacy Python that doesn't verify HTTPS certificates by default 6 | pass 7 | else: 8 | # Handle target environment that doesn't support HTTPS verification 9 | ssl._create_default_https_context = _create_unverified_https_context 10 | import requests 11 | try: 12 | requests.packages.urllib3.disable_warnings() 13 | except AttributeError: 14 | pass 15 | else: 16 | requests.packages.urllib3.disable_warnings() 17 | try: 18 | from .packages.urllib3.exceptions import ResponseError 19 | except: 20 | pass 21 | 22 | import json 23 | 24 | class Licenses(object): 25 | def __init__(self): 26 | """Class to access licenses API. 27 | """ 28 | pass 29 | 30 | def get(self, server, token, limit=None, order='asc', offset=None): 31 | """Get list of licenses 32 | 33 | Arguments: 34 | server {string} -- Server URI 35 | token {string} -- Token value to be used for accessing the API 36 | order {string} -- Display order of data (asc / desc default:{asc}) 37 | 38 | Keyword Arguments: 39 | limit {string} -- Limit the number of data returned by the server (default: {50}) 40 | 41 | Returns: 42 | string -- List of licenses in JSON format. 43 | """ 44 | if limit is not None: 45 | self.uri = '/api/v1/licenses?limit={0}&order={1}'.format(str(limit) ,order) 46 | else: 47 | self.uri = '/api/v1/licenses?order={0}'.format(order) 48 | if offset is not None: 49 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 50 | self.server = server + self.uri 51 | headers = {'Authorization': 'Bearer {0}'.format(token)} 52 | results = requests.get(self.server, headers=headers) 53 | return results.content 54 | #return json.dumps(results.json(),indent=4, separators=(',', ':')) 55 | 56 | def search(self, server, token, limit=None, order='asc', keyword=None, offset=None): 57 | """Get list of licenses based on search keyword 58 | 59 | Arguments: 60 | server {string} -- Server URI 61 | token {string} -- Token value to be used for accessing the API 62 | order {string} -- Display order of data (asc / desc default:{asc}) 63 | 64 | Keyword Arguments: 65 | limit {string} -- Limit the number of data returned by the server (default: {50}) 66 | 67 | Returns: 68 | string -- List of licenses in JSON format. 69 | """ 70 | if keyword is None: 71 | keyword = "" 72 | 73 | if limit is not None: 74 | self.uri = '/api/v1/licenses?limit={0}&order={1}'.format(str(limit), order) 75 | else: 76 | self.uri = '/api/v1/licenses?order={0}'.format(order) 77 | if offset is not None: 78 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 79 | self.server = server + self.uri + '&search={0}'.format(keyword) 80 | headers = {'Authorization': 'Bearer {0}'.format(token)} 81 | results = requests.get(self.server, headers=headers) 82 | return results.content 83 | 84 | def create(self, server, token, payload): 85 | """Create new licenses data. 86 | 87 | Arguments: 88 | server {string} -- Server URI 89 | token {string} -- Token value to be used for accessing the API 90 | payload {string} -- Input parameters 91 | 92 | Returns: 93 | string -- server response in JSON format 94 | """ 95 | self.uri = '/api/v1/licenses' 96 | self.server = server + self.uri 97 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 98 | results = requests.post(self.server, headers=headers, data=payload) 99 | return json.dumps(results.json(),indent=4, separators=(',', ':')) 100 | 101 | def getDetailsByID(self, server, token, licensesID): 102 | """Get detailed information of label by ID 103 | 104 | Arguments: 105 | server {string} -- Server URI 106 | token {string} -- Token value to be used for accessing the API 107 | licensesID {string} -- ID of the licenses 108 | 109 | Returns: 110 | string -- Detailed information of licenses by ID 111 | """ 112 | self.uri = '/api/v1/licenses/{0}'.format(licensesID) 113 | self.server = server + self.uri 114 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 115 | results = requests.get(self.server, headers=headers) 116 | return results.content 117 | 118 | 119 | def delete(self, server, token, licensesID): 120 | """Delete licenses data 121 | 122 | Arguments: 123 | server {string} -- Server URI 124 | token {string} -- Token value to be used for accessing the API 125 | licensesID {string} -- ID of the licenses 126 | 127 | Returns: 128 | string -- server response in JSON format 129 | """ 130 | self.uri = '/api/v1/licenses/{0}'.format(licensesID) 131 | self.server = server + self.uri 132 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 133 | results = requests.delete(self.server, headers=headers) 134 | jsonData = json.loads(results.content) 135 | return jsonData['status'] 136 | 137 | def updatelicenses(self, server, token, licensesID, payload): 138 | """[summary] 139 | 140 | Arguments: 141 | server {string} -- Server URI 142 | token {string} -- Token value to be used for accessing the API 143 | licensesID {string} -- ID of the licenses 144 | payload {string} -- Input parameters 145 | 146 | Returns: 147 | string -- server response in JSON format 148 | """ 149 | self.uri = '/api/v1/licenses/{0}'.format(licensesID) 150 | self.server = server + self.uri 151 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 152 | results = requests.patch(self.server, headers=headers, data=payload) 153 | jsonData = json.loads(results.content) 154 | return jsonData['status'] 155 | -------------------------------------------------------------------------------- /snipeit/Locations.py: -------------------------------------------------------------------------------- 1 | import ssl 2 | try: 3 | _create_unverified_https_context = ssl._create_unverified_context 4 | except AttributeError: 5 | # Legacy Python that doesn't verify HTTPS certificates by default 6 | pass 7 | else: 8 | # Handle target environment that doesn't support HTTPS verification 9 | ssl._create_default_https_context = _create_unverified_https_context 10 | import requests 11 | try: 12 | requests.packages.urllib3.disable_warnings() 13 | except AttributeError: 14 | pass 15 | else: 16 | requests.packages.urllib3.disable_warnings() 17 | try: 18 | from .packages.urllib3.exceptions import ResponseError 19 | except: 20 | pass 21 | 22 | import json 23 | 24 | class Locations(object): 25 | """Class to access Location API 26 | """ 27 | def __init__(self): 28 | pass 29 | 30 | def get(self, server, token, limit=None,order='asc', offset=None): 31 | """Get list of locations. 32 | 33 | Arguments: 34 | server {string} -- Server URI 35 | token {string} -- Token value to be used for accessing the API 36 | order {string} -- Display order of data (asc / desc default:{asc}) 37 | 38 | Keyword Arguments: 39 | limit {string} -- Limit the number of data returned by the server (default: {50}) 40 | 41 | Returns: 42 | string -- List of locations from the server, in JSON formatted 43 | """ 44 | if limit is not None: 45 | self.uri = '/api/v1/locations?limit={0}'.format(str(limit)) 46 | if offset is not None: 47 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 48 | else: 49 | self.uri = '/api/v1/locations' 50 | if offset is not None: 51 | self.uri = self.uri + '?offset={0}'.format(str(offset)) 52 | self.server = server + self.uri 53 | headers = {'Authorization': 'Bearer {0}'.format(token)} 54 | results = requests.get(self.server, headers=headers) 55 | return results.content 56 | 57 | def search(self, server, token, limit=None, order='asc', keyword=None): 58 | """Get list of locations based on search keyword 59 | 60 | Arguments: 61 | server {string} -- Server URI 62 | token {string} -- Token value to be used for accessing the API 63 | 64 | Keyword Arguments: 65 | limit {string} -- Limit the number of data returned by the server (default: {50}) 66 | 67 | Returns: 68 | string -- List of locations in JSON format. 69 | """ 70 | if keyword is None: 71 | keyword = "" 72 | 73 | if limit is not None: 74 | self.uri = '/api/v1/locations?limit={0}&order={1}'.format(str(limit),order) 75 | else: 76 | self.uri = '/api/v1/locations?order={0}'.format(order) 77 | self.server = server + self.uri + '&search={0}'.format(keyword) 78 | headers = {'Authorization': 'Bearer {0}'.format(token)} 79 | results = requests.get(self.server, headers=headers) 80 | return results.content 81 | 82 | def create(self, server, token, payload): 83 | """Create new location data. 84 | 85 | Arguments: 86 | server {string} -- Server URI 87 | token {string} -- Token value to be used for accessing the API 88 | payload {string} -- Input parameters 89 | 90 | Returns: 91 | string -- Server response in JSON 92 | """ 93 | self.uri = '/api/v1/locations' 94 | self.server = server + self.uri 95 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 96 | results = requests.post(self.server, headers=headers, data=payload) 97 | return json.dumps(results.json(),indent=4, separators=(',', ':')) 98 | 99 | def getDetailsByID(self, server, token, locationID): 100 | """Get detailed location information by ID. 101 | 102 | Arguments: 103 | server {string} -- Server URI 104 | token {string} -- Token value to be used for accessing the API 105 | locationID {string} -- Location ID to be searched 106 | 107 | Returns: 108 | string -- Detailed information of a location 109 | """ 110 | self.uri = '/api/v1/locations/{0}'.format(locationID) 111 | self.server = server + self.uri 112 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 113 | results = requests.get(self.server, headers=headers) 114 | return results.content 115 | 116 | def updateLocation(self, server, token, LocationID, payload): 117 | """Update location data information 118 | 119 | Arguments: 120 | server {string} -- Server URI 121 | token {string} -- Token value to be used for accessing the API 122 | LocationID {string} -- ID of the location to be updated 123 | payload {string} -- input parameters 124 | 125 | Returns: 126 | string -- response message for server in JSON 127 | """ 128 | self.uri = '/api/v1/locations/{0}'.format(LocationID) 129 | self.server = server + self.uri 130 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 131 | results = requests.patch(self.server, headers=headers, data=payload) 132 | jsonData = json.loads(results.content) 133 | return jsonData['status'] 134 | 135 | def delete(self, server, token, LocationID): 136 | """Delete a location based on its location ID 137 | 138 | Arguments: 139 | server {string} -- Server URI 140 | token {string} -- Token value to be used for accessing the API 141 | LocationID {string} -- Location ID to be deleted 142 | 143 | Returns: 144 | string -- response message for server in JSON 145 | """ 146 | self.uri = '/api/v1/locations/{0}'.format(LocationID) 147 | self.server = server + self.uri 148 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 149 | results = requests.delete(self.server, headers=headers) 150 | jsonData = json.loads(results.content) 151 | return jsonData['status'] 152 | -------------------------------------------------------------------------------- /snipeit/Maintenances.py: -------------------------------------------------------------------------------- 1 | import ssl 2 | try: 3 | _create_unverified_https_context = ssl._create_unverified_context 4 | except AttributeError: 5 | # Legacy Python that doesn't verify HTTPS certificates by default 6 | pass 7 | else: 8 | # Handle target environment that doesn't support HTTPS verification 9 | ssl._create_default_https_context = _create_unverified_https_context 10 | import requests 11 | try: 12 | requests.packages.urllib3.disable_warnings() 13 | except AttributeError: 14 | pass 15 | else: 16 | requests.packages.urllib3.disable_warnings() 17 | try: 18 | from .packages.urllib3.exceptions import ResponseError 19 | except: 20 | pass 21 | 22 | import json 23 | 24 | class Maintenances(object): 25 | def __init__(self): 26 | """Class to access maintenances API. 27 | """ 28 | pass 29 | 30 | def get(self, server, token, limit=None, order='asc', offset=None): 31 | """Get list of maintenances 32 | 33 | Arguments: 34 | server {string} -- Server URI 35 | token {string} -- Token value to be used for accessing the API 36 | 37 | Keyword Arguments: 38 | limit {string} -- Limit the number of data returned by the server (default: {50}) 39 | 40 | Returns: 41 | string -- List of maintenances in JSON format. 42 | """ 43 | if limit is not None: 44 | self.uri = '/api/v1/maintenances?limit={0}'.format(str(limit)) 45 | if offset is not None: 46 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 47 | else: 48 | self.uri = '/api/v1/maintenances' 49 | if offset is not None: 50 | self.uri = self.uri + '?offset={0}'.format(str(offset)) 51 | self.server = server + self.uri 52 | headers = {'Authorization': 'Bearer {0}'.format(token)} 53 | results = requests.get(self.server, headers=headers) 54 | return results.content 55 | #return json.dumps(results.json(),indent=4, separators=(',', ':')) 56 | 57 | def search(self, server, token, limit=None, order='asc', keyword=None, offset=None): 58 | """Get list of maintenances based on search keyword 59 | 60 | Arguments: 61 | server {string} -- Server URI 62 | token {string} -- Token value to be used for accessing the API 63 | order {string} -- Display order of data (asc / desc default:{asc}) 64 | 65 | Keyword Arguments: 66 | limit {string} -- Limit the number of data returned by the server (default: {50}) 67 | 68 | Returns: 69 | string -- List of maintenances in JSON format. 70 | """ 71 | if keyword is None: 72 | keyword = "" 73 | 74 | if limit is not None: 75 | self.uri = '/api/v1/maintenances?limit={0}&order={1}'.format(str(limit),order) 76 | else: 77 | self.uri = '/api/v1/maintenances?order={0}'.format(order) 78 | if offset is not None: 79 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 80 | self.server = server + self.uri + '&search={0}'.format(keyword) 81 | headers = {'Authorization': 'Bearer {0}'.format(token)} 82 | results = requests.get(self.server, headers=headers) 83 | return results.content 84 | 85 | def getMaintenanceByID(self, server, token, limit=None, order='asc', assetID=None, offset=None): 86 | """Get maintenances information by asset ID 87 | 88 | Arguments: 89 | server {string} -- Server URI 90 | token {string} -- Token value to be used for accessing the API 91 | order {string} -- Display order of data (asc / desc default:{asc}) 92 | assetID {string} -- Asset ID to be find 93 | 94 | 95 | Keyword Arguments: 96 | limit {string} -- Limit the number of data returned by the server (default: {50}) 97 | 98 | Returns: 99 | string -- List of maintenances in JSON format. 100 | """ 101 | if limit is not None: 102 | self.uri = '/api/v1/maintenances?limit={0}&order={1}'.format(str(limit), order) 103 | else: 104 | self.uri = '/api/v1/maintenances?order={0}'.format(order) 105 | if offset is not None: 106 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 107 | self.server = server + self.uri + '&asset_id={0}'.format(assetID) 108 | headers = {'Authorization': 'Bearer {0}'.format(token)} 109 | results = requests.get(self.server, headers=headers) 110 | return results.content 111 | #return json.dumps(results.json(),indent=4, separators=(',', ':')) 112 | 113 | def create(self, server, token, payload): 114 | """Create new maintenances data. 115 | 116 | Arguments: 117 | server {string} -- Server URI 118 | token {string} -- Token value to be used for accessing the API 119 | payload {string} -- Input parameters 120 | 121 | Returns: 122 | string -- server response in JSON format 123 | """ 124 | self.uri = '/api/v1/maintenances' 125 | self.server = server + self.uri 126 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 127 | results = requests.post(self.server, headers=headers, data=payload) 128 | return json.dumps(results.json(),indent=4, separators=(',', ':')) 129 | -------------------------------------------------------------------------------- /snipeit/Manufacturers.py: -------------------------------------------------------------------------------- 1 | import ssl 2 | try: 3 | _create_unverified_https_context = ssl._create_unverified_context 4 | except AttributeError: 5 | # Legacy Python that doesn't verify HTTPS certificates by default 6 | pass 7 | else: 8 | # Handle target environment that doesn't support HTTPS verification 9 | ssl._create_default_https_context = _create_unverified_https_context 10 | import requests 11 | try: 12 | requests.packages.urllib3.disable_warnings() 13 | except AttributeError: 14 | pass 15 | else: 16 | requests.packages.urllib3.disable_warnings() 17 | try: 18 | from .packages.urllib3.exceptions import ResponseError 19 | except: 20 | pass 21 | 22 | import json 23 | 24 | class Manufacturers(object): 25 | def __init__(self): 26 | """Class to access manufacturers API. 27 | """ 28 | pass 29 | 30 | def get(self, server, token): 31 | """Get list of manufacturers 32 | 33 | Arguments: 34 | server {string} -- Server URI 35 | token {string} -- Token value to be used for accessing the API 36 | 37 | Keyword Arguments: 38 | limit {string} -- Limit the number of data returned by the server (default: {50}) 39 | 40 | Returns: 41 | string -- List of manufacturers in JSON format. 42 | """ 43 | self.uri = '/api/v1/manufacturers' 44 | self.server = server + self.uri 45 | headers = {'Authorization': 'Bearer {0}'.format(token)} 46 | results = requests.get(self.server, headers=headers) 47 | return results.content 48 | #return json.dumps(results.json(),indent=4, separators=(',', ':')) 49 | 50 | def create(self, server, token, payload): 51 | """Create new manufacturers data. 52 | 53 | Arguments: 54 | server {string} -- Server URI 55 | token {string} -- Token value to be used for accessing the API 56 | payload {string} -- Input parameters 57 | 58 | Returns: 59 | string -- server response in JSON format 60 | """ 61 | self.uri = '/api/v1/manufacturers' 62 | self.server = server + self.uri 63 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 64 | results = requests.post(self.server, headers=headers, data=payload) 65 | return json.dumps(results.json(),indent=4, separators=(',', ':')) 66 | 67 | def getDetailsByID(self, server, token, manufacturersID): 68 | """Get detailed information of label by ID 69 | 70 | Arguments: 71 | server {string} -- Server URI 72 | token {string} -- Token value to be used for accessing the API 73 | manufacturersID {string} -- ID of the manufacturers 74 | 75 | Returns: 76 | string -- Detailed information of manufacturers by ID 77 | """ 78 | self.uri = '/api/v1/manufacturers/{0}'.format(manufacturersID) 79 | self.server = server + self.uri 80 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 81 | results = requests.get(self.server, headers=headers) 82 | return results.content 83 | 84 | 85 | def delete(self, server, token, manufacturersID): 86 | """Delete manufacturers data 87 | 88 | Arguments: 89 | server {string} -- Server URI 90 | token {string} -- Token value to be used for accessing the API 91 | manufacturersID {string} -- ID of the manufacturers 92 | 93 | Returns: 94 | string -- server response in JSON format 95 | """ 96 | self.uri = '/api/v1/manufacturers/{0}'.format(manufacturersID) 97 | self.server = server + self.uri 98 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 99 | results = requests.delete(self.server, headers=headers) 100 | jsonData = json.loads(results.content) 101 | return jsonData['status'] 102 | 103 | def updatemanufacturers(self, server, token, manufacturersID, payload): 104 | """[summary] 105 | 106 | Arguments: 107 | server {string} -- Server URI 108 | token {string} -- Token value to be used for accessing the API 109 | manufacturersID {string} -- ID of the manufacturers 110 | payload {string} -- Input parameters 111 | 112 | Returns: 113 | string -- server response in JSON format 114 | """ 115 | self.uri = '/api/v1/manufacturers/{0}'.format(manufacturersID) 116 | self.server = server + self.uri 117 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 118 | results = requests.patch(self.server, headers=headers, data=payload) 119 | jsonData = json.loads(results.content) 120 | return jsonData['status'] 121 | -------------------------------------------------------------------------------- /snipeit/Models.py: -------------------------------------------------------------------------------- 1 | import ssl 2 | try: 3 | _create_unverified_https_context = ssl._create_unverified_context 4 | except AttributeError: 5 | # Legacy Python that doesn't verify HTTPS certificates by default 6 | pass 7 | else: 8 | # Handle target environment that doesn't support HTTPS verification 9 | ssl._create_default_https_context = _create_unverified_https_context 10 | import requests 11 | try: 12 | requests.packages.urllib3.disable_warnings() 13 | except AttributeError: 14 | pass 15 | else: 16 | requests.packages.urllib3.disable_warnings() 17 | try: 18 | from .packages.urllib3.exceptions import ResponseError 19 | except: 20 | pass 21 | 22 | import json 23 | 24 | class Models(object): 25 | def __init__(self): 26 | """Class to access models API. 27 | """ 28 | pass 29 | 30 | def get(self, server, token, limit=None, order='asc', offset=None): 31 | """Get list of models 32 | 33 | Arguments: 34 | server {string} -- Server URI 35 | token {string} -- Token value to be used for accessing the API 36 | order {string} -- Display order of data (asc / desc default:{asc}) 37 | 38 | Keyword Arguments: 39 | limit {string} -- Limit the number of data returned by the server (default: {50}) 40 | 41 | Returns: 42 | string -- List of models in JSON format. 43 | """ 44 | if limit is not None: 45 | self.uri = '/api/v1/models?limit={0}&order={1}'.format(str(limit), order) 46 | else: 47 | self.uri = '/api/v1/models?order={0}'.format(order) 48 | if offset is not None: 49 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 50 | self.server = server + self.uri 51 | headers = {'Authorization': 'Bearer {0}'.format(token)} 52 | results = requests.get(self.server, headers=headers) 53 | return results.content 54 | #return json.dumps(results.json(),indent=4, separators=(',', ':')) 55 | 56 | def search(self, server, token, limit=None, order='asc', keyword=None, offset=None): 57 | """Get list of models based on search keyword 58 | 59 | Arguments: 60 | server {string} -- Server URI 61 | token {string} -- Token value to be used for accessing the API 62 | order {string} -- Display order of data (asc / desc default:{asc}) 63 | 64 | Keyword Arguments: 65 | limit {string} -- Limit the number of data returned by the server (default: {50}) 66 | 67 | Returns: 68 | string -- List of models in JSON format. 69 | """ 70 | if keyword is None: 71 | keyword = "" 72 | 73 | if limit is not None: 74 | self.uri = '/api/v1/models?limit={0}&order={1}'.format(str(limit), order) 75 | else: 76 | self.uri = '/api/v1/models?order={0}'.format(order) 77 | if offset is not None: 78 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 79 | self.server = server + self.uri + '&search={0}'.format(keyword) 80 | headers = {'Authorization': 'Bearer {0}'.format(token)} 81 | results = requests.get(self.server, headers=headers) 82 | return results.content 83 | 84 | def create(self, server, token, payload): 85 | """Create new model data. 86 | 87 | Arguments: 88 | server {string} -- Server URI 89 | token {string} -- Token value to be used for accessing the API 90 | payload {string} -- Input parameters 91 | 92 | Returns: 93 | string -- server response in JSON format 94 | """ 95 | self.uri = '/api/v1/models' 96 | self.server = server + self.uri 97 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 98 | results = requests.post(self.server, headers=headers, data=payload) 99 | return json.dumps(results.json(),indent=4, separators=(',', ':')) 100 | 101 | def getDetailsByID(self, server, token, modelsID): 102 | """Get detailed information of label by ID 103 | 104 | Arguments: 105 | server {string} -- Server URI 106 | token {string} -- Token value to be used for accessing the API 107 | modelsID {string} -- ID of the model 108 | 109 | Returns: 110 | string -- Detailed information of modelsID by ID 111 | """ 112 | self.uri = '/api/v1/models/{0}'.format(modelsID) 113 | self.server = server + self.uri 114 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 115 | results = requests.get(self.server, headers=headers) 116 | return results.content 117 | 118 | 119 | def delete(self, server, token, companyID): 120 | """Delete model data 121 | 122 | Arguments: 123 | server {string} -- Server URI 124 | token {string} -- Token value to be used for accessing the API 125 | ModelsID {string} -- ID of the model 126 | 127 | Returns: 128 | string -- server response in JSON format 129 | """ 130 | self.uri = '/api/v1/models/{0}'.format(companyID) 131 | self.server = server + self.uri 132 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 133 | results = requests.delete(self.server, headers=headers) 134 | jsonData = json.loads(results.content) 135 | return jsonData['status'] 136 | 137 | def updateModel(self, server, token, companyID, payload): 138 | """[summary] 139 | 140 | Arguments: 141 | server {string} -- Server URI 142 | token {string} -- Token value to be used for accessing the API 143 | ModelsID {string} -- ID of the model 144 | payload {string} -- Input parameters 145 | 146 | Returns: 147 | string -- server response in JSON format 148 | """ 149 | self.uri = '/api/v1/models/{0}'.format(companyID) 150 | self.server = server + self.uri 151 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 152 | results = requests.patch(self.server, headers=headers, data=payload) 153 | jsonData = json.loads(results.content) 154 | return jsonData['status'] 155 | -------------------------------------------------------------------------------- /snipeit/StatusLabels.py: -------------------------------------------------------------------------------- 1 | import ssl 2 | try: 3 | _create_unverified_https_context = ssl._create_unverified_context 4 | except AttributeError: 5 | # Legacy Python that doesn't verify HTTPS certificates by default 6 | pass 7 | else: 8 | # Handle target environment that doesn't support HTTPS verification 9 | ssl._create_default_https_context = _create_unverified_https_context 10 | import requests 11 | try: 12 | requests.packages.urllib3.disable_warnings() 13 | except AttributeError: 14 | pass 15 | else: 16 | requests.packages.urllib3.disable_warnings() 17 | try: 18 | from .packages.urllib3.exceptions import ResponseError 19 | except: 20 | pass 21 | 22 | import json 23 | 24 | class StatusLabels(object): 25 | """Class to access status labels API. 26 | """ 27 | def __init__(self): 28 | pass 29 | 30 | def get(self, server, token, limit=None, order='asc', offset=None): 31 | """Get list of status labels. 32 | 33 | Arguments: 34 | server {string} -- Server URI 35 | token {string} -- Token value to be used for accessing the API 36 | order {string} -- Display order of data (asc / desc default:{asc}) 37 | 38 | Keyword Arguments: 39 | limit {string} -- Limit the number of data returned by the server (default: {50}) 40 | 41 | Returns: 42 | string -- list of status label in JSON format 43 | """ 44 | if limit is not None: 45 | self.uri = '/api/v1/statuslabels?limit={0}&order={1}'.format(str(limit),order) 46 | else: 47 | self.uri = '/api/v1/statuslabels?order={0}'.format(order) 48 | if offset is not None: 49 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 50 | self.server = server + self.uri 51 | headers = {'Authorization': 'Bearer {0}'.format(token)} 52 | results = requests.get(self.server, headers=headers) 53 | return results.content 54 | #return json.dumps(results.json(),indent=4, separators=(',', ':')) 55 | 56 | def search(self, server, token, limit=None, order='asc', keyword=None, offset=None): 57 | """Get list of statuslabels based on search keyword 58 | 59 | Arguments: 60 | server {string} -- Server URI 61 | token {string} -- Token value to be used for accessing the API 62 | 63 | Keyword Arguments: 64 | limit {string} -- Limit the number of data returned by the server (default: {50}) 65 | 66 | Returns: 67 | string -- List of statuslabels in JSON format. 68 | """ 69 | if keyword is None: 70 | keyword = "" 71 | 72 | if limit is not None: 73 | self.uri = '/api/v1/statuslabels?limit={0}&order={1}'.format(str(limit), order) 74 | else: 75 | self.uri = '/api/v1/statuslabels?order={0}'.format(order) 76 | if offset is not None: 77 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 78 | self.server = server + self.uri + '&search={0}'.format(keyword) 79 | headers = {'Authorization': 'Bearer {0}'.format(token)} 80 | results = requests.get(self.server, headers=headers) 81 | return results.content 82 | 83 | def create(self, server, token, payload): 84 | """Create new status label 85 | 86 | Arguments: 87 | server {string} -- Server URI 88 | token {string} -- Token value to be used for accessing the API 89 | payload {string} -- input parameters 90 | 91 | Returns: 92 | string -- server response in JSON format 93 | """ 94 | self.uri = '/api/v1/statuslabels' 95 | self.server = server + self.uri 96 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 97 | results = requests.post(self.server, headers=headers, data=payload) 98 | return json.dumps(results.json(),indent=4, separators=(',', ':')) 99 | 100 | def getDetailsByID(self, server, token, labelID): 101 | """Get detailed information of label by ID 102 | 103 | Arguments: 104 | server {string} -- Server URI 105 | token {string} -- Token value to be used for accessing the API 106 | labelID {string} -- ID of the label 107 | 108 | Returns: 109 | string -- Detailed information of label by ID 110 | """ 111 | self.uri = '/api/v1/statuslabels/{0}'.format(labelID) 112 | self.server = server + self.uri 113 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 114 | results = requests.get(self.server, headers=headers) 115 | return results.content 116 | 117 | def getAssetListByID(self, server, token, labelID): 118 | """Get asset list based on label by ID 119 | 120 | Arguments: 121 | server {string} -- Server URI 122 | token {string} -- Token value to be used for accessing the API 123 | labelID {string} -- ID of the label 124 | 125 | Returns: 126 | string -- Detailed information of label by ID 127 | """ 128 | self.uri = '/api/v1/statuslabels/{0}/assetlist'.format(labelID) 129 | self.server = server + self.uri 130 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 131 | results = requests.get(self.server, headers=headers) 132 | return results.content 133 | 134 | def delete(self, server, token, labelID): 135 | """[summary] 136 | 137 | Arguments: 138 | server {string} -- Server URI 139 | token {string} -- Token value to be used for accessing the API 140 | labelID {[type]} -- ID of the label 141 | 142 | Returns: 143 | string -- server response in JSON format 144 | """ 145 | self.uri = '/api/v1/statuslabels/{0}'.format(labelID) 146 | self.server = server + self.uri 147 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 148 | results = requests.delete(self.server, headers=headers) 149 | jsonData = json.loads(results.content) 150 | return jsonData['status'] 151 | 152 | def updateStatusLabel(self, server, token, labelID, payload): 153 | """[summary] 154 | 155 | Arguments: 156 | server {string} -- Server URI 157 | token {string} -- Token value to be used for accessing the API 158 | labelID {[type]} -- ID of the label 159 | payload {[type]} -- Input parameters 160 | 161 | Returns: 162 | string -- server response in JSON format 163 | """ 164 | self.uri = '/api/v1/statuslabels/{0}'.format(labelID) 165 | self.server = server + self.uri 166 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 167 | results = requests.patch(self.server, headers=headers, data=payload) 168 | jsonData = json.loads(results.content) 169 | return jsonData['status'] 170 | -------------------------------------------------------------------------------- /snipeit/Users.py: -------------------------------------------------------------------------------- 1 | import ssl 2 | try: 3 | _create_unverified_https_context = ssl._create_unverified_context 4 | except AttributeError: 5 | # Legacy Python that doesn't verify HTTPS certificates by default 6 | pass 7 | else: 8 | # Handle target environment that doesn't support HTTPS verification 9 | ssl._create_default_https_context = _create_unverified_https_context 10 | import requests 11 | try: 12 | requests.packages.urllib3.disable_warnings() 13 | except AttributeError: 14 | pass 15 | else: 16 | requests.packages.urllib3.disable_warnings() 17 | try: 18 | from .packages.urllib3.exceptions import ResponseError 19 | except: 20 | pass 21 | 22 | import json 23 | 24 | class Users(object): 25 | """Class to access users API. 26 | """ 27 | def __init__(self): 28 | pass 29 | 30 | def get(self, server, token, limit=None, order='asc', offset=None): 31 | """Get list of user data. 32 | 33 | Arguments: 34 | server {string} -- Server URI 35 | token {string} -- Token value to be used for accessing the API 36 | order {string} -- Display order of data (asc / desc default:{asc}) 37 | 38 | Keyword Arguments: 39 | limit {string} -- Limit the number of data returned by the server (default: {50}) 40 | 41 | Returns: 42 | string -- list of user data in JSON format 43 | """ 44 | if limit is not None: 45 | self.uri = '/api/v1/users?limit={0}&order={1}'.format(str(limit), order) 46 | else: 47 | self.uri = '/api/v1/users?order={0}'.format(order) 48 | if offset is not None: 49 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 50 | self.server = server + self.uri 51 | headers = {'Authorization': 'Bearer {0}'.format(token)} 52 | results = requests.get(self.server, headers=headers) 53 | return results.content 54 | 55 | def search(self, server, token, limit=None, order='asc', keyword=None, offset=None): 56 | """Get list of users based on search keyword 57 | 58 | Arguments: 59 | server {string} -- Server URI 60 | token {string} -- Token value to be used for accessing the API 61 | 62 | Keyword Arguments: 63 | limit {string} -- Limit the number of data returned by the server (default: {50}) 64 | 65 | Returns: 66 | string -- List of users in JSON format. 67 | """ 68 | if keyword is None: 69 | keyword = "" 70 | 71 | if limit is not None: 72 | self.uri = '/api/v1/users?limit={0}&order={1}'.format(str(limit), order) 73 | else: 74 | self.uri = '/api/v1/users?order={0}'.format(order) 75 | if offset is not None: 76 | self.uri = self.uri + '&offset={0}'.format(str(offset)) 77 | self.server = server + self.uri + '&search={0}'.format(keyword) 78 | headers = {'Authorization': 'Bearer {0}'.format(token)} 79 | results = requests.get(self.server, headers=headers) 80 | return results.content 81 | 82 | def create(self, server, token, payload): 83 | """Create new user data. 84 | 85 | Arguments: 86 | server {string} -- Server URI 87 | token {string} -- Token value to be used for accessing the API 88 | payload {string} -- input parameters 89 | 90 | Returns: 91 | string -- server response in JSON format 92 | """ 93 | self.uri = '/api/v1/users' 94 | self.server = server + self.uri 95 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 96 | results = requests.post(self.server, headers=headers, data=payload) 97 | return json.dumps(results.json(),indent=4, separators=(',', ':')) 98 | 99 | def getID(self, server, token, user_name): 100 | """[summary] 101 | 102 | Arguments: 103 | server {string} -- Server URI 104 | token {string} -- Token value to be used for accessing the API 105 | user_name {[type]} -- [description] 106 | 107 | Returns: 108 | [type] -- [description] 109 | """ 110 | self.uri = '/api/v1/users?search={0}'.format(user_name) 111 | self.server = server + self.uri 112 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 113 | results = requests.get(self.server, headers=headers) 114 | jsonData = json.loads(results.content) 115 | if len(jsonData['rows']) < 2 and jsonData['rows'][0]['id'] is not None: 116 | UserID = jsonData['rows'][0]['id'] 117 | return UserID 118 | 119 | def updateUser(self, server, token, UserID, payload): 120 | """[summary] 121 | 122 | Arguments: 123 | server {string} -- Server URI 124 | token {string} -- Token value to be used for accessing the API 125 | UserID {[type]} -- [description] 126 | payload {[type]} -- [description] 127 | 128 | Returns: 129 | [type] -- [description] 130 | """ 131 | self.uri = '/api/v1/users/{0}'.format(UserID) 132 | self.server = server + self.uri 133 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 134 | results = requests.patch(self.server, headers=headers, data=payload) 135 | jsonData = json.loads(results.content) 136 | return jsonData['status'] 137 | 138 | def delete(self, server, token, UserID): 139 | """[summary] 140 | 141 | Arguments: 142 | server {string} -- Server URI 143 | token {string} -- Token value to be used for accessing the API 144 | UserID {[type]} -- [description] 145 | 146 | Returns: 147 | [type] -- [description] 148 | """ 149 | self.uri = '/api/v1/users/{0}'.format(UserID) 150 | self.server = server + self.uri 151 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 152 | results = requests.delete(self.server, headers=headers) 153 | jsonData = json.loads(results.content) 154 | return jsonData['status'] 155 | 156 | def getDetailsByID(self, server, token, userID): 157 | """Get detailed information of user by ID 158 | 159 | Arguments: 160 | server {string} -- Server URI 161 | token {string} -- Token value to be used for accessing the API 162 | userID {string} -- ID of the user 163 | 164 | Returns: 165 | string -- Detailed information of user by ID 166 | """ 167 | self.uri = '/api/v1/users/{0}'.format(userID) 168 | self.server = server + self.uri 169 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 170 | results = requests.get(self.server, headers=headers) 171 | return results.content 172 | 173 | def getCheckedOutAssets(self, server, token, UserID): 174 | """Get list of assets checked out to the user 175 | 176 | Arguments: 177 | server {string} -- Server URI 178 | token {string} -- Token value to be used for accessing the API 179 | componentsID {string} -- ID of the user 180 | 181 | Returns: 182 | string -- list of assets in JSON format 183 | """ 184 | self.uri = '/api/v1/users/{0}/assets'.format(UserID) 185 | self.server = server + self.uri 186 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 187 | results = requests.get(self.server, headers=headers) 188 | return results.content 189 | 190 | 191 | def getCheckedOutAccessories(self, server, token, UserID): 192 | """Get list of accessories checked out to the user 193 | 194 | Arguments: 195 | server {string} -- Server URI 196 | token {string} -- Token value to be used for accessing the API 197 | componentsID {string} -- ID of the user 198 | 199 | Returns: 200 | string -- list of accessories in JSON format 201 | """ 202 | self.uri = '/api/v1/users/{0}/accessories'.format(UserID) 203 | self.server = server + self.uri 204 | headers = {'Content-Type': 'application/json','Authorization': 'Bearer {0}'.format(token)} 205 | results = requests.get(self.server, headers=headers) 206 | return results.content -------------------------------------------------------------------------------- /snipeit/__init__.py: -------------------------------------------------------------------------------- 1 | from .Assets import Assets 2 | from .Company import Company 3 | from .Locations import Locations 4 | from .Accessories import Accessories 5 | from .Consumables import Consumables 6 | from .Components import Components 7 | from .Users import Users 8 | from .StatusLabels import StatusLabels 9 | from .Models import Models 10 | from .Categories import Categories 11 | from .Manufacturers import Manufacturers 12 | from .Fieldsets import Fieldsets 13 | from .Maintenances import Maintenances 14 | from .Licenses import Licenses 15 | --------------------------------------------------------------------------------