curl --request POST \
--url https://api.baselayer.com/issuance/identities/businesses/{business_ref}/operator_links/{individual_ref}/decide \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"reason": "<string>"
}
'import requests
url = "https://api.baselayer.com/issuance/identities/businesses/{business_ref}/operator_links/{individual_ref}/decide"
payload = { "reason": "<string>" }
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({reason: '<string>'})
};
fetch('https://api.baselayer.com/issuance/identities/businesses/{business_ref}/operator_links/{individual_ref}/decide', 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.baselayer.com/issuance/identities/businesses/{business_ref}/operator_links/{individual_ref}/decide",
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([
'reason' => '<string>'
]),
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.baselayer.com/issuance/identities/businesses/{business_ref}/operator_links/{individual_ref}/decide"
payload := strings.NewReader("{\n \"reason\": \"<string>\"\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.baselayer.com/issuance/identities/businesses/{business_ref}/operator_links/{individual_ref}/decide")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"reason\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.baselayer.com/issuance/identities/businesses/{business_ref}/operator_links/{individual_ref}/decide")
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 \"reason\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "VERIFIED",
"created_at": "2023-11-07T05:31:56Z",
"individual_ref": "<string>",
"business_ref": "<string>",
"business_legal_name": "<string>",
"shortfalls": [
"TIN_NOT_PROVIDED"
],
"review_flagged_at": "2023-11-07T05:31:56Z",
"decided_at": "2023-11-07T05:31:56Z",
"decided_by": {
"kind": "USER",
"label": "<string>"
},
"decision_reason": "<string>",
"source_verification_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"individual_display_name": "<string>"
}{
"type": "resource_not_found",
"code": 1,
"message": "Could not locate the resource for the given URI.",
"metadata": {}
}{
"type": "validation_failed",
"code": 7112,
"message": "The request is invalid.",
"metadata": {}
}Verify or reject that an individual operates a business
Records your organization’s own decision on whether the individual behind individual_ref operates the business behind business_ref — for example after your own due diligence. The decision applies to your organization only: it never changes what another organization sees. VERIFIED affirms the relationship only: business credentials assert and are dated by what your own sessions found, so if that is more than a year old, re-verify the individual before minting. REJECTED stops new business credentials for the pair until you decide again, whatever later sessions score; credentials already minted stay valid until they expire or you revoke them. A later decision replaces an earlier one, with its decider, time and reason; repeating the link’s current status records them again without changing it. You can decide a pair only once one of your own sessions has covered it. Returns the link as the list shows it.
curl --request POST \
--url https://api.baselayer.com/issuance/identities/businesses/{business_ref}/operator_links/{individual_ref}/decide \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"reason": "<string>"
}
'import requests
url = "https://api.baselayer.com/issuance/identities/businesses/{business_ref}/operator_links/{individual_ref}/decide"
payload = { "reason": "<string>" }
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({reason: '<string>'})
};
fetch('https://api.baselayer.com/issuance/identities/businesses/{business_ref}/operator_links/{individual_ref}/decide', 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.baselayer.com/issuance/identities/businesses/{business_ref}/operator_links/{individual_ref}/decide",
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([
'reason' => '<string>'
]),
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.baselayer.com/issuance/identities/businesses/{business_ref}/operator_links/{individual_ref}/decide"
payload := strings.NewReader("{\n \"reason\": \"<string>\"\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.baselayer.com/issuance/identities/businesses/{business_ref}/operator_links/{individual_ref}/decide")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"reason\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.baselayer.com/issuance/identities/businesses/{business_ref}/operator_links/{individual_ref}/decide")
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 \"reason\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "VERIFIED",
"created_at": "2023-11-07T05:31:56Z",
"individual_ref": "<string>",
"business_ref": "<string>",
"business_legal_name": "<string>",
"shortfalls": [
"TIN_NOT_PROVIDED"
],
"review_flagged_at": "2023-11-07T05:31:56Z",
"decided_at": "2023-11-07T05:31:56Z",
"decided_by": {
"kind": "USER",
"label": "<string>"
},
"decision_reason": "<string>",
"source_verification_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"individual_display_name": "<string>"
}{
"type": "resource_not_found",
"code": 1,
"message": "Could not locate the resource for the given URI.",
"metadata": {}
}{
"type": "validation_failed",
"code": 7112,
"message": "The request is invalid.",
"metadata": {}
}Authorizations
Body
Body for verifying or rejecting your organization's operator link.
Response
Response
One operator link your organization holds, naming both ends: a row of the link requests list.
Your organization's current status for the link.
VERIFIED, UNDER_REVIEW, REJECTED When the link was first recorded.
Pairwise reference to the linked individual.
Pairwise reference to the linked business.
The linked business's current legal name.
What your newest evaluation of the pair fell short on, in recipe order: the reason a link is under review or flagged. Empty when it met the recipe.
Which leg of the operator-link evidence recipe a covering evaluation failed.
Reviewer-facing: a session whose evaluation reports any shortfall records an UNDER_REVIEW link, and these name what a reviewer would be overriding by verifying it anyway. An evaluation that reports none earns VERIFIED on its own.
TIN_NOT_PROVIDED, TIN_NOT_MATCHED, KYB_NOT_VERIFIED When a later evaluation flagged this verified link for review; null when it never was.
When your organization last verified or rejected the link by hand; null while only the evidence has decided it.
Who made that decision, as stamped when they made it; null when no one has.
Show child attributes
Show child attributes
The reason recorded with that decision, if any.
The verification that established the link; null when that verification no longer exists. A direct verification reads at GET /issuance/identities/verifications/{verification_id}; a hosted one is an onboarding session and reads at GET /onboarding/sessions/{session_id}.
The individual's verified name from your organization's current verification; null when it has been superseded and not yet replaced.