PingOne Platform APIs

Create Identity Provider (Paypal)

   

POST {{apiPath}}/environments/{{envID}}/identityProviders

The POST {{apiPath}}/environments/{{envID}}/identityProviders operation adds a new identity provider resource to the specified environment.

When the type property value is set to PAYPAL, PayPal’s clientId, clientSecret, and clientEnvironment property values are required in the request body.

Prerequisites

Request Model

PayPal identity provider settings data model

Property Type Required?

clientId

String

Required

clientSecret

String

Required

clientEnvironment

String

Required

PayPal core attributes

Property Description

user_id

A string that specifies the core PayPal attribute. The default value is ${providerAttributes.user_id} and the default update value is EMPTY_ONLY.

PayPal provider attributes

Permission Provider attributes

OpenID Connect scopes: openid, profile, email

user_id, name, email

address

Options are: address.street_address, address.locality, address.region, address.postal_code, address.country

paypalattributes

Options are: payer_id, verified_account

Refer to Base IdP data model for the properties available to all of the supported identity providers.

Query parameters
Parameter Description

expand

When equal to attributes, shows the details for the core attribute mapping created by the request.

Example: POST {{apiPath}}/environments/{{envID}}/identityProviders?expand=attributes

Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

Body

raw ( application/json )

{
    "description": "Paypal Provider",
    "enabled": true,
    "name": "PaypalIdP1",
    "type": "PAYPAL",
    "clientId": "PAYPAL_ID",
    "clientSecret": "PAYPAL_SECRET",
    "clientEnvironment": "sandbox"
}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff '{{apiPath}}/environments/{{envID}}/identityProviders' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
    "description": "Paypal Provider",
    "enabled": true,
    "name": "PaypalIdP1",
    "type": "PAYPAL",
    "clientId": "PAYPAL_ID",
    "clientSecret": "PAYPAL_SECRET",
    "clientEnvironment": "sandbox"
}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/identityProviders")
{
  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" +
@"    ""description"": ""Paypal Provider""," + "\n" +
@"    ""enabled"": true," + "\n" +
@"    ""name"": ""PaypalIdP1""," + "\n" +
@"    ""type"": ""PAYPAL""," + "\n" +
@"    ""clientId"": ""PAYPAL_ID""," + "\n" +
@"    ""clientSecret"": ""PAYPAL_SECRET""," + "\n" +
@"    ""clientEnvironment"": ""sandbox""" + "\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}}/identityProviders"
  method := "POST"

  payload := strings.NewReader(`{
    "description": "Paypal Provider",
    "enabled": true,
    "name": "PaypalIdP1",
    "type": "PAYPAL",
    "clientId": "PAYPAL_ID",
    "clientSecret": "PAYPAL_SECRET",
    "clientEnvironment": "sandbox"
}`)

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

{
    "description": "Paypal Provider",
    "enabled": true,
    "name": "PaypalIdP1",
    "type": "PAYPAL",
    "clientId": "PAYPAL_ID",
    "clientSecret": "PAYPAL_SECRET",
    "clientEnvironment": "sandbox"
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"description\": \"Paypal Provider\",\n    \"enabled\": true,\n    \"name\": \"PaypalIdP1\",\n    \"type\": \"PAYPAL\",\n    \"clientId\": \"PAYPAL_ID\",\n    \"clientSecret\": \"PAYPAL_SECRET\",\n    \"clientEnvironment\": \"sandbox\"\n}");
Request request = new Request.Builder()
  .url("{{apiPath}}/environments/{{envID}}/identityProviders")
  .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}}/identityProviders",
  "method": "POST",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{accessToken}}"
  },
  "data": JSON.stringify({
    "description": "Paypal Provider",
    "enabled": true,
    "name": "PaypalIdP1",
    "type": "PAYPAL",
    "clientId": "PAYPAL_ID",
    "clientSecret": "PAYPAL_SECRET",
    "clientEnvironment": "sandbox"
  }),
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
var request = require('request');
var options = {
  'method': 'POST',
  'url': '{{apiPath}}/environments/{{envID}}/identityProviders',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {{accessToken}}'
  },
  body: JSON.stringify({
    "description": "Paypal Provider",
    "enabled": true,
    "name": "PaypalIdP1",
    "type": "PAYPAL",
    "clientId": "PAYPAL_ID",
    "clientSecret": "PAYPAL_SECRET",
    "clientEnvironment": "sandbox"
  })

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

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

payload = json.dumps({
  "description": "Paypal Provider",
  "enabled": True,
  "name": "PaypalIdP1",
  "type": "PAYPAL",
  "clientId": "PAYPAL_ID",
  "clientSecret": "PAYPAL_SECRET",
  "clientEnvironment": "sandbox"
})
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}}/identityProviders');
$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    "description": "Paypal Provider",\n    "enabled": true,\n    "name": "PaypalIdP1",\n    "type": "PAYPAL",\n    "clientId": "PAYPAL_ID",\n    "clientSecret": "PAYPAL_SECRET",\n    "clientEnvironment": "sandbox"\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}}/identityProviders")

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({
  "description": "Paypal Provider",
  "enabled": true,
  "name": "PaypalIdP1",
  "type": "PAYPAL",
  "clientId": "PAYPAL_ID",
  "clientSecret": "PAYPAL_SECRET",
  "clientEnvironment": "sandbox"
})

response = http.request(request)
puts response.read_body
let parameters = "{\n    \"description\": \"Paypal Provider\",\n    \"enabled\": true,\n    \"name\": \"PaypalIdP1\",\n    \"type\": \"PAYPAL\",\n    \"clientId\": \"PAYPAL_ID\",\n    \"clientSecret\": \"PAYPAL_SECRET\",\n    \"clientEnvironment\": \"sandbox\"\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{apiPath}}/environments/{{envID}}/identityProviders")!,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/identityProviders/2fd34108-3708-4110-80f2-d83c89399695"
        },
        "environment": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        },
        "attributes": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/identityProviders/2fd34108-3708-4110-80f2-d83c89399695/attributes"
        }
    },
    "id": "2fd34108-3708-4110-80f2-d83c89399695",
    "type": "PAYPAL",
    "name": "PaypalIdP1",
    "description": "Paypal Provider",
    "enabled": true,
    "environment": {
        "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
    },
    "createdAt": "2020-08-11T22:21:49.007Z",
    "updatedAt": "2020-08-11T22:21:49.007Z",
    "clientEnvironment": "sandbox",
    "clientSecret": "PAYPAL_SECRET",
    "clientId": "PAYPAL_ID"
}