$ 450.00
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Point of Sale (point_of_sale)
• Discuss (mail) • Inventory (stock) • Invoicing (account) |
| Lines of code | 463 |
| Technical Name |
pos_pathfinder_integra_api |
| License | OPL-1 |
| Website | https://www.bytesraw.com |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Point of Sale (point_of_sale)
• Discuss (mail) • Inventory (stock) • Invoicing (account) |
| Lines of code | 463 |
| Technical Name |
pos_pathfinder_integra_api |
| License | OPL-1 |
| Website | https://www.bytesraw.com |
📌 Pathfinder Integra API - POS Data Integration
Overview
Pathfinder Integra API is a powerful Odoo module that enables seamless export of Point of Sale (POS) transaction data through a secure REST API endpoint. The module is fully compatible with Pathfinder Integra specifications and supports both JSON and XML data formats.
Export your POS data in real-time to integrate with accounting systems, business intelligence tools, ERP systems, and third-party analytics platforms.
Key Features
- Bearer Token Authentication - Token-based secure access
- Basic Authentication - Username/Password support
- Multi-method Support - Use either authentication method
- Secure Credential Storage - Credentials stored in system parameters
- Transaction Details - Complete sales and return transaction records
- Line Item Details - Product-level data with tax information
- Payment Details - Multiple payment methods tracking (CASH, CARD, WALLET, OTHERS)
- Tax Calculation - Automatic tax computation with inclusive/exclusive support
- Dual Format Support - JSON (default) and XML responses
- Date Format Flexibility - Multiple date format support (YYYY-MM-DD, DD-Mon-YYYY, etc.)
- Location Filtering - Filter by specific POS locations/branches
- Immediate Data Access - Transaction data available immediately after POS operations
- Return Handling - Separate tracking of sales and return transactions
- Discount Tracking - Line-level and transaction-level discount information
Configuration
Step 1: Configure Authentication Credentials
- Navigate to Settings > General Settings
- Scroll to Pathfinder Integra API section
- Configure your authentication method:
Option A: Token Authentication (Recommended)
- Copy the automatically generated token
- Save the token securely for API requests
Option B: Basic Authentication
- Set a custom username
- Set a secure password
- Click "Save"
Step 2: Enable API for POS Locations
- Go to Point of Sale > Configuration > Point of Sale
- Open the POS configuration you want to enable
- Check "Enable Pathfinder Integra API"
- Save the configuration
Step 3: Test API Access
Use the examples in the API Examples section to verify your setup.
Screenshots
Configuration Screen

POS Configuration

API Response JSON

API Response XML

