Skip to main content

A trivial set of API bindings for things I use. So far, TODA and FleetDM

Project description

TrivialAPI

(A set of requests-based, trivial API bindings for things I use)

Installation

(env-whatever) $ pip install trivialapi
Collecting trivialapi
...snip...
(env-whatever) $ python
Python 3.10.12 (main, Mar 22 2024, 16:50:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

Unified

>>> from trivialapi.unified import core
>>> core.Unified("<your unified token goes here>")
>>> <trivialapi.unified.core.Unified object at 0x7f236ebf6060>
>>> unified = _
>>> unified.passthrough("<your github connection ID>", "orgs/mycroft-io/repos") 
>>> [{'id': 821009702, 'node_id': 'R_kgDOMO-dJg', 'name': 'pycroservice', 'full_name': 'Mycroft-io/pycroservice', 'private': False, 
...snip...
'secret_scanning_non_provider_patterns': {'status': 'disabled'}, 'secret_scanning_validity_checks': {'status': 'disabled'}}}]
>>> repos = _
>>> repos[0]["has_issues"]
True
>>> unified.passthrough("<your github connection ID>", f"repos/{repos[0]['full_name']}/issues")
[]
>>> 

In addition to the passthrough method, we've currently got support

  • connection
  • messaging
  • task
  • hris
  • kms

name spaces.

Basic usage

FleetDM

Basic usage

>>> from trivialapi.fleetdm import core
>>> core.FleetDM("https://your-server.url")
<trivialapi.fleetdm.core.FleetDM object at 0x7afe7e9ffaa0>
>>> fleet = _
>>> fleet.login("you@your.email", "your-password")
True
>>> fleet.hosts()
[...your hosts show up here...]
>>> fleet.host_livequery(host, "SELECT 1 FROM disk_encryption WHERE encrypted=1 AND name LIKE '/dev/dm-1';")
{'host_id': 1, 'rows': None, 'query': "SELECT 1 FROM disk_encryption WHERE encrypted=1 AND name LIKE '/dev/dm-1';", 'status': 'offline'}
>>> qs = fleet.standard_query_library()
>>> len(qs)
91
>>> qs[0]
{'name': 'Get OpenSSL versions', 'platform': ['linux'], 'description': 'Retrieves the OpenSSL version.', 'query': "SELECT name AS name, version AS version, 'deb_packages' AS source FROM deb_packages WHERE name LIKE 'openssl%' UNION SELECT name AS name, version AS version, 'apt_sources' AS source FROM apt_sources WHERE name LIKE 'openssl%' UNION SELECT name AS name, version AS version, 'rpm_packages' AS source FROM rpm_packages WHERE name LIKE 'openssl%';", 'purpose': 'Informational', 'tags': 'inventory', 'contributors': 'zwass'}
>>> enc_qs = [q for q in qs if "Full disk encryption" in q["name"]]
>>> q = enc_qs[0]
>>> fleet.add_query(q["query"], q["name"], q["description"], ",".join(q["platform"]))
<Response [200]>

TODA

  • A basic port of this that doesn't suck too much.

Basic usage

>>> from trivialapi.toda import core
<module 'trivialapi.toda.core'>
>>> twina = core.Twin.from_file("~/path/to/your/twin.json")
>>> twina.hostname
'41a9cbc977c39bd3eb5a52a5924f8ef5.micro-staging.biz.todaq.net'
>>> twina.key
'redacted'
>>> twina.mint(1000, minting_info="Precision 0 minting test")
{'result': 'success', 'files': ['419bfe67b7fafe0842813f13044d637775349d2b4df347639eccc6ec82093a8ecb'], 'root': '41a2099e84dd4690ea55774506d58ee6cf6ac9fe0c9806239ef6e251a6bc597641'}
>>> minted = _
>>> twina.balance()
[{'balance': 1000, 'quantity': 1000, 'files': ['419bfe67b7fafe0842813f13044d637775349d2b4df347639eccc6ec82093a8ecb'], 'fileValue': {'419bfe67b7fafe0842813f13044d637775349d2b4df347639eccc6ec82093a8ecb': 1000}, 'poptop': '419ccac82bcf1216a70929664cdeaa97bcc01deb87d190a0c7ce90e62d7b89a6bf', 'displayPrecision': 0, 'type': '41a2099e84dd4690ea55774506d58ee6cf6ac9fe0c9806239ef6e251a6bc597641'}]
>>> twinb = core.Twin.from_file("~/path/to/your/other/twin.json")
>>> twina.transfer(minted["root"], 50, f"https://{twinb.hostname}")
{'result': 'Success', 'files': ['41a2099e84dd4690ea55774506d58ee6cf6ac9fe0c9806239ef6e251a6bc597641'], 'newBalance': 950}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

trivialapi-0.0.31.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

trivialapi-0.0.31-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file trivialapi-0.0.31.tar.gz.

File metadata

  • Download URL: trivialapi-0.0.31.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for trivialapi-0.0.31.tar.gz
Algorithm Hash digest
SHA256 a0738862d3dbcc8bd8c29a0ae7ee2d171714577771d07daa0caed09f5de9a05e
MD5 4d75cb51ec031d1dcfab1e6232be47a1
BLAKE2b-256 117fffdb47f023b5714d06ae3e7c5652344153c9cef2baab3b94b9ee5323240d

See more details on using hashes here.

File details

Details for the file trivialapi-0.0.31-py3-none-any.whl.

File metadata

  • Download URL: trivialapi-0.0.31-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for trivialapi-0.0.31-py3-none-any.whl
Algorithm Hash digest
SHA256 b353742df4a8f3bfb08a8cf58d60a71b03d8468ebafaf4c5825057a54983d4c0
MD5 96113fdc697de697111bee0f38e84af4
BLAKE2b-256 03c67a2094709e24396967e88e807872f0eab92ef78775ec4848ed78ae7cb305

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page