La Pyme SDK
import { Lapyme } from "lapyme";
const lapyme = new Lapyme({
bearerAuth: process.env["LAPYME_API_KEY"] ?? "",
});
const order = await lapyme.orders.patchOrder({
orderId: "9c692e8b-0f9a-4f7c-8b99-061a2eb188ae",
idempotencyKey: crypto.randomUUID(),
body: {
assignedWarehouseId: "8c692e8b-0f9a-4f7c-8b99-061a2eb188ae",
deliveryMethod: "shipping",
expectedUpdatedAt: "2026-08-28T12:00:00.000Z",
taxInclusive: false,
lines: [{
orderLineId: "7c692e8b-0f9a-4f7c-8b99-061a2eb188ae",
productNameSnapshot: "Mate",
skuSnapshot: "MATE-1",
orderedQuantity: 2,
unitPrice: 10000,
taxRateId: 5,
}],
},
});curl --request PATCH \
--url https://api.lapyme.com.ar/api/v1/orders/{order_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"notes": "Retira por sucursal."
}
'import requests
url = "https://api.lapyme.com.ar/api/v1/orders/{order_id}"
payload = { "notes": "Retira por sucursal." }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({notes: 'Retira por sucursal.'})
};
fetch('https://api.lapyme.com.ar/api/v1/orders/{order_id}', 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.lapyme.com.ar/api/v1/orders/{order_id}",
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([
'notes' => 'Retira por sucursal.'
]),
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.lapyme.com.ar/api/v1/orders/{order_id}"
payload := strings.NewReader("{\n \"notes\": \"Retira por sucursal.\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.lapyme.com.ar/api/v1/orders/{order_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"notes\": \"Retira por sucursal.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lapyme.com.ar/api/v1/orders/{order_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"notes\": \"Retira por sucursal.\"\n}"
response = http.request(request)
puts response.read_body{
"request_id": "<string>",
"data": {
"order": {
"object": "order",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_number": "<string>",
"raw_order_number": 123,
"order_date": "2023-11-07T05:31:56Z",
"customer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"customer_name": "<string>",
"customer_tax_id": "<string>",
"items_count": 123,
"total_units": 123,
"discount_amount": 1,
"subtotal": 1,
"tax_amount": 1,
"total": 1,
"currency": "PES",
"order_status": "open",
"preparation_status": "unfulfilled",
"invoicing_status": "pending",
"notes": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"created_by_name": "<string>",
"created_by": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"line_items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"line_number": 123,
"product_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"product_name": "<string>",
"sku": "<string>",
"ordered_quantity": 123,
"allocated_quantity": 123,
"fulfilled_quantity": 123,
"invoiced_quantity": 123,
"cancelled_quantity": 123,
"unit_price": 1,
"tax_rate_id": 123,
"discount_amount": 123,
"discount_percentage": 123,
"subtotal": 1
}
],
"active_warehouses": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"is_default": true
}
],
"pending_preparation_warehouse_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"preparation_groups": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "open",
"warehouse_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"warehouse_name": "<string>",
"delivery_method": "shipping",
"requested_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"closed_at": "2023-11-07T05:31:56Z",
"cancelled_at": "2023-11-07T05:31:56Z",
"notes": "<string>",
"lines": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_line_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"product_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"product_name": "<string>",
"sku": "<string>",
"quantity": 123,
"fulfilled_quantity": 123,
"cancelled_quantity": 123,
"pending_quantity": 123
}
]
}
],
"preparations": [
{
"object": "order_preparation",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"prepared_at": "2023-11-07T05:31:56Z",
"warehouse_name": "<string>",
"delivery_method": "shipping",
"remito_delivery_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"formatted_remito_number": "<string>",
"lines": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_line_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"product_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"product_name": "<string>",
"sku": "<string>",
"variant_options": {},
"option_names": [
"<string>"
],
"quantity": 123,
"ordered_quantity": 123,
"unit_price": 1,
"discount_percentage": 123
}
]
}
],
"invoices": [
{
"object": "order_invoice",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"formatted_invoice_number": "<string>",
"invoice_date": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"invoice_status": "not_required",
"items_count": 123,
"total_units": 123,
"total": 1
}
]
},
"idempotent_replay": true,
"result": "<unknown>"
},
"warnings": [
"<unknown>"
]
}{
"request_id": "req_error_1",
"error": {
"type": "invalid_request_error",
"code": "INVALID_REQUEST",
"message": "Solicitud inválida",
"retryable": false,
"details": []
}
}{
"request_id": "req_error_1",
"error": {
"type": "invalid_request_error",
"code": "INVALID_REQUEST",
"message": "API key faltante o inválida",
"retryable": false,
"details": []
}
}{
"request_id": "req_error_1",
"error": {
"type": "invalid_request_error",
"code": "INVALID_REQUEST",
"message": "Scopes insuficientes",
"retryable": false,
"details": []
}
}{
"request_id": "req_error_1",
"error": {
"type": "invalid_request_error",
"code": "INVALID_REQUEST",
"message": "Pedido no encontrado",
"retryable": false,
"details": []
}
}{
"request_id": "req_error_1",
"error": {
"type": "invalid_request_error",
"code": "INVALID_REQUEST",
"message": "Conflicto de idempotencia o de negocio",
"retryable": false,
"details": []
}
}{
"request_id": "req_rate_limit_1",
"error": {
"type": "rate_limit_error",
"code": "RATE_LIMITED",
"message": "The organization request limit was reached. Try again later.",
"retryable": true,
"details": []
}
}{
"request_id": "req_error_1",
"error": {
"type": "invalid_request_error",
"code": "INVALID_REQUEST",
"message": "Error interno del servidor",
"retryable": false,
"details": []
}
}Editar pedido
Acepta el contrato histórico de solo notas sin Idempotency-Key. Para cambiar cliente, lista de precios, depósito, entrega, fecha, impuestos, descuento o líneas, enviá la representación estructural completa, expected_updated_at cuando necesites concurrencia optimista e Idempotency-Key. unit_price usa importes netos como los devueltos por el GET, y los campos opcionales omitidos conservan su valor actual. Un cambio de depósito o entrega traslada el trabajo pendiente y sus reservas en la misma operación.
PATCH
/
api
/
v1
/
orders
/
{order_id}
La Pyme SDK
import { Lapyme } from "lapyme";
const lapyme = new Lapyme({
bearerAuth: process.env["LAPYME_API_KEY"] ?? "",
});
const order = await lapyme.orders.patchOrder({
orderId: "9c692e8b-0f9a-4f7c-8b99-061a2eb188ae",
idempotencyKey: crypto.randomUUID(),
body: {
assignedWarehouseId: "8c692e8b-0f9a-4f7c-8b99-061a2eb188ae",
deliveryMethod: "shipping",
expectedUpdatedAt: "2026-08-28T12:00:00.000Z",
taxInclusive: false,
lines: [{
orderLineId: "7c692e8b-0f9a-4f7c-8b99-061a2eb188ae",
productNameSnapshot: "Mate",
skuSnapshot: "MATE-1",
orderedQuantity: 2,
unitPrice: 10000,
taxRateId: 5,
}],
},
});curl --request PATCH \
--url https://api.lapyme.com.ar/api/v1/orders/{order_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"notes": "Retira por sucursal."
}
'import requests
url = "https://api.lapyme.com.ar/api/v1/orders/{order_id}"
payload = { "notes": "Retira por sucursal." }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({notes: 'Retira por sucursal.'})
};
fetch('https://api.lapyme.com.ar/api/v1/orders/{order_id}', 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.lapyme.com.ar/api/v1/orders/{order_id}",
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([
'notes' => 'Retira por sucursal.'
]),
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.lapyme.com.ar/api/v1/orders/{order_id}"
payload := strings.NewReader("{\n \"notes\": \"Retira por sucursal.\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.lapyme.com.ar/api/v1/orders/{order_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"notes\": \"Retira por sucursal.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lapyme.com.ar/api/v1/orders/{order_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"notes\": \"Retira por sucursal.\"\n}"
response = http.request(request)
puts response.read_body{
"request_id": "<string>",
"data": {
"order": {
"object": "order",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_number": "<string>",
"raw_order_number": 123,
"order_date": "2023-11-07T05:31:56Z",
"customer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"customer_name": "<string>",
"customer_tax_id": "<string>",
"items_count": 123,
"total_units": 123,
"discount_amount": 1,
"subtotal": 1,
"tax_amount": 1,
"total": 1,
"currency": "PES",
"order_status": "open",
"preparation_status": "unfulfilled",
"invoicing_status": "pending",
"notes": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"created_by_name": "<string>",
"created_by": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"line_items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"line_number": 123,
"product_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"product_name": "<string>",
"sku": "<string>",
"ordered_quantity": 123,
"allocated_quantity": 123,
"fulfilled_quantity": 123,
"invoiced_quantity": 123,
"cancelled_quantity": 123,
"unit_price": 1,
"tax_rate_id": 123,
"discount_amount": 123,
"discount_percentage": 123,
"subtotal": 1
}
],
"active_warehouses": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"is_default": true
}
],
"pending_preparation_warehouse_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"preparation_groups": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "open",
"warehouse_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"warehouse_name": "<string>",
"delivery_method": "shipping",
"requested_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"closed_at": "2023-11-07T05:31:56Z",
"cancelled_at": "2023-11-07T05:31:56Z",
"notes": "<string>",
"lines": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_line_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"product_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"product_name": "<string>",
"sku": "<string>",
"quantity": 123,
"fulfilled_quantity": 123,
"cancelled_quantity": 123,
"pending_quantity": 123
}
]
}
],
"preparations": [
{
"object": "order_preparation",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"prepared_at": "2023-11-07T05:31:56Z",
"warehouse_name": "<string>",
"delivery_method": "shipping",
"remito_delivery_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"formatted_remito_number": "<string>",
"lines": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_line_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"product_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"product_name": "<string>",
"sku": "<string>",
"variant_options": {},
"option_names": [
"<string>"
],
"quantity": 123,
"ordered_quantity": 123,
"unit_price": 1,
"discount_percentage": 123
}
]
}
],
"invoices": [
{
"object": "order_invoice",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"formatted_invoice_number": "<string>",
"invoice_date": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"invoice_status": "not_required",
"items_count": 123,
"total_units": 123,
"total": 1
}
]
},
"idempotent_replay": true,
"result": "<unknown>"
},
"warnings": [
"<unknown>"
]
}{
"request_id": "req_error_1",
"error": {
"type": "invalid_request_error",
"code": "INVALID_REQUEST",
"message": "Solicitud inválida",
"retryable": false,
"details": []
}
}{
"request_id": "req_error_1",
"error": {
"type": "invalid_request_error",
"code": "INVALID_REQUEST",
"message": "API key faltante o inválida",
"retryable": false,
"details": []
}
}{
"request_id": "req_error_1",
"error": {
"type": "invalid_request_error",
"code": "INVALID_REQUEST",
"message": "Scopes insuficientes",
"retryable": false,
"details": []
}
}{
"request_id": "req_error_1",
"error": {
"type": "invalid_request_error",
"code": "INVALID_REQUEST",
"message": "Pedido no encontrado",
"retryable": false,
"details": []
}
}{
"request_id": "req_error_1",
"error": {
"type": "invalid_request_error",
"code": "INVALID_REQUEST",
"message": "Conflicto de idempotencia o de negocio",
"retryable": false,
"details": []
}
}{
"request_id": "req_rate_limit_1",
"error": {
"type": "rate_limit_error",
"code": "RATE_LIMITED",
"message": "The organization request limit was reached. Try again later.",
"retryable": true,
"details": []
}
}{
"request_id": "req_error_1",
"error": {
"type": "invalid_request_error",
"code": "INVALID_REQUEST",
"message": "Error interno del servidor",
"retryable": false,
"details": []
}
}Authorizations
Incluí tu API key en el header Authorization con el prefijo Bearer.
Headers
Obligatoria para ediciones estructurales. Se omite para el contrato histórico que actualiza solo notes.
Path Parameters
ID del pedido
Body
application/json
- Option 1
- Option 2
Was this page helpful?

