curl --request POST \
--url https://app.teable.ai/api/skill/%7Bid%7D/copy \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"targetScopeType":"base","targetScopeId":"string","sourceBaseId":"string"}'const url = 'https://app.teable.ai/api/skill/%7Bid%7D/copy';
const options = {
method: 'POST',
headers: {
Authorization: 'Bearer REPLACE_BEARER_TOKEN',
'content-type': 'application/json'
},
body: '{"targetScopeType":"base","targetScopeId":"string","sourceBaseId":"string"}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}const http = require('https');
const options = {
method: 'POST',
hostname: 'app.teable.ai',
port: null,
path: '/api/skill/%7Bid%7D/copy',
headers: {
Authorization: 'Bearer REPLACE_BEARER_TOKEN',
'content-type': 'application/json'
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on('data', function (chunk) {
chunks.push(chunk);
});
res.on('end', function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({targetScopeType: 'base', targetScopeId: 'string', sourceBaseId: 'string'}));
req.end();import http.client
conn = http.client.HTTPSConnection("app.teable.ai")
payload = "{\"targetScopeType\":\"base\",\"targetScopeId\":\"string\",\"sourceBaseId\":\"string\"}"
headers = {
'Authorization': "Bearer REPLACE_BEARER_TOKEN",
'content-type': "application/json"
}
conn.request("POST", "/api/skill/%7Bid%7D/copy", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.teable.ai/api/skill/{id}/copy",
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([
'targetScopeId' => '<string>',
'sourceBaseId' => '<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://app.teable.ai/api/skill/{id}/copy"
payload := strings.NewReader("{\n \"targetScopeId\": \"<string>\",\n \"sourceBaseId\": \"<string>\"\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://app.teable.ai/api/skill/{id}/copy")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"targetScopeId\": \"<string>\",\n \"sourceBaseId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.teable.ai/api/skill/{id}/copy")
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 \"targetScopeId\": \"<string>\",\n \"sourceBaseId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"slug": "<string>",
"name": "<string>",
"skillMd": "<string>",
"scopeType": "base",
"isEnabled": true,
"createdTime": "<string>",
"createdBy": "<string>",
"description": "<string>",
"icon": "<string>",
"sourceMeta": "<unknown>",
"contentHash": "<string>"
}Copy skill to another scope
Copy a skill between user and project (base) scope. The source skill is kept; a same-slug skill in the target scope is overwritten.
curl --request POST \
--url https://app.teable.ai/api/skill/%7Bid%7D/copy \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"targetScopeType":"base","targetScopeId":"string","sourceBaseId":"string"}'const url = 'https://app.teable.ai/api/skill/%7Bid%7D/copy';
const options = {
method: 'POST',
headers: {
Authorization: 'Bearer REPLACE_BEARER_TOKEN',
'content-type': 'application/json'
},
body: '{"targetScopeType":"base","targetScopeId":"string","sourceBaseId":"string"}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}const http = require('https');
const options = {
method: 'POST',
hostname: 'app.teable.ai',
port: null,
path: '/api/skill/%7Bid%7D/copy',
headers: {
Authorization: 'Bearer REPLACE_BEARER_TOKEN',
'content-type': 'application/json'
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on('data', function (chunk) {
chunks.push(chunk);
});
res.on('end', function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({targetScopeType: 'base', targetScopeId: 'string', sourceBaseId: 'string'}));
req.end();import http.client
conn = http.client.HTTPSConnection("app.teable.ai")
payload = "{\"targetScopeType\":\"base\",\"targetScopeId\":\"string\",\"sourceBaseId\":\"string\"}"
headers = {
'Authorization': "Bearer REPLACE_BEARER_TOKEN",
'content-type': "application/json"
}
conn.request("POST", "/api/skill/%7Bid%7D/copy", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.teable.ai/api/skill/{id}/copy",
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([
'targetScopeId' => '<string>',
'sourceBaseId' => '<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://app.teable.ai/api/skill/{id}/copy"
payload := strings.NewReader("{\n \"targetScopeId\": \"<string>\",\n \"sourceBaseId\": \"<string>\"\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://app.teable.ai/api/skill/{id}/copy")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"targetScopeId\": \"<string>\",\n \"sourceBaseId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.teable.ai/api/skill/{id}/copy")
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 \"targetScopeId\": \"<string>\",\n \"sourceBaseId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"slug": "<string>",
"name": "<string>",
"skillMd": "<string>",
"scopeType": "base",
"isEnabled": true,
"createdTime": "<string>",
"createdBy": "<string>",
"description": "<string>",
"icon": "<string>",
"sourceMeta": "<unknown>",
"contentHash": "<string>"
}Авторизації
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Параметри шляху
Skill ID to copy
Тіло
Target ownership scope
base, space, system, user, User, app, App, cuppyclaw, Cuppyclaw, routine, Routine Target scope entity ID (required for base/space/app/cuppyclaw/routine)
Source project context: authorizes reading a folded space skill via base|read on that project.
Відповідь
Copied skill
Unique skill identifier
URL-safe skill slug
Display name of the skill
SKILL.md content defining the skill
Ownership scope: base (project), space, system, user, app, cuppyclaw or routine
base, space, system, user, User, app, App, cuppyclaw, Cuppyclaw, routine, Routine Whether the skill is enabled / available to the agent
ISO 8601 creation timestamp
User ID of the creator
Short description of what the skill does
Icon identifier or emoji
Source metadata (github/zip/manual)
SHA-256 content hash for change detection
Чи була ця сторінка корисною?

