Skip to main content

Build Status Coverage Status Known Vulnerabilities PYUP OpenSSF Best Practices Scorecard

Open Broker API

A Python package for building Service Brokers supporting API version 2.13+.

Following Open Service Broker API Spec and Open Service Broker API

Check out the documentation.

To find out more about Platform Compatibility for OSBAPI versions, check out Platform Compatibility for OSBAPI

Not all features are supported with this library due to conflicting features.

Installation

This package is available for Python 3.8+.

pip3 install openbrokerapi

# including gevent as server
pip3 install openbrokerapi[gevent]

# recommended production setup
pip3 install openbrokerapi[gunicorn]

Or install the development version from github:

pip3 install git+https://github.com/eruvanos/openbrokerapi.git

Usage

You can start with a skeleton project or just from scratch.

from typing import Union, List

import openbrokerapi
from openbrokerapi import api
from openbrokerapi.api import ServiceBroker
from openbrokerapi.catalog import ServicePlan
from openbrokerapi.service_broker import (
    Service,
    ProvisionDetails,
    ProvisionedServiceSpec,
    DeprovisionDetails,
    DeprovisionServiceSpec
)


class MyServiceBroker(ServiceBroker):
    def catalog(self) -> Union[Service, List[Service]]:
        return Service(
            id='service id',
            name='service name',
            description='service description',
            bindable=False,
            plans=[
                ServicePlan(
                    id='plan id',
                    name='plan name',
                    description='plan description',
                )
            ]
        )

    def provision(self,
                  instance_id: str,
                  details: ProvisionDetails,
                  async_allowed: bool,
                  **kwargs) -> ProvisionedServiceSpec:
        # Create service instance
        # ...

        return ProvisionedServiceSpec()

    def deprovision(self,
                    instance_id: str,
                    details: DeprovisionDetails,
                    async_allowed: bool,
                    **kwargs) -> DeprovisionServiceSpec:
        # Delete service instance
        # ...

        return DeprovisionServiceSpec(is_async=False)

print('Start server on 127.0.0.1:5000')
print('Check the catalog at:')
print('> curl 127.0.0.1:5000/v2/catalog -H "X-Broker-API-Version: 2.14"')
api.serve(MyServiceBroker(), None)

# Simply start the server
# api.serve(ExampleServiceBroker(), api.BrokerCredentials("", ""))

# or start the server without authentication
# api.serve(ExampleServiceBroker(), None)

# or start the server with multiple authentication
# api.serve(ExampleServiceBroker(), [api.BrokerCredentials("", ""), api.BrokerCredentials("", "")])

# or with multiple service brokers and multiple credentials
# api.serve_multiple([ExampleServiceBroker(), ExampleServiceBroker()], [api.BrokerCredentials("", ""), api.BrokerCredentials("", "")])

# or register blueprint to your own FlaskApp instance
# app = Flask(__name__)
# logger = basic_config()  # Use root logger with a basic configuration provided by openbrokerapi.log_util
# openbroker_bp = api.get_blueprint(ExampleServiceBroker(), api.BrokerCredentials("", ""), logger)
# app.register_blueprint(openbroker_bp)
# app.run("0.0.0.0")

Deployment

The included api.serve function provides a server setup for local usage only.

For productive deployments use the blueprint from api.get_blueprint to setup a production ready server like Waitress or other mentioned in Flask Deployment Docs

Error Types

Openbrokerapi defines a handful of error types in errors.py for some common error cases that your service broker may encounter. Raise these from your ServiceBroker methods where appropriate, and openbrokerapi will do the “right thing” (™), and give Cloud Foundry an appropriate status code, as per the Service Broker API specification.

Bugs or Issues

Please report bugs, issues or feature requests to Github Issues

How to contribute

You want to contribute, I really appreciate!

So let us check how you can contribute:

  • Create an issue in the Github Issues. Please provide all information that you think are usefull to solve it.

  • Use the Github Issues to create a feature request, so we can discuss and find a good interface for that feature.

  • Create a Pull Request. There are some things that will make it easier to review your Pull Request:

    • Use a new branch for every Pull Request

    • Include just related commits in this branch

    • Less commits are better, one would be the best (You can squash them.)

    • Always add tests for your feature, if you are not familiar with writing tests, ask for help.

    • Hint: To update your fork with the newest changes, follow these instructions.

Metadata

Release files for openbrokerapi 4.7.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for openbrokerapi 4.7.3
File Size Uploaded
openbrokerapi-4.7.3.tar.gz 136.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for openbrokerapi 4.7.3
File Interpreter ABI Platform
openbrokerapi-4.7.3-py3-none-any.whl Python 3 none any Details

Total release size: 155.6 kB

Release files / openbrokerapi-4.7.3.tar.gz

Download URL openbrokerapi-4.7.3.tar.gz
Size 136.3 kB
Tags Source
SHA-256 checksum
How to use checksums
7dfbb0de14009b9d536d81a4bfaa8581eb2505191811d8bab79ffa03665ac466
BLAKE2b-256 checksum
How to use checksums
9bc698d9a197fecac202201a8912a622d644c63aa3f4ff95befc58e4f1c6996d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 28, 2025.

Transparency log

Release files / openbrokerapi-4.7.3-py3-none-any.whl

Download URL openbrokerapi-4.7.3-py3-none-any.whl
Size 19.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
07c519e3ce32ae77f9c4e0dd7f022f272f783c4b2f64b4bf754d61764f4aab48
BLAKE2b-256 checksum
How to use checksums
6dae3d257bd6cefa4f6a7e61a146e8e10abd29be131bbf2afce72202a1f2708f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 28, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

4.7.3 This release

2 release files

4.7.1

2 release files

4.7.0

2 release files

4.6.0

2 release files

4.5.8

2 release files

4.5.7

2 release files

4.5.6

2 release files

4.5.5

2 release files

4.5.1

2 release files

4.5.0

2 release files

4.4.1

2 release files

4.4.0

2 release files

4.3.1

2 release files

4.3.0

2 release files

4.2.0

2 release files

4.1.2

2 release files

4.1.1

2 release files

4.1.0

2 release files

4.0.2

2 release files

4.0.1

2 release files

4.0.0

2 release files

3.2.6

2 release files

3.2.5

1 release file

3.2.4

1 release file

3.2.3

1 release file

3.2.2

1 release file

3.2.1

1 release file

3.2.0

1 release file

3.1.1

1 release file

3.1.0

1 release file

2.0.0

1 release file

1.0.0

1 release file

0.5.0

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page