blood-hound-python-client


Nameblood-hound-python-client JSON
Version 2.0.0 PyPI version JSON
download
home_pagehttps://github.com/SpecterOps/bloodhound-python-sdk
SummaryA client library for accessing BloodHound API
upload_time2024-10-01 16:12:23
maintainerNone
docs_urlNone
authorSpecterOps
requires_python<4.0,>=3.8
licenseAPACHE
keywords bloodhound api sdk client
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # blood-hound-api-client
A client library for accessing BloodHound API

## Usage
For HMAC authentication, create and copy your API Token id and key.

Create an HMACAuthenticationClient using your API Token id and key::

```python
import auth
from auth.hmac_authenticated_client import HMACAuthenticatedClient

token_key = "CAuAwLgPag3xpjfx5gYt3mEpRpK5DXkL1LGVK+utqMLTnlakVmjeZw=="
token_id = "5f538a38-fd90-4228-b17b-ee09056c6ade"
get_version("http://bloodhound.localhost", token_key, token_id)
client = HMACAuthenticatedClient(base_url=base_url, token_key=token_key, token_id=token_id)

```

Now you can call your endpoint and use the model objects

Now call your endpoint and use your models:

```python

from blood_hound_api_client import AuthenticatedClient
from blood_hound_api_client.api.api_info import get_api_version
from blood_hound_api_client.models import GetApiVersionResponse200

with client as client::
    version: GetApiVersionResponse200 = get_api_version.sync(client=client)
    response: GetApiVersionResponse200 = get_api_version.sync_detailed(client=client)
    print(response.data.api)
```

Or do the same thing with an async version:

```python
from blood_hound_api_client import AuthenticatedClient
from blood_hound_api_client.api.api_info import get_api_version
from blood_hound_api_client.models import GetApiVersionResponse200

async with client as client:
    version:: GetApiVersionResponse200 = await get_api_version.asyncio(client=client)
    response: Response[GetApiVersionResponse200] = await get_api_version.asyncio_detailed(client=client)
    print(response.data.api)

```

Things to know:
1. Every path/method combo becomes a Python module with four functions:
    1. `sync`: Blocking request that returns parsed data (if successful) or `None`
    1. `sync_detailed`: Blocking request that always returns a `Request`, optionally with `parsed` set if the request was successful.
    1. `asyncio`: Like `sync` but async instead of blocking
    1. `asyncio_detailed`: Like `sync_detailed` but async instead of blocking

1. All path/query params, and bodies become method arguments.
1. If your endpoint had any tags on it, the first tag will be used as a module name for the function (my_tag above)
1. Any endpoint which did not have a tag will be in `blood_hound_api_client.api.default`

## Advanced customizations

There are more settings on the generated `Client` class which let you control more runtime behavior, check out the docstring on that class for more info. You can also customize the underlying `httpx.Client` or `httpx.AsyncClient` (depending on your use-case):


