Events
Repair a missing invitation staff task
Returns an existing available task, restores its deleted canonical task, or recreates a missing task from its accepted snapshot and generated date. Invalidated original assignees become unassigned. Requires event start, saved plan and current active invitee version. Sends no communication. Requires event setup management; archived event invitation history is read-only (409). Also requires task management permission.
POST
/
admin
/
events
/
{eventId}
/
invitees
/
{inviteeId}
/
plan-tasks
/
{stepKey}
/
repair
Repair a missing invitation staff task
curl --request POST \
--url https://api.gratona.com/v1/admin/events/{eventId}/invitees/{inviteeId}/plan-tasks/{stepKey}/repair \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"expected_invitee_version": 1
}
'import requests
url = "https://api.gratona.com/v1/admin/events/{eventId}/invitees/{inviteeId}/plan-tasks/{stepKey}/repair"
payload = { "expected_invitee_version": 1 }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({expected_invitee_version: 1})
};
fetch('https://api.gratona.com/v1/admin/events/{eventId}/invitees/{inviteeId}/plan-tasks/{stepKey}/repair', 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.gratona.com/v1/admin/events/{eventId}/invitees/{inviteeId}/plan-tasks/{stepKey}/repair",
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([
'expected_invitee_version' => 1
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/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.gratona.com/v1/admin/events/{eventId}/invitees/{inviteeId}/plan-tasks/{stepKey}/repair"
payload := strings.NewReader("{\n \"expected_invitee_version\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.gratona.com/v1/admin/events/{eventId}/invitees/{inviteeId}/plan-tasks/{stepKey}/repair")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"expected_invitee_version\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/events/{eventId}/invitees/{inviteeId}/plan-tasks/{stepKey}/repair")
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'
request.body = "{\n \"expected_invitee_version\": 1\n}"
response = http.request(request)
puts response.read_body{
"data": {
"task_id": 42,
"task_version": 1,
"result": "already_available",
"notice": "The invitation Task was repaired. No message was sent."
}
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}{
"message": "Not Found",
"status": "error"
}{
"message": "Version, idempotency, preview or archived-event conflict.",
"error_code": "event_invitee_conflict",
"details": {
"current_version": 42,
"current_lock_version": 42,
"current_revision": 42,
"current_definition_hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}
}{
"errors": {},
"status": "error",
"message": "The given data was invalid."
}Authorizations
bearerAuthapiKeyAuth
Passport bearer token authentication for legacy admin sessions.
Path Parameters
Record ID in the authenticated organization.
Example:
42
Record ID in the authenticated organization.
Example:
42
Existing applied invitation-plan step key.
Example:
"personal_call"
Body
application/json
Current invitee version from the list.
Required range:
x >= 1Example:
1
Response
Repair a missing invitation staff task completed.
Show child attributes
Show child attributes
⌘I
Repair a missing invitation staff task
curl --request POST \
--url https://api.gratona.com/v1/admin/events/{eventId}/invitees/{inviteeId}/plan-tasks/{stepKey}/repair \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"expected_invitee_version": 1
}
'import requests
url = "https://api.gratona.com/v1/admin/events/{eventId}/invitees/{inviteeId}/plan-tasks/{stepKey}/repair"
payload = { "expected_invitee_version": 1 }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({expected_invitee_version: 1})
};
fetch('https://api.gratona.com/v1/admin/events/{eventId}/invitees/{inviteeId}/plan-tasks/{stepKey}/repair', 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.gratona.com/v1/admin/events/{eventId}/invitees/{inviteeId}/plan-tasks/{stepKey}/repair",
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([
'expected_invitee_version' => 1
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/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.gratona.com/v1/admin/events/{eventId}/invitees/{inviteeId}/plan-tasks/{stepKey}/repair"
payload := strings.NewReader("{\n \"expected_invitee_version\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.gratona.com/v1/admin/events/{eventId}/invitees/{inviteeId}/plan-tasks/{stepKey}/repair")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"expected_invitee_version\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/events/{eventId}/invitees/{inviteeId}/plan-tasks/{stepKey}/repair")
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'
request.body = "{\n \"expected_invitee_version\": 1\n}"
response = http.request(request)
puts response.read_body{
"data": {
"task_id": 42,
"task_version": 1,
"result": "already_available",
"notice": "The invitation Task was repaired. No message was sent."
}
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}{
"message": "Not Found",
"status": "error"
}{
"message": "Version, idempotency, preview or archived-event conflict.",
"error_code": "event_invitee_conflict",
"details": {
"current_version": 42,
"current_lock_version": 42,
"current_revision": 42,
"current_definition_hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}
}{
"errors": {},
"status": "error",
"message": "The given data was invalid."
}