Update a trip document
Manages documents under the organization-owned trip. New uploads can use an existing upload_id or a stored upload_key and file_name pair; specific visibility is restricted to selected trip participants. Download records access and returns the resolved storage URL.
curl --request PUT \
--url https://api.gratona.com/v1/admin/trips/{tripId}/documents/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "Follow up with trip participants",
"category": "<string>",
"description": "Please review the updated trip details.",
"visibility": "all_participants",
"visible_to_participants": [
123
],
"upload_id": 1,
"upload_key": "<string>",
"file_name": "<string>"
}
'import requests
url = "https://api.gratona.com/v1/admin/trips/{tripId}/documents/{id}"
payload = {
"title": "Follow up with trip participants",
"category": "<string>",
"description": "Please review the updated trip details.",
"visibility": "all_participants",
"visible_to_participants": [123],
"upload_id": 1,
"upload_key": "<string>",
"file_name": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: 'Follow up with trip participants',
category: '<string>',
description: 'Please review the updated trip details.',
visibility: 'all_participants',
visible_to_participants: [123],
upload_id: 1,
upload_key: '<string>',
file_name: '<string>'
})
};
fetch('https://api.gratona.com/v1/admin/trips/{tripId}/documents/{id}', 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/trips/{tripId}/documents/{id}",
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([
'title' => 'Follow up with trip participants',
'category' => '<string>',
'description' => 'Please review the updated trip details.',
'visibility' => 'all_participants',
'visible_to_participants' => [
123
],
'upload_id' => 1,
'upload_key' => '<string>',
'file_name' => '<string>'
]),
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/trips/{tripId}/documents/{id}"
payload := strings.NewReader("{\n \"title\": \"Follow up with trip participants\",\n \"category\": \"<string>\",\n \"description\": \"Please review the updated trip details.\",\n \"visibility\": \"all_participants\",\n \"visible_to_participants\": [\n 123\n ],\n \"upload_id\": 1,\n \"upload_key\": \"<string>\",\n \"file_name\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.gratona.com/v1/admin/trips/{tripId}/documents/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"Follow up with trip participants\",\n \"category\": \"<string>\",\n \"description\": \"Please review the updated trip details.\",\n \"visibility\": \"all_participants\",\n \"visible_to_participants\": [\n 123\n ],\n \"upload_id\": 1,\n \"upload_key\": \"<string>\",\n \"file_name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/trips/{tripId}/documents/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"Follow up with trip participants\",\n \"category\": \"<string>\",\n \"description\": \"Please review the updated trip details.\",\n \"visibility\": \"all_participants\",\n \"visible_to_participants\": [\n 123\n ],\n \"upload_id\": 1,\n \"upload_key\": \"<string>\",\n \"file_name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": "Saved successfully.",
"data": {
"id": 123,
"title": "<string>",
"category": "<string>",
"description": "<string>",
"visibility": "<string>",
"download_url": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"visible_to_participants": [
123
],
"upload": {
"id": 123,
"name": "<string>",
"url": "<string>"
}
}
}{
"message": "Unauthorized",
"status": "error"
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}{
"message": "Not Found",
"status": "error"
}{
"errors": {},
"status": "error",
"message": "The given data was invalid."
}Authorizations
Passport bearer token authentication for legacy admin sessions.
Path Parameters
Trip ID belonging to the authenticated organization.
Record ID within the organization and any parent resource in this route.
Body
Request fields accepted by this operation. Omitted optional properties retain the behavior described above.
Validation: required|string|max:255.
255"Follow up with trip participants"
Validation: nullable|string|max:100.
100Validation: nullable|string|max:5000.
5000"Please review the updated trip details."
Validation: required|in:all_participants,leaders_only,specific.
all_participants, leaders_only, specific "all_participants"
Participant IDs belonging to this trip. At least one is required for specific visibility.
Validation: nullable|integer.
1
Validation: nullable|string|max:255|required_with:file_name.
255Validation: nullable|string|max:255|required_with:upload_key.
255curl --request PUT \
--url https://api.gratona.com/v1/admin/trips/{tripId}/documents/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "Follow up with trip participants",
"category": "<string>",
"description": "Please review the updated trip details.",
"visibility": "all_participants",
"visible_to_participants": [
123
],
"upload_id": 1,
"upload_key": "<string>",
"file_name": "<string>"
}
'import requests
url = "https://api.gratona.com/v1/admin/trips/{tripId}/documents/{id}"
payload = {
"title": "Follow up with trip participants",
"category": "<string>",
"description": "Please review the updated trip details.",
"visibility": "all_participants",
"visible_to_participants": [123],
"upload_id": 1,
"upload_key": "<string>",
"file_name": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: 'Follow up with trip participants',
category: '<string>',
description: 'Please review the updated trip details.',
visibility: 'all_participants',
visible_to_participants: [123],
upload_id: 1,
upload_key: '<string>',
file_name: '<string>'
})
};
fetch('https://api.gratona.com/v1/admin/trips/{tripId}/documents/{id}', 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/trips/{tripId}/documents/{id}",
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([
'title' => 'Follow up with trip participants',
'category' => '<string>',
'description' => 'Please review the updated trip details.',
'visibility' => 'all_participants',
'visible_to_participants' => [
123
],
'upload_id' => 1,
'upload_key' => '<string>',
'file_name' => '<string>'
]),
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/trips/{tripId}/documents/{id}"
payload := strings.NewReader("{\n \"title\": \"Follow up with trip participants\",\n \"category\": \"<string>\",\n \"description\": \"Please review the updated trip details.\",\n \"visibility\": \"all_participants\",\n \"visible_to_participants\": [\n 123\n ],\n \"upload_id\": 1,\n \"upload_key\": \"<string>\",\n \"file_name\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.gratona.com/v1/admin/trips/{tripId}/documents/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"Follow up with trip participants\",\n \"category\": \"<string>\",\n \"description\": \"Please review the updated trip details.\",\n \"visibility\": \"all_participants\",\n \"visible_to_participants\": [\n 123\n ],\n \"upload_id\": 1,\n \"upload_key\": \"<string>\",\n \"file_name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gratona.com/v1/admin/trips/{tripId}/documents/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"Follow up with trip participants\",\n \"category\": \"<string>\",\n \"description\": \"Please review the updated trip details.\",\n \"visibility\": \"all_participants\",\n \"visible_to_participants\": [\n 123\n ],\n \"upload_id\": 1,\n \"upload_key\": \"<string>\",\n \"file_name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": "Saved successfully.",
"data": {
"id": 123,
"title": "<string>",
"category": "<string>",
"description": "<string>",
"visibility": "<string>",
"download_url": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"visible_to_participants": [
123
],
"upload": {
"id": 123,
"name": "<string>",
"url": "<string>"
}
}
}{
"message": "Unauthorized",
"status": "error"
}{
"message": "Something went wrong. Please try again.",
"status": "error",
"error": "invalid_request",
"code": "DONOR_NOT_FOUND"
}{
"message": "Not Found",
"status": "error"
}{
"errors": {},
"status": "error",
"message": "The given data was invalid."
}