Skip to main content

Elastly API

Project description

Elastly Python SDK

The official Python client for the Elastly REST API.

Elastly prices quote and order lines for B2B sellers. Send a line (product, customer, quantity) and get back a price with the reasoning behind it: which pricing rules fired, what each one added, and how confident the engine is. The engine learns from the outcomes you feed back, so prices improve over time.

This client covers the full v1 API:

  • Prices: price up to 100 lines in one call.
  • Ingest: push products, customers, quotes, and orders from your own system in staged batches.
  • Write-backs: pull approved price changes into your system and confirm them once applied.

Install

pip install elastly

Requires Python 3.9 or newer.

Authenticate

Create an API key in the dashboard (Settings, then API keys). Keys are scoped: an erp key prices lines, a connector key ingests data and claims write-backs. Send the key as a bearer token.

Price a line

import uuid

import elastly

configuration = elastly.Configuration(access_token="elastly_live_...")

with elastly.ApiClient(configuration) as api_client:
    prices = elastly.PricesApi(api_client)

    response = prices.get_prices(
        idempotency_key=str(uuid.uuid4()),
        prices_request=elastly.PricesRequest(
            lines=[
                elastly.PricesRequestLinesInner(
                    product_sku="SKU-1042",
                    customer_external_id="CUST-88",
                    quantity=25,
                )
            ]
        ),
    )

    for line in response.lines:
        result = line.actual_instance
        if result.ok:
            print(result.price_cents, result.currency, result.reason_summary)
        else:
            print("failed:", result.code, result.message)

Every response line is either a priced result (ok is true) or a per-line error. One bad line never fails the batch.

Retries and idempotency

POST /v1/prices requires an Idempotency-Key header. Use a fresh key for each logical request and reuse the same key on retries. A replay returns the stored response, so a retried call never prices twice.

Close the loop

Elastly learns from the difference between the price it recommended and the price your team actually charged. When you ingest quotes, echo the pricingDecisionId you received from the prices call on the matching quote line. Skip that and the engine has nothing to learn from.

Documentation

About this repository

This code is generated from the Elastly OpenAPI contract, so pull requests against generated files get overwritten by the next release. If something is broken or missing, open an issue or email support@elastly.io.

License

MIT

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

elastly-0.1.1.tar.gz (37.7 kB view details)

Uploaded Source

Built Distribution

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

elastly-0.1.1-py3-none-any.whl (81.4 kB view details)

Uploaded Python 3

File details

Details for the file elastly-0.1.1.tar.gz.

File metadata

  • Download URL: elastly-0.1.1.tar.gz
  • Upload date:
  • Size: 37.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for elastly-0.1.1.tar.gz
Algorithm Hash digest
SHA256 d1b71f0a967d6fb124517ccfbe3cc01fe8f8dcf3c40a397a9a97ced245fa9d61
MD5 9e5d64cc7215ea56bde951a784eab4e7
BLAKE2b-256 0ee8f3eeba1064471538b605e6344c6da0494ac74b7b461509016f0aa0027276

See more details on using hashes here.

Provenance

The following attestation bundles were made for elastly-0.1.1.tar.gz:

Publisher: publish.yml on elastly/elastly-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file elastly-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: elastly-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 81.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for elastly-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fdd3e48375b0ef10ae5e84d0ec41c96c2b508ae2c8339704f9806f3d52ce4363
MD5 1c2d4b6cb08cf1e56609fc6df8e15ee5
BLAKE2b-256 5e791e4e938096149ffa35f033778a97f95341971449502f1e64fb1762961fd8

See more details on using hashes here.

Provenance

The following attestation bundles were made for elastly-0.1.1-py3-none-any.whl:

Publisher: publish.yml on elastly/elastly-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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