Create Agreement
POST {{apiPath}}/environments/{{envID}}/agreements
The POST {{apiPath}}/environments/{{envID}}/agreements endpoint creates a new agreement resource in the specified environment.
The request body must include a unique name property value, and it can also include the reconsentPeriodDays property, which is an optional property to specify the number of days before the user must provide consent to the terms of service again.
Prerequisites
-
Refer to Agreement Management for important overview information.
Request Model
For property descriptions, refer to Agreements data model.
| Property | Type | Required? |
|---|---|---|
|
String |
Optional |
|
Boolean |
Required |
|
String |
Required |
|
Integer |
Optional |
Example Request
-
cURL
-
C#
-
Go
-
HTTP
-
Java
-
jQuery
-
NodeJS
-
Python
-
PHP
-
Ruby
-
Swift
curl --location --globoff '{{apiPath}}/environments/{{envID}}/agreements' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
"name": "Agreement_2",
"description": "Terms of service agreement",
"reconsentPeriodDays": 180,
"enabled": false
}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/agreements")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Post);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer {{accessToken}}");
var body = @"{" + "\n" +
@" ""name"": ""Agreement_2""," + "\n" +
@" ""description"": ""Terms of service agreement""," + "\n" +
@" ""reconsentPeriodDays"": 180," + "\n" +
@" ""enabled"": false" + "\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}}/agreements"
method := "POST"
payload := strings.NewReader(`{
"name": "Agreement_2",
"description": "Terms of service agreement",
"reconsentPeriodDays": 180,
"enabled": false
}`)
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))
}
POST /environments/{{envID}}/agreements HTTP/1.1
Host: {{apiPath}}
Content-Type: application/json
Authorization: Bearer {{accessToken}}
{
"name": "Agreement_2",
"description": "Terms of service agreement",
"reconsentPeriodDays": 180,
"enabled": false
}
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"name\": \"Agreement_2\",\n \"description\": \"Terms of service agreement\",\n \"reconsentPeriodDays\": 180,\n \"enabled\": false\n}");
Request request = new Request.Builder()
.url("{{apiPath}}/environments/{{envID}}/agreements")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer {{accessToken}}")
.build();
Response response = client.newCall(request).execute();
var settings = {
"url": "{{apiPath}}/environments/{{envID}}/agreements",
"method": "POST",
"timeout": 0,
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer {{accessToken}}"
},
"data": JSON.stringify({
"name": "Agreement_2",
"description": "Terms of service agreement",
"reconsentPeriodDays": 180,
"enabled": false
}),
};
$.ajax(settings).done(function (response) {
console.log(response);
});
var request = require('request');
var options = {
'method': 'POST',
'url': '{{apiPath}}/environments/{{envID}}/agreements',
'headers': {
'Content-Type': 'application/json',
'Authorization': 'Bearer {{accessToken}}'
},
body: JSON.stringify({
"name": "Agreement_2",
"description": "Terms of service agreement",
"reconsentPeriodDays": 180,
"enabled": false
})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import requests
import json
url = "{{apiPath}}/environments/{{envID}}/agreements"
payload = json.dumps({
"name": "Agreement_2",
"description": "Terms of service agreement",
"reconsentPeriodDays": 180,
"enabled": False
})
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{apiPath}}/environments/{{envID}}/agreements');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/json',
'Authorization' => 'Bearer {{accessToken}}'
));
$request->setBody('{\n "name": "Agreement_2",\n "description": "Terms of service agreement",\n "reconsentPeriodDays": 180,\n "enabled": false\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}}/agreements")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer {{accessToken}}"
request.body = JSON.dump({
"name": "Agreement_2",
"description": "Terms of service agreement",
"reconsentPeriodDays": 180,
"enabled": false
})
response = http.request(request)
puts response.read_body
let parameters = "{\n \"name\": \"Agreement_2\",\n \"description\": \"Terms of service agreement\",\n \"reconsentPeriodDays\": 180,\n \"enabled\": false\n}"
let postData = parameters.data(using: .utf8)
var request = URLRequest(url: URL(string: "{{apiPath}}/environments/{{envID}}/agreements")!,timeoutInterval: Double.infinity)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("Bearer {{accessToken}}", forHTTPHeaderField: "Authorization")
request.httpMethod = "POST"
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
201 Created
{
"_links": {
"self": {
"href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/agreements/49d7aa39-41a0-4a6d-bafd-84cc5abf98f5"
},
"environment": {
"href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
}
},
"id": "49d7aa39-41a0-4a6d-bafd-84cc5abf98f5",
"environment": {
"id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
},
"name": "Agreement_2",
"description": "Terms of service agreement",
"reconsentPeriodDays": 180,
"enabled": false
}