PingOne Platform APIs

Create DaVinci UI Template

 

POST {{apiPath}}/environments/{{envID}}/uiTemplates

The POST {{apiPath}}/environments/{{envID}}/uiTemplates endpoint creates a new DaVinci UI template resource.

Request Model
Property Type Required?

description

String

Optional

name

String

Required

inputSchema

String

Optional

outputSchema

String

Optional

script

String

Optional

style

String

Optional

template

String

Optional

validationRules

Array

Optional

validationRules.propertyName

String

Required

validationRules.rules

Array

Required

validationRules.rules.ruleName

String

Required

validationRules.rules.message

String

Optional

validationRules.rules.attribute

String

Optional

validationRules.rules.pattern

String

Optional

Refer to DaVinci Admin UI Templates data model for full property descriptions.

Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

Body

raw ( application/json )

{
  "name": "DaVinci_UITemplate No 3",
  "description": "A DaVinci UI Template",
  "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"first\": \"val1\",\n\t\t\"second\": \"val2\"\n\t}\n}",
    "outputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"first\": \"val2\",\n\t\t\"second\": \"val1\"\n\t}\n}",
    "template": "[\n  {\n    \"children\": [\n      {\n        \"text\": \"\"\n      }\n    ]\n  }\n]",
    "script": "console.log()",
    "style": "p {}",
    "validationRules": [
        {
            "propertyName": "Hello",
            "rules": [
                {
                    "ruleName": "presence",
                    "message": "There"
                }
            ]
        }
    ]
}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff '{{apiPath}}/environments/{{envID}}/uiTemplates' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
  "name": "DaVinci_UITemplate No 3",
  "description": "A DaVinci UI Template",
  "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"first\": \"val1\",\n\t\t\"second\": \"val2\"\n\t}\n}",
    "outputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"first\": \"val2\",\n\t\t\"second\": \"val1\"\n\t}\n}",
    "template": "[\n  {\n    \"children\": [\n      {\n        \"text\": \"\"\n      }\n    ]\n  }\n]",
    "script": "console.log()",
    "style": "p {}",
    "validationRules": [
        {
            "propertyName": "Hello",
            "rules": [
                {
                    "ruleName": "presence",
                    "message": "There"
                }
            ]
        }
    ]
}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/uiTemplates")
{
  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"": ""DaVinci_UITemplate No 3""," + "\n" +
@"  ""description"": ""A DaVinci UI Template""," + "\n" +
@"  ""inputSchema"": ""{\n\t\""type\"": \""object\"",\n\t\""properties\"": {\n\t\t\""first\"": \""val1\"",\n\t\t\""second\"": \""val2\""\n\t}\n}""," + "\n" +
@"    ""outputSchema"": ""{\n\t\""type\"": \""object\"",\n\t\""properties\"": {\n\t\t\""first\"": \""val2\"",\n\t\t\""second\"": \""val1\""\n\t}\n}""," + "\n" +
@"    ""template"": ""[\n  {\n    \""children\"": [\n      {\n        \""text\"": \""\""\n      }\n    ]\n  }\n]""," + "\n" +
@"    ""script"": ""console.log()""," + "\n" +
@"    ""style"": ""p {}""," + "\n" +
@"    ""validationRules"": [" + "\n" +
@"        {" + "\n" +
@"            ""propertyName"": ""Hello""," + "\n" +
@"            ""rules"": [" + "\n" +
@"                {" + "\n" +
@"                    ""ruleName"": ""presence""," + "\n" +
@"                    ""message"": ""There""" + "\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}}/uiTemplates"
  method := "POST"

  payload := strings.NewReader(`{
  "name": "DaVinci_UITemplate No 3",
  "description": "A DaVinci UI Template",
  "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"first\": \"val1\",\n\t\t\"second\": \"val2\"\n\t}\n}",
    "outputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"first\": \"val2\",\n\t\t\"second\": \"val1\"\n\t}\n}",
    "template": "[\n  {\n    \"children\": [\n      {\n        \"text\": \"\"\n      }\n    ]\n  }\n]",
    "script": "console.log()",
    "style": "p {}",
    "validationRules": [
        {
            "propertyName": "Hello",
            "rules": [
                {
                    "ruleName": "presence",
                    "message": "There"
                }
            ]
        }
    ]
}`)

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

