MENU navbar-image

Introducción

API de conexion FO con terceros

Requisitos

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."
}
 

Solicitud      

POST api/v1/auth/login

GET api/v1/auth/login

Encabezados

Content-Type      

Ejemplo: application/json

Accept      

Ejemplo: application/json

Parámetros del cuerpo

usuario   string   

Usuario de acceso. Ejemplo: devs

password   string   

Contraseña del usuario. Ejemplo: suclave

token_duration   integer  optional  

El campo value tiene que estar entre 5 - 1440. Ejemplo: 6

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"
}
 

Solicitud      

GET api/v1/auth/userAuth

Encabezados

Authorization      

Ejemplo: Bearer {YOUR_AUTH_KEY}

Content-Type      

Ejemplo: application/json

Accept      

Ejemplo: application/json

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()

Solicitud      

POST api/v1/auth/logout

Encabezados

Content-Type      

Ejemplo: application/json

Accept      

Ejemplo: application/json

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"
            }
        ]
    }
}
 

Solicitud      

POST api/v1/consultarRetiro

Encabezados

Authorization      

Ejemplo: Bearer {YOUR_AUTH_KEY}

Content-Type      

Ejemplo: application/json

Accept      

Ejemplo: application/json

Parámetros del cuerpo

sucursal   string   

Código de la sucursal del tercero. Ejemplo: 1

fecha   date   

Fecha del retiro en formato Y-m-d. Ejemplo: 2025-08-25

turno   string   

Turno del retiro (por ejemplo, "1"). Ejemplo: 1

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": ""
            }
        ]
    }
}
 

Solicitud      

POST api/v1/confirmarEntregas

Encabezados

Authorization      

Ejemplo: Bearer {YOUR_AUTH_KEY}

Content-Type      

Ejemplo: application/json

Accept      

Ejemplo: application/json

Parámetros del cuerpo

entregas   string[]   

Listado de entregas a confirmar.

guia   object  optional  
letra   string   

Letra de la guía. Ejemplo: A

terminal   string   

Terminal de la guía. Ejemplo: 0001

numero   string   

Número de la guía. Ejemplo: 12345678

fecha   datetime   

Fecha/hora de la entrega (Y-m-d H:i:s). Ejemplo: 2025-08-25 12:00:00

accion   string   

Acción de confirmación (por ej. 1=OK). Ejemplo: 1

observacion   string  optional  

optional Observación libre. Ejemplo: "texto opcional"

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"
            }
        ]
    }
}
 

Solicitud      

POST api/v1/ordenesRetiradas

Encabezados

Authorization      

Ejemplo: Bearer {YOUR_AUTH_KEY}

Content-Type      

Ejemplo: application/json

Accept      

Ejemplo: application/json

Parámetros del cuerpo

sucursal   string   

Código de la sucursal del tercero. Ejemplo: 1

fecha   date  optional  

optional Fecha a consultar (Y-m-d). Ejemplo: 2025-08-25

turno   string  optional  

optional Turno (por ejemplo, "1"). Ejemplo: 1

guias   string[]  optional  

optional Listado de guías a consultar de forma específica.

letra   string  optional  

required-with:guias Letra de la guía. Ejemplo: A

terminal   string  optional  

required-with:guias Terminal de la guía. Ejemplo: 0001

numero   string  optional  

required-with:guias Número de la guía. Ejemplo: 12345678

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).