curl --request POST \
--url https://cool.jobmojito.com/functions/v1/portal-css-publish \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"portal": "interview",
"merchant_id": "28106cba-1c27-4e53-b149-32113e5e8e31",
"brand_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"files": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}
'import requests
url = "https://cool.jobmojito.com/functions/v1/portal-css-publish"
payload = {
"portal": "interview",
"merchant_id": "28106cba-1c27-4e53-b149-32113e5e8e31",
"brand_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"files": ["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({
portal: 'interview',
merchant_id: '28106cba-1c27-4e53-b149-32113e5e8e31',
brand_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
files: ['3c90c3cc-0d44-4b50-8888-8dd25736052a']
})
};
fetch('https://cool.jobmojito.com/functions/v1/portal-css-publish', 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://cool.jobmojito.com/functions/v1/portal-css-publish",
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([
'portal' => 'interview',
'merchant_id' => '28106cba-1c27-4e53-b149-32113e5e8e31',
'brand_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'files' => [
'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://cool.jobmojito.com/functions/v1/portal-css-publish"
payload := strings.NewReader("{\n \"portal\": \"interview\",\n \"merchant_id\": \"28106cba-1c27-4e53-b149-32113e5e8e31\",\n \"brand_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"files\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\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://cool.jobmojito.com/functions/v1/portal-css-publish")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"portal\": \"interview\",\n \"merchant_id\": \"28106cba-1c27-4e53-b149-32113e5e8e31\",\n \"brand_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"files\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cool.jobmojito.com/functions/v1/portal-css-publish")
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 \"portal\": \"interview\",\n \"merchant_id\": \"28106cba-1c27-4e53-b149-32113e5e8e31\",\n \"brand_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"files\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"url": "<string>",
"hash": "9f86d081884c7d65",
"size_bytes": 18230,
"warnings": [
"<string>"
]
}{
"error": "Field is required.",
"name": "interview_result_id"
}{
"error": "Field is required.",
"name": "interview_result_id"
}{
"error": "Field is required.",
"name": "interview_result_id"
}{
"error": "Field is required.",
"name": "interview_result_id"
}{
"error": "Field is required.",
"name": "interview_result_id"
}Publish a brand stylesheet
curl --request POST \
--url https://cool.jobmojito.com/functions/v1/portal-css-publish \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"portal": "interview",
"merchant_id": "28106cba-1c27-4e53-b149-32113e5e8e31",
"brand_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"files": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}
'import requests
url = "https://cool.jobmojito.com/functions/v1/portal-css-publish"
payload = {
"portal": "interview",
"merchant_id": "28106cba-1c27-4e53-b149-32113e5e8e31",
"brand_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"files": ["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({
portal: 'interview',
merchant_id: '28106cba-1c27-4e53-b149-32113e5e8e31',
brand_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
files: ['3c90c3cc-0d44-4b50-8888-8dd25736052a']
})
};
fetch('https://cool.jobmojito.com/functions/v1/portal-css-publish', 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://cool.jobmojito.com/functions/v1/portal-css-publish",
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([
'portal' => 'interview',
'merchant_id' => '28106cba-1c27-4e53-b149-32113e5e8e31',
'brand_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'files' => [
'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://cool.jobmojito.com/functions/v1/portal-css-publish"
payload := strings.NewReader("{\n \"portal\": \"interview\",\n \"merchant_id\": \"28106cba-1c27-4e53-b149-32113e5e8e31\",\n \"brand_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"files\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\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://cool.jobmojito.com/functions/v1/portal-css-publish")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"portal\": \"interview\",\n \"merchant_id\": \"28106cba-1c27-4e53-b149-32113e5e8e31\",\n \"brand_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"files\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cool.jobmojito.com/functions/v1/portal-css-publish")
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 \"portal\": \"interview\",\n \"merchant_id\": \"28106cba-1c27-4e53-b149-32113e5e8e31\",\n \"brand_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"files\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"url": "<string>",
"hash": "9f86d081884c7d65",
"size_bytes": 18230,
"warnings": [
"<string>"
]
}{
"error": "Field is required.",
"name": "interview_result_id"
}{
"error": "Field is required.",
"name": "interview_result_id"
}{
"error": "Field is required.",
"name": "interview_result_id"
}{
"error": "Field is required.",
"name": "interview_result_id"
}{
"error": "Field is required.",
"name": "interview_result_id"
}Authorizations
Supabase JWT — Authorization: Bearer <token>.
Body
interview (career and interview portal) or consumer (coaching portal). Only the interview portal has brands.
interview, consumer "interview"
Optional company. Admins and sub-merchant operators only; other callers always use their token's company.
"28106cba-1c27-4e53-b149-32113e5e8e31"
The sub-brand to publish. Leave it out for the main brand, the company's own.
Publish the drafts of only these CSS files; the others stay as they were last published. Leave it out to publish every draft of this brand.
Response
The stylesheet is live.
Address of the built stylesheet. It is named after its content and never changes.
First 16 characters of the SHA-256 of the stylesheet.
"9f86d081884c7d65"
Size of the stylesheet.
18230
Worth telling the person, none of them stopped the publish: over 500 KB, rules outside .jm-site that reach the rest of the portal, removed "<" characters.