---
title: Charmhub | Deploy OpenFGA using Charmhub - The Open Operator Collection
description: Deploy the latest version of OpenFGA as a Kubernetes Operator on any
  cloud.
url: https://charmhub.io/openfga-k8s/libraries/openfga
---

# OpenFGA

[Identity Charmers](https://charmhub.io/publisher/identity-charmers "View all packages from Identity Charmers")

* [Identity Charmers](https://charmhub.io/publisher/identity-charmers "View all packages from Identity Charmers")

Platform:

stable 128

```
juju deploy openfga-k8s
```

[Learn to deploy on juju >](https://juju.is/docs/juju/manage-applications)

[Toggle side navigation](https://charmhub.io/openfga-k8s/libraries/openfga#drawer)

## charms.openfga\_k8s.v1.openfga

* [*Docstrings*Docstrings](https://charmhub.io/openfga-k8s/libraries/openfga)
  [*Code*Source code](https://charmhub.io/openfga-k8s/libraries/openfga/source-code)
* + Download

    Fetch library

    ```
    charmcraft fetch-lib charms.openfga_k8s.v1.openfga
    ```

    [Download openfga.py](https://charmhub.io/openfga-k8s/libraries/openfga/download)
  + *Last updated* 14 Sep 2026
  + *Revision* Library version 1.6

#### Interface Library for OpenFGA.

> **DEPRECATED**
> This charm library is deprecated in favor of the `charmlibs-interfaces-openfga` PyPI package.
> Please install `charmlibs-interfaces-openfga` and import from `charmlibs.interfaces.openfga`.

This library wraps relation endpoints using the `openfga` interface
and provides a Python API for requesting OpenFGA authorization model
stores to be created.

##### Getting Started

To get started using the library, you just need to fetch the library using `charmcraft`.

```
cd some-charm
charmcraft fetch-lib charms.openfga_k8s.v1.openfga
```

In the `metadata.yaml` of the charm, add the following:

```
requires:
  openfga:
    interface: openfga
```

Then, to initialise the library:

```
from charms.openfga_k8s.v1.openfga import (
    OpenFGARequires,
    OpenFGAStoreCreateEvent,
)

class SomeCharm(CharmBase):
  def __init__(self, *args):
    # ...
    self.openfga = OpenFGARequires(self, "test-openfga-store")
    self.framework.observe(
        self.openfga.on.openfga_store_created,
        self._on_openfga_store_created,
    )

    def _on_openfga_store_created(self, event: OpenFGAStoreCreateEvent):
        if not event.store_id:
            return

        info = self.openfga.get_store_info()
        if not info:
            return

        logger.info("store id {}".format(info.store_id))
        logger.info("token {}".format(info.token))
        logger.info("grpc_api_url {}".format(info.grpc_api_url))
        logger.info("http_api_url {}".format(info.http_api_url))
```

---

Index

* [class OpenfgaRequirerAppData](https://charmhub.io/openfga-k8s/libraries/openfga#openfgarequirerappdata)
* [class OpenfgaProviderBaseData](https://charmhub.io/openfga-k8s/libraries/openfga#openfgaproviderbasedata)
* [class OpenfgaProviderAppData](https://charmhub.io/openfga-k8s/libraries/openfga#openfgaproviderappdata)
* [class OpenFGAStoreCreateEvent](https://charmhub.io/openfga-k8s/libraries/openfga#openfgastorecreateevent)
* + [def \_\_init\_\_(
    self,
    handle,
    store\_id)](https://charmhub.io/openfga-k8s/libraries/openfga#openfgastorecreateevent-__init__)
* + [def snapshot(
    self)](https://charmhub.io/openfga-k8s/libraries/openfga#openfgastorecreateevent-snapshot)
* + [def restore(
    self,
    snapshot)](https://charmhub.io/openfga-k8s/libraries/openfga#openfgastorecreateevent-restore)
* [class OpenFGAStoreRemovedEvent](https://charmhub.io/openfga-k8s/libraries/openfga#openfgastoreremovedevent)
* [class OpenFGARequirerEvents](https://charmhub.io/openfga-k8s/libraries/openfga#openfgarequirerevents)
* [class OpenFGARequires](https://charmhub.io/openfga-k8s/libraries/openfga#openfgarequires)
* + [def \_\_init\_\_(
    self,
    charm,
    store\_name,
    relation\_name)](https://charmhub.io/openfga-k8s/libraries/openfga#openfgarequires-__init__)
* + [def get\_store\_info(
    self)](https://charmhub.io/openfga-k8s/libraries/openfga#openfgarequires-get_store_info)
* [class OpenFGAStoreRequestEvent](https://charmhub.io/openfga-k8s/libraries/openfga#openfgastorerequestevent)
* + [def \_\_init\_\_(
    self,
    handle,
    relation,
    store\_name)](https://charmhub.io/openfga-k8s/libraries/openfga#openfgastorerequestevent-__init__)
* + [def snapshot(
    self)](https://charmhub.io/openfga-k8s/libraries/openfga#openfgastorerequestevent-snapshot)
* + [def restore(
    self,
    snapshot)](https://charmhub.io/openfga-k8s/libraries/openfga#openfgastorerequestevent-restore)
* [class OpenFGAProviderEvents](https://charmhub.io/openfga-k8s/libraries/openfga#openfgaproviderevents)
* [class OpenFGAProvider](https://charmhub.io/openfga-k8s/libraries/openfga#openfgaprovider)
* + [def \_\_init\_\_(
    self,
    charm,
    relation\_name,
    http\_port,
    grpc\_port,
    scheme)](https://charmhub.io/openfga-k8s/libraries/openfga#openfgaprovider-__init__)
* + [def update\_relation\_app\_data(
    self,
    data,
    relation\_id)](https://charmhub.io/openfga-k8s/libraries/openfga#openfgaprovider-update_relation_app_data)
* + [def update\_relations\_app\_data(
    self,
    data)](https://charmhub.io/openfga-k8s/libraries/openfga#openfgaprovider-update_relations_app_data)

#### class OpenfgaRequirerAppData

Description

Openfga requirer application databag model. None

#### class OpenfgaProviderBaseData

Description

Openfga provider base application databag model. None

#### class OpenfgaProviderAppData

Description

Openfga requirer application databag model. None

#### class OpenFGAStoreCreateEvent

Description

Event emitted when a new OpenFGA store is created. None

Methods

OpenFGAStoreCreateEvent.
\_\_init\_\_(

*self*

,
handle: Handle

,
store\_id: str
)

OpenFGAStoreCreateEvent.
snapshot(

*self*
)

Description

Save event. None

OpenFGAStoreCreateEvent.
restore(

*self*

,
snapshot: dict
)

Description

Restore event. None

#### class OpenFGAStoreRemovedEvent

Description

Event emitted when a new OpenFGA store is removed. None

#### class OpenFGARequirerEvents

Description

Custom charm events. None

#### class OpenFGARequires

This class defines the functionality for the 'requires' side of the 'openfga' relation.

Description

Hook events observed:
- relation-created
- relation-changed
- relation-departed

Methods

OpenFGARequires.
\_\_init\_\_(

*self*

,
charm: CharmBase

,
store\_name: str

,
relation\_name: str
)

OpenFGARequires.
get\_store\_info(

*self*
)

Description

Get the OpenFGA store and server info. None

#### class OpenFGAStoreRequestEvent

Description

Event emitted when a new OpenFGA store is requested. None

Methods

OpenFGAStoreRequestEvent.
\_\_init\_\_(

*self*

,
handle: Handle

,
relation: Relation

,
store\_name: str
)

OpenFGAStoreRequestEvent.
snapshot(

*self*
)

Description

Save event. None

OpenFGAStoreRequestEvent.
restore(

*self*

,
snapshot: dict
)

Description

Restore event. None

#### class OpenFGAProviderEvents

Description

Custom charm events. None

#### class OpenFGAProvider

Description

Requirer side of the openfga relation. None

Methods

OpenFGAProvider.
\_\_init\_\_(

*self*

,
charm: CharmBase

,
relation\_name: str

,
http\_port

,
grpc\_port

,
scheme
)

OpenFGAProvider.
update\_relation\_app\_data(

*self*

,
data: OpenfgaProviderAppData

,
relation\_id: int
)

OpenFGAProvider.
update\_relations\_app\_data(

*self*

,
data: OpenfgaProviderBaseData
)
