cURL
curl --request POST \
--url https://api.invopop.com/apps/sw-sapien/v1/entry/{silo_entry_id}/certificate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"cer_file": "aSDinaTvuI8gbWludGxpZnk=",
"key_file": "aSDinaTvuI8gbWludGxpZnk=",
"password": "<string>"
}
'import requests
url = "https://api.invopop.com/apps/sw-sapien/v1/entry/{silo_entry_id}/certificate"
payload = {
"cer_file": "aSDinaTvuI8gbWludGxpZnk=",
"key_file": "aSDinaTvuI8gbWludGxpZnk=",
"password": "<string>"
}
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({
cer_file: 'aSDinaTvuI8gbWludGxpZnk=',
key_file: 'aSDinaTvuI8gbWludGxpZnk=',
password: '<string>'
})
};
fetch('https://api.invopop.com/apps/sw-sapien/v1/entry/{silo_entry_id}/certificate', 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.invopop.com/apps/sw-sapien/v1/entry/{silo_entry_id}/certificate",
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([
'cer_file' => 'aSDinaTvuI8gbWludGxpZnk=',
'key_file' => 'aSDinaTvuI8gbWludGxpZnk=',
'password' => '<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.invopop.com/apps/sw-sapien/v1/entry/{silo_entry_id}/certificate"
payload := strings.NewReader("{\n \"cer_file\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"key_file\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"password\": \"<string>\"\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://api.invopop.com/apps/sw-sapien/v1/entry/{silo_entry_id}/certificate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"cer_file\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"key_file\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"password\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.invopop.com/apps/sw-sapien/v1/entry/{silo_entry_id}/certificate")
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 \"cer_file\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"key_file\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"password\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}SW Sapien
Upload e.firma certificate
Upload the e.firma (FIEL) certificate, private key, and password for a registered party. This endpoint provides an alternative to the web-based registration form for programmatic integration.
POST
/
apps
/
sw-sapien
/
v1
/
entry
/
{silo_entry_id}
/
certificate
cURL
curl --request POST \
--url https://api.invopop.com/apps/sw-sapien/v1/entry/{silo_entry_id}/certificate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"cer_file": "aSDinaTvuI8gbWludGxpZnk=",
"key_file": "aSDinaTvuI8gbWludGxpZnk=",
"password": "<string>"
}
'import requests
url = "https://api.invopop.com/apps/sw-sapien/v1/entry/{silo_entry_id}/certificate"
payload = {
"cer_file": "aSDinaTvuI8gbWludGxpZnk=",
"key_file": "aSDinaTvuI8gbWludGxpZnk=",
"password": "<string>"
}
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({
cer_file: 'aSDinaTvuI8gbWludGxpZnk=',
key_file: 'aSDinaTvuI8gbWludGxpZnk=',
password: '<string>'
})
};
fetch('https://api.invopop.com/apps/sw-sapien/v1/entry/{silo_entry_id}/certificate', 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.invopop.com/apps/sw-sapien/v1/entry/{silo_entry_id}/certificate",
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([
'cer_file' => 'aSDinaTvuI8gbWludGxpZnk=',
'key_file' => 'aSDinaTvuI8gbWludGxpZnk=',
'password' => '<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.invopop.com/apps/sw-sapien/v1/entry/{silo_entry_id}/certificate"
payload := strings.NewReader("{\n \"cer_file\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"key_file\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"password\": \"<string>\"\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://api.invopop.com/apps/sw-sapien/v1/entry/{silo_entry_id}/certificate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"cer_file\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"key_file\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"password\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.invopop.com/apps/sw-sapien/v1/entry/{silo_entry_id}/certificate")
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 \"cer_file\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"key_file\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"password\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}Upload the e.firma (FIEL) certificate, private key, and password for a party that has been registered with SW Sapien’s Efisco service. This endpoint provides a programmatic alternative to the web-based registration form.
The e.firma certificate is required to authorize bulk CFDI downloads from SAT on behalf of the party. The certificate files and password are securely forwarded to SW Sapien’s Efisco service.
Authorizations
Use the Bearer scheme with a valid JWT token to authenticate requests.
Example: Authorization: Bearer <token>
Path Parameters
ID of the party silo entry to upload the certificate for.
Example:
"5b45453c-cdd0-11ed-afa1-0242ac120002"
Body
application/json
Response
Certificate uploaded successfully.
Was this page helpful?