Manual Upload API
If you would like to bring your own builder CI/CD pipeline instead of leveraging the Itero's GitHub App integration, this page is for you! By manually submitting your zip file to Itero, your CI pipeline will not be limited by the number of seat licenses you have on Itero to trigger the cloud builder.
This flow is only available to the Professional plan. The API is provided as-is. For support regarding integration with your system, we offer a consulting service. Email support@plasmo.com
for more detail.
Download the API Key
Go to the settings page of your extension and download the API key. The key is a JSON file with the following shape:
{
"itero": {}
}
Submission via GitHub Action
You may use the key with the BPP GitHub Action to automatically upload your extension to Itero. Simply add the itero
key to your existing BPP's secret or as a separate secret workflow.
Make sure your BPP version is v3.3.0 (opens in a new tab) or above.
Submission via API Calls
First, create a zip file of your extension. Then, follow the flows below:
1. POST https://itero.plasmo.com/api/submit/upload
This endpoint issues a signed URL for you to upload your extension to.
The request body must contain the keys.itero
object, e.g:
const keys = JSON.parse(await readFile("./keys.json", "utf8")) // with keys.json being the file you downloaded from the settings page
...
const resp = await fetch("https://itero.plasmo.com/api/submit/upload", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(keys.itero)
})
const data = await resp.json()
console.log(data)
The response is a JSON containing the upload url:
{
"url": "signed-upload-url"
}
2. PUT signed-upload-url
Take the response url from step 1 and issue a PUT request to it with the zip blob. Ensure that the Content-Type
header is application/zip
3. POST https://itero.plasmo.com/api/submit/sign
After uploading is done, you will need to call the sign endpoint to finalize the process and update the extension bundle that will be served to the beta testers.
The request body must contain the keys.itero
object like step 1.