curl --request PATCH \
--url https://api.devin.ai/v3beta1/organizations/{org_id}/snapshot-setup/blueprints/{blueprint_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contents": "<string>",
"position": 123
}
'import requests
url = "https://api.devin.ai/v3beta1/organizations/{org_id}/snapshot-setup/blueprints/{blueprint_id}"
payload = {
"contents": "<string>",
"position": 123
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({contents: '<string>', position: 123})
};
fetch('https://api.devin.ai/v3beta1/organizations/{org_id}/snapshot-setup/blueprints/{blueprint_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.devin.ai/v3beta1/organizations/{org_id}/snapshot-setup/blueprints/{blueprint_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'contents' => '<string>',
'position' => 123
]),
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/v3beta1/organizations/{org_id}/snapshot-setup/blueprints/{blueprint_id}"
payload := strings.NewReader("{\n \"contents\": \"<string>\",\n \"position\": 123\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.devin.ai/v3beta1/organizations/{org_id}/snapshot-setup/blueprints/{blueprint_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"contents\": \"<string>\",\n \"position\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.devin.ai/v3beta1/organizations/{org_id}/snapshot-setup/blueprints/{blueprint_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"contents\": \"<string>\",\n \"position\": 123\n}"
response = http.request(request)
puts response.read_body{
"blueprint_id": "<string>",
"created_at": 123,
"repo_name": "<string>",
"type": "enterprise",
"updated_at": 123,
"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"
}Actualizar el contenido, la posición y/o el origen de un blueprint
Actualización parcial de un único blueprint. NO activa automáticamente una compilación.
Campos admitidos:
contents— escribe una nueva versión YAML para el blueprint.position— establece la posición de ejecución del blueprint de nivel de repo. Devuelve400en un blueprint de nivel org (estos no tienen posición).source— cambia el repositorio entre los modosgitydatabase. Solo para blueprints raíz de nivel de repo.{"source": "database", "contents": ...}desvincula el blueprint y usacontentscomo la nueva (única) versión.
Devuelve 400 cuando el cuerpo está vacío.
curl --request PATCH \
--url https://api.devin.ai/v3beta1/organizations/{org_id}/snapshot-setup/blueprints/{blueprint_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contents": "<string>",
"position": 123
}
'import requests
url = "https://api.devin.ai/v3beta1/organizations/{org_id}/snapshot-setup/blueprints/{blueprint_id}"
payload = {
"contents": "<string>",
"position": 123
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({contents: '<string>', position: 123})
};
fetch('https://api.devin.ai/v3beta1/organizations/{org_id}/snapshot-setup/blueprints/{blueprint_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.devin.ai/v3beta1/organizations/{org_id}/snapshot-setup/blueprints/{blueprint_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'contents' => '<string>',
'position' => 123
]),
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/v3beta1/organizations/{org_id}/snapshot-setup/blueprints/{blueprint_id}"
payload := strings.NewReader("{\n \"contents\": \"<string>\",\n \"position\": 123\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.devin.ai/v3beta1/organizations/{org_id}/snapshot-setup/blueprints/{blueprint_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"contents\": \"<string>\",\n \"position\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.devin.ai/v3beta1/organizations/{org_id}/snapshot-setup/blueprints/{blueprint_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"contents\": \"<string>\",\n \"position\": 123\n}"
response = http.request(request)
puts response.read_body{
"blueprint_id": "<string>",
"created_at": 123,
"repo_name": "<string>",
"type": "enterprise",
"updated_at": 123,
"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
Requiere un usuario de servicio o un token de acceso personal con el permisoManageRepoBlueprints a nivel de la organización. Para crear o actualizar blueprints de nivel de organización, se requiere el permiso ManageOrgSnapshots.
Comportamiento
Actualiza el contenido y/o la posición de un blueprint. No desencadena automáticamente una compilación.Autorizaciones
Credencial de usuario de servicio (prefijo: cog_)
Parámetros de ruta
ID de la organización (prefijo: org-)
"org-abc123def456"
Cuerpo
Actualización parcial de un blueprint de nivel de org o repo.
Se puede proporcionar cualquier subconjunto de campos. Los campos que no se especifiquen se dejan sin cambios.
Proporcionar position o source en un blueprint de nivel de org devuelve 400: solo
los blueprints de nivel de repo tienen estos campos. NO activa una compilación.
Si se especifica, reemplaza el cuerpo YAML del blueprint por una nueva versión.
Si se especifica, actualiza la posición de ejecución de este blueprint de nivel de repo. No es necesario que las posiciones sean únicas; en caso de empate, el servidor lo resuelve de forma arbitraria al ordenarlas para la ejecución.
Si se establece, cambia el origen del blueprint del repositorio. Solo se acepta en el blueprint raíz del repositorio (los blueprints con un ámbito específico lo heredan). 'git' obtiene .devin/blueprint.yaml de la rama predeterminada (404 si el archivo no existe) y no puede combinarse con 'contents'; 'database' conserva el YAML actual (o 'contents', si se proporciona) y deja de sincronizarse con el repositorio. Es una operación sin efectos si el blueprint ya está en ese modo.
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 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 