# Or get the underlying httpx client to modify directly with client.get_httpx_client() or client.get_async_httpx_client()
```

You can even set the httpx client directly, but beware that this will override any existing settings (e.g., base_url):

## Building / publishing this package


This project uses [Poetry](https://python-poetry.org/) to manage dependencies  and packaging.  Here are the basics:
1. Update the metadata in pyproject.toml (e.g. authors, version)
1. If you're using a private repository, configure it with Poetry
    1. `poetry config repositories.<your-repository-name> <url-to-your-repository>`
    1. `poetry config http-basic.<your-repository-name> <username> <password>`
1. Publish the client with `poetry publish --build -r <your-repository-name>` or, if for public PyPI, just `poetry publish --build`

If you want to install this client into another project without publishing it (e.g. for development) then:
1. If that project **is using Poetry**, you can simply do `poetry add <path-to-this-client>` from that project
1. If that project is not using Poetry:
    1. Build a wheel with `poetry build -f wheel`
    1. Install that wheel from the other project `pip install <path-to-wheel>`


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/SpecterOps/bloodhound-python-sdk",
    "name": "blood-hound-python-client",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.8",
    "maintainer_email": null,
    "keywords": "bloodhound, api, sdk, client",
    "author": "SpecterOps",
    "author_email": "info@specterops.io",
    "download_url": "https://files.pythonhosted.org/packages/bd/91/7625bd5643d9a637a410b86dfc858bfc5468709a8fff5e92ae22d23de182/blood_hound_python_client-2.0.0.tar.gz",
    "platform": null,
    "description": "# blood-hound-api-client\nA client library for accessing BloodHound API\n\n## Usage\nFor HMAC authentication, create and copy your API Token id and key.\n\nCreate an HMACAuthenticationClient using your API Token id and key::\n\n```python\nimport auth\nfrom auth.hmac_authenticated_client import HMACAuthenticatedClient\n\ntoken_key = \"CAuAwLgPag3xpjfx5gYt3mEpRpK5DXkL1LGVK+utqMLTnlakVmjeZw==\"\ntoken_id = \"5f538a38-fd90-4228-b17b-ee09056c6ade\"\nget_version(\"http://bloodhound.localhost\", token_key, token_id)\nclient = HMACAuthenticatedClient(base_url=base_url, token_key=token_key, token_id=token_id)\n\n```\n\nNow you can call your endpoint and use the model objects\n\nNow call your endpoint and use your models:\n\n```python\n\nfrom blood_hound_api_client import AuthenticatedClient\nfrom blood_hound_api_client.api.api_info import get_api_version\nfrom blood_hound_api_client.models import GetApiVersionResponse200\n\nwith client as client::\n    version: GetApiVersionResponse200 = get_api_version.sync(client=client)\n    response: GetApiVersionResponse200 = get_api_version.sync_detailed(client=client)\n    print(response.data.api)\n```\n\nOr do the same thing with an async version:\n\n```python\nfrom blood_hound_api_client import AuthenticatedClient\nfrom blood_hound_api_client.api.api_info import get_api_version\nfrom blood_hound_api_client.models import GetApiVersionResponse200\n\nasync with client as client:\n    version:: GetApiVersionResponse200 = await get_api_version.asyncio(client=client)\n    response: Response[GetApiVersionResponse200] = await get_api_version.asyncio_detailed(client=client)\n    print(response.data.api)\n\n```\n\nThings to know:\n1. Every path/method combo becomes a Python module with four functions:\n    1. `sync`: Blocking request that returns parsed data (if successful) or `None`\n    1. `sync_detailed`: Blocking request that always returns a `Request`, optionally with `parsed` set if the request was successful.\n    1. `asyncio`: Like `sync` but async instead of blocking\n    1. `asyncio_detailed`: Like `sync_detailed` but async instead of blocking\n\n1. All path/query params, and bodies become method arguments.\n1. If your endpoint had any tags on it, the first tag will be used as a module name for the function (my_tag above)\n1. Any endpoint which did not have a tag will be in `blood_hound_api_client.api.default`\n\n## Advanced customizations\n\nThere are more settings on the generated `Client` class which let you control more runtime behavior, check out the docstring on that class for more info. You can also customize the underlying `httpx.Client` or `httpx.AsyncClient` (depending on your use-case):\n\n\n# Or get the underlying httpx client to modify directly with client.get_httpx_client() or client.get_async_httpx_client()\n```\n\nYou can even set the httpx client directly, but beware that this will override any existing settings (e.g., base_url):\n\n## Building / publishing this package\n\n\nThis project uses [Poetry](https://python-poetry.org/) to manage dependencies  and packaging.  Here are the basics:\n1. Update the metadata in pyproject.toml (e.g. authors, version)\n1. If you're using a private repository, configure it with Poetry\n    1. `poetry config repositories.<your-repository-name> <url-to-your-repository>`\n    1. `poetry config http-basic.<your-repository-name> <username> <password>`\n1. Publish the client with `poetry publish --build -r <your-repository-name>` or, if for public PyPI, just `poetry publish --build`\n\nIf you want to install this client into another project without publishing it (e.g. for development) then:\n1. If that project **is using Poetry**, you can simply do `poetry add <path-to-this-client>` from that project\n1. If that project is not using Poetry:\n    1. Build a wheel with `poetry build -f wheel`\n    1. Install that wheel from the other project `pip install <path-to-wheel>`\n\n",
    "bugtrack_url": null,
    "license": "APACHE",
    "summary": "A client library for accessing BloodHound API",
    "version": "2.0.0",
    "project_urls": {
        "Homepage": "https://github.com/SpecterOps/bloodhound-python-sdk",
        "Repository": "https://github.com/SpecterOps/bloodhound-python-sdk"
    },
    "split_keywords": [
        "bloodhound",
        " api",
        " sdk",
        " client"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cd720240c0694c69b3af5ca584f1e6b189b808414abe43f9cf829d8fd714d93e",
                "md5": "25ee35b0d2fb5fb75e0ae566c04a3f55",
                "sha256": "b4823ab35eed5b30ca033f37081cca0732d5d1cad128552626cc8691ca48c667"
            },
            "downloads": -1,
            "filename": "blood_hound_python_client-2.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "25ee35b0d2fb5fb75e0ae566c04a3f55",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.8",
            "size": 604426,
            "upload_time": "2024-10-01T16:12:21",
            "upload_time_iso_8601": "2024-10-01T16:12:21.020311Z",
            "url": "https://files.pythonhosted.org/packages/cd/72/0240c0694c69b3af5ca584f1e6b189b808414abe43f9cf829d8fd714d93e/blood_hound_python_client-2.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bd917625bd5643d9a637a410b86dfc858bfc5468709a8fff5e92ae22d23de182",
                "md5": "ec9e32a46b4756b2307be9a7be740187",
                "sha256": "de6fd5c44d012539c5edb97f69c227b202c75f107e6608a47ad43c12b2e40e8e"
            },
            "downloads": -1,
            "filename": "blood_hound_python_client-2.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "ec9e32a46b4756b2307be9a7be740187",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.8",
            "size": 147861,
            "upload_time": "2024-10-01T16:12:23",
            "upload_time_iso_8601": "2024-10-01T16:12:23.343525Z",
            "url": "https://files.pythonhosted.org/packages/bd/91/7625bd5643d9a637a410b86dfc858bfc5468709a8fff5e92ae22d23de182/blood_hound_python_client-2.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-01 16:12:23",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "SpecterOps",
    "github_project": "bloodhound-python-sdk",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "blood-hound-python-client"
}
        
Elapsed time: 0.37139s