Skip to main content

A client library for accessing RevenueCat API v2

Project description

revenuecat_client

A client library for accessing RevenueCat API v2.

Supports async/await.

Generated with awesome openapi-python-client from RevenueCat OpenAPI spec v2

Installation

Install this library directly into an activated virtual environment:

$ pip install revenuecat-client

Usage

Step 0.

Navigate to your Revenuecat account and retrieve you API key.

Step 1.

Create a client:

from revenuecat_client import Client

client = Client(base_url="https://api.revenuecat.com/v2")

If the endpoints you're going to hit require authentication, use AuthenticatedClient instead:

from revenuecat_client import AuthenticatedClient

client = AuthenticatedClient(base_url="https://api.revenuecat.com/v2", token="SuperSecretToken")

Now call your endpoint and use your models:

from revenuecat_client.models import MyDataModel
from revenuecat_client.api.my_tag import get_my_data_model
from revenuecat_client.types import Response

with client as client:
    my_data: MyDataModel = get_my_data_model.sync(client=client)
    # or if you need more info (e.g. status_code)
    response: Response[MyDataModel] = get_my_data_model.sync_detailed(client=client)

Or do the same thing with an async version:

from revenuecat_client.models import MyDataModel
from revenuecat_client.api.my_tag import get_my_data_model
from revenuecat_client.types import Response

async with client as client:
    my_data: MyDataModel = await get_my_data_model.asyncio(client=client)
    response: Response[MyDataModel] = await get_my_data_model.asyncio_detailed(client=client)

By default, when you're calling an HTTPS API it will attempt to verify that SSL is working correctly. Using certificate verification is highly recommended most of the time, but sometimes you may need to authenticate to a server (especially an internal server) using a custom certificate bundle.

client = AuthenticatedClient(
    base_url="https://api.revenuecat.com/v2",
    token="SuperSecretToken",
    verify_ssl="/path/to/certificate_bundle.pem",
)

You can also disable certificate validation altogether, but beware that this is a security risk.

client = AuthenticatedClient(
    base_url="https://api.revenuecat.com/v2",
    token="SuperSecretToken",
    verify_ssl=False
)

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
    2. sync_detailed: Blocking request that always returns a Request, optionally with parsed set if the request was successful.
    3. asyncio: Like sync but async instead of blocking
    4. asyncio_detailed: Like sync_detailed but async instead of blocking
  2. All path/query params, and bodies become method arguments.

  3. If your endpoint had any tags on it, the first tag will be used as a module name for the function (my_tag above)

  4. Any endpoint which did not have a tag will be in revenuecat_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):

from revenuecat_client import Client

def log_request(request):
    print(f"Request event hook: {request.method} {request.url} - Waiting for response")

def log_response(response):
    request = response.request
    print(f"Response event hook: {request.method} {request.url} - Status {response.status_code}")

client = Client(
    base_url="https://api.revenuecat.com/v2",
    httpx_args={"event_hooks": {"request": [log_request], "response": [log_response]}},
)

# 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):

import httpx
from revenuecat_client import Client

client = Client(
    base_url="https://api.revenuecat.com/v2",
)
# Note that base_url needs to be re-set, as would any shared cookies, headers, etc.
client.set_httpx_client(httpx.Client(base_url="https://api.revenuecat.com/v2", proxies="http://localhost:8030"))

Building / publishing this package

This project uses Poetry to manage dependencies and packaging. Here are the basics:

  1. Update the metadata in pyproject.toml (e.g. authors, version)
  2. If you're using a private repository, configure it with Poetry
    1. poetry config repositories.<your-repository-name> <url-to-your-repository>
    2. poetry config http-basic.<your-repository-name> <username> <password>
  3. 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
  2. If that project is not using Poetry:
    1. Build a wheel with poetry build -f wheel
    2. Install that wheel from the other project pip install <path-to-wheel>

REST API documentation

https://www.revenuecat.com/docs/api-v2

License

This project is under the MIT license.

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

revenuecat_client-2.0.0.tar.gz (60.6 kB view details)

Uploaded Source

Built Distribution

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

revenuecat_client-2.0.0-py3-none-any.whl (218.7 kB view details)

Uploaded Python 3

File details

Details for the file revenuecat_client-2.0.0.tar.gz.

File metadata

  • Download URL: revenuecat_client-2.0.0.tar.gz
  • Upload date:
  • Size: 60.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.12.1 Linux/6.8.0-1017-azure

File hashes

Hashes for revenuecat_client-2.0.0.tar.gz
Algorithm Hash digest
SHA256 49d49b01f7070eedcddfd2282c11eb8627367ad9c391e829a7b6e3228dcb9fce
MD5 8fe6d51152f5f3c7909c9e31d4f3915d
BLAKE2b-256 c5f11c4d18b7df0d27d1a23e32498acd7c6a32763c9e82761455f02dbc8044bb

See more details on using hashes here.

File details

Details for the file revenuecat_client-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: revenuecat_client-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 218.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.12.1 Linux/6.8.0-1017-azure

File hashes

Hashes for revenuecat_client-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 35add705f64cf77c88ffa7d323b3152736b01de6482e492689a0bfb00e999612
MD5 55982a9b7f0cdd510e1e12d4bfd0a83c
BLAKE2b-256 8d13516a3b723cf8c3b218e83dce7946bebe42a5bc640d6a550ad12205598a18

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