curl --request POST \
--url https://api.riskportal.activeviam.com/api/Position/CreateBooks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json-patch+json' \
--data '
{
"$type": "Derivitec.Web.Core.Positions.ApiCreateBooksRequest, Derivitec.Web.Core",
"create_book_requests": [
{
"description": "<string>",
"name": "<string>",
"$type": "Derivitec.Web.Core.Positions.ApiCreateBookRequest, Derivitec.Web.Core",
"parent_portfolio_names": [
"<string>"
],
"shared_users": [
"<string>"
]
}
]
}
'import requests
url = "https://api.riskportal.activeviam.com/api/Position/CreateBooks"
payload = {
"$type": "Derivitec.Web.Core.Positions.ApiCreateBooksRequest, Derivitec.Web.Core",
"create_book_requests": [
{
"description": "<string>",
"name": "<string>",
"$type": "Derivitec.Web.Core.Positions.ApiCreateBookRequest, Derivitec.Web.Core",
"parent_portfolio_names": ["<string>"],
"shared_users": ["<string>"]
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json-patch+json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json-patch+json'},
body: JSON.stringify({
$type: 'Derivitec.Web.Core.Positions.ApiCreateBooksRequest, Derivitec.Web.Core',
create_book_requests: [
{
description: '<string>',
name: '<string>',
$type: 'Derivitec.Web.Core.Positions.ApiCreateBookRequest, Derivitec.Web.Core',
parent_portfolio_names: ['<string>'],
shared_users: ['<string>']
}
]
})
};
fetch('https://api.riskportal.activeviam.com/api/Position/CreateBooks', 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.riskportal.activeviam.com/api/Position/CreateBooks",
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([
'$type' => 'Derivitec.Web.Core.Positions.ApiCreateBooksRequest, Derivitec.Web.Core',
'create_book_requests' => [
[
'description' => '<string>',
'name' => '<string>',
'$type' => 'Derivitec.Web.Core.Positions.ApiCreateBookRequest, Derivitec.Web.Core',
'parent_portfolio_names' => [
'<string>'
],
'shared_users' => [
'<string>'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json-patch+json"
],
]);
$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.riskportal.activeviam.com/api/Position/CreateBooks"
payload := strings.NewReader("{\n \"$type\": \"Derivitec.Web.Core.Positions.ApiCreateBooksRequest, Derivitec.Web.Core\",\n \"create_book_requests\": [\n {\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"$type\": \"Derivitec.Web.Core.Positions.ApiCreateBookRequest, Derivitec.Web.Core\",\n \"parent_portfolio_names\": [\n \"<string>\"\n ],\n \"shared_users\": [\n \"<string>\"\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json-patch+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.riskportal.activeviam.com/api/Position/CreateBooks")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json-patch+json")
.body("{\n \"$type\": \"Derivitec.Web.Core.Positions.ApiCreateBooksRequest, Derivitec.Web.Core\",\n \"create_book_requests\": [\n {\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"$type\": \"Derivitec.Web.Core.Positions.ApiCreateBookRequest, Derivitec.Web.Core\",\n \"parent_portfolio_names\": [\n \"<string>\"\n ],\n \"shared_users\": [\n \"<string>\"\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.riskportal.activeviam.com/api/Position/CreateBooks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json-patch+json'
request.body = "{\n \"$type\": \"Derivitec.Web.Core.Positions.ApiCreateBooksRequest, Derivitec.Web.Core\",\n \"create_book_requests\": [\n {\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"$type\": \"Derivitec.Web.Core.Positions.ApiCreateBookRequest, Derivitec.Web.Core\",\n \"parent_portfolio_names\": [\n \"<string>\"\n ],\n \"shared_users\": [\n \"<string>\"\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"$type": "Derivitec.Web.Core.ApiBaseResponse, Derivitec.Web.Core",
"is_success": true,
"error_messages": []
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}Add books to portfolios and optionally share them.
Creates each requested book beneath its named parent portfolios and can grant edit access to invited users. Parent portfolios must be available and editable by the caller. Requests are handled item by item: a valid book can be created when another item fails, and a sharing failure can follow book creation. Reconcile IsSuccess and every error message; an unsuccessful aggregate result is not a rollback. This is a synchronous mutation.
curl --request POST \
--url https://api.riskportal.activeviam.com/api/Position/CreateBooks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json-patch+json' \
--data '
{
"$type": "Derivitec.Web.Core.Positions.ApiCreateBooksRequest, Derivitec.Web.Core",
"create_book_requests": [
{
"description": "<string>",
"name": "<string>",
"$type": "Derivitec.Web.Core.Positions.ApiCreateBookRequest, Derivitec.Web.Core",
"parent_portfolio_names": [
"<string>"
],
"shared_users": [
"<string>"
]
}
]
}
'import requests
url = "https://api.riskportal.activeviam.com/api/Position/CreateBooks"
payload = {
"$type": "Derivitec.Web.Core.Positions.ApiCreateBooksRequest, Derivitec.Web.Core",
"create_book_requests": [
{
"description": "<string>",
"name": "<string>",
"$type": "Derivitec.Web.Core.Positions.ApiCreateBookRequest, Derivitec.Web.Core",
"parent_portfolio_names": ["<string>"],
"shared_users": ["<string>"]
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json-patch+json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json-patch+json'},
body: JSON.stringify({
$type: 'Derivitec.Web.Core.Positions.ApiCreateBooksRequest, Derivitec.Web.Core',
create_book_requests: [
{
description: '<string>',
name: '<string>',
$type: 'Derivitec.Web.Core.Positions.ApiCreateBookRequest, Derivitec.Web.Core',
parent_portfolio_names: ['<string>'],
shared_users: ['<string>']
}
]
})
};
fetch('https://api.riskportal.activeviam.com/api/Position/CreateBooks', 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.riskportal.activeviam.com/api/Position/CreateBooks",
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([
'$type' => 'Derivitec.Web.Core.Positions.ApiCreateBooksRequest, Derivitec.Web.Core',
'create_book_requests' => [
[
'description' => '<string>',
'name' => '<string>',
'$type' => 'Derivitec.Web.Core.Positions.ApiCreateBookRequest, Derivitec.Web.Core',
'parent_portfolio_names' => [
'<string>'
],
'shared_users' => [
'<string>'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json-patch+json"
],
]);
$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.riskportal.activeviam.com/api/Position/CreateBooks"
payload := strings.NewReader("{\n \"$type\": \"Derivitec.Web.Core.Positions.ApiCreateBooksRequest, Derivitec.Web.Core\",\n \"create_book_requests\": [\n {\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"$type\": \"Derivitec.Web.Core.Positions.ApiCreateBookRequest, Derivitec.Web.Core\",\n \"parent_portfolio_names\": [\n \"<string>\"\n ],\n \"shared_users\": [\n \"<string>\"\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json-patch+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.riskportal.activeviam.com/api/Position/CreateBooks")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json-patch+json")
.body("{\n \"$type\": \"Derivitec.Web.Core.Positions.ApiCreateBooksRequest, Derivitec.Web.Core\",\n \"create_book_requests\": [\n {\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"$type\": \"Derivitec.Web.Core.Positions.ApiCreateBookRequest, Derivitec.Web.Core\",\n \"parent_portfolio_names\": [\n \"<string>\"\n ],\n \"shared_users\": [\n \"<string>\"\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.riskportal.activeviam.com/api/Position/CreateBooks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json-patch+json'
request.body = "{\n \"$type\": \"Derivitec.Web.Core.Positions.ApiCreateBooksRequest, Derivitec.Web.Core\",\n \"create_book_requests\": [\n {\n \"description\": \"<string>\",\n \"name\": \"<string>\",\n \"$type\": \"Derivitec.Web.Core.Positions.ApiCreateBookRequest, Derivitec.Web.Core\",\n \"parent_portfolio_names\": [\n \"<string>\"\n ],\n \"shared_users\": [\n \"<string>\"\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"$type": "Derivitec.Web.Core.ApiBaseResponse, Derivitec.Web.Core",
"is_success": true,
"error_messages": []
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}Authorizations
OAuth2 access-token requested from AWS Cognito and provided as a Auth Bearer header
Body
JSON request with non-null CreateBookRequests. Each item has a Name and Description of 2–100 characters, non-null ParentPortfolioNames, and non-null SharedUsers (which may be empty). A shared-user value must contain @.
Batch of books created item by item, allowing earlier successful items to remain when another item fails.
Response
Created
Common operation outcome containing a success indicator and any error messages.
Derivitec.Web.Core.ApiBaseResponse, Derivitec.Web.Core Whether the operation completed successfully. The default is true; error outcomes set it to false.
true
Messages explaining operation-level failures. The collection is empty by default.
Was this page helpful?