{
  "name": "DaVinci_UITemplate No 3",
  "description": "A DaVinci UI Template",
  "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"first\": \"val1\",\n\t\t\"second\": \"val2\"\n\t}\n}",
    "outputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"first\": \"val2\",\n\t\t\"second\": \"val1\"\n\t}\n}",
    "template": "[\n  {\n    \"children\": [\n      {\n        \"text\": \"\"\n      }\n    ]\n  }\n]",
    "script": "console.log()",
    "style": "p {}",
    "validationRules": [
        {
            "propertyName": "Hello",
            "rules": [
                {
                    "ruleName": "presence",
                    "message": "There"
                }
            ]
        }
    ]
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n  \"name\": \"DaVinci_UITemplate No 3\",\n  \"description\": \"A DaVinci UI Template\",\n  \"inputSchema\": \"{\\n\\t\\\"type\\\": \\\"object\\\",\\n\\t\\\"properties\\\": {\\n\\t\\t\\\"first\\\": \\\"val1\\\",\\n\\t\\t\\\"second\\\": \\\"val2\\\"\\n\\t}\\n}\",\n    \"outputSchema\": \"{\\n\\t\\\"type\\\": \\\"object\\\",\\n\\t\\\"properties\\\": {\\n\\t\\t\\\"first\\\": \\\"val2\\\",\\n\\t\\t\\\"second\\\": \\\"val1\\\"\\n\\t}\\n}\",\n    \"template\": \"[\\n  {\\n    \\\"children\\\": [\\n      {\\n        \\\"text\\\": \\\"\\\"\\n      }\\n    ]\\n  }\\n]\",\n    \"script\": \"console.log()\",\n    \"style\": \"p {}\",\n    \"validationRules\": [\n        {\n            \"propertyName\": \"Hello\",\n            \"rules\": [\n                {\n                    \"ruleName\": \"presence\",\n                    \"message\": \"There\"\n                }\n            ]\n        }\n    ]\n}\n");
Request request = new Request.Builder()
  .url("{{apiPath}}/environments/{{envID}}/uiTemplates")
  .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}}/uiTemplates",
  "method": "POST",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{accessToken}}"
  },
  "data": JSON.stringify({
    "name": "DaVinci_UITemplate No 3",
    "description": "A DaVinci UI Template",
    "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"first\": \"val1\",\n\t\t\"second\": \"val2\"\n\t}\n}",
    "outputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"first\": \"val2\",\n\t\t\"second\": \"val1\"\n\t}\n}",
    "template": "[\n  {\n    \"children\": [\n      {\n        \"text\": \"\"\n      }\n    ]\n  }\n]",
    "script": "console.log()",
    "style": "p {}",
    "validationRules": [
      {
        "propertyName": "Hello",
        "rules": [
          {
            "ruleName": "presence",
            "message": "There"
          }
        ]
      }
    ]
  }),
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
var request = require('request');
var options = {
  'method': 'POST',
  'url': '{{apiPath}}/environments/{{envID}}/uiTemplates',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {{accessToken}}'
  },
  body: JSON.stringify({
    "name": "DaVinci_UITemplate No 3",
    "description": "A DaVinci UI Template",
    "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"first\": \"val1\",\n\t\t\"second\": \"val2\"\n\t}\n}",
    "outputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"first\": \"val2\",\n\t\t\"second\": \"val1\"\n\t}\n}",
    "template": "[\n  {\n    \"children\": [\n      {\n        \"text\": \"\"\n      }\n    ]\n  }\n]",
    "script": "console.log()",
    "style": "p {}",
    "validationRules": [
      {
        "propertyName": "Hello",
        "rules": [
          {
            "ruleName": "presence",
            "message": "There"
          }
        ]
      }
    ]
  })

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

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

