api-orm

Interact with API endpoints as Python objects and manage resources in an ORMy way


Keywords
api, orm
License
BSD-1-Clause
Install
pip install api-orm==0.0.0.dev1

Documentation

api-orm

Interact with API endpoints as Python objects and manage resources in an ORMy way

Installation

Python version supported: 3.6+

pip install api-orm

About

We have written many small clients to different APIs. It usually becomes a couple of functions like:

client.get_customers()
client.new_customer()
# etc

When writing our client for our accounting API we wanted a more declarative way of accessing our data. Also the API supported OData which allows for filtering on all parameters. This made request look more like database access than simple REST endpoints. So we wanted an interface more like a database ORM.

We use django a lot so we would like something we are used to.

This library is an attempt to extract the ORM parts of our Visma client so that we can reuse the framework for a bunch of other API clients.

We want an api very alike the Django ORM:

all_customers = Customer.api.all()
a = Customer(**customer_data)
a.save()

some_customers = Customer.api.filter(name='Dave').exclude(invoice_postal_code__startswith='25')

Before we have to write alot of custom validation but in this framework we use the awesome serializer library marshmallow to transform python objects to HTTP-request data and back. This gives us a declarative way of defining our models and it comes included with validation of schemas and fields. There are also tools available to generate models from and API specification which greatly reduces the implementation time.