curl --request POST \
--url http://localhost:9371/modules/install \
--header 'Content-Type: application/json' \
--data '
{
"source": "<string>",
"version": "^1.0.0",
"autoUpdate": true
}
'import requests
url = "http://localhost:9371/modules/install"
payload = {
"source": "<string>",
"version": "^1.0.0",
"autoUpdate": True
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({source: '<string>', version: '^1.0.0', autoUpdate: true})
};
fetch('http://localhost:9371/modules/install', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "9371",
CURLOPT_URL => "http://localhost:9371/modules/install",
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([
'source' => '<string>',
'version' => '^1.0.0',
'autoUpdate' => true
]),
CURLOPT_HTTPHEADER => [
"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 := "http://localhost:9371/modules/install"
payload := strings.NewReader("{\n \"source\": \"<string>\",\n \"version\": \"^1.0.0\",\n \"autoUpdate\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
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("http://localhost:9371/modules/install")
.header("Content-Type", "application/json")
.body("{\n \"source\": \"<string>\",\n \"version\": \"^1.0.0\",\n \"autoUpdate\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:9371/modules/install")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"source\": \"<string>\",\n \"version\": \"^1.0.0\",\n \"autoUpdate\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"type": "adapter",
"description": "<string>",
"version": "2.0.0",
"isBuiltin": true,
"enabled": true,
"missing": true,
"hasIcon": true,
"createdAt": "<string>",
"autoUpdate": true,
"autoUpdateConstraint": "<string>",
"hash": "<string>",
"source": "<string>",
"configSchema": {},
"secretsSchema": {}
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "rate_limit_exceeded",
"message": "<string>",
"retryAfter": 1
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Install a module from a registry
Resolves the registry source URL, downloads the .tar.zst archive from the returned downloadUrl, validates the module.json manifest, and registers the module. The registry source URL is stored for future updates via POST /modules/:id/update.
curl --request POST \
--url http://localhost:9371/modules/install \
--header 'Content-Type: application/json' \
--data '
{
"source": "<string>",
"version": "^1.0.0",
"autoUpdate": true
}
'import requests
url = "http://localhost:9371/modules/install"
payload = {
"source": "<string>",
"version": "^1.0.0",
"autoUpdate": True
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({source: '<string>', version: '^1.0.0', autoUpdate: true})
};
fetch('http://localhost:9371/modules/install', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "9371",
CURLOPT_URL => "http://localhost:9371/modules/install",
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([
'source' => '<string>',
'version' => '^1.0.0',
'autoUpdate' => true
]),
CURLOPT_HTTPHEADER => [
"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 := "http://localhost:9371/modules/install"
payload := strings.NewReader("{\n \"source\": \"<string>\",\n \"version\": \"^1.0.0\",\n \"autoUpdate\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
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("http://localhost:9371/modules/install")
.header("Content-Type", "application/json")
.body("{\n \"source\": \"<string>\",\n \"version\": \"^1.0.0\",\n \"autoUpdate\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:9371/modules/install")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"source\": \"<string>\",\n \"version\": \"^1.0.0\",\n \"autoUpdate\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"type": "adapter",
"description": "<string>",
"version": "2.0.0",
"isBuiltin": true,
"enabled": true,
"missing": true,
"hasIcon": true,
"createdAt": "<string>",
"autoUpdate": true,
"autoUpdateConstraint": "<string>",
"hash": "<string>",
"source": "<string>",
"configSchema": {},
"secretsSchema": {}
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "rate_limit_exceeded",
"message": "<string>",
"retryAfter": 1
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Body
Request body used to install a module from a registry.
Registry URL to resolve for module metadata, then download the .tar.zst archive.
1Optional semantic range or exact version. Resolves from registry. Defaults to latest.
1"^1.0.0"
Whether to auto-update this module with the registry source it is installed from. Defaults to true.
Response
The module manifest record for the newly installed module.
Full module manifest record returned by the get module endpoint.
Module identifier.
1Module display name.
1Module type.
adapter, environment Human-readable description of the module.
Semantic version of the installed module manifest.
1"2.0.0"
Whether the module is bundled with the API.
Whether the module is currently enabled.
Whether the module is installed but has no matching factory loaded.
Whether the module has a registry-declared icon.
ISO-8601 timestamp of when the module was installed.
Whether the module opted into the background auto-update sweep.
Semver range pinning the auto-update registry version, or null for latest.
Content hash of the installed module archive.
1Install source URL used to fetch the module archive.
JSON Schema describing the module configuration object.
Show child attributes
Show child attributes
JSON Schema describing the module secrets object.
Show child attributes
Show child attributes
Was this page helpful?