curl --request POST \
--url https://api.roofkit.ai/api/v1/reports/{report_id}/export \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"revision_id": "<string>",
"csv_layout": "estimate"
}
'import requests
url = "https://api.roofkit.ai/api/v1/reports/{report_id}/export"
payload = {
"revision_id": "<string>",
"csv_layout": "estimate"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({revision_id: '<string>', csv_layout: 'estimate'})
};
fetch('https://api.roofkit.ai/api/v1/reports/{report_id}/export', 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.roofkit.ai/api/v1/reports/{report_id}/export",
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([
'revision_id' => '<string>',
'csv_layout' => 'estimate'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.roofkit.ai/api/v1/reports/{report_id}/export"
payload := strings.NewReader("{\n \"revision_id\": \"<string>\",\n \"csv_layout\": \"estimate\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
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.roofkit.ai/api/v1/reports/{report_id}/export")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"revision_id\": \"<string>\",\n \"csv_layout\": \"estimate\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.roofkit.ai/api/v1/reports/{report_id}/export")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"revision_id\": \"<string>\",\n \"csv_layout\": \"estimate\"\n}"
response = http.request(request)
puts response.read_body{
"revision_id": "<string>",
"exports": [
{
"export_id": "<string>",
"report_id": "<string>",
"revision_id": "<string>",
"format": "xml",
"file_name": "<string>",
"mime_type": "<string>",
"size_bytes": 1,
"checksum": "<string>",
"role": "export",
"metadata": {},
"created_at": "2023-11-07T05:31:56Z",
"download_url": "<string>"
}
]
}Exportar reporte
Genera una exportación de reporte desde la revisión solicitada, o desde la revisión fallback aprobada/actual cuando se omite revision_id. Las exportaciones PDF requieren reports.export_pdf; los formatos técnicos requieren reports.export_technical.
curl --request POST \
--url https://api.roofkit.ai/api/v1/reports/{report_id}/export \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"revision_id": "<string>",
"csv_layout": "estimate"
}
'import requests
url = "https://api.roofkit.ai/api/v1/reports/{report_id}/export"
payload = {
"revision_id": "<string>",
"csv_layout": "estimate"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({revision_id: '<string>', csv_layout: 'estimate'})
};
fetch('https://api.roofkit.ai/api/v1/reports/{report_id}/export', 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.roofkit.ai/api/v1/reports/{report_id}/export",
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([
'revision_id' => '<string>',
'csv_layout' => 'estimate'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.roofkit.ai/api/v1/reports/{report_id}/export"
payload := strings.NewReader("{\n \"revision_id\": \"<string>\",\n \"csv_layout\": \"estimate\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
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.roofkit.ai/api/v1/reports/{report_id}/export")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"revision_id\": \"<string>\",\n \"csv_layout\": \"estimate\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.roofkit.ai/api/v1/reports/{report_id}/export")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"revision_id\": \"<string>\",\n \"csv_layout\": \"estimate\"\n}"
response = http.request(request)
puts response.read_body{
"revision_id": "<string>",
"exports": [
{
"export_id": "<string>",
"report_id": "<string>",
"revision_id": "<string>",
"format": "xml",
"file_name": "<string>",
"mime_type": "<string>",
"size_bytes": 1,
"checksum": "<string>",
"role": "export",
"metadata": {},
"created_at": "2023-11-07T05:31:56Z",
"download_url": "<string>"
}
]
}pdf: reports.export_pdf, technical: reports.export_technicalAutorizaciones
Usa Authorization: Bearer rk_live_....
Encabezados
Un valor único para cada solicitud nueva, como un UUID. Envíe el mismo valor para reintentar una solicitud de forma segura. La misma clave y el mismo payload repiten la primera respuesta con Idempotency-Replayed: true.
1 - 160Parámetros de ruta
1 - 200Cuerpo
pdf, dxf, csv, xlsx, xml, zip 200Para quién es el PDF. Elige el conjunto de hojas de Entregar de la app y da nombre al archivo. Solo PDF.
client, insurer, supplier, crew Anula el perfil de PDF del workspace para esta exportación. Solo PDF.
client, production, custom El CSV listo para estimados, con las cantidades agrupadas como las leen los estimados de seguros. Solo CSV.
estimate