PingOne Platform APIs

Update LDAP Gateway

PUT {{apiPath}}/environments/{{envID}}/gateways/{{gatewayID}}

The PUT {{apiPath}}/environments/{{envID}}/gateways/{{gatewayID}} operation updates the property values of the specified gateway resource.

Prerequisites

Request Model

For property descriptions, refer to Gateway base data model.

Property Type Required?

credentials

Object[]

Optional

description

String

Optional

_embedded.instances

Object[]

Optional

enabled

Boolean

Required

name

String

Required

supportedVersions

Object

Optional

supportedVersions.version

String

Optional

supportedVersions.image

String

Optional

supportedVersions.recommended

Boolean

Optional

supportedVersions.latest

Boolean

Optional

type

String

Required

For LDAP gateway property descriptions, refer to Gateway LDAP data model.

Property Type Required?

bindDN

String

Required

bindPassword

String

Required

connectionSecurity

String

Optional

kerberos

Object

Optional

kerberos.serviceAccountPassword

String

Optional

kerberos.serviceAccountUserPrincipalName

String

Required

kerberos.minutesToRetainPreviousCredentials

Integer

Optional

serversHostAndPort

String[]

Required

userTypes

Object[]

Required

userTypes.allowPasswordChanges

Boolean

Optional

userTypes.updateUserOnSuccessfulAuthentication

Boolean

Optional

userTypes.id

UUID

Required

userTypes.name

String

Required

userTypes.newUserLookup

Object

Optional

userTypes.newUserLookup.attributeMappings

Object[]

Required

userTypes.newUserLookup.attributeMappings.name

String

Required

userTypes.newUserLookup.attributeMappings.value

Object

Required

userTypes.newUserLookup.ldapFilterPattern

String

Optional

userTypes.newUserLookup.population

String

Optional

userTypes.newUserLookup.population.id

UUID

Optional

userTypes.orderedCorrelationAttributes

Object[]

Optional

userTypes.passwordAuthority

String

Required

userTypes.searchBaseDn

String

Optional

validateTlsCertificates

Boolean

Optional

vendor

String

Required

Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

Body

raw ( application/json )

{
    "name": "LDAP-Gateway-MyTest",
    "description": "My LDAP gateway",
    "type": "LDAP",
    "enabled": false,
    "vendor": "PingDirectory",
    "serversHostAndPort": [
        "host1:389",
        "host.domain.com:389",
        "10.10.10.10:333",
        "2001:0db8:85a3:0000:0000:8a2e:0370:7334:389"
    ],
    "bindDN": "cn=svc-account",
    "bindPassword": "{{bindPassword}}",
    "searchBaseDN": "o=example",
    "userCorrelationFilterPattern": "(|(uid=$username$)(mail=$username$))",
    "userTypes": [
        {
            "id": "{{userTypeID}}",
            "name": "myType",
            "passwordAuthority": "LDAP",
            "searchBaseDn": "dc=example,dc=com",
            "orderedCorrelationAttributes": [
                "externalid",
                "uid",
                "username"
            ],
            "allowPasswordChanges": true,
            "updateUserOnSuccessfulAuthentication": true,
            "newUserLookup": {
                "ldapFilterPattern": "(|(uid=${identifier})(mail=${identifier}))",
                "population": {
                    "id": "{{popID}}"
                },
                "attributeMappings": [
                    {
                        "name": "username",
                        "value": "${ldapAttributes.uid}"
                    }
                ]
            }
        }
    ]
}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff --request PUT '{{apiPath}}/environments/{{envID}}/gateways/{{gatewayID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
    "name": "LDAP-Gateway-MyTest",
    "description": "My LDAP gateway",
    "type": "LDAP",
    "enabled": false,
    "vendor": "PingDirectory",
    "serversHostAndPort": [
        "host1:389",
        "host.domain.com:389",
        "10.10.10.10:333",
        "2001:0db8:85a3:0000:0000:8a2e:0370:7334:389"
    ],
    "bindDN": "cn=svc-account",
    "bindPassword": "{{bindPassword}}",
    "searchBaseDN": "o=example",
    "userCorrelationFilterPattern": "(|(uid=$username$)(mail=$username$))",
    "userTypes": [
        {
            "id": "{{userTypeID}}",
            "name": "myType",
            "passwordAuthority": "LDAP",
            "searchBaseDn": "dc=example,dc=com",
            "orderedCorrelationAttributes": [
                "externalid",
                "uid",
                "username"
            ],
            "allowPasswordChanges": true,
            "updateUserOnSuccessfulAuthentication": true,
            "newUserLookup": {
                "ldapFilterPattern": "(|(uid=${identifier})(mail=${identifier}))",
                "population": {
                    "id": "{{popID}}"
                },
                "attributeMappings": [
                    {
                        "name": "username",
                        "value": "${ldapAttributes.uid}"
                    }
                ]
            }
        }
    ]
}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/gateways/{{gatewayID}}")
{
  MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Put);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer {{accessToken}}");
