PingOne Platform APIs

Update Environment

   

PUT {{apiPath}}/environments/{{envID}}

To update the configuration of your environment, you can use PUT {{apiPath}}/environments/{{envID}} to modify the attributes of the specified environment. The sample shows an update to the name and description attributes.

The environment’s region attribute cannot be modified in a PUT request. The region attribute value is defined when the environment resource is created (POST request) and cannot be changed.

Prerequisites

Request Model

For property descriptions, refer to Environments data model.

Property Type Required?

billOfMaterials

Object

Optional

billOfMaterials.products[0]

Array

Optional

billOfMaterials.products[0].id

String

Required

billOfMaterials.products[0].type

String

Optional

billOfMaterials.products[0].description

String

Optional

billOfMaterials.products[0].console

String

Optional

billOfMaterials.products[0].softwareLicense.id

String

Optional

billOfMaterials.products[0].deployment.id

String

Optional

description

String

Optional

icon

String

Optional

license.id

String

Required

name

String

Required

organization.id

String

Optional

type

String

Required

Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

Body

raw ( application/json )

{
    "name": "Updated-Environment-Name",
    "region": "NA",
    "type": "SANDBOX",
    "description": "Updated Description",
    "billOfMaterials": {
       "products": [
        {
          "type": "PING_ONE_BASE",
           "description": "New environment product description",
           "console": {
          "href": "https://example.com"
        }
      }
    ]
  }
}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff --request PUT '{{apiPath}}/environments/{{envID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
    "name": "Updated-Environment-Name",
    "region": "NA",
    "type": "SANDBOX",
    "description": "Updated Description",
    "billOfMaterials": {
       "products": [
        {
          "type": "PING_ONE_BASE",
           "description": "New environment product description",
           "console": {
          "href": "https://example.com"
        }
      }
    ]
  }
}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}")
{
  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"": ""Updated-Environment-Name""," + "\n" +
@"    ""region"": ""NA""," + "\n" +
@"    ""type"": ""SANDBOX""," + "\n" +
@"    ""description"": ""Updated Description""," + "\n" +
@"    ""billOfMaterials"": {" + "\n" +
@"       ""products"": [" + "\n" +
@"        {" + "\n" +
@"          ""type"": ""PING_ONE_BASE""," + "\n" +
@"           ""description"": ""New environment product description""," + "\n" +
@"           ""console"": {" + "\n" +
@"          ""href"": ""https://example.com""" + "\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}}"
  method := "PUT"

  payload := strings.NewReader(`{
    "name": "Updated-Environment-Name",
    "region": "NA",
    "type": "SANDBOX",
    "description": "Updated Description",
    "billOfMaterials": {
       "products": [
        {
          "type": "PING_ONE_BASE",
           "description": "New environment product description",
           "console": {
          "href": "https://example.com"
        }
      }
    ]
  }
}`)

  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}} HTTP/1.1
Host: {{apiPath}}
Content-Type: application/json
Authorization: Bearer {{accessToken}}

{
    "name": "Updated-Environment-Name",
    "region": "NA",
    "type": "SANDBOX",
    "description": "Updated Description",
    "billOfMaterials": {
       "products": [
        {
          "type": "PING_ONE_BASE",
           "description": "New environment product description",
           "console": {
          "href": "https://example.com"
        }
      }
    ]
  }
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"name\": \"Updated-Environment-Name\",\n    \"region\": \"NA\",\n    \"type\": \"SANDBOX\",\n    \"description\": \"Updated Description\",\n    \"billOfMaterials\": {\n       \"products\": [\n        {\n          \"type\": \"PING_ONE_BASE\",\n           \"description\": \"New environment product description\",\n           \"console\": {\n          \"href\": \"https://example.com\"\n        }\n      }\n    ]\n  }\n}");
Request request = new Request.Builder()
  .url("{{apiPath}}/environments/{{envID}}")
  .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}}",
  "method": "PUT",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{accessToken}}"
  },
  "data": JSON.stringify({
    "name": "Updated-Environment-Name",
    "region": "NA",
    "type": "SANDBOX",
    "description": "Updated Description",
    "billOfMaterials": {
      "products": [
        {
          "type": "PING_ONE_BASE",
          "description": "New environment product description",
          "console": {
            "href": "https://example.com"
          }
        }
      ]
    }
  }),
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
var request = require('request');
var options = {
  'method': 'PUT',
  'url': '{{apiPath}}/environments/{{envID}}',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {{accessToken}}'
  },
  body: JSON.stringify({
    "name": "Updated-Environment-Name",
    "region": "NA",
    "type": "SANDBOX",
    "description": "Updated Description",
    "billOfMaterials": {
      "products": [
        {
          "type": "PING_ONE_BASE",
          "description": "New environment product description",
          "console": {
            "href": "https://example.com"
          }
        }
      ]
    }
  })

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

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

