PingOne Platform APIs

Create API Server Operation

POST {{apiPath}}/environments/{{envID}}/apiServers/{{apiServerID}}/operations

The POST {{apiPath}}/environments/{{envID}}/apiServers/{{apiServerID}}/operations request creates a new API service operation associated with the environment and API service specified in the request URL.

Prerequisites

Request Model

For property descriptions, refer to API service operations data model

Property Type? Required?

accessControl

Object

Optional

accessControl.custom

Object

Optional

accessControl.custom.enabled

Boolean

Optional

accessControl.group

Object

Optional

accessControl.group.groups

Array

Required

accessControl.group.groups.element

Relationship

Required

accessControl.group.groups.element.id

String

Required

accessControl.permission

Object

Optional

accessControl.permission.id

Object

Optional

accessControl.scope

Object

Optional

accessControl.scope.matchType

String

Optional

accessControl.scope.scopes

Array

Required

accessControl.scope.scopes.element

Object

Required

accessControl.scope.scopes.element.id

String

Required

methods

Array

Optional

name

String

Required

paths

Array

Required

paths.type

String

Required

paths.pattern

String

Required

Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

Body

raw ( application/json )

{
    "name": "AccountsPayable",
    "paths": [
        {
            "type": "EXACT",
            "pattern": "/accountsPayable"
        }
    ],
    "methods": [
        "POST",
        "PUT"
    ]
}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff '{{apiPath}}/environments/{{envID}}/apiServers/{{apiServerID}}/operations' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
    "name": "AccountsPayable",
    "paths": [
        {
            "type": "EXACT",
            "pattern": "/accountsPayable"
        }
    ],
    "methods": [
        "POST",
        "PUT"
    ]
}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/apiServers/{{apiServerID}}/operations")
{
  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"": ""AccountsPayable""," + "\n" +
@"    ""paths"": [" + "\n" +
@"        {" + "\n" +
@"            ""type"": ""EXACT""," + "\n" +
@"            ""pattern"": ""/accountsPayable""" + "\n" +
@"        }" + "\n" +
@"    ]," + "\n" +
@"    ""methods"": [" + "\n" +
@"        ""POST""," + "\n" +
@"        ""PUT""" + "\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}}/apiServers/{{apiServerID}}/operations"
  method := "POST"

  payload := strings.NewReader(`{
    "name": "AccountsPayable",
    "paths": [
        {
            "type": "EXACT",
            "pattern": "/accountsPayable"
        }
    ],
    "methods": [
        "POST",
        "PUT"
    ]
}`)

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

{
    "name": "AccountsPayable",
    "paths": [
        {
            "type": "EXACT",
            "pattern": "/accountsPayable"
        }
    ],
    "methods": [
        "POST",
        "PUT"
    ]
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"name\": \"AccountsPayable\",\n    \"paths\": [\n        {\n            \"type\": \"EXACT\",\n            \"pattern\": \"/accountsPayable\"\n        }\n    ],\n    \"methods\": [\n        \"POST\",\n        \"PUT\"\n    ]\n}");
Request request = new Request.Builder()
  .url("{{apiPath}}/environments/{{envID}}/apiServers/{{apiServerID}}/operations")
  .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}}/apiServers/{{apiServerID}}/operations",
  "method": "POST",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{accessToken}}"
  },
  "data": JSON.stringify({
    "name": "AccountsPayable",
    "paths": [
      {
        "type": "EXACT",
        "pattern": "/accountsPayable"
      }
    ],
    "methods": [
      "POST",
      "PUT"
    ]
  }),
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
var request = require('request');
var options = {
  'method': 'POST',
  'url': '{{apiPath}}/environments/{{envID}}/apiServers/{{apiServerID}}/operations',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {{accessToken}}'
  },
  body: JSON.stringify({
    "name": "AccountsPayable",
    "paths": [
      {
        "type": "EXACT",
        "pattern": "/accountsPayable"
      }
    ],
    "methods": [
      "POST",
      "PUT"
    ]
  })

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

url = "{{apiPath}}/environments/{{envID}}/apiServers/{{apiServerID}}/operations"

payload = json.dumps({
  "name": "AccountsPayable",
  "paths": [
    {
      "type": "EXACT",
      "pattern": "/accountsPayable"
    }
  ],
  "methods": [
    "POST",
    "PUT"
  ]
})
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}}/apiServers/{{apiServerID}}/operations');
$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": "AccountsPayable",\n    "paths": [\n        {\n            "type": "EXACT",\n            "pattern": "/accountsPayable"\n        }\n    ],\n    "methods": [\n        "POST",\n        "PUT"\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}}/apiServers/{{apiServerID}}/operations")

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": "AccountsPayable",
  "paths": [
    {
      "type": "EXACT",
      "pattern": "/accountsPayable"
    }
  ],
  "methods": [
    "POST",
    "PUT"
  ]
})

response = http.request(request)
puts response.read_body
let parameters = "{\n    \"name\": \"AccountsPayable\",\n    \"paths\": [\n        {\n            \"type\": \"EXACT\",\n            \"pattern\": \"/accountsPayable\"\n        }\n    ],\n    \"methods\": [\n        \"POST\",\n        \"PUT\"\n    ]\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{apiPath}}/environments/{{envID}}/apiServers/{{apiServerID}}/operations")!,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/apiServers/a82aa1c1-1a8e-4b6e-a43e-2266ebd57626/operations/ad5d139a-c4b3-40d9-a030-29b393391ecc"
        },
        "environment": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        },
        "apiServer": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/apiServers/a82aa1c1-1a8e-4b6e-a43e-2266ebd57626"
        }
    },
    "id": "ad5d139a-c4b3-40d9-a030-29b393391ecc",
    "name": "AccountsPayable",
    "methods": [
        "POST",
        "PUT"
    ],
    "paths": [
        {
            "type": "EXACT",
            "pattern": "/accountsPayable"
        }
    ]
}