curl --request POST \
--url https://api.withampersand.com/v1/oauth-connect \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"projectId": "my-project",
"provider": "salesforce",
"groupRef": "group-123",
"consumerRef": "user_123456",
"groupName": "Organization Name",
"consumerName": "John Doe",
"providerWorkspaceRef": "salesforce-instance-domain",
"providerMetadata": {},
"providerAppId": "32356abe-d2fd-49c7-9030-abdcbc6456d4",
"enableCSRFProtection": false
}
'import requests
url = "https://api.withampersand.com/v1/oauth-connect"
payload = {
"projectId": "my-project",
"provider": "salesforce",
"groupRef": "group-123",
"consumerRef": "user_123456",
"groupName": "Organization Name",
"consumerName": "John Doe",
"providerWorkspaceRef": "salesforce-instance-domain",
"providerMetadata": {},
"providerAppId": "32356abe-d2fd-49c7-9030-abdcbc6456d4",
"enableCSRFProtection": False
}
headers = {
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
projectId: 'my-project',
provider: 'salesforce',
groupRef: 'group-123',
consumerRef: 'user_123456',
groupName: 'Organization Name',
consumerName: 'John Doe',
providerWorkspaceRef: 'salesforce-instance-domain',
providerMetadata: {},
providerAppId: '32356abe-d2fd-49c7-9030-abdcbc6456d4',
enableCSRFProtection: false
})
};
fetch('https://api.withampersand.com/v1/oauth-connect', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.withampersand.com/v1/oauth-connect",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'projectId' => 'my-project',
'provider' => 'salesforce',
'groupRef' => 'group-123',
'consumerRef' => 'user_123456',
'groupName' => 'Organization Name',
'consumerName' => 'John Doe',
'providerWorkspaceRef' => 'salesforce-instance-domain',
'providerMetadata' => [
],
'providerAppId' => '32356abe-d2fd-49c7-9030-abdcbc6456d4',
'enableCSRFProtection' => false
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Api-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.withampersand.com/v1/oauth-connect"
payload := strings.NewReader("{\n \"projectId\": \"my-project\",\n \"provider\": \"salesforce\",\n \"groupRef\": \"group-123\",\n \"consumerRef\": \"user_123456\",\n \"groupName\": \"Organization Name\",\n \"consumerName\": \"John Doe\",\n \"providerWorkspaceRef\": \"salesforce-instance-domain\",\n \"providerMetadata\": {},\n \"providerAppId\": \"32356abe-d2fd-49c7-9030-abdcbc6456d4\",\n \"enableCSRFProtection\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Api-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.withampersand.com/v1/oauth-connect")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"projectId\": \"my-project\",\n \"provider\": \"salesforce\",\n \"groupRef\": \"group-123\",\n \"consumerRef\": \"user_123456\",\n \"groupName\": \"Organization Name\",\n \"consumerName\": \"John Doe\",\n \"providerWorkspaceRef\": \"salesforce-instance-domain\",\n \"providerMetadata\": {},\n \"providerAppId\": \"32356abe-d2fd-49c7-9030-abdcbc6456d4\",\n \"enableCSRFProtection\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.withampersand.com/v1/oauth-connect")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"projectId\": \"my-project\",\n \"provider\": \"salesforce\",\n \"groupRef\": \"group-123\",\n \"consumerRef\": \"user_123456\",\n \"groupName\": \"Organization Name\",\n \"consumerName\": \"John Doe\",\n \"providerWorkspaceRef\": \"salesforce-instance-domain\",\n \"providerMetadata\": {},\n \"providerAppId\": \"32356abe-d2fd-49c7-9030-abdcbc6456d4\",\n \"enableCSRFProtection\": false\n}"
response = http.request(request)
puts response.read_body"<string>"{
"type": "about:blank",
"href": "https://www.belgif.be/specification/rest/api-guide/#standardized-problem-types",
"title": "Bad Request",
"status": 400,
"detail": "The input message is incorrect",
"instance": "123456-1234-1235-4567489798",
"issues": [
{
"type": "about:blank",
"detail": "exampleNumericProperty should be numeric",
"in": "path",
"name": "exampleNumericProperty",
"value": "abc"
},
{
"type": "about:blank",
"title": "Input isn't valid with respect to schema",
"detail": "examplePropertyWithPattern a2345678901 doesn't match pattern '^\\d{11}$'",
"in": "body",
"name": "items[0].examplePropertyWithPattern",
"value": "a2345678901"
}
]
}{
"type": "urn:problem-type:exampleOrganization:exampleProblem",
"href": "https://www.belgif.be/specification/rest/api-guide/#standardized-problem-types",
"title": "Description of the type of problem that occurred",
"status": 400,
"detail": "Description of specific occurrence of the problem",
"instance": "urn:uuid:123e4567-e89b-12d3-a456-426614174000"
}Get URL for OAuth flow
Generate a URL for the browser to render to kick off OAuth flow. You can use this endpoint as an alternative to the prebuilt UI components.
curl --request POST \
--url https://api.withampersand.com/v1/oauth-connect \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"projectId": "my-project",
"provider": "salesforce",
"groupRef": "group-123",
"consumerRef": "user_123456",
"groupName": "Organization Name",
"consumerName": "John Doe",
"providerWorkspaceRef": "salesforce-instance-domain",
"providerMetadata": {},
"providerAppId": "32356abe-d2fd-49c7-9030-abdcbc6456d4",
"enableCSRFProtection": false
}
'import requests
url = "https://api.withampersand.com/v1/oauth-connect"
payload = {
"projectId": "my-project",
"provider": "salesforce",
"groupRef": "group-123",
"consumerRef": "user_123456",
"groupName": "Organization Name",
"consumerName": "John Doe",
"providerWorkspaceRef": "salesforce-instance-domain",
"providerMetadata": {},
"providerAppId": "32356abe-d2fd-49c7-9030-abdcbc6456d4",
"enableCSRFProtection": False
}
headers = {
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
projectId: 'my-project',
provider: 'salesforce',
groupRef: 'group-123',
consumerRef: 'user_123456',
groupName: 'Organization Name',
consumerName: 'John Doe',
providerWorkspaceRef: 'salesforce-instance-domain',
providerMetadata: {},
providerAppId: '32356abe-d2fd-49c7-9030-abdcbc6456d4',
enableCSRFProtection: false
})
};
fetch('https://api.withampersand.com/v1/oauth-connect', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.withampersand.com/v1/oauth-connect",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'projectId' => 'my-project',
'provider' => 'salesforce',
'groupRef' => 'group-123',
'consumerRef' => 'user_123456',
'groupName' => 'Organization Name',
'consumerName' => 'John Doe',
'providerWorkspaceRef' => 'salesforce-instance-domain',
'providerMetadata' => [
],
'providerAppId' => '32356abe-d2fd-49c7-9030-abdcbc6456d4',
'enableCSRFProtection' => false
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Api-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.withampersand.com/v1/oauth-connect"
payload := strings.NewReader("{\n \"projectId\": \"my-project\",\n \"provider\": \"salesforce\",\n \"groupRef\": \"group-123\",\n \"consumerRef\": \"user_123456\",\n \"groupName\": \"Organization Name\",\n \"consumerName\": \"John Doe\",\n \"providerWorkspaceRef\": \"salesforce-instance-domain\",\n \"providerMetadata\": {},\n \"providerAppId\": \"32356abe-d2fd-49c7-9030-abdcbc6456d4\",\n \"enableCSRFProtection\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Api-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.withampersand.com/v1/oauth-connect")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"projectId\": \"my-project\",\n \"provider\": \"salesforce\",\n \"groupRef\": \"group-123\",\n \"consumerRef\": \"user_123456\",\n \"groupName\": \"Organization Name\",\n \"consumerName\": \"John Doe\",\n \"providerWorkspaceRef\": \"salesforce-instance-domain\",\n \"providerMetadata\": {},\n \"providerAppId\": \"32356abe-d2fd-49c7-9030-abdcbc6456d4\",\n \"enableCSRFProtection\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.withampersand.com/v1/oauth-connect")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"projectId\": \"my-project\",\n \"provider\": \"salesforce\",\n \"groupRef\": \"group-123\",\n \"consumerRef\": \"user_123456\",\n \"groupName\": \"Organization Name\",\n \"consumerName\": \"John Doe\",\n \"providerWorkspaceRef\": \"salesforce-instance-domain\",\n \"providerMetadata\": {},\n \"providerAppId\": \"32356abe-d2fd-49c7-9030-abdcbc6456d4\",\n \"enableCSRFProtection\": false\n}"
response = http.request(request)
puts response.read_body"<string>"{
"type": "about:blank",
"href": "https://www.belgif.be/specification/rest/api-guide/#standardized-problem-types",
"title": "Bad Request",
"status": 400,
"detail": "The input message is incorrect",
"instance": "123456-1234-1235-4567489798",
"issues": [
{
"type": "about:blank",
"detail": "exampleNumericProperty should be numeric",
"in": "path",
"name": "exampleNumericProperty",
"value": "abc"
},
{
"type": "about:blank",
"title": "Input isn't valid with respect to schema",
"detail": "examplePropertyWithPattern a2345678901 doesn't match pattern '^\\d{11}$'",
"in": "body",
"name": "items[0].examplePropertyWithPattern",
"value": "a2345678901"
}
]
}{
"type": "urn:problem-type:exampleOrganization:exampleProblem",
"href": "https://www.belgif.be/specification/rest/api-guide/#standardized-problem-types",
"title": "Description of the type of problem that occurred",
"status": 400,
"detail": "Description of specific occurrence of the problem",
"instance": "urn:uuid:123e4567-e89b-12d3-a456-426614174000"
}Authorizations
Body
The Ampersand project ID.
"my-project"
The provider that this app connects to.
"salesforce"
The ID that your app uses to identify the group of users for this Connection, this can be an Org ID, workspace ID, etc.
"group-123"
The ID that your app uses to identify the user whose SaaS credential will be used for this OAuth flow.
"user_123456"
The display name for the group. Defaults to groupRef if not provided.
"Organization Name"
The display name for the consumer. Defaults to consumerRef if not provided.
"John Doe"
The identifier for the provider workspace (e.g. the Salesforce subdomain).
"salesforce-instance-domain"
Show child attributes
Show child attributes
ID of the provider app, returned from a CreateProviderApp call. If omitted, the default provider app that was set up on the Ampersand Dashboard is assumed.
"32356abe-d2fd-49c7-9030-abdcbc6456d4"
This boolean flag is used by the UI library internally. Set it to false or omit it when manually calling this API.
false
Response
OK
URL to render
Was this page helpful?