var body = @"{" + "\n" +
@"    ""name"": ""LDAP-Gateway-MyTest""," + "\n" +
@"    ""description"": ""My LDAP gateway""," + "\n" +
@"    ""type"": ""LDAP""," + "\n" +
@"    ""enabled"": false," + "\n" +
@"    ""vendor"": ""PingDirectory""," + "\n" +
@"    ""serversHostAndPort"": [" + "\n" +
@"        ""host1:389""," + "\n" +
@"        ""host.domain.com:389""," + "\n" +
@"        ""10.10.10.10:333""," + "\n" +
@"        ""2001:0db8:85a3:0000:0000:8a2e:0370:7334:389""" + "\n" +
@"    ]," + "\n" +
@"    ""bindDN"": ""cn=svc-account""," + "\n" +
@"    ""bindPassword"": ""{{bindPassword}}""," + "\n" +
@"    ""searchBaseDN"": ""o=example""," + "\n" +
@"    ""userCorrelationFilterPattern"": ""(|(uid=$username$)(mail=$username$))""," + "\n" +
@"    ""userTypes"": [" + "\n" +
@"        {" + "\n" +
@"            ""id"": ""{{userTypeID}}""," + "\n" +
@"            ""name"": ""myType""," + "\n" +
@"            ""passwordAuthority"": ""LDAP""," + "\n" +
@"            ""searchBaseDn"": ""dc=example,dc=com""," + "\n" +
@"            ""orderedCorrelationAttributes"": [" + "\n" +
@"                ""externalid""," + "\n" +
@"                ""uid""," + "\n" +
@"                ""username""" + "\n" +
@"            ]," + "\n" +
@"            ""allowPasswordChanges"": true," + "\n" +
@"            ""updateUserOnSuccessfulAuthentication"": true," + "\n" +
@"            ""newUserLookup"": {" + "\n" +
@"                ""ldapFilterPattern"": ""(|(uid=${identifier})(mail=${identifier}))""," + "\n" +
@"                ""population"": {" + "\n" +
@"                    ""id"": ""{{popID}}""" + "\n" +
@"                }," + "\n" +
@"                ""attributeMappings"": [" + "\n" +
@"                    {" + "\n" +
@"                        ""name"": ""username""," + "\n" +
@"                        ""value"": ""${ldapAttributes.uid}""" + "\n" +
@"                    }" + "\n" +
@"                ]" + "\n" +
@"            }" + "\n" +
@"        }" + "\n" +
@"    ]" + "\n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
package main

import (
  "fmt"
  "strings"
  "net/http"
  "io"
)

func main() {

  url := "{{apiPath}}/environments/{{envID}}/gateways/{{gatewayID}}"
  method := "PUT"

  payload := strings.NewReader(`{
    "name": "LDAP-Gateway-MyTest",
    "description": "My LDAP gateway",
    "type": "LDAP",
    "enabled": false,
    "vendor": "PingDirectory",
    "serversHostAndPort": [
        "host1:389",
        "host.domain.com:389",
        "10.10.10.10:333",
        "2001:0db8:85a3:0000:0000:8a2e:0370:7334:389"
    ],
    "bindDN": "cn=svc-account",
    "bindPassword": "{{bindPassword}}",
    "searchBaseDN": "o=example",
    "userCorrelationFilterPattern": "(|(uid=$username$)(mail=$username$))",
    "userTypes": [
        {
            "id": "{{userTypeID}}",
            "name": "myType",
            "passwordAuthority": "LDAP",
            "searchBaseDn": "dc=example,dc=com",
            "orderedCorrelationAttributes": [
                "externalid",
                "uid",
                "username"
            ],
            "allowPasswordChanges": true,
            "updateUserOnSuccessfulAuthentication": true,
            "newUserLookup": {
                "ldapFilterPattern": "(|(uid=${identifier})(mail=${identifier}))",
                "population": {
                    "id": "{{popID}}"
                },
                "attributeMappings": [
                    {
                        "name": "username",
                        "value": "${ldapAttributes.uid}"
                    }
                ]
            }
        }
    ]
}`)

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, payload)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("Content-Type", "application/json")
  req.Header.Add("Authorization", "Bearer {{accessToken}}")

  res, err := client.Do(req)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  body, err := io.ReadAll(res.Body)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(string(body))
}
PUT /environments/{{envID}}/gateways/{{gatewayID}} HTTP/1.1
Host: {{apiPath}}
Content-Type: application/json
Authorization: Bearer {{accessToken}}