payload = json.dumps({
  "name": "DaVinci_UITemplate No 3",
  "description": "A DaVinci UI Template",
  "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"first\": \"val1\",\n\t\t\"second\": \"val2\"\n\t}\n}",
  "outputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"first\": \"val2\",\n\t\t\"second\": \"val1\"\n\t}\n}",
  "template": "[\n  {\n    \"children\": [\n      {\n        \"text\": \"\"\n      }\n    ]\n  }\n]",
  "script": "console.log()",
  "style": "p {}",
  "validationRules": [
    {
      "propertyName": "Hello",
      "rules": [
        {
          "ruleName": "presence",
          "message": "There"
        }
      ]
    }
  ]
})
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}}/uiTemplates');
$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": "DaVinci_UITemplate No 3",\n  "description": "A DaVinci UI Template",\n  "inputSchema": "{\\n\\t\\"type\\": \\"object\\",\\n\\t\\"properties\\": {\\n\\t\\t\\"first\\": \\"val1\\",\\n\\t\\t\\"second\\": \\"val2\\"\\n\\t}\\n}",\n    "outputSchema": "{\\n\\t\\"type\\": \\"object\\",\\n\\t\\"properties\\": {\\n\\t\\t\\"first\\": \\"val2\\",\\n\\t\\t\\"second\\": \\"val1\\"\\n\\t}\\n}",\n    "template": "[\\n  {\\n    \\"children\\": [\\n      {\\n        \\"text\\": \\"\\"\\n      }\\n    ]\\n  }\\n]",\n    "script": "console.log()",\n    "style": "p {}",\n    "validationRules": [\n        {\n            "propertyName": "Hello",\n            "rules": [\n                {\n                    "ruleName": "presence",\n                    "message": "There"\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}}/uiTemplates")

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": "DaVinci_UITemplate No 3",
  "description": "A DaVinci UI Template",
  "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"first\": \"val1\",\n\t\t\"second\": \"val2\"\n\t}\n}",
  "outputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"first\": \"val2\",\n\t\t\"second\": \"val1\"\n\t}\n}",
  "template": "[\n  {\n    \"children\": [\n      {\n        \"text\": \"\"\n      }\n    ]\n  }\n]",
  "script": "console.log()",
  "style": "p {}",
  "validationRules": [
    {
      "propertyName": "Hello",
      "rules": [
        {
          "ruleName": "presence",
          "message": "There"
        }
      ]
    }
  ]
})

response = http.request(request)
puts response.read_body
let parameters = "{\n  \"name\": \"DaVinci_UITemplate No 3\",\n  \"description\": \"A DaVinci UI Template\",\n  \"inputSchema\": \"{\\n\\t\\\"type\\\": \\\"object\\\",\\n\\t\\\"properties\\\": {\\n\\t\\t\\\"first\\\": \\\"val1\\\",\\n\\t\\t\\\"second\\\": \\\"val2\\\"\\n\\t}\\n}\",\n    \"outputSchema\": \"{\\n\\t\\\"type\\\": \\\"object\\\",\\n\\t\\\"properties\\\": {\\n\\t\\t\\\"first\\\": \\\"val2\\\",\\n\\t\\t\\\"second\\\": \\\"val1\\\"\\n\\t}\\n}\",\n    \"template\": \"[\\n  {\\n    \\\"children\\\": [\\n      {\\n        \\\"text\\\": \\\"\\\"\\n      }\\n    ]\\n  }\\n]\",\n    \"script\": \"console.log()\",\n    \"style\": \"p {}\",\n    \"validationRules\": [\n        {\n            \"propertyName\": \"Hello\",\n            \"rules\": [\n                {\n                    \"ruleName\": \"presence\",\n                    \"message\": \"There\"\n                }\n            ]\n        }\n    ]\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{apiPath}}/environments/{{envID}}/uiTemplates")!,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": {
        "environment": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        },
        "self": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/uiTemplates/b129691952dc8eae8eaec93268886a78"
        }
    },
    "id": "b129691952dc8eae8eaec93268886a78",
    "environment": {
        "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
    },
    "name": "DaVinci_UITemplate No 3",
    "description": "A DaVinci UI Template",
    "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"first\": \"val1\",\n\t\t\"second\": \"val2\"\n\t}\n}",
    "outputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"first\": \"val2\",\n\t\t\"second\": \"val1\"\n\t}\n}",
    "script": "console.log()",
    "style": "p {}",
    "template": "[\n  {\n    \"children\": [\n      {\n        \"text\": \"\"\n      }\n    ]\n  }\n]",
    "validationRules": [
        {
            "propertyName": "Hello",
            "rules": [
                {
                    "ruleName": "presence",
                    "message": "There"
                }
            ]
        }
    ],
    "createdAt": "2024-08-30T21:42:24.653Z"
}