Archive Flow instruction
curl --request POST \
--url https://app.letsflow.ai/v1/guidance_rules/{ruleId}/actions/archive_instruction \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"expected_active_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"expected_draft_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://app.letsflow.ai/v1/guidance_rules/{ruleId}/actions/archive_instruction"
payload = {
"expected_active_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"expected_draft_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
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({
expected_active_version_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
expected_draft_version_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://app.letsflow.ai/v1/guidance_rules/{ruleId}/actions/archive_instruction', 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.letsflow.ai/v1/guidance_rules/{ruleId}/actions/archive_instruction",
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([
'expected_active_version_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'expected_draft_version_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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.letsflow.ai/v1/guidance_rules/{ruleId}/actions/archive_instruction"
payload := strings.NewReader("{\n \"expected_active_version_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"expected_draft_version_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\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.letsflow.ai/v1/guidance_rules/{ruleId}/actions/archive_instruction")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"expected_active_version_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"expected_draft_version_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.letsflow.ai/v1/guidance_rules/{ruleId}/actions/archive_instruction")
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 \"expected_active_version_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"expected_draft_version_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"rule_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "archived"
},
"meta": {
"request_id": "<string>",
"correlation_id": "<string>",
"operation": "<string>",
"resource": "<string>"
}
}{
"type": "https://app.letsflow.ai/problems/access-grant-not-found",
"title": "<string>",
"status": 123,
"code": "access_grant_admin_extension_required",
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"correlation_id": "<string>",
"retryable": true,
"auth_failure_reason": "<string>",
"availability_reason": "capability_disabled",
"re_auth_required": true,
"violations": [
{
"field": "<string>",
"message": "<string>",
"capability": "<string>",
"details": {}
}
],
"diagnostics": [
{
"code": "<string>",
"severity": "info",
"message": "<string>",
"fixHint": "<string>",
"location": {
"file": "<string>",
"line": 2,
"column": 2,
"stepId": "<string>"
}
}
]
}Guidance rules
Archive Flow instruction
Archive a saved team-scoped guidance rule so Flow no longer uses it. The body must name the published and draft versions last read. A mismatched version returns a conflict and leaves the rule unchanged.
POST
/
v1
/
guidance_rules
/
{ruleId}
/
actions
/
archive_instruction
Archive Flow instruction
curl --request POST \
--url https://app.letsflow.ai/v1/guidance_rules/{ruleId}/actions/archive_instruction \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"expected_active_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"expected_draft_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://app.letsflow.ai/v1/guidance_rules/{ruleId}/actions/archive_instruction"
payload = {
"expected_active_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"expected_draft_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
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({
expected_active_version_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
expected_draft_version_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://app.letsflow.ai/v1/guidance_rules/{ruleId}/actions/archive_instruction', 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.letsflow.ai/v1/guidance_rules/{ruleId}/actions/archive_instruction",
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([
'expected_active_version_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'expected_draft_version_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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.letsflow.ai/v1/guidance_rules/{ruleId}/actions/archive_instruction"
payload := strings.NewReader("{\n \"expected_active_version_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"expected_draft_version_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\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.letsflow.ai/v1/guidance_rules/{ruleId}/actions/archive_instruction")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"expected_active_version_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"expected_draft_version_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.letsflow.ai/v1/guidance_rules/{ruleId}/actions/archive_instruction")
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 \"expected_active_version_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"expected_draft_version_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"rule_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "archived"
},
"meta": {
"request_id": "<string>",
"correlation_id": "<string>",
"operation": "<string>",
"resource": "<string>"
}
}{
"type": "https://app.letsflow.ai/problems/access-grant-not-found",
"title": "<string>",
"status": 123,
"code": "access_grant_admin_extension_required",
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"correlation_id": "<string>",
"retryable": true,
"auth_failure_reason": "<string>",
"availability_reason": "capability_disabled",
"re_auth_required": true,
"violations": [
{
"field": "<string>",
"message": "<string>",
"capability": "<string>",
"details": {}
}
],
"diagnostics": [
{
"code": "<string>",
"severity": "info",
"message": "<string>",
"fixHint": "<string>",
"location": {
"file": "<string>",
"line": 2,
"column": 2,
"stepId": "<string>"
}
}
]
}Authorizations
OAuth Bearer access tokens or Flow API keys with the required Flow scope families for the route.
Path Parameters
Identifier segment for ruleId.
Query Parameters
Team authoring scope for the guidance rule.
Body
application/json
Published instruction version the client last read. Send null when no version is published. A mismatched publication returns a conflict and leaves the rule unchanged.
Draft version the client last read. Send null when no unpublished draft exists. A mismatched draft returns a conflict and leaves the rule unchanged.