{
    "name": "LDAP-Gateway-MyTest",
    "description": "My LDAP gateway",
    "type": "LDAP",
    "enabled": false,
    "vendor": "PingDirectory",
    "serversHostAndPort": [
        "host1:389",
        "host.domain.com:389",
        "10.10.10.10:333",
        "2001:0db8:85a3:0000:0000:8a2e:0370:7334:389"
    ],
    "bindDN": "cn=svc-account",
    "bindPassword": "{{bindPassword}}",
    "searchBaseDN": "o=example",
    "userCorrelationFilterPattern": "(|(uid=$username$)(mail=$username$))",
    "userTypes": [
        {
            "id": "{{userTypeID}}",
            "name": "myType",
            "passwordAuthority": "LDAP",
            "searchBaseDn": "dc=example,dc=com",
            "orderedCorrelationAttributes": [
                "externalid",
                "uid",
                "username"
            ],
            "allowPasswordChanges": true,
            "updateUserOnSuccessfulAuthentication": true,
            "newUserLookup": {
                "ldapFilterPattern": "(|(uid=${identifier})(mail=${identifier}))",
                "population": {
                    "id": "{{popID}}"
                },
                "attributeMappings": [
                    {
                        "name": "username",
                        "value": "${ldapAttributes.uid}"
                    }
                ]
            }
        }
    ]
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"name\": \"LDAP-Gateway-MyTest\",\n    \"description\": \"My LDAP gateway\",\n    \"type\": \"LDAP\",\n    \"enabled\": false,\n    \"vendor\": \"PingDirectory\",\n    \"serversHostAndPort\": [\n        \"host1:389\",\n        \"host.domain.com:389\",\n        \"10.10.10.10:333\",\n        \"2001:0db8:85a3:0000:0000:8a2e:0370:7334:389\"\n    ],\n    \"bindDN\": \"cn=svc-account\",\n    \"bindPassword\": \"{{bindPassword}}\",\n    \"searchBaseDN\": \"o=example\",\n    \"userCorrelationFilterPattern\": \"(|(uid=$username$)(mail=$username$))\",\n    \"userTypes\": [\n        {\n            \"id\": \"{{userTypeID}}\",\n            \"name\": \"myType\",\n            \"passwordAuthority\": \"LDAP\",\n            \"searchBaseDn\": \"dc=example,dc=com\",\n            \"orderedCorrelationAttributes\": [\n                \"externalid\",\n                \"uid\",\n                \"username\"\n            ],\n            \"allowPasswordChanges\": true,\n            \"updateUserOnSuccessfulAuthentication\": true,\n            \"newUserLookup\": {\n                \"ldapFilterPattern\": \"(|(uid=${identifier})(mail=${identifier}))\",\n                \"population\": {\n                    \"id\": \"{{popID}}\"\n                },\n                \"attributeMappings\": [\n                    {\n                        \"name\": \"username\",\n                        \"value\": \"${ldapAttributes.uid}\"\n                    }\n                ]\n            }\n        }\n    ]\n}");
Request request = new Request.Builder()
  .url("{{apiPath}}/environments/{{envID}}/gateways/{{gatewayID}}")
  .method("PUT", body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer {{accessToken}}")
  .build();
Response response = client.newCall(request).execute();
var settings = {
  "url": "{{apiPath}}/environments/{{envID}}/gateways/{{gatewayID}}",
  "method": "PUT",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{accessToken}}"
  },
  "data": JSON.stringify({
    "name": "LDAP-Gateway-MyTest",
    "description": "My LDAP gateway",
    "type": "LDAP",
    "enabled": false,
    "vendor": "PingDirectory",
    "serversHostAndPort": [
      "host1:389",
      "host.domain.com:389",
      "10.10.10.10:333",
      "2001:0db8:85a3:0000:0000:8a2e:0370:7334:389"
    ],
    "bindDN": "cn=svc-account",
    "bindPassword": "{{bindPassword}}",
    "searchBaseDN": "o=example",
    "userCorrelationFilterPattern": "(|(uid=$username$)(mail=$username$))",
    "userTypes": [
      {
        "id": "{{userTypeID}}",
        "name": "myType",
        "passwordAuthority": "LDAP",
        "searchBaseDn": "dc=example,dc=com",
        "orderedCorrelationAttributes": [
          "externalid",
          "uid",
          "username"
        ],
        "allowPasswordChanges": true,
        "updateUserOnSuccessfulAuthentication": true,
        "newUserLookup": {
          "ldapFilterPattern": "(|(uid=${identifier})(mail=${identifier}))",
          "population": {
            "id": "{{popID}}"
          },
          "attributeMappings": [
            {
              "name": "username",
              "value": "${ldapAttributes.uid}"
            }
          ]
        }
      }
    ]
  }),
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
var request = require('request');
var options = {
  'method': 'PUT',
  'url': '{{apiPath}}/environments/{{envID}}/gateways/{{gatewayID}}',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {{accessToken}}'
  },
  body: JSON.stringify({
    "name": "LDAP-Gateway-MyTest",
    "description": "My LDAP gateway",
    "type": "LDAP",
    "enabled": false,
    "vendor": "PingDirectory",
    "serversHostAndPort": [
      "host1:389",
      "host.domain.com:389",
      "10.10.10.10:333",
      "2001:0db8:85a3:0000:0000:8a2e:0370:7334:389"
    ],
    "bindDN": "cn=svc-account",
    "bindPassword": "{{bindPassword}}",
    "searchBaseDN": "o=example",
    "userCorrelationFilterPattern": "(|(uid=$username$)(mail=$username$))",
    "userTypes": [
      {
        "id": "{{userTypeID}}",
        "name": "myType",
        "passwordAuthority": "LDAP",
        "searchBaseDn": "dc=example,dc=com",
        "orderedCorrelationAttributes": [
          "externalid",
          "uid",
          "username"
        ],
        "allowPasswordChanges": true,
        "updateUserOnSuccessfulAuthentication": true,
        "newUserLookup": {
          "ldapFilterPattern": "(|(uid=${identifier})(mail=${identifier}))",
          "population": {
            "id": "{{popID}}"
          },
          "attributeMappings": [
            {
              "name": "username",
              "value": "${ldapAttributes.uid}"
            }
          ]
        }
      }
    ]
  })

};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});
import requests
import json

