Skip to main content

Formal Admin Python SDK

This is the Python SDK for the Formal Admin API.

Installing

pip install formal-sdk

Example Use

Create and Get a Native Role

import os
import formal_sdk

if __name__ == '__main__':
    # Import data types for the requests
    # example: from formal_sdk.gen.admin.v1.client_name_pb2 import methodNameRequest
    # for NativeUserClient it will be native_user_pb2
    # the client_name_pb2 contains the request and response class
    # for example: CreateNativeUserRequest for CreateNativeUser method
    from formal_sdk.gen.admin.v1.native_user_pb2 import CreateNativeUserRequest

    # Initialize formal client
    api_key = os.environ.get('API_KEY')
    formal_client = formal_sdk.Client(api_key)

    # Create Native Role
    data_store_id = ""
    native_user_id = ""
    native_user_secret = ""
    use_as_default = False

    createdRole = formal_client.NativeUserClient.CreateNativeUser(CreateNativeUserRequest(
            data_store_id=data_store_id,
            native_user_id=native_user_id,
            native_user_secret=native_user_secret,
            use_as_default=use_as_default)
        )

    # Get Native Role
    from formal_sdk.gen.admin.v1.native_user_pb2 import GetNativeUserRequest
    # NOTE: inline import intended for examples to see the import pattern, follow PEP 8 recommendation to import on your code

    previousRole = formal_client.NativeUserClient.GetNativeUser(
        GetNativeUserRequest(data_store_id=data_store_id, native_user_id=native_user_id)
        )

    print(f'data_store_id: {previousRole.native_user.datastore_id}')
    print(f'native_role_id: {previousRole.native_user.native_user_id}')
    print(f'native_role_secret: {previousRole.native_user.native_user_secret}')
    print(f'use_as_default: {previousRole.native_user.use_as_default}')

    # Get sidecar tls certificate and private key
    from formal_sdk.gen.admin.v1.sidecar_pb2 import GetSidecarTlsCertificateByIdRequest 
    # NOTE: inline import intended for examples to see the import pattern, follow PEP 8 recommendation to import on your code

    sidecar_id = ""
    secret = formal_client.SidecarClient.GetSidecarTlsCertificateById(GetSidecarTlsCertificateByIdRequest(id=sidecar_id))
    print(f'secret: {secret.secret}')

    # Empty request parameter example
    from formal_sdk.gen.admin.v1.identities_pb2 import GetUsersRequest
    # NOTE: inline import intended for examples to see the import pattern, follow PEP 8 recommendation to import on your code

    user_client = formal_client.UserClient
    print(user_client.GetUsers(GetUsersRequest())) # empty param need to pass the request object without any param
    print(user_client.GetUsers(GetUsersRequest()).users[0].id)
    
import os
import formal_sdk

from formal_sdk.gen.admin.v1 import inventory_pb2 as inventory

if __name__ == '__main__':
    api_key = os.environ.get('API_KEY')
    new_client = formal_sdk.Client(api_key).InventoryClient

    data_store_id = ""
    path = ""
    column_dict = {
        "path": path,
        "name": "column",
        "data_type": "string"
    }

    # Create Inventory Object
    create_inventory_object_request = inventory.CreateInventoryObjectRequest(
            datastore_id=data_store_id,
            object_type="column",
            column=column_dict,
        )
    new_client.CreateInventoryObject(create_inventory_object_request)

    # Get Inventory Object
    get_inventory_object_request = inventory.GetInventoryObjectRequest(
        datastore_id=data_store_id,
        path=path
        )
    inventory_column = new_client.GetInventoryObject(get_inventory_object_request)

    print(f'datastore_id: {inventory_column.column.datastore_id}')
    print(f'path: {inventory_column.column.path}')
    print(f'name: {inventory_column.column.name}')
    print(f'data_type: {inventory_column.column.data_type}')

    # Create and Get Inventory Tag
    create_inventory_tag_request = inventory.CreateInventoryTagRequest(name="tag_name")
    create_inventory_tag_response = new_client.CreateInventoryTag(create_inventory_tag_request)
    print(f'tag_id: {create_inventory_tag_response.tag.id}')

    # Get all Inventory Tags
    inventory_tags = new_client.GetInventoryTags(inventory.GetInventoryTagsRequest()) # empty param
    for tag in inventory_tags.tags:
        print(f'tag_id: {tag.id}')
        print(f'tag_name: {tag.name}')
        print(f'created_at: {tag.created_at}')
        # Delete Inventory Tag
        new_client.DeleteInventoryTag(inventory.DeleteInventoryTagRequest(id=tag.id))

Data References

https://buf.build/formal/admin/

Metadata

Release files for formal-sdk 1.0.48

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

Source distribution (sdist)

Source distribution for formal-sdk 1.0.48
File Size Uploaded
formal_sdk-1.0.48.tar.gz 138.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for formal-sdk 1.0.48
File Interpreter ABI Platform
formal_sdk-1.0.48-py3-none-any.whl Python 3 none any Details

Total release size: 384.4 kB

Release files / formal_sdk-1.0.48.tar.gz

Download URL formal_sdk-1.0.48.tar.gz
Size 138.4 kB
Tags Source
SHA-256 checksum
How to use checksums
14c18667b92575fbca7a7efaaf82bb2b09f026f3a307fba703c9e83432b8823e
BLAKE2b-256 checksum
How to use checksums
f9023ba392f674b8f6c91309b4725b9b7550b9fb940f949c5800013952e6ae0e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.0.1 CPython/3.12.8

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 Jan 21, 2025.

Transparency log

Release files / formal_sdk-1.0.48-py3-none-any.whl

Download URL formal_sdk-1.0.48-py3-none-any.whl
Size 246.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5fbb93065ab36cb468f37cfb3f51b725df20bbf5ff2ab2659fbb4beeb159748e
BLAKE2b-256 checksum
How to use checksums
7c4e8ccf495388955334e2f22de1799c09da2c126d18b1fde711502284a3fd15
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.0.1 CPython/3.12.8

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 Jan 21, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.48 This release

2 release files

1.0.47

2 release files

1.0.46

2 release files

1.0.45

2 release files

1.0.44

2 release files

1.0.41

2 release files

1.0.40

2 release files

1.0.39

2 release files

1.0.38

2 release files

1.0.25

2 release files

1.0.24

2 release files

1.0.23

2 release files

1.0.20

2 release files

1.0.18

2 release files

1.0.16

2 release files

1.0.15

2 release files

1.0.14

2 release files

1.0.13

2 release files

1.0.12

2 release files

1.0.11

2 release files

1.0.10

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.2.0

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.2

2 release files

0.0.1

2 release files

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