curl --request POST \
--url https://api.devin.ai/v3/organizations/{org_id}/snapshot-setup/blueprints \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contents": "<string>",
"repo_name": "<string>"
}
'import requests
url = "https://api.devin.ai/v3/organizations/{org_id}/snapshot-setup/blueprints"
payload = {
"contents": "<string>",
"repo_name": "<string>"
}
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({contents: '<string>', repo_name: '<string>'})
};
fetch('https://api.devin.ai/v3/organizations/{org_id}/snapshot-setup/blueprints', 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.devin.ai/v3/organizations/{org_id}/snapshot-setup/blueprints",
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([
'contents' => '<string>',
'repo_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.devin.ai/v3/organizations/{org_id}/snapshot-setup/blueprints"
payload := strings.NewReader("{\n \"contents\": \"<string>\",\n \"repo_name\": \"<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://api.devin.ai/v3/organizations/{org_id}/snapshot-setup/blueprints")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"contents\": \"<string>\",\n \"repo_name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.devin.ai/v3/organizations/{org_id}/snapshot-setup/blueprints")
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 \"contents\": \"<string>\",\n \"repo_name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"blueprint_id": "<string>",
"created_at": 123,
"repo_name": "<string>",
"type": "enterprise",
"updated_at": 123,
"build_on_default_branch_commit": true,
"report_check_runs": true,
"source": "git"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}Crear una plantilla a nivel de organización o de repo
Crear un blueprint. type se infiere de repo_name.
El valor predeterminado de source es database. Con source='git', el YAML
(y cualquier includes) se lee de .devin/blueprint.yaml en la
rama predeterminada del repositorio: se devuelve 404 si el archivo no existe, 422 si es
inválido y 502 si no se puede acceder al proveedor de Git.
Según la especificación, esta operación nunca inicia automáticamente una compilación; los clientes deben
realizar una solicitud POST /builds explícitamente.
curl --request POST \
--url https://api.devin.ai/v3/organizations/{org_id}/snapshot-setup/blueprints \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contents": "<string>",
"repo_name": "<string>"
}
'import requests
url = "https://api.devin.ai/v3/organizations/{org_id}/snapshot-setup/blueprints"
payload = {
"contents": "<string>",
"repo_name": "<string>"
}
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({contents: '<string>', repo_name: '<string>'})
};
fetch('https://api.devin.ai/v3/organizations/{org_id}/snapshot-setup/blueprints', 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.devin.ai/v3/organizations/{org_id}/snapshot-setup/blueprints",
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([
'contents' => '<string>',
'repo_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.devin.ai/v3/organizations/{org_id}/snapshot-setup/blueprints"
payload := strings.NewReader("{\n \"contents\": \"<string>\",\n \"repo_name\": \"<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://api.devin.ai/v3/organizations/{org_id}/snapshot-setup/blueprints")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"contents\": \"<string>\",\n \"repo_name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.devin.ai/v3/organizations/{org_id}/snapshot-setup/blueprints")
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 \"contents\": \"<string>\",\n \"repo_name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"blueprint_id": "<string>",
"created_at": 123,
"repo_name": "<string>",
"type": "enterprise",
"updated_at": 123,
"build_on_default_branch_commit": true,
"report_check_runs": true,
"source": "git"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}Permisos
Se requiere un usuario de servicio o un token de acceso personal con el permisoManageRepoBlueprints a nivel de organización. La creación de blueprints de nivel de organización requiere el permiso ManageOrgSnapshots.
Comportamiento
Crea un blueprint de nivel de organización o de repo. Un blueprint define la configuración declarativa de Environment para las sesiones de Devin. Modificar un blueprint no activa automáticamente una compilación; debes llamar explícitamente al endpoint de compilaciones.repo_name también agrega ese repositorio al Environment; no existe un endpoint independiente para registrar primero el repo. El repositorio se clona en el Environment en la siguiente compilación y se inicia su indexación.También ocurre lo contrario: eliminar un repositorio del Environment (el interruptor Incluir en Environment en la UI) elimina todos los blueprints de ese repo, incluidos todos sus ámbitos de workspace.owner/repo); un repo desconocido o inaccesible devuelve 404 y no se crea ningún blueprint. Si ya existe un blueprint activo para ese repo y ámbito, la solicitud devuelve 409; usa el endpoint de actualización en su lugar.Autorizaciones
Credencial de usuario de servicio (prefijo: cog_)
Parámetros de ruta
ID de organización (prefijo: org-)
"org-abc123def456"
Cuerpo
Cuerpo YAML inicial opcional para el blueprint. No se permite con source='git' (el contenido procede del repositorio).
Si se establece, crea un blueprint de nivel de repo para ese repositorio. Si se omite, crea un blueprint para toda la organización (nivel de organización).
Solo en el nivel de repositorio. 'git' lee .devin/blueprint.yaml (y los archivos que incluye) de la rama predeterminada del repositorio y mantiene el blueprint sincronizado con ella; 'database' almacena el YAML en Devin. Si se omite, el valor predeterminado es 'database'.
git, database Respuesta
Respuesta satisfactoria
Esquema público del recurso Blueprint.
Nota: el enum type puede ampliarse en el futuro; los clientes DEBEN manejar correctamente
los valores desconocidos. El contenido YAML se obtiene por separado mediante
GET /blueprints/{id}/contents.
enterprise, org, repo Indica si cada Push a la rama predeterminada del repositorio compila el entorno. Null salvo que se trate del blueprint raíz de un repositorio.
Indica si cada compilación de un commit se notifica como una ejecución de comprobación de GitHub asociada a ese commit. Null salvo que se trate del blueprint raíz de un repositorio.
Dónde se escribe el YAML: 'git' (sincronizado desde .devin/blueprint.yaml en el repositorio) o 'database' (editado mediante la API o la interfaz de usuario). Siempre es null para los blueprints de ámbito Enterprise y de organización.
git, database 
