PyStackpath - StackPath Python Library
Python library interact with StackPath API (https://stackpath.dev/reference)
It uses a custom OAuth2 requests.session
Install
pip install pystackpath
Examples
Set up a new Stackpath instance
from pystackpath import Stackpath
sp = Stackpath(
os.getenv("STACKPATH_CLIENTID"),
os.getenv("STACKPATH_APISECRET")
)
Search for stacks
stacks = sp.stacks().index(filter="name='my-awesome-stack' and status='ACTIVE'")
print(stacks)
Get one stack
stackid = "afcdaf14-47cb-40dd-9c13-3b20e6caf74a
onestack = sp.stacks().get(stackid)
Create a new stack
accountid = "081af5ee-38f8-44e9-b08a-881ea5de66f9"
newstack = sp.stacks().create(accountid, "my-second-stack")
Create a cdn site
stackid = "afcdaf14-47cb-40dd-9c13-3b20e6caf74a
cdnsite = sp.stacks().get(stackid).cdnsites().create(
domain="cdn.johndoe.com",
origin={"hostname": "www.johndoe.com"},
type="CDN"
)
Search for cdn sites
cdnsite = sp.stacks().get(stackid).cdnsites().index(
filter="label='www.johndoe.com' and status='ACTIVE'"
)
Delete a cdn site
cdnsiteid = "19e1a7b2-068f-491c-a95f-b64eae66dd34"
cdnsite = sp.stacks().get(stackid).cdnsites().get(cdnsiteid).delete()
Disable and enable a cdn site
cdnsiteid = "19e1a7b2-068f-491c-a95f-b64eae66dd34"
cdnsite = sp.stacks().get(stackid).cdnsites().get(cdnsiteid).enable()
cdnsite = cdnsite.disable()
Purge a cdn resource and check the purge status.
purge_request_id = sp.stacks().get(stackid).purge(
[
{
"url": "https://example.com/resource/", # required
"recursive": True,
"invalidateOnly": False,
"purgeAllDynamic": False,
"headers": [],
"purgeSelector": [],
}
]
)
## purge_status can be used to check the status of the requested purge.
## Progress is represented as a decimal between 0 and 1, correlating to a
## percentage.
progress = sp.stacks().get(stackid).purge_status(purge_request_id)
print(progress)
##>> 1
Get metrics for a stack:
metrics_response1 = sp.stacks().get(stackid).metrics().get()
## Python datetime objects can be used to specify a date range, and the call
## allows a granularity to be specified. If no values are provided, the search range
## defaults to the last 24 hours, with 1 day granularity. See API doc for options.
## https://developer.stackpath.com/en/api/cdn/#operation/GetMetrics
## There is also a "platforms" argument which takes an array of "platform" codes.
## However the dev guide linked below only lists "CDE" which tracks egress traffic, which is
## how Stackpath bills for CDN usage, and "CDO" which is ingest traffic from the
## origin host, but is not billed. Since "CDE" tracks billable usage, it is the
## default.
## https://developer.stackpath.com/docs/en/cdn/getting-stack-metrics/
from datetime import datetime, timedelta
end = datetime.today()
start = end - timedelta(days=7)
metrics_response2 = sp.stacks().get(stackid).metrics().get(granularity="PT1H",\
platforms = ["CDO", "CDE"], start_datetime_object = start, end_datetime_object = end)
Retrieve all certificates from a stack:
certificate_response = sp.stacks().get(stackid).certificates()
##The object returned will have a 'results' attribute containing
##an array of the available certificates:
first_certificate = certificate_response['results'][0]
second_certificate = certificate_response['results'][1]
Add, update and delete a certificate for a stack:
##The cert and key are required, CA bundle is optional.
new_cert_response = sp.stacks().get(stackid).certificates().add(\
SERVER_CERTIFICATE_STRING, PRIVATE_KEY_STRING, CA_BUNDLE_STRING)
##The new cert ID can be retrieved from the returned object:
cert_id = new_cert_response.id
##To update a cert:
sp.stacks().get(stackid).certificates().update(cert_id, UPDATED_CERT_STRING, UPDATED_KEY_STRING)
##To delete a cert:
delete_cert_response = sp.stacks().get(stackid).certificates().delete(cert_id)
Metadata
Release files for pystackpath 0.5.0
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 | |
|---|---|---|---|---|
| pystackpath-0.5.0.tar.gz | 15.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pystackpath-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 51.4 kB
Release files / pystackpath-0.5.0.tar.gz
| Download URL | pystackpath-0.5.0.tar.gz |
|---|---|
| Size | 15.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bc44f4fc42976efbc66edde121a78adb15d9428b7bb672e8d5034accc850ab45
|
|
BLAKE2b-256 checksum How to use checksums |
3a07eabb46f3e31a00a97fd6680bb6f9b4b2cf0326ced6d04beef4f0ee4b3578
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.9.0
|
Release files / pystackpath-0.5.0-py3-none-any.whl
| Download URL | pystackpath-0.5.0-py3-none-any.whl |
|---|---|
| Size | 36.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e991cd81aac4d4b3e9b8924c1dd118da123fbfb8261f344008bab6f224f09575
|
|
BLAKE2b-256 checksum How to use checksums |
11e032d8b2bd263e3ac6cacdd27f8b4b735c806b41c889a13ba589528e906d34
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.9.0
|
Security for pystackpath 0.5.0
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.