curl --request GET \
--url https://app.base44.com/api/apps/{app_id}/app-checkpoints/{checkpoint_id}/file-tree \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/app-checkpoints/{checkpoint_id}/file-tree"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.base44.com/api/apps/{app_id}/app-checkpoints/{checkpoint_id}/file-tree', 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://app.base44.com/api/apps/{app_id}/app-checkpoints/{checkpoint_id}/file-tree",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://app.base44.com/api/apps/{app_id}/app-checkpoints/{checkpoint_id}/file-tree"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.base44.com/api/apps/{app_id}/app-checkpoints/{checkpoint_id}/file-tree")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/app-checkpoints/{checkpoint_id}/file-tree")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"files": {
"entities/Task": {
"name": "Task",
"properties": {
"title": {
"type": "string"
}
},
"type": "object"
},
"functions/sendWelcomeEmail": "Deno.serve(async (req) => Response.json({ ok: true }));\n",
"pages/Home": "export default function Home() {\n return <h1>Welcome</h1>;\n}\n"
}
}Get checkpoint files
Returns the source files saved in a checkpoint, so you can read the app’s code as it was at that version or compare two versions.
The files are the app’s editable source, such as its pages, components, backend functions and entity schemas, rather than every file in its repository. They come from the commit the checkpoint saved. A checkpoint saved before the app’s code was kept in git is rebuilt from the copy it stored, which holds fewer files. That copy is also used when a newer checkpoint’s commit can’t be read and the checkpoint stored one.
Every file comes back in one response, so expect a large response for a big app.
This is limited to 120 requests per minute per app for each workspace’s personal API keys, so every key in a workspace shares one allowance. Some workspaces have a different limit.
curl --request GET \
--url https://app.base44.com/api/apps/{app_id}/app-checkpoints/{checkpoint_id}/file-tree \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/app-checkpoints/{checkpoint_id}/file-tree"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.base44.com/api/apps/{app_id}/app-checkpoints/{checkpoint_id}/file-tree', 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://app.base44.com/api/apps/{app_id}/app-checkpoints/{checkpoint_id}/file-tree",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://app.base44.com/api/apps/{app_id}/app-checkpoints/{checkpoint_id}/file-tree"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.base44.com/api/apps/{app_id}/app-checkpoints/{checkpoint_id}/file-tree")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/app-checkpoints/{checkpoint_id}/file-tree")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"files": {
"entities/Task": {
"name": "Task",
"properties": {
"title": {
"type": "string"
}
},
"type": "object"
},
"functions/sendWelcomeEmail": "Deno.serve(async (req) => Response.json({ ok: true }));\n",
"pages/Home": "export default function Home() {\n return <h1>Welcome</h1>;\n}\n"
}
}Authorizations
Personal access token, sent as Authorization: Bearer <token>.
Response
The checkpoint's source files.
The source files saved in a checkpoint.
The checkpoint's source files, keyed by path. Pages, components, backend functions, entities and agents are keyed by kind and name with no file extension, such as pages/Home or functions/sendWelcomeEmail. A few files use a fixed name, such as layout. Entity, agent and workflow definitions come back as JSON objects, and source files as text.
Show child attributes
Show child attributes
{
"entities/Task": {
"name": "Task",
"properties": { "title": { "type": "string" } },
"type": "object"
},
"functions/sendWelcomeEmail": "Deno.serve(async (req) => Response.json({ ok: true }));\n",
"pages/Home": "export default function Home() {\n return <h1>Welcome</h1>;\n}\n"
}
Was this page helpful?