---
title: pingdirectory-go-client (Go)
description: Use the PingDirectory Go SDK to connect your Go application to your PingDirectory deployment.
component: config-automation-management-sdks
page_id: config-automation-management-sdks::products/pingdirectory/languages/go/getting_started
canonical_url: https://developer.pingidentity.com/config-automation-management-sdks/products/pingdirectory/languages/go/getting_started.html
revdate: March 19, 2025
section_ids:
  prerequisites: Prerequisites
  getting-started: Getting started
  connect-to-the-service: Connect to the service
  http-basic-authentication: HTTP basic authentication
  more-information: More information
---

# pingdirectory-go-client (Go)

|   |                                                                                                                                                                                                                               |
| - | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|   | The `pingdirectory-go-client` SDK has not yet been released to version 1.0.0. While general use of the SDK is not expected to change and is stable, later versions could contain minor changes to package and function names. |

Use the PingDirectory Go SDK to connect your Go application to your PingDirectory deployment.

The [pingdirectory-go-client](https://github.com/pingidentity/pingdirectory-go-client) module provides API bindings to the PingDirectory configuration API, allowing developers to invoke API services simply using strongly typed request and response payloads. The module can be included as a dependency in developer code.

## Prerequisites

The `pingdirectory-go-client` module requires a running PingDirectory instance. The module requires the use of the PingDirectory Configuration API, which must be enabled on the service and should be configured to run on the HTTPS Connection Handler.

Learn more about the PingDirectory Configuration API in [Using the Configuration API](https://docs.pingidentity.com/pingdirectory/latest/pingdirectoryproxy_server_administration_guide/pd_proxy_use_config_api.html) in the PingDirectory documentation.

## Getting started

The following example shows how to include the `pingdirectory-go-client` module in a developer project.

If you haven't done so already, initialize a new Go module project:

```
go mod init github.com/mygithubuser/my-go-project
```

To determine the version of the `pingdirectory-go-client` to use, take the full PingDirectory server version and omit the version separator.

For example, for a client for PingDirectory version 10.2.0.0, the version of the Go client to use will be v10200.

Use the standard Go commands to install `pingdirectory-go-client` to the project for your version of PingDirectory:

```
go get github.com/pingidentity/pingdirectory-go-client/v10200
```

## Connect to the service

The following sections describe the available options to connect the configuration management SDK to the PingDirectory service.

### HTTP basic authentication

When connecting to the PingDirectory service, you can use HTTP basic authentication, as in the following example:

```go
package main

import (
	"context"
	"crypto/tls"
	"fmt"
	"net/http"

	pingdirectory "github.com/pingidentity/pingdirectory-go-client/v10200/configurationapi"
)

func main() {

	pdHttpHost := "https://localhost:1443"
	pdUsername := "cn=administrator"
	pdPassword := "my-admin-password"

	// Initialize the API client
	clientConfig := pingdirectory.NewConfiguration()
	clientConfig.Servers = pingdirectory.ServerConfigurations{
		{
			URL: pdHttpHost + "/config",
		},
	}
	tr := &http.Transport{
		TLSClientConfig: &tls.Config{
			InsecureSkipVerify: false,
		},
	}
	clientConfig.HTTPClient = &http.Client{Transport: tr}

	apiClient := pingdirectory.NewAPIClient(clientConfig)

	// Set Basic Auth credentials in the Go context
	basicAuthContext := context.WithValue(context.Background(), pingdirectory.ContextBasicAuth, pingdirectory.BasicAuth{
		UserName: pdUsername,
		Password: pdPassword,
	})

	// Call an API from the `apiClient` object
	readResponse, httpResponse, err := apiClient.RootDnAPI.GetRootDn(basicAuthContext).Execute()
	if err != nil {
		panic(err)
	}

	fmt.Printf("Response HTTP Code: %d", httpResponse.StatusCode)
	fmt.Printf("Response: %v", readResponse)
}
```

## More information

* [PingDirectory documentation](https://docs.pingidentity.com/pingdirectory/latest/pd_ds_landing_page.html)

* [`pingdirectory-go-client` on the Go Package Repository](https://pkg.go.dev/github.com/pingidentity/pingdirectory-go-client)

* [`pingdirectory-go-client` on GitHub](https://github.com/pingidentity/pingdirectory-go-client)