API Usage
Endpoint
GET /api/integra/pos-data
Base URL Format:
https://your-odoo-domain.com/api/integra/pos-data
Authentication
Method 1: Bearer Token Authentication
Include the token in the Authorization header:
Authorization: Bearer YOUR_TOKEN_HERE
Method 2: Basic Authentication
Include username and password:
Authorization: Basic base64(username:password)
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
FromDt |
String | Yes | Start date (YYYY-MM-DD or DD-Mon-YYYY) |
ToDt |
String | Yes | End date (YYYY-MM-DD or DD-Mon-YYYY) |
LOCATION_CODE |
String | No | Filter by specific location/branch code |
Response Formats
JSON Response (Default)
Request with Accept: application/json header or no Accept header.
Structure:
{
"Transactions": [
{
"LOCATION_CODE": "01",
"TERMINAL_ID": "1",
"SHIFT_NO": "1",
"RCPT_NUM": "POS001",
"RCPT_DT": "20240524",
"BUSINESS_DT": "20240524",
"RCPT_TM": "143000",
"INV_AMT": "150.00",
"TAX_AMT": "22.50",
"RET_AMT": "0.00",
"TRAN_STATUS": "SALES",
"OP_CUR": "SAR",
"BC_EXCH": "1.000",
"DISCOUNT": "5.00",
"ItemDetail": [...],
"PaymentDetail": [...]
}
]
}
XML Response
Request with Accept: application/xml header.
Structure:
<?xml version="1.0" encoding="UTF-8"?>
<Records>
<TransactionDetails>
<LOCATION_CODE>01</LOCATION_CODE>
<TERMINAL_ID>1</TERMINAL_ID>
<SHIFT_NO>1</SHIFT_NO>
<RCPT_NUM>POS001</RCPT_NUM>
<!-- Additional fields -->
</TransactionDetails>
<ItemDetails>
<!-- Item data -->
</ItemDetails>
<PaymentDetails>
<!-- Payment data -->
</PaymentDetails>
</Records>
API Examples
CURL Examples
Example 1: Token Authentication (JSON)
curl -X GET "https://your-odoo-domain.com/api/integra/pos-data?FromDt=2024-01-01&ToDt=2024-01-31" \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-H "Accept: application/json"
Example 2: Basic Authentication (JSON)
curl -X GET "https://your-odoo-domain.com/api/integra/pos-data?FromDt=2024-01-01&ToDt=2024-01-31" \
-H "Authorization: Basic $(echo -n 'username:password' | base64)" \
-H "Accept: application/json"
Example 3: XML Response with Location Filter
curl -X GET "https://your-odoo-domain.com/api/integra/pos-data?FromDt=2024-01-01&ToDt=2024-01-31&LOCATION_CODE=2" \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-H "Accept: application/xml"
Example 4: Alternative Date Format
curl -X GET "https://your-odoo-domain.com/api/integra/pos-data?FromDt=01-Jan-2024&ToDt=31-Jan-2024" \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-H "Accept: application/json"
Python Examples
Example 1: Using Requests Library (Token Auth)
import requests
import json
# Configuration
base_url = "https://your-odoo-domain.com"
endpoint = "/api/integra/pos-data"
token = "YOUR_TOKEN_HERE"
# Parameters
params = {
"FromDt": "2024-01-01",
"ToDt": "2024-01-31"
}
# Headers
headers = {
"Authorization": f"Bearer {token}",
"Accept": "application/json"
}
# Make request
response = requests.get(
f"{base_url}{endpoint}",
params=params,
headers=headers
)
# Check response
if response.status_code == 200:
data = response.json()
print(json.dumps(data, indent=2))
else:
print(f"Error: {response.status_code}")
print(response.text)
Example 2: Basic Authentication
import requests
from requests.auth import HTTPBasicAuth
base_url = "https://your-odoo-domain.com"
endpoint = "/api/integra/pos-data"
params = {
"FromDt": "2024-01-01",
"ToDt": "2024-01-31",
"LOCATION_CODE": "2"
}
response = requests.get(
f"{base_url}{endpoint}",
params=params,
auth=HTTPBasicAuth('username', 'password'),
headers={"Accept": "application/json"}
)
if response.status_code == 200:
transactions = response.json()
print(f"Retrieved {len(transactions.get('Transactions', []))} transactions")
else:
print(f"Error: {response.status_code} - {response.text}")
Example 3: Processing XML Response
import requests
import xml.etree.ElementTree as ET
base_url = "https://your-odoo-domain.com"
endpoint = "/api/integra/pos-data"
token = "YOUR_TOKEN_HERE"
params = {
"FromDt": "2024-01-01",
"ToDt": "2024-01-31"
}
headers = {
"Authorization": f"Bearer {token}",
"Accept": "application/xml"
}
response = requests.get(
f"{base_url}{endpoint}",
params=params,
headers=headers
)
if response.status_code == 200:
root = ET.fromstring(response.content)
# Parse transactions
for transaction in root.findall('.//TransactionDetails'):
rcpt_num = transaction.find('RCPT_NUM').text
inv_amt = transaction.find('INV_AMT').text
print(f"Receipt: {rcpt_num}, Amount: {inv_amt}")
else:
print(f"Error: {response.status_code}")
Example 4: Save to File
import requests
import json
from datetime import datetime
base_url = "https://your-odoo-domain.com"
endpoint = "/api/integra/pos-data"
token = "YOUR_TOKEN_HERE"
params = {
"FromDt": "2024-01-01",
"ToDt": "2024-01-31"
}
headers = {
"Authorization": f"Bearer {token}",
"Accept": "application/json"
}
response = requests.get(
f"{base_url}{endpoint}",
params=params,
headers=headers
)
if response.status_code == 200:
data = response.json()
# Save to file
filename = f"pos_data_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json"
with open(filename, 'w') as f:
json.dump(data, f, indent=2)
print(f"Data saved to {filename}")
else:
print(f"Error: {response.status_code}")
Postman Usage
Setup Postman Collection
-
Create New Request
- Method: GET
- URL:{{base_url}}/api/integra/pos-data -
Configure Authorization
- For Bearer Token:- Type: Bearer Token
- Token: Your token value
- For Basic Auth:
- Type: Basic Auth
- Username: Your username
- Password: Your password
-
Add Parameters
- Key:FromDt, Value:2024-01-01
- Key:ToDt, Value:2024-01-31
- Key:LOCATION_CODE, Value:2(optional) -
Set Headers
- Key:Accept, Value:application/jsonorapplication/xml -
Save and Send
Postman Environment Variables
Create environment variables for easier management:
{
"base_url": "https://your-odoo-domain.com",
"token": "YOUR_TOKEN_HERE",
"username": "integra_api_user",
"password": "YOUR_PASSWORD_HERE"
}
Security Features
🔒 Multi-layer Security
- HTTPS/SSL Required: All API communications must use HTTPS encryption
- Token-based Authentication: Secure Bearer token authentication
- Basic Authentication Support: Username/password authentication option
- Credential Encryption: Passwords stored using MD5 hashing
- System Parameter Storage: Secure storage of credentials in Odoo system parameters
🛡️ Access Control
- POS-level Control: Enable/disable API per POS configuration
- IP-based Access Ready: Framework ready for IP whitelist implementation
- Request Logging: Comprehensive error logging and request tracking
- Date Range Validation: Server-side validation of date parameters
✅ Best Practices
- Always use HTTPS in production
- Rotate tokens periodically
- Use strong passwords for basic authentication
- Monitor API access logs regularly
- Enable API only for necessary POS locations
- Keep Odoo and module updated
Performance Considerations
- Query Optimization: Uses optimized ORM queries for large datasets
- Date Range Limit: Recommended to query data in monthly chunks
- Caching: Response caching not implemented (real-time data)
- Concurrent Requests: Supports multiple simultaneous API calls
API Response Codes
| Code | Description |
|---|---|
| 200 | Success - Data returned |
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Invalid credentials |
| 403 | Forbidden - API not enabled for POS |
| 404 | Not Found - Invalid endpoint |
| 500 | Internal Server Error - Server issue |
Bytesraw
Researching Tomorrow's Bytes Today
Who We Are
We are a team of experienced Odoo freelancers dedicated to helping businesses customize, integrate, and optimize Odoo for their unique needs. Our initiative brings together experts in ERP solutions, development, and automation to deliver high-quality, cost-effective Odoo services.
Our Expertise
- Odoo Development (v11-v18)
- Functional Training (v11-v18)
- Community Upgradation's(v11-v18)
- Python & PostgreSQL
- Hosting, Automation & Security
- API & 3P Integrations
- E-commerce & POS Solutions
A Coffee with Us
Let's discuss your Odoo needs over a virtual or in-person coffee!
BytesRaw
No Running Away—Deal?
We build it, you love it, then you pay. Simple! If it doesn't work because of us, we'll take the hit as a learning experience (don't worry, we don't cry). And don't worry—we won't vanish after the job is done... but if you disappear, we might just shed a tear or two!
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module