curl --request POST \
--url https://api.ctrl-hub.com/v3/construction-phase-plans/{construction_phase_plan_id}/proposed-changes/{construction_phase_plan_proposed_change_id}/acceptance \
--header 'X-Session-Token: <api-key>'import requests
url = "https://api.ctrl-hub.com/v3/construction-phase-plans/{construction_phase_plan_id}/proposed-changes/{construction_phase_plan_proposed_change_id}/acceptance"
headers = {"X-Session-Token": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-Session-Token': '<api-key>'}};
fetch('https://api.ctrl-hub.com/v3/construction-phase-plans/{construction_phase_plan_id}/proposed-changes/{construction_phase_plan_proposed_change_id}/acceptance', 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.ctrl-hub.com/v3/construction-phase-plans/{construction_phase_plan_id}/proposed-changes/{construction_phase_plan_proposed_change_id}/acceptance",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-Session-Token: <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"
"net/http"
"io"
)
func main() {
url := "https://api.ctrl-hub.com/v3/construction-phase-plans/{construction_phase_plan_id}/proposed-changes/{construction_phase_plan_proposed_change_id}/acceptance"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-Session-Token", "<api-key>")
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.ctrl-hub.com/v3/construction-phase-plans/{construction_phase_plan_id}/proposed-changes/{construction_phase_plan_proposed_change_id}/acceptance")
.header("X-Session-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ctrl-hub.com/v3/construction-phase-plans/{construction_phase_plan_id}/proposed-changes/{construction_phase_plan_proposed_change_id}/acceptance")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Session-Token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "construction-phase-plan-proposed-changes",
"attributes": {
"reason": "<string>",
"section": "health_and_safety_aims",
"operation": "replace",
"state": "pending",
"base_revision": 123,
"proposed": {
"health_and_safety_aims": {
"aims": "<string>"
},
"site_rules": {
"rules": [
"<string>"
]
},
"induction": {
"points": [
"<string>"
],
"declarations": [
"<string>"
]
},
"welfare": {
"toilets": "<string>",
"washing": "<string>",
"drinking_water": "<string>",
"rest_and_eating": "<string>",
"changing_and_drying": "<string>",
"location": "<string>"
},
"emergency_arrangements": {
"emergency_procedures": "<string>",
"fire_arrangements": "<string>",
"first_aid_arrangements": "<string>",
"first_aiders": [
{
"name": "<string>",
"user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"nearest_hospital": "<string>"
},
"monitoring_and_review": {
"arrangements": "<string>",
"review_frequency": "<string>"
},
"key_operatives": [
{
"name": "<string>",
"role": "<string>",
"phone": "<string>",
"user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"job_role_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"client_checklist": {
"management_arrangements": {
"answer": "yes",
"comments": "<string>"
},
"time_and_resources": {
"answer": "yes",
"comments": "<string>"
},
"pre_construction_information": {
"answer": "yes",
"comments": "<string>"
},
"principal_designer_appointed": {
"answer": "yes",
"comments": "<string>"
},
"principal_contractor_appointed": {
"answer": "yes",
"comments": "<string>"
},
"construction_phase_plan_in_place": {
"answer": "yes",
"comments": "<string>"
},
"welfare_provided": {
"answer": "yes",
"comments": "<string>"
},
"health_and_safety_file_arranged": {
"answer": "yes",
"comments": "<string>"
},
"notification_made": {
"answer": "yes",
"comments": "<string>"
},
"competence_checked": {
"answer": "yes",
"comments": "<string>"
}
},
"risk": {
"control_measure": "<string>",
"responsible_party": "<string>",
"responsible_party_user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"responsible_party_organisation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"implemented_on": "2023-12-25"
}
},
"proposed_by": {
"acting_role": "client_and_principal_designer",
"organisation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"at": "2023-11-07T05:31:56Z",
"principal_type": "users",
"principal_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"access": {
"can_resolve": true
},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"resolved_by": {
"acting_role": "client_and_principal_designer",
"organisation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"at": "2023-11-07T05:31:56Z",
"principal_type": "users",
"principal_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"rejection_reason": "<string>",
"resulting_revision": 123
},
"relationships": {
"construction_phase_plan": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "construction-phase-plans"
}
},
"risk": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "construction-phase-plan-risks"
}
},
"hazard": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "pre-construction-information-hazards"
}
},
"hazard_proposal": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "pre-construction-information-proposed-changes"
}
},
"superseded_by": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "construction-phase-plan-proposed-changes"
}
}
}
},
"jsonapi": {
"version": "1.0"
}
}{
"id": "98ca4a78-b66f-4234-9719-aaf832ee6669",
"status": "400",
"title": "A validation error was encountered",
"source": {
"parameter": "include"
},
"meta": {
"resource": "wrong_value"
}
}{
"id": "05fc9c8d-73b9-4697-9337-57f7a567a48f",
"status": "401",
"title": "You are not authorised to access this resource",
"detail": "In order to access this resource, you need the 'admin' role.",
"code": "AUTH.001"
}{
"errors": [
{
"id": "1b3f2c30-2d56-4d3a-9c44-9be9c2cbf2f0",
"status": "403",
"title": "Forbidden",
"detail": "You do not hold the grant required for this action.",
"code": "AUTH.002"
}
]
}{
"id": "7b4c8f12-3e9a-4d5b-8c6f-1a2b3c4d5e6f",
"status": "404",
"title": "Resource not found",
"detail": "The requested resource could not be found or does not exist.",
"code": "NOT_FOUND.001"
}{
"id": "8e2f9a34-b5c6-4d7e-9f8a-2b3c4d5e6f7g",
"status": "409",
"title": "Conflict",
"detail": "The request conflicts with the current state of the resource.",
"code": "CONFLICT.001"
}{
"id": "fe9d9a69-f0a7-4fdc-bb2c-176027f316c5",
"status": "500",
"title": "Internal Server Error",
"detail": "An unexpected error occurred on the server."
}Accept a change proposed to a construction phase plan
Accept a pending change. Only the party that did not propose it can. Accepting applies the change and mints a new revision in one step, and supersedes older pending changes to the same target.
curl --request POST \
--url https://api.ctrl-hub.com/v3/construction-phase-plans/{construction_phase_plan_id}/proposed-changes/{construction_phase_plan_proposed_change_id}/acceptance \
--header 'X-Session-Token: <api-key>'import requests
url = "https://api.ctrl-hub.com/v3/construction-phase-plans/{construction_phase_plan_id}/proposed-changes/{construction_phase_plan_proposed_change_id}/acceptance"
headers = {"X-Session-Token": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'X-Session-Token': '<api-key>'}};
fetch('https://api.ctrl-hub.com/v3/construction-phase-plans/{construction_phase_plan_id}/proposed-changes/{construction_phase_plan_proposed_change_id}/acceptance', 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.ctrl-hub.com/v3/construction-phase-plans/{construction_phase_plan_id}/proposed-changes/{construction_phase_plan_proposed_change_id}/acceptance",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-Session-Token: <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"
"net/http"
"io"
)
func main() {
url := "https://api.ctrl-hub.com/v3/construction-phase-plans/{construction_phase_plan_id}/proposed-changes/{construction_phase_plan_proposed_change_id}/acceptance"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("X-Session-Token", "<api-key>")
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.ctrl-hub.com/v3/construction-phase-plans/{construction_phase_plan_id}/proposed-changes/{construction_phase_plan_proposed_change_id}/acceptance")
.header("X-Session-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ctrl-hub.com/v3/construction-phase-plans/{construction_phase_plan_id}/proposed-changes/{construction_phase_plan_proposed_change_id}/acceptance")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Session-Token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "construction-phase-plan-proposed-changes",
"attributes": {
"reason": "<string>",
"section": "health_and_safety_aims",
"operation": "replace",
"state": "pending",
"base_revision": 123,
"proposed": {
"health_and_safety_aims": {
"aims": "<string>"
},
"site_rules": {
"rules": [
"<string>"
]
},
"induction": {
"points": [
"<string>"
],
"declarations": [
"<string>"
]
},
"welfare": {
"toilets": "<string>",
"washing": "<string>",
"drinking_water": "<string>",
"rest_and_eating": "<string>",
"changing_and_drying": "<string>",
"location": "<string>"
},
"emergency_arrangements": {
"emergency_procedures": "<string>",
"fire_arrangements": "<string>",
"first_aid_arrangements": "<string>",
"first_aiders": [
{
"name": "<string>",
"user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"nearest_hospital": "<string>"
},
"monitoring_and_review": {
"arrangements": "<string>",
"review_frequency": "<string>"
},
"key_operatives": [
{
"name": "<string>",
"role": "<string>",
"phone": "<string>",
"user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"job_role_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"client_checklist": {
"management_arrangements": {
"answer": "yes",
"comments": "<string>"
},
"time_and_resources": {
"answer": "yes",
"comments": "<string>"
},
"pre_construction_information": {
"answer": "yes",
"comments": "<string>"
},
"principal_designer_appointed": {
"answer": "yes",
"comments": "<string>"
},
"principal_contractor_appointed": {
"answer": "yes",
"comments": "<string>"
},
"construction_phase_plan_in_place": {
"answer": "yes",
"comments": "<string>"
},
"welfare_provided": {
"answer": "yes",
"comments": "<string>"
},
"health_and_safety_file_arranged": {
"answer": "yes",
"comments": "<string>"
},
"notification_made": {
"answer": "yes",
"comments": "<string>"
},
"competence_checked": {
"answer": "yes",
"comments": "<string>"
}
},
"risk": {
"control_measure": "<string>",
"responsible_party": "<string>",
"responsible_party_user_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"responsible_party_organisation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"implemented_on": "2023-12-25"
}
},
"proposed_by": {
"acting_role": "client_and_principal_designer",
"organisation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"at": "2023-11-07T05:31:56Z",
"principal_type": "users",
"principal_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"access": {
"can_resolve": true
},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"resolved_by": {
"acting_role": "client_and_principal_designer",
"organisation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"at": "2023-11-07T05:31:56Z",
"principal_type": "users",
"principal_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"rejection_reason": "<string>",
"resulting_revision": 123
},
"relationships": {
"construction_phase_plan": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "construction-phase-plans"
}
},
"risk": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "construction-phase-plan-risks"
}
},
"hazard": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "pre-construction-information-hazards"
}
},
"hazard_proposal": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "pre-construction-information-proposed-changes"
}
},
"superseded_by": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "construction-phase-plan-proposed-changes"
}
}
}
},
"jsonapi": {
"version": "1.0"
}
}{
"id": "98ca4a78-b66f-4234-9719-aaf832ee6669",
"status": "400",
"title": "A validation error was encountered",
"source": {
"parameter": "include"
},
"meta": {
"resource": "wrong_value"
}
}{
"id": "05fc9c8d-73b9-4697-9337-57f7a567a48f",
"status": "401",
"title": "You are not authorised to access this resource",
"detail": "In order to access this resource, you need the 'admin' role.",
"code": "AUTH.001"
}{
"errors": [
{
"id": "1b3f2c30-2d56-4d3a-9c44-9be9c2cbf2f0",
"status": "403",
"title": "Forbidden",
"detail": "You do not hold the grant required for this action.",
"code": "AUTH.002"
}
]
}{
"id": "7b4c8f12-3e9a-4d5b-8c6f-1a2b3c4d5e6f",
"status": "404",
"title": "Resource not found",
"detail": "The requested resource could not be found or does not exist.",
"code": "NOT_FOUND.001"
}{
"id": "8e2f9a34-b5c6-4d7e-9f8a-2b3c4d5e6f7g",
"status": "409",
"title": "Conflict",
"detail": "The request conflicts with the current state of the resource.",
"code": "CONFLICT.001"
}{
"id": "fe9d9a69-f0a7-4fdc-bb2c-176027f316c5",
"status": "500",
"title": "Internal Server Error",
"detail": "An unexpected error occurred on the server."
}Authorizations
Session token for authentication.
Path Parameters
The unique identifier for the construction phase plan resource.
The unique identifier for the proposed change.
Query Parameters
The organisation you are acting for. It must be one you are a member of. A person in more than one organisation takes the role of the one named here, so a member of both a scheme's owner and its Principal Contractor is the Client when acting for the owner and the Principal Contractor when acting for the contractor. Naming an organisation you are not a member of is answered as not found.
Response
A proposed change to a construction phase plan.