payload = json.dumps({
  "name": "Updated-Environment-Name",
  "region": "NA",
  "type": "SANDBOX",
  "description": "Updated Description",
  "billOfMaterials": {
    "products": [
      {
        "type": "PING_ONE_BASE",
        "description": "New environment product description",
        "console": {
          "href": "https://example.com"
        }
      }
    ]
  }
})
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}}');
$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": "Updated-Environment-Name",\n    "region": "NA",\n    "type": "SANDBOX",\n    "description": "Updated Description",\n    "billOfMaterials": {\n       "products": [\n        {\n          "type": "PING_ONE_BASE",\n           "description": "New environment product description",\n           "console": {\n          "href": "https://example.com"\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}}")

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": "Updated-Environment-Name",
  "region": "NA",
  "type": "SANDBOX",
  "description": "Updated Description",
  "billOfMaterials": {
    "products": [
      {
        "type": "PING_ONE_BASE",
        "description": "New environment product description",
        "console": {
          "href": "https://example.com"
        }
      }
    ]
  }
})

response = http.request(request)
puts response.read_body
let parameters = "{\n    \"name\": \"Updated-Environment-Name\",\n    \"region\": \"NA\",\n    \"type\": \"SANDBOX\",\n    \"description\": \"Updated Description\",\n    \"billOfMaterials\": {\n       \"products\": [\n        {\n          \"type\": \"PING_ONE_BASE\",\n           \"description\": \"New environment product description\",\n           \"console\": {\n          \"href\": \"https://example.com\"\n        }\n      }\n    ]\n  }\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{apiPath}}/environments/{{envID}}")!,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"
        },
        "organization": {
            "href": "https://api.pingone.com/v1/organizations/bed432e6-676a-4ebe-b5a5-6b3b54e46bda"
        },
        "license": {
            "href": "https://api.pingone.com/v1/organizations/bed432e6-676a-4ebe-b5a5-6b3b54e46bda/licenses/3f06970a-3235-46cb-b46f-cf6dfee2bb84"
        },
        "index": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/index"
        },
        "populations": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/populations"
        },
        "users": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users"
        },
        "applications": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/applications"
        },
        "activities": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/activities"
        },
        "branding": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/branding"
        },
        "resources": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/resources"
        },
        "passwordPolicies": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/passwordPolicies"
        },
        "userActivities": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/userActivities"
        },
        "signOnPolicies": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/signOnPolicies"
        },
        "keys": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/keys"
        },
        "templates": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/templates"
        },
        "notificationsSettings": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/notificationsSettings"
        },
        "schemas": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/schemas"
        },
        "gateways": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/gateways"
        },
        "capabilities": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/capabilities"
        },
        "activeIdentityCounts": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/activeIdentityCounts"
        },
        "propagation/plans": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/propagation/plans"
        },
        "propagation/stores": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/propagation/stores"
        },
        "propagation/revisions/id:latest": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/propagation/revisions/id:latest"
        },
        "billOfMaterials": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/billOfMaterials"
        }
    },
    "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6",
    "name": "Updated-Environment-Name",
    "description": "Updated Description",
    "organization": {
        "id": "bed432e6-676a-4ebe-b5a5-6b3b54e46bda"
    },
    "type": "SANDBOX",
    "region": "NA",
    "createdAt": "2021-05-12T18:32:14.457Z",
    "updatedAt": "2025-11-19T18:05:55.202Z",
    "license": {
        "id": "3f06970a-3235-46cb-b46f-cf6dfee2bb84"
    }
}