affliction
welcome to affliction. provides synchronous clients, based on deceit,
for interacting with the microsoft graph api and the exchange management
rest api. please be mindful that the exchange rest api is (still, as of 2023
after more than three years) in beta, and these apis are not currently published.
this means that the exchange rest api will likely change between the time
that this library is published and the time the exchange management rest api
is officially released.
powered by angry penguins.
graph client
to use the graph client, you use the affliction.graph_client.SynchronousGraphClient
class. there are a few pre-defined endpoints for now for users and
subscribedSkus.
from affliction.graph_client import SynchronousGraphClient
client = SynchronousGraphClient(
tenant_id='01234567-000...',
client_id='01234567-000...',
client_secret='secret generated from azure app registration',
)
users = client.get_users(params={
'$search': '"displayName:alice"',
})
documentation for the users endpoint is available from micrososft. other documents provide a more fulsome description of the available odata parameters
exchange client
to use the exchange client, instantiate affliction.exchange_client.ExchangeClient
use the mailboxes endpoint with $filter or $search odata semantics just
like you would with the graph api.
from affliction.exchange_client import ExchangeClient
client = ExchangeClient(
tenant_id='01234567-00...',
client_id='01234567-00...',
client_secret='app secret from azure app registration with Exchange.ManageAsApp permissions'
)
mailboxes = client.mailboxes(params={
'$search': '"displayName:catsareawesome"',
})
recipients = client.recipients(params={
'$filter': 'LitigationHoldEnabled eq True',
})
hat tip to Vasil Michev who got us started down this path:
https://www.michev.info/blog/post/2869/abusing-the-rest-api-endpoints-behind-the-new-exo-cmdlets
to see how to add the required ManageAsApp permission, please feel free to
reference this link: https://4sysops.com/archives/connect-to-exchange-online-with-powershell-and-certificate-based-authentication/
Metadata
Release files for affliction 1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| affliction-1.5.tar.gz | 11.3 kB | Without provenance | Details for affliction-1.5.tar.gz |
Release files / affliction-1.5.tar.gz
| Download URL | affliction-1.5.tar.gz |
|---|---|
| Size | 11.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2be63f702bfbec9c52e63c6919481baf9e279eef614f26576101f0da9d8008b8
|
|
BLAKE2b-256 checksum How to use checksums |
1497a194955d7bea11d22f54a732f7f2596ed76cdfa5c3577b16ce12ce2456dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.3
|
Security for affliction 1.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.