curl --request PUT \
--url https://api.veryfront.com/projects/{project_reference}/style-artifacts/current \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"style_profile_hash": "<string>",
"branch": "<string>",
"environment_name": "<string>",
"release_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "ready",
"artifact_hash": "<string>",
"asset_path": "<string>",
"content_type": "<string>",
"etag": "<string>",
"build_run_id": "<string>",
"failure_reason": "<string>"
}
'import requests
url = "https://api.veryfront.com/projects/{project_reference}/style-artifacts/current"
payload = {
"style_profile_hash": "<string>",
"branch": "<string>",
"environment_name": "<string>",
"release_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "ready",
"artifact_hash": "<string>",
"asset_path": "<string>",
"content_type": "<string>",
"etag": "<string>",
"build_run_id": "<string>",
"failure_reason": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
style_profile_hash: '<string>',
branch: '<string>',
environment_name: '<string>',
release_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
status: 'ready',
artifact_hash: '<string>',
asset_path: '<string>',
content_type: '<string>',
etag: '<string>',
build_run_id: '<string>',
failure_reason: '<string>'
})
};
fetch('https://api.veryfront.com/projects/{project_reference}/style-artifacts/current', 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.veryfront.com/projects/{project_reference}/style-artifacts/current",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'style_profile_hash' => '<string>',
'branch' => '<string>',
'environment_name' => '<string>',
'release_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'status' => 'ready',
'artifact_hash' => '<string>',
'asset_path' => '<string>',
'content_type' => '<string>',
'etag' => '<string>',
'build_run_id' => '<string>',
'failure_reason' => '<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.veryfront.com/projects/{project_reference}/style-artifacts/current"
payload := strings.NewReader("{\n \"style_profile_hash\": \"<string>\",\n \"branch\": \"<string>\",\n \"environment_name\": \"<string>\",\n \"release_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"status\": \"ready\",\n \"artifact_hash\": \"<string>\",\n \"asset_path\": \"<string>\",\n \"content_type\": \"<string>\",\n \"etag\": \"<string>\",\n \"build_run_id\": \"<string>\",\n \"failure_reason\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.veryfront.com/projects/{project_reference}/style-artifacts/current")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"style_profile_hash\": \"<string>\",\n \"branch\": \"<string>\",\n \"environment_name\": \"<string>\",\n \"release_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"status\": \"ready\",\n \"artifact_hash\": \"<string>\",\n \"asset_path\": \"<string>\",\n \"content_type\": \"<string>\",\n \"etag\": \"<string>\",\n \"build_run_id\": \"<string>\",\n \"failure_reason\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.veryfront.com/projects/{project_reference}/style-artifacts/current")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"style_profile_hash\": \"<string>\",\n \"branch\": \"<string>\",\n \"environment_name\": \"<string>\",\n \"release_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"status\": \"ready\",\n \"artifact_hash\": \"<string>\",\n \"asset_path\": \"<string>\",\n \"content_type\": \"<string>\",\n \"etag\": \"<string>\",\n \"build_run_id\": \"<string>\",\n \"failure_reason\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "ready",
"artifact_hash": "<string>",
"asset_path": "<string>",
"etag": "<string>",
"content_type": "<string>",
"build_run_id": "<string>",
"failure_reason": "<string>",
"updated_at": "<string>"
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}Update style artifact
Record the state of the compiled CSS artifact for a branch, environment or release after a build; returns the style artifact record. Requires project.files.write.
curl --request PUT \
--url https://api.veryfront.com/projects/{project_reference}/style-artifacts/current \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"style_profile_hash": "<string>",
"branch": "<string>",
"environment_name": "<string>",
"release_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "ready",
"artifact_hash": "<string>",
"asset_path": "<string>",
"content_type": "<string>",
"etag": "<string>",
"build_run_id": "<string>",
"failure_reason": "<string>"
}
'import requests
url = "https://api.veryfront.com/projects/{project_reference}/style-artifacts/current"
payload = {
"style_profile_hash": "<string>",
"branch": "<string>",
"environment_name": "<string>",
"release_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "ready",
"artifact_hash": "<string>",
"asset_path": "<string>",
"content_type": "<string>",
"etag": "<string>",
"build_run_id": "<string>",
"failure_reason": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
style_profile_hash: '<string>',
branch: '<string>',
environment_name: '<string>',
release_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
status: 'ready',
artifact_hash: '<string>',
asset_path: '<string>',
content_type: '<string>',
etag: '<string>',
build_run_id: '<string>',
failure_reason: '<string>'
})
};
fetch('https://api.veryfront.com/projects/{project_reference}/style-artifacts/current', 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.veryfront.com/projects/{project_reference}/style-artifacts/current",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'style_profile_hash' => '<string>',
'branch' => '<string>',
'environment_name' => '<string>',
'release_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'status' => 'ready',
'artifact_hash' => '<string>',
'asset_path' => '<string>',
'content_type' => '<string>',
'etag' => '<string>',
'build_run_id' => '<string>',
'failure_reason' => '<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.veryfront.com/projects/{project_reference}/style-artifacts/current"
payload := strings.NewReader("{\n \"style_profile_hash\": \"<string>\",\n \"branch\": \"<string>\",\n \"environment_name\": \"<string>\",\n \"release_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"status\": \"ready\",\n \"artifact_hash\": \"<string>\",\n \"asset_path\": \"<string>\",\n \"content_type\": \"<string>\",\n \"etag\": \"<string>\",\n \"build_run_id\": \"<string>\",\n \"failure_reason\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.veryfront.com/projects/{project_reference}/style-artifacts/current")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"style_profile_hash\": \"<string>\",\n \"branch\": \"<string>\",\n \"environment_name\": \"<string>\",\n \"release_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"status\": \"ready\",\n \"artifact_hash\": \"<string>\",\n \"asset_path\": \"<string>\",\n \"content_type\": \"<string>\",\n \"etag\": \"<string>\",\n \"build_run_id\": \"<string>\",\n \"failure_reason\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.veryfront.com/projects/{project_reference}/style-artifacts/current")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"style_profile_hash\": \"<string>\",\n \"branch\": \"<string>\",\n \"environment_name\": \"<string>\",\n \"release_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"status\": \"ready\",\n \"artifact_hash\": \"<string>\",\n \"asset_path\": \"<string>\",\n \"content_type\": \"<string>\",\n \"etag\": \"<string>\",\n \"build_run_id\": \"<string>\",\n \"failure_reason\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "ready",
"artifact_hash": "<string>",
"asset_path": "<string>",
"etag": "<string>",
"content_type": "<string>",
"build_run_id": "<string>",
"failure_reason": "<string>",
"updated_at": "<string>"
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}Authorizations
Use a JWT bearer token or a Veryfront API key in the Authorization header.
Path Parameters
Project slug, UUID, or domain that identifies the project.
Body
Style profile identifier used with the selector to find current metadata.
1Branch name. Exactly one of branch, environment_name, or release_id is required. Main may be implicit before its branch row exists; other branch and environment names must exist in the project or the request returns 404.
1Environment name. Exactly one selector is required.
1Release UUID. Exactly one selector is required.
Metadata state. Ready requires artifact_hash; other states forbid it. Failed requires failure_reason.
building, ready, failed CSS artifact hash; required only for ready status and forbidden for other states.
1Registered CSS asset path. This operation does not upload the asset.
1Registered MIME type of the CSS asset.
1Registered entity tag for the CSS asset.
1Style build run identifier, when available.
1Failure detail; required when registering failed status.
1Response
Registered style artifact metadata
Current metadata state. Missing means no record exists; building does not confirm completion.
ready, missing, building, failed Registered CSS artifact hash, omitted when not available.
Registered CSS asset path, omitted when not available.
Registered CSS asset entity tag, omitted when not available.
Registered CSS asset MIME type, omitted when not available.
Style build run identifier, when available.
1Persisted failure detail, omitted when not available.
Latest metadata update timestamp; omitted for missing metadata.