url = "{{apiPath}}/environments/{{envID}}/gateways/{{gatewayID}}"

payload = json.dumps({
  "name": "LDAP-Gateway-MyTest",
  "description": "My LDAP gateway",
  "type": "LDAP",
  "enabled": False,
  "vendor": "PingDirectory",
  "serversHostAndPort": [
    "host1:389",
    "host.domain.com:389",
    "10.10.10.10:333",
    "2001:0db8:85a3:0000:0000:8a2e:0370:7334:389"
  ],
  "bindDN": "cn=svc-account",
  "bindPassword": "{{bindPassword}}",
  "searchBaseDN": "o=example",
  "userCorrelationFilterPattern": "(|(uid=$username$)(mail=$username$))",
  "userTypes": [
    {
      "id": "{{userTypeID}}",
      "name": "myType",
      "passwordAuthority": "LDAP",
      "searchBaseDn": "dc=example,dc=com",
      "orderedCorrelationAttributes": [
        "externalid",
        "uid",
        "username"
      ],
      "allowPasswordChanges": True,
      "updateUserOnSuccessfulAuthentication": True,
      "newUserLookup": {
        "ldapFilterPattern": "(|(uid=${identifier})(mail=${identifier}))",
        "population": {
          "id": "{{popID}}"
        },
        "attributeMappings": [
          {
            "name": "username",
            "value": "${ldapAttributes.uid}"
          }
        ]
      }
    }
  ]
})
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text)
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{apiPath}}/environments/{{envID}}/gateways/{{gatewayID}}');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'Content-Type' => 'application/json',
  'Authorization' => 'Bearer {{accessToken}}'
));
$request->setBody('{\n    "name": "LDAP-Gateway-MyTest",\n    "description": "My LDAP gateway",\n    "type": "LDAP",\n    "enabled": false,\n    "vendor": "PingDirectory",\n    "serversHostAndPort": [\n        "host1:389",\n        "host.domain.com:389",\n        "10.10.10.10:333",\n        "2001:0db8:85a3:0000:0000:8a2e:0370:7334:389"\n    ],\n    "bindDN": "cn=svc-account",\n    "bindPassword": "{{bindPassword}}",\n    "searchBaseDN": "o=example",\n    "userCorrelationFilterPattern": "(|(uid=$username$)(mail=$username$))",\n    "userTypes": [\n        {\n            "id": "{{userTypeID}}",\n            "name": "myType",\n            "passwordAuthority": "LDAP",\n            "searchBaseDn": "dc=example,dc=com",\n            "orderedCorrelationAttributes": [\n                "externalid",\n                "uid",\n                "username"\n            ],\n            "allowPasswordChanges": true,\n            "updateUserOnSuccessfulAuthentication": true,\n            "newUserLookup": {\n                "ldapFilterPattern": "(|(uid=${identifier})(mail=${identifier}))",\n                "population": {\n                    "id": "{{popID}}"\n                },\n                "attributeMappings": [\n                    {\n                        "name": "username",\n                        "value": "${ldapAttributes.uid}"\n                    }\n                ]\n            }\n        }\n    ]\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
require "uri"
require "json"
require "net/http"

url = URI("{{apiPath}}/environments/{{envID}}/gateways/{{gatewayID}}")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Put.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer {{accessToken}}"
request.body = JSON.dump({
  "name": "LDAP-Gateway-MyTest",
  "description": "My LDAP gateway",
  "type": "LDAP",
  "enabled": false,
  "vendor": "PingDirectory",
  "serversHostAndPort": [
    "host1:389",
    "host.domain.com:389",
    "10.10.10.10:333",
    "2001:0db8:85a3:0000:0000:8a2e:0370:7334:389"
  ],
  "bindDN": "cn=svc-account",
  "bindPassword": "{{bindPassword}}",
  "searchBaseDN": "o=example",
  "userCorrelationFilterPattern": "(|(uid=\$username\$)(mail=\$username\$))",
  "userTypes": [
    {
      "id": "{{userTypeID}}",
      "name": "myType",
      "passwordAuthority": "LDAP",
      "searchBaseDn": "dc=example,dc=com",
      "orderedCorrelationAttributes": [
        "externalid",
        "uid",
        "username"
      ],
      "allowPasswordChanges": true,
      "updateUserOnSuccessfulAuthentication": true,
      "newUserLookup": {
        "ldapFilterPattern": "(|(uid=\${identifier})(mail=\${identifier}))",
        "population": {
          "id": "{{popID}}"
        },
        "attributeMappings": [
          {
            "name": "username",
            "value": "\${ldapAttributes.uid}"
          }
        ]
      }
    }
  ]
})

response = http.request(request)
puts response.read_body
let parameters = "{\n    \"name\": \"LDAP-Gateway-MyTest\",\n    \"description\": \"My LDAP gateway\",\n    \"type\": \"LDAP\",\n    \"enabled\": false,\n    \"vendor\": \"PingDirectory\",\n    \"serversHostAndPort\": [\n        \"host1:389\",\n        \"host.domain.com:389\",\n        \"10.10.10.10:333\",\n        \"2001:0db8:85a3:0000:0000:8a2e:0370:7334:389\"\n    ],\n    \"bindDN\": \"cn=svc-account\",\n    \"bindPassword\": \"{{bindPassword}}\",\n    \"searchBaseDN\": \"o=example\",\n    \"userCorrelationFilterPattern\": \"(|(uid=$username$)(mail=$username$))\",\n    \"userTypes\": [\n        {\n            \"id\": \"{{userTypeID}}\",\n            \"name\": \"myType\",\n            \"passwordAuthority\": \"LDAP\",\n            \"searchBaseDn\": \"dc=example,dc=com\",\n            \"orderedCorrelationAttributes\": [\n                \"externalid\",\n                \"uid\",\n                \"username\"\n            ],\n            \"allowPasswordChanges\": true,\n            \"updateUserOnSuccessfulAuthentication\": true,\n            \"newUserLookup\": {\n                \"ldapFilterPattern\": \"(|(uid=${identifier})(mail=${identifier}))\",\n                \"population\": {\n                    \"id\": \"{{popID}}\"\n                },\n                \"attributeMappings\": [\n                    {\n                        \"name\": \"username\",\n                        \"value\": \"${ldapAttributes.uid}\"\n                    }\n                ]\n            }\n        }\n    ]\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{apiPath}}/environments/{{envID}}/gateways/{{gatewayID}}")!,timeoutInterval: Double.infinity)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("Bearer {{accessToken}}", forHTTPHeaderField: "Authorization")

request.httpMethod = "PUT"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in
  guard let data = data else {
    print(String(describing: error))
    return
  }
  print(String(data: data, encoding: .utf8)!)
}

task.resume()

Example Response

200 OK

{
    "_links": {
        "self": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/gateways/d2874a98-26df-490c-844a-c345f35594a1"
        },
        "environment": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        },
        "instances": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/gateways/d2874a98-26df-490c-844a-c345f35594a1/instances"
        },
        "credentials": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/gateways/d2874a98-26df-490c-844a-c345f35594a1/credentials"
        }
    },
    "id": "d2874a98-26df-490c-844a-c345f35594a1",
    "environment": {
        "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
    },
    "name": "LDAP-Gateway-MyTest",
    "description": "My LDAP gateway",
    "type": "LDAP",
    "enabled": false,
    "supportedVersions": [
        {
            "version": "3.0.4",
            "image": "pingidentity/pingone-ldap-gateway:3.0.4",
            "recommended": true,
            "latest": true
        },
        {
            "version": "3.0.1",
            "image": "pingidentity/pingone-ldap-gateway:3.0.1",
            "supportEndsOn": "2024-12-31T00:00:00.000Z",
            "daysUntilSupportEnds": 248
        },
        {
            "version": "2.3.4",
            "image": "pingidentity/pingone-ldap-gateway:2.3.4",
            "supportEndsOn": "2024-11-30T00:00:00.000Z",
            "daysUntilSupportEnds": 217
        },
        {
            "version": "2.3.4",
            "image": "gcr.io/ping-identity/pingone/pingone-ldap-gateway:2.3.4",
            "supportEndsOn": "2024-11-30T00:00:00.000Z",
            "daysUntilSupportEnds": 217
        }
    ],
    "currentAlerts": [
        {
            "category": "No Instances Connected",
            "detail": "No gateway instances are connected. All operations that require access to this gateway will fail.",
            "severity": "ERROR"
        }
    ],
    "bindDN": "cn=svc-account",
    "connectionSecurity": "None",
    "vendor": "PingDirectory",
    "followReferrals": false,
    "userTypes": [
        {
            "id": "07b24f61-9031-44d1-88bc-e7279d7fd754",
            "name": "myType",
            "passwordAuthority": "LDAP",
            "searchBaseDn": "dc=example,dc=com",
            "orderedCorrelationAttributes": [
                "externalid",
                "uid",
                "username"
            ],
            "newUserLookup": {
                "ldapFilterPattern": "(|(uid=${identifier})(mail=${identifier}))",
                "population": {
                    "id": "f5d70107-ee11-481c-a73d-f3d812808d76"
                },
                "attributeMappings": [
                    {
                        "name": "username",
                        "value": "${ldapAttributes.uid}"
                    }
                ]
            },
            "allowPasswordChanges": true,
            "updateUserOnSuccessfulAuthentication": true
        }
    ],
    "validateTlsCertificates": true,
    "serversHostAndPort": [
        "host1:389",
        "host.domain.com:389",
        "10.10.10.10:333",
        "2001:0db8:85a3:0000:0000:8a2e:0370:7334:389"
    ]
}