Skip to main content

Formal SDK

Project description

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/

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

formal_sdk-1.0.47.tar.gz (138.4 kB view details)

Uploaded Source

Built Distribution

formal_sdk-1.0.47-py3-none-any.whl (246.1 kB view details)

Uploaded Python 3

File details

Details for the file formal_sdk-1.0.47.tar.gz.

File metadata

  • Download URL: formal_sdk-1.0.47.tar.gz
  • Upload date:
  • Size: 138.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for formal_sdk-1.0.47.tar.gz
Algorithm Hash digest
SHA256 1338c106e8654e29d5dac5200b8eb11013f2fda8406def66a7923753d6afef85
MD5 3a1b1d47f2b948e52ce21d71e4ad055c
BLAKE2b-256 8a0c131bc59e3f25e8f0abdf010d4e93574c57aee6f5d3d167fd394b37674fd8

See more details on using hashes here.

File details

Details for the file formal_sdk-1.0.47-py3-none-any.whl.

File metadata

  • Download URL: formal_sdk-1.0.47-py3-none-any.whl
  • Upload date:
  • Size: 246.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for formal_sdk-1.0.47-py3-none-any.whl
Algorithm Hash digest
SHA256 171dd44ff59b33b059b9c48e521036e92ef9feaa66f7dcaf2186e02019f8b77b
MD5 d014fc193490cf74a1c1a63c28ada1a2
BLAKE2b-256 eed24f05adb05c02910c7783a5886e1cc69ffa9dfc929dbe6646866e5e9af771

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page