curl --request PATCH \
--url https://docs.pymo.uy/v1/companies/{companyRut}/updateCaesBy \
--header 'Content-Type: application/json' \
--cookie connect.sid= \
--data '
{
"active": false,
"cancelAtDGIAt": "2026-12-31T00:00:00.000Z"
}
'import requests
url = "https://docs.pymo.uy/v1/companies/{companyRut}/updateCaesBy"
payload = {
"active": False,
"cancelAtDGIAt": "2026-12-31T00:00:00.000Z"
}
headers = {
"cookie": "connect.sid=",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {cookie: 'connect.sid=', 'Content-Type': 'application/json'},
body: JSON.stringify({active: false, cancelAtDGIAt: '2026-12-31T00:00:00.000Z'})
};
fetch('https://docs.pymo.uy/v1/companies/{companyRut}/updateCaesBy', 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://docs.pymo.uy/v1/companies/{companyRut}/updateCaesBy",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'active' => false,
'cancelAtDGIAt' => '2026-12-31T00:00:00.000Z'
]),
CURLOPT_COOKIE => "connect.sid=",
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 := "https://docs.pymo.uy/v1/companies/{companyRut}/updateCaesBy"
payload := strings.NewReader("{\n \"active\": false,\n \"cancelAtDGIAt\": \"2026-12-31T00:00:00.000Z\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("cookie", "connect.sid=")
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.patch("https://docs.pymo.uy/v1/companies/{companyRut}/updateCaesBy")
.header("cookie", "connect.sid=")
.header("Content-Type", "application/json")
.body("{\n \"active\": false,\n \"cancelAtDGIAt\": \"2026-12-31T00:00:00.000Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://docs.pymo.uy/v1/companies/{companyRut}/updateCaesBy")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["cookie"] = 'connect.sid='
request["Content-Type"] = 'application/json'
request.body = "{\n \"active\": false,\n \"cancelAtDGIAt\": \"2026-12-31T00:00:00.000Z\"\n}"
response = http.request(request)
puts response.read_body{
"payload": {},
"status": "SUCCESS",
"message": {
"code": "DGI_CFES_RECEIVE_SUCCESS",
"value": "Cfes recibidos correctamente."
}
}{
"payload": {},
"message": {
"code": "UNAUTHORIZED",
"value": "Debe iniciar sesión."
},
"status": "FAIL"
}{
"payload": {},
"message": {
"code": "FORBIDDEN",
"value": "No tiene permisos para realizar esta acción."
},
"status": "FAIL"
}Activar o desactivar CAEs por filtro
Activa o desactiva CAEs por filtro.
Acceso: restringida. Requiere sesión, y sólo opera sobre el RUT de tu propia empresa: pedir otro RUT responde 403 FORBIDDEN.
Ver Filtrado para elegir qué CAEs actualizar.
curl --request PATCH \
--url https://docs.pymo.uy/v1/companies/{companyRut}/updateCaesBy \
--header 'Content-Type: application/json' \
--cookie connect.sid= \
--data '
{
"active": false,
"cancelAtDGIAt": "2026-12-31T00:00:00.000Z"
}
'import requests
url = "https://docs.pymo.uy/v1/companies/{companyRut}/updateCaesBy"
payload = {
"active": False,
"cancelAtDGIAt": "2026-12-31T00:00:00.000Z"
}
headers = {
"cookie": "connect.sid=",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {cookie: 'connect.sid=', 'Content-Type': 'application/json'},
body: JSON.stringify({active: false, cancelAtDGIAt: '2026-12-31T00:00:00.000Z'})
};
fetch('https://docs.pymo.uy/v1/companies/{companyRut}/updateCaesBy', 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://docs.pymo.uy/v1/companies/{companyRut}/updateCaesBy",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'active' => false,
'cancelAtDGIAt' => '2026-12-31T00:00:00.000Z'
]),
CURLOPT_COOKIE => "connect.sid=",
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 := "https://docs.pymo.uy/v1/companies/{companyRut}/updateCaesBy"
payload := strings.NewReader("{\n \"active\": false,\n \"cancelAtDGIAt\": \"2026-12-31T00:00:00.000Z\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("cookie", "connect.sid=")
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.patch("https://docs.pymo.uy/v1/companies/{companyRut}/updateCaesBy")
.header("cookie", "connect.sid=")
.header("Content-Type", "application/json")
.body("{\n \"active\": false,\n \"cancelAtDGIAt\": \"2026-12-31T00:00:00.000Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://docs.pymo.uy/v1/companies/{companyRut}/updateCaesBy")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["cookie"] = 'connect.sid='
request["Content-Type"] = 'application/json'
request.body = "{\n \"active\": false,\n \"cancelAtDGIAt\": \"2026-12-31T00:00:00.000Z\"\n}"
response = http.request(request)
puts response.read_body{
"payload": {},
"status": "SUCCESS",
"message": {
"code": "DGI_CFES_RECEIVE_SUCCESS",
"value": "Cfes recibidos correctamente."
}
}{
"payload": {},
"message": {
"code": "UNAUTHORIZED",
"value": "Debe iniciar sesión."
},
"status": "FAIL"
}{
"payload": {},
"message": {
"code": "FORBIDDEN",
"value": "No tiene permisos para realizar esta acción."
},
"status": "FAIL"
}Autorizaciones
Sesión por cookie de POST /v1/login, válida 1 hora. Ver Autenticación.
Parámetros de ruta
"219999990008"
Cuerpo
Campos a aplicar a todos los CAE que matcheen el filtro del querystring. Los que no se mandan quedan como estaban.
El filtro va en el querystring, no en el body. Sin filtro, el request alcanza todos los CAE de la empresa.
Activar o desactivar. Poner false además sella cancelAtDGIAt con la fecha actual si no venía seteada.
Fecha de cancelación ante DGI. Mandar null explícito la borra; omitir el campo la deja como estaba.
Mandar null explícito lo borra; omitirlo lo deja como estaba.
1, 2, 3, 4 Respuesta
OK
Envoltorio común a todas las respuestas. status no se deduce del código HTTP: hay al menos nueve lugares en el gateway que responden HTTP 200 con status: "FAIL" (por ejemplo CFE_NOT_FOUND y DGI_COMPANY_NOT_READY_YET). Un cliente tiene que leer status, no el código.
Los datos de la respuesta. {} cuando el endpoint no devuelve nada.
De las 82 claves de mensaje del gateway, 29 son SUCCESS y 53 FAIL. Es lo que hay que mirar para saber si la llamada funcionó.
SUCCESS, FAIL Presente cuando la operación tiene algo que decir. Las lecturas simples responden sólo payload y status.
Show child attributes
Show child attributes