Replace a Project
curl --request PUT \
--url https://prod-api.raisedonors.com/api/Project/replace \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"currentProjectId": 123,
"recurringGiftNewProjectId": 123,
"legacyPageProjectId": 123,
"defaultPageProjectId": 123,
"pageProjectId": 123
}
'const options = {
method: 'PUT',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
currentProjectId: 123,
recurringGiftNewProjectId: 123,
legacyPageProjectId: 123,
defaultPageProjectId: 123,
pageProjectId: 123
})
};
fetch('https://prod-api.raisedonors.com/api/Project/replace', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://prod-api.raisedonors.com/api/Project/replace"
payload = {
"currentProjectId": 123,
"recurringGiftNewProjectId": 123,
"legacyPageProjectId": 123,
"defaultPageProjectId": 123,
"pageProjectId": 123
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)using RestSharp;
var options = new RestClientOptions("https://prod-api.raisedonors.com/api/Project/replace");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "<api-key>");
request.AddJsonBody("{\n \"currentProjectId\": 123,\n \"recurringGiftNewProjectId\": 123,\n \"legacyPageProjectId\": 123,\n \"defaultPageProjectId\": 123,\n \"pageProjectId\": 123\n}", false);
var response = await client.PutAsync(request);
Console.WriteLine("{0}", response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://prod-api.raisedonors.com/api/Project/replace",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'currentProjectId' => 123,
'recurringGiftNewProjectId' => 123,
'legacyPageProjectId' => 123,
'defaultPageProjectId' => 123,
'pageProjectId' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}HttpResponse<String> response = Unirest.put("https://prod-api.raisedonors.com/api/Project/replace")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"currentProjectId\": 123,\n \"recurringGiftNewProjectId\": 123,\n \"legacyPageProjectId\": 123,\n \"defaultPageProjectId\": 123,\n \"pageProjectId\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://prod-api.raisedonors.com/api/Project/replace")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"currentProjectId\": 123,\n \"recurringGiftNewProjectId\": 123,\n \"legacyPageProjectId\": 123,\n \"defaultPageProjectId\": 123,\n \"pageProjectId\": 123\n}"
response = http.request(request)
puts response.read_bodyconst url = 'https://prod-api.raisedonors.com/api/Project/replace';
const options = {
method: 'PUT',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
currentProjectId: 123,
recurringGiftNewProjectId: 123,
legacyPageProjectId: 123,
defaultPageProjectId: 123,
pageProjectId: 123
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"errors": {
"code": [
"A project with this code already exists."
]
},
"instance": "/api/Project/replace"
}{
"type": "https://tools.ietf.org/html/rfc7235#section-3.1",
"title": "Unauthorized",
"status": 401,
"detail": "The Authorization header is missing, malformed, or carries a token that is expired or revoked.",
"instance": "/api/Project/replace"
}Project
Replace a Project
Moves the records that reference one project to other projects.
PUT
https://prod-api.raisedonors.com
/
api
/
Project
/
replace
Replace a Project
curl --request PUT \
--url https://prod-api.raisedonors.com/api/Project/replace \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"currentProjectId": 123,
"recurringGiftNewProjectId": 123,
"legacyPageProjectId": 123,
"defaultPageProjectId": 123,
"pageProjectId": 123
}
'const options = {
method: 'PUT',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
currentProjectId: 123,
recurringGiftNewProjectId: 123,
legacyPageProjectId: 123,
defaultPageProjectId: 123,
pageProjectId: 123
})
};
fetch('https://prod-api.raisedonors.com/api/Project/replace', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://prod-api.raisedonors.com/api/Project/replace"
payload = {
"currentProjectId": 123,
"recurringGiftNewProjectId": 123,
"legacyPageProjectId": 123,
"defaultPageProjectId": 123,
"pageProjectId": 123
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)using RestSharp;
var options = new RestClientOptions("https://prod-api.raisedonors.com/api/Project/replace");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "<api-key>");
request.AddJsonBody("{\n \"currentProjectId\": 123,\n \"recurringGiftNewProjectId\": 123,\n \"legacyPageProjectId\": 123,\n \"defaultPageProjectId\": 123,\n \"pageProjectId\": 123\n}", false);
var response = await client.PutAsync(request);
Console.WriteLine("{0}", response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://prod-api.raisedonors.com/api/Project/replace",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'currentProjectId' => 123,
'recurringGiftNewProjectId' => 123,
'legacyPageProjectId' => 123,
'defaultPageProjectId' => 123,
'pageProjectId' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}HttpResponse<String> response = Unirest.put("https://prod-api.raisedonors.com/api/Project/replace")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"currentProjectId\": 123,\n \"recurringGiftNewProjectId\": 123,\n \"legacyPageProjectId\": 123,\n \"defaultPageProjectId\": 123,\n \"pageProjectId\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://prod-api.raisedonors.com/api/Project/replace")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"currentProjectId\": 123,\n \"recurringGiftNewProjectId\": 123,\n \"legacyPageProjectId\": 123,\n \"defaultPageProjectId\": 123,\n \"pageProjectId\": 123\n}"
response = http.request(request)
puts response.read_bodyconst url = 'https://prod-api.raisedonors.com/api/Project/replace';
const options = {
method: 'PUT',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
currentProjectId: 123,
recurringGiftNewProjectId: 123,
legacyPageProjectId: 123,
defaultPageProjectId: 123,
pageProjectId: 123
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"errors": {
"code": [
"A project with this code already exists."
]
},
"instance": "/api/Project/replace"
}{
"type": "https://tools.ietf.org/html/rfc7235#section-3.1",
"title": "Unauthorized",
"status": 401,
"detail": "The Authorization header is missing, malformed, or carries a token that is expired or revoked.",
"instance": "/api/Project/replace"
}Send
currentProjectId along with the replacement project for each place it is used — recurring gifts, pages, default pages, and legacy pages.
Use it to retire a designation while keeping those records pointed at a valid project.
Authorizations
JWT Authorization header using the Bearer scheme. Example: "Authorization: Bearer {token}"
Body
application/jsontext/jsonapplication/*+json
The replace project request model.
Represents a project replacement request.
The unique identifier of the project to replace.
The new project identifier for the recurring gift.
The legacy page project identifier.
The default page project identifier.
The unique identifier of the project to use instead on the pages.
Response
OK
Last modified on July 28, 2026
Was this page helpful?
⌘I