Golang & Python SDKs

Thursday, August 22, 2024
sdk golang python

SDK cover image

We're excited to announce the release of native Golang and Python SDKs for Phase. These SDKs allow you to programmatically manage your application secrets with end-to-end encryption straight from your code.


SDK Features

Both SDKs offer a comprehensive set of features for managing secrets:

  • Create, read, update, and delete (CRUD) operations for secrets
  • End-to-end encryption
  • Full secret referencing
  • Bulk operations

Let's dive into some code examples to see these SDKs in action.

Golang SDK

Installation

First, install the SDK using go get:

go get github.com/phasehq/golang-sdk/phase

Usage Examples

Initialize the SDK:

phaseClient := phase.Init(serviceToken, "https://console.phase.dev", debug=false)

Create a secret:

opts := phase.CreateSecretsOptions{
    KeyValuePairs: []map[string]string{
        {"API_KEY": "my_secret_api_key"},
    },
    EnvName:    "Production",
    AppName:    "MyApp",
    SecretPath: map[string]string{"API_KEY": "/api/keys"},
}

err := phaseClient.Create(opts)

Retrieve a secret:

getOpts := phase.GetSecretOptions{
    EnvName:   "Production",
    AppName:   "MyApp",
    KeyToFind: "API_KEY",
}

secret, err := phaseClient.Get(getOpts)

Delete a secret:

deleteOpts := phase.DeleteSecretOptions{
    EnvName:     "Production",
    AppName:     "MyApp",
    KeyToDelete: "API_KEY",
    SecretPath:  "/api/keys",
}

err := phaseClient.Delete(deleteOpts)

Python SDK

Installation

Install the SDK using pip:

pip install phase-dev

Usage Examples

Initialize the SDK:

from phase import Phase

phase = Phase(
    host='https://console.phase.dev',
    pss=PHASE_SERVICE_TOKEN
)

Create secrets (bulk operation):

from phase import CreateSecretsOptions

create_options = CreateSecretsOptions(
    env_name="Development",
    app_name="MyApp",
    key_value_pairs=[
        {"API_KEY": "my_secret_api_key"},
        {"DB_PASSWORD": "super_secret_password"}
    ],
    secret_path="/api"
)
result = phase.create_secrets(create_options)

Retrieve all secrets:

from phase import GetAllSecretsOptions

get_options = GetAllSecretsOptions(
    env_name="Development",
    app_name="MyApp",
    tag="api",  # Optional: filter by tag
    secret_path="/api"
)
secrets = phase.get_all_secrets(get_options)

Delete a secret:

from phase import DeleteSecretOptions

delete_options = DeleteSecretOptions(
    env_name="Development",
    app_name="MyApp",
    key_to_delete="API_KEY",
    secret_path="/api"
)
result = phase.delete_secret(delete_options)

Secret Referencing

Both SDKs support secret referencing, allowing you to set the value of one secret to that of another. This is particularly useful for maintaining consistency across environments and avoiding repetition.


These new SDKs provide a powerful and flexible way to manage your application secrets programmatically. Whether you're working with Go or Python, you can now easily integrate Phase into your development workflow, ensuring that your secrets are always securely stored and easily accessible.

For more detailed information and additional features, please refer to the full documentation for the Golang SDK and Python SDK.

As always, we welcome your feedback and contributions. If you encounter any issues or have suggestions for improvements, please don't hesitate to reach out on our GitHub repository or Slack community.

CLOUD

The fastest and easiest way to get started with Phase. Spin up an app in minutes. Hosted in Frankfurt 🇩🇪

SELF-HOSTED

Run Phase on your own infrastructure and maintain full control. Perfect for customers with strict compliance requirements.