Introducción
API de conexion FO con terceros
Requisitos
- Contar con un usuario asignado por Farmaonline con los permisos necesarios.
- Poder generar peticiones HTTP enviando formularios con campos formato: data => value via POST, o bien puede operar enviando un objeto JSON en una petición POST
- Poder leer las respuestas de la API en formato JSON
URLs del servicio
Puede consumir el servicio desde la siguiente dirección:
Request
Para autenticar sus REQUESTS, debe incluir el token de autenticación en el HEADER de Authorization con el valor "Bearer {MI_TOKEN}".
Todos los ENDPOINTS que requieran autenticación, están marcados con la insignia "requiere autenticación" en esta documentación.
1- Autenticación
Para autenticar sus peticiones, debe generar un token para luego incluirlo en el HEADER como indica esta documentación.
Generar Token
Endpoint para obtener el token de acceso.
Ejemplo de solicitud:
curl --request POST \
"https://api-ter.farmaonline.com/api/v1/auth/login" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"usuario\": \"devs\",
\"password\": \"suclave\",
\"token_duration\": 6
}"
$client = new \GuzzleHttp\Client();
$url = 'https://api-ter.farmaonline.com/api/v1/auth/login';
$response = $client->post(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'usuario' => 'devs',
'password' => 'suclave',
'token_duration' => 6,
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api-ter.farmaonline.com/api/v1/auth/login'
payload = {
"usuario": "devs",
"password": "suclave",
"token_duration": 6
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Ejemplo de respuesta (200):
{
"status": 200,
"message": "Login correcto.",
"data": {
"token_type": "Bearer",
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 36000
}
}
Ejemplo de respuesta (401):
{
"status": 401,
"message": "Credenciales inválidas."
}
Respuesta recibida:
La solicitud falló con error:
Sugerencia: Verifica que estés correctamente conectado a la red.
Si eres mantenedor de esta API, asegúrate de que tu API esté en ejecución y que hayas habilitado CORS.
Puedes revisar la consola de las DevTools para obtener información de depuración.
Check Token
requires authentication
Endpoint ejemplo para testear la validez de un token.
Ejemplo de solicitud:
curl --request GET \
--get "https://api-ter.farmaonline.com/api/v1/auth/userAuth" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"$client = new \GuzzleHttp\Client();
$url = 'https://api-ter.farmaonline.com/api/v1/auth/userAuth';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api-ter.farmaonline.com/api/v1/auth/userAuth'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()Ejemplo de respuesta (401):
Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
{
"status": 401,
"message": "Token de autorización requerido o inválido"
}
Respuesta recibida:
La solicitud falló con error:
Sugerencia: Verifica que estés correctamente conectado a la red.
Si eres mantenedor de esta API, asegúrate de que tu API esté en ejecución y que hayas habilitado CORS.
Puedes revisar la consola de las DevTools para obtener información de depuración.
Eliminar Token
Endpoint para eliminar el token de autenticación, el mismo usado para realizar esta petición
Ejemplo de solicitud:
curl --request POST \
"https://api-ter.farmaonline.com/api/v1/auth/logout" \
--header "Content-Type: application/json" \
--header "Accept: application/json"$client = new \GuzzleHttp\Client();
$url = 'https://api-ter.farmaonline.com/api/v1/auth/logout';
$response = $client->post(
$url,
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api-ter.farmaonline.com/api/v1/auth/logout'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()Respuesta recibida:
La solicitud falló con error:
Sugerencia: Verifica que estés correctamente conectado a la red.
Si eres mantenedor de esta API, asegúrate de que tu API esté en ejecución y que hayas habilitado CORS.
Puedes revisar la consola de las DevTools para obtener información de depuración.
2- Set de Instrucciones
Listado de endpoints disponibles
Consultar retiro
requires authentication
Devuelve cabecera y detalle de guías a retirar según sucursal/fecha/turno.
Ejemplo de solicitud:
curl --request POST \
"https://api-ter.farmaonline.com/api/v1/consultarRetiro" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"sucursal\": \"1\",
\"fecha\": \"2025-08-25\",
\"turno\": \"1\"
}"
$client = new \GuzzleHttp\Client();
$url = 'https://api-ter.farmaonline.com/api/v1/consultarRetiro';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'sucursal' => '1',
'fecha' => '2025-08-25',
'turno' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api-ter.farmaonline.com/api/v1/consultarRetiro'
payload = {
"sucursal": "1",
"fecha": "2025-08-25",
"turno": "1"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Ejemplo de respuesta (200):
{
"status": 200,
"message": "La solicitud se envió correctamente.",
"data": {
"cabecera": {
"sucursal_tercero": "1",
"fecha": "2025-08-25",
"turno": "1",
"sucursal": "Central",
"numero_HR": "HR12345"
},
"detalle": [
{
"guia": {
"letra": "A",
"terminal": "0001",
"numero": "12345678"
},
"cuit": "30-12345678-9",
"gln": "7791234000005",
"cuenta_tercero": "CTE-456789"
},
{
"guia": {
"letra": "B",
"terminal": "T002",
"numero": "000124"
},
"cuit": "27-87654321-0",
"gln": "7799876000001",
"cuenta_tercero": "CTE-987654"
}
]
}
}
Respuesta recibida:
La solicitud falló con error:
Sugerencia: Verifica que estés correctamente conectado a la red.
Si eres mantenedor de esta API, asegúrate de que tu API esté en ejecución y que hayas habilitado CORS.
Puedes revisar la consola de las DevTools para obtener información de depuración.
Respuesta
Campos de la respuesta
status
integer
Código HTTP interno de la respuesta.
message
string
Mensaje de estado.
data
object
cabecera
object
sucursal_tercero
string
Sucursal enviada por el tercero.
fecha
string
Fecha solicitada (Y-m-d).
turno
string
Turno solicitado.
sucursal
string
Nombre de la sucursal.
numero_HR
string
Número de hoja de ruta.
detalle
object
guia
object
letra
string
Letra de la guía.
terminal
string
Terminal de la guía.
numero
string
Número de la guía.
cuit
string
CUIT del destinatario.
gln
string
GLN del destinatario.
cuenta_tercero
string
Cuenta del tercero.
Confirmar entregas
requires authentication
Valida y confirma entregas de guías. Verifica pertenencia al cliente tercero.
Ejemplo de solicitud:
curl --request POST \
"https://api-ter.farmaonline.com/api/v1/confirmarEntregas" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"entregas\": [
{
\"guia\": {
\"letra\": \"A\",
\"terminal\": \"0001\",
\"numero\": \"12345678\"
}
}
]
}"
$client = new \GuzzleHttp\Client();
$url = 'https://api-ter.farmaonline.com/api/v1/confirmarEntregas';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'entregas' => [
[
'guia' => [
'letra' => 'A',
'terminal' => '0001',
'numero' => '12345678',
],
],
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api-ter.farmaonline.com/api/v1/confirmarEntregas'
payload = {
"entregas": [
{
"guia": {
"letra": "A",
"terminal": "0001",
"numero": "12345678"
}
}
]
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Ejemplo de respuesta (200):
{
"status": 200,
"message": "Proceso finalizado correctamente, los detalles de cada entrega se encuentra en arrayEntregas",
"data": {
"arrayEntregas": [
{
"guia": {
"letra": "A",
"terminal": "0001",
"numero": "12345678"
},
"estado": true,
"observacion": ""
}
]
}
}
Respuesta recibida:
La solicitud falló con error:
Sugerencia: Verifica que estés correctamente conectado a la red.
Si eres mantenedor de esta API, asegúrate de que tu API esté en ejecución y que hayas habilitado CORS.
Puedes revisar la consola de las DevTools para obtener información de depuración.
Respuesta
Campos de la respuesta
data
object
arrayEntregas
object
guia
object
letra
string
terminal
string
numero
string
estado
boolean
Resultado de la operación por guía.
observacion
string
Observación resultante.
Órdenes retiradas
requires authentication
Devuelve las órdenes retiradas. fecha, turno y guias son opcionales,
pero se debe enviar al menos fecha o guias.
Ejemplo de solicitud:
curl --request POST \
"https://api-ter.farmaonline.com/api/v1/ordenesRetiradas" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"sucursal\": \"1\",
\"fecha\": \"2025-08-25\",
\"turno\": \"1\",
\"guias\": [
\"architecto\"
]
}"
$client = new \GuzzleHttp\Client();
$url = 'https://api-ter.farmaonline.com/api/v1/ordenesRetiradas';
$response = $client->post(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
'Content-Type' => 'application/json',
'Accept' => 'application/json',
],
'json' => [
'sucursal' => '1',
'fecha' => '2025-08-25',
'turno' => '1',
'guias' => [
'architecto',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));import requests
import json
url = 'https://api-ter.farmaonline.com/api/v1/ordenesRetiradas'
payload = {
"sucursal": "1",
"fecha": "2025-08-25",
"turno": "1",
"guias": [
"architecto"
]
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()Ejemplo de respuesta (200):
{
"status": 200,
"message": "Consulta procesada correctamente.",
"data": {
"cabecera": {
"sucursal_tercero": "1",
"fecha": "2025-08-25",
"turno": "1",
"sucursal": "Central",
"numero_HR": "HR12345"
},
"detalle": [
{
"guia": {
"letra": "A",
"terminal": "0001",
"numero": "12345678"
},
"cuit": "30-12345678-9",
"gln": "7791234000005",
"cuenta_tercero": "CTE-456789",
"fecha_retiro": "2025-08-26"
},
{
"guia": {
"letra": "B",
"terminal": "0002",
"numero": "12345688"
},
"cuit": "27-87654321-0",
"gln": "7799876000001",
"cuenta_tercero": "CTE-987654",
"fecha_retiro": "2025-08-26"
}
]
}
}
Respuesta recibida:
La solicitud falló con error:
Sugerencia: Verifica que estés correctamente conectado a la red.
Si eres mantenedor de esta API, asegúrate de que tu API esté en ejecución y que hayas habilitado CORS.
Puedes revisar la consola de las DevTools para obtener información de depuración.
Respuesta
Campos de la respuesta
data
object
cabecera
object
sucursal_tercero
string
fecha
string
turno
string
sucursal
string
numero_HR
string
detalle
object
guia
object
letra
string
terminal
string
numero
string
cuit
string
gln
string
cuenta_tercero
string
fecha_retiro
date Fecha efectiva de retiro (Y-m-d).