Τεκμηρίωση API Veloxiom

Πλήρης τεκμηρίωση REST API για την πλατφόρμα διαχείρισης ISP Veloxiom. Διαχειριστείτε πελάτες, χρεώσεις, δίκτυο και integrations μέσω κώδικα.

Ενότητες API


🔐 Πιστοποίηση

Το Veloxiom εκθέτει δύο διαφορετικές επιφάνειες. Επιλέξτε τη σωστή για την ενσωμάτωσή σας:

API Tokens (REST API v1)

Δημιουργήστε scoped tokens στο panel από Admin → API & Webhooks. Κάθε token εμφανίζεται μία φορά (αποθηκεύεται μόνο SHA-256 hash), φέρει scopes ανά module, μπορεί να έχει λήξη και να ανακληθεί. Το token είναι tenant-scoped — βλέπει μόνο τα δεδομένα του tenant του.

# Send the token one of three ways (Bearer preferred): Authorization: Bearer vlx_xxxxxxxxxxxxxxxxxxxxxxxx X-Api-Token: vlx_xxxxxxxxxxxxxxxxxxxxxxxx ?token=vlx_xxxxxxxxxxxxxxxxxxxxxxxx # Base URL (tenant resolved by host/slug) https://{your-domain-or-slug}/api/v1.php
# Example: list customers (needs customers:view scope) curl https://panel.veloxiom.com/{tenant}/api/v1.php?resource=customers&limit=3 \ -H "Authorization: Bearer vlx_..."

Scopes Token

Κάθε token δίνει πρόσβαση ανά module σε επίπεδο none / view / write (write συνεπάγεται view). Κάθε endpoint απαιτεί συγκεκριμένο scope· ανεπαρκές scope επιστρέφει HTTP 403.

Ενότητα scopeΔίνει πρόσβαση σε
customersΠελάτες / συνδρομητές
plansΠλάνα υπηρεσιών
billingΤιμολόγια & χρέωση
routersΔικτυακές συσκευές / routers
monitoringΔεδομένα monitoring (διαβάζει και routers)
crmTickets & μηνύματα (write για αποστολή)

2FA (Αυθεντικοποίηση Δύο Παραγόντων) (ενέργειες session panel)

POST
action=start_2fa_enroll
Εκκίνηση εγγραφής TOTP 2FA — επιστρέφει QR code και secret
POST
action=finish_2fa_enroll
Ολοκλήρωση εγγραφής 2FA με κωδικό επαλήθευσης
POST
action=disable_own_2fa
Απενεργοποίηση 2FA για τρέχον admin λογαριασμό
POST
action=reset_admin_2fa
Reset 2FA για άλλον admin (απαιτεί admin password)

Αυθεντικοποίηση mobile εφαρμογής

Η mobile εφαρμογή Veloxiom χρησιμοποιεί το ίδιο endpoint /process.php. Οι παρακάτω ενέργειες δεν απαιτούν session· όλες οι υπόλοιπες στέλνουν το POST πεδίο mobile_token (τα tokens λήγουν και είναι τύπου staff ή customer).

POST
action=mobile_tenant_info
Branding πριν το login για το URL που πληκτρολόγησε ο χρήστης. Επιστρέφει {ok, name, logo_url}. Χωρίς auth.
POST
action=mobile_auth_staff
Login προσωπικού. Παράμετροι: username, password. Επιστρέφει {ok, token, user{id, username, name, role, permissions}}.
POST
action=mobile_auth_customer
Login συνδρομητή (PPPoE username/password). Παράμετροι: username, password. Επιστρέφει token τύπου customer.
POST
action=mobile_check_token
Έλεγχος εγκυρότητας token. Παράμετρος: mobile_token.
POST
action=mobile_user_create
Δημιουργία συνδρομητή από την εφαρμογή (δικαίωμα customers/write). Παράμετροι: username, password, plan (υποχρεωτικά), name, email, phone. Σφάλματα: password_required, plan_required και τα τυπικά σφάλματα προσθήκης.

🔌 REST API v1 (Token)

Το δημόσιο REST API στο /api/v1.php. Οι αναγνώσεις (GET ?resource=…) λειτουργούν σε κάθε εγκατάσταση. Οι εγγραφές (POST ?action=…) επιτρέπουν σε πελάτη να φτιάξει δική του εφαρμογή (CRM, mobile, ενσωμάτωση τιμολόγησης) και είναι διαθέσιμες στο Veloxiom Standalone όταν η άδεια περιλαμβάνει το feature api_write· σε hosted tenants απαντούν 403 feature_not_licensed εκτός αν ενεργοποιηθούν από τη Veloxiom. Ελέγξτε ?resource=me → write_enabled. Όλες οι εγγραφές περνούν από την ίδια ακριβώς λογική του panel με το admin UI (RADIUS, IPAM, τιμολόγηση, audit log, webhooks) — δεν υπάρχει δεύτερη διαδρομή εγγραφής.

Αδειοδότηση: το feature api_write είναι μέρος της άδειας Standalone (εκδίδεται ανά εγκατάσταση). Τα read endpoints και το send_message δεν το απαιτούν ποτέ. Τα tokens δημιουργούνται στο panel στο Ρυθμίσεις → API tokens με scopes ανά module (customers, plans, billing, routers, monitoring, crm × view|write).

Πόροι Ανάγνωσης (GET)

GET
?resource=ping
Έλεγχος λειτουργίας. Επιστρέφει {ok, pong, ts}.
GET
?resource=me
Όνομα token, scopes, write_enabled, standalone.
GET
?resource=customers
Λίστα πελατών. Πεδία: username, name, email, phone. Υποστηρίζει q, limit, offset. Scope: customers:view.
GET
?resource=customer&username=…
Ένας πελάτης: username, plan, rate_limit, disabled, comment, static_ip, expire_date, name, email, phone, afm, address, online, session{}, meta{} (χωρίς κωδικούς/μυστικά). Scope: customers:view.
GET
?resource=sessions[&username=…]
Ενεργές συνεδρίες RADIUS: id, session_id, username, nas, ip, ipv6_prefix, ipv6_delegated, mac, started_at, seconds, download_bytes, upload_bytes. Scope: customers:view or monitoring:view.
GET
?resource=usage&username=…[&from=&to=]
Σύνολα κίνησης περιόδου (προεπιλογή: τρέχων μήνας) + ανάλυση daily[]: sessions, seconds, download_bytes, upload_bytes. Scope: customers:view or monitoring:view.
GET
?resource=online
Πελάτες online τώρα (ίδια πεδία με sessions). Scope: customers:view or monitoring:view.
GET
?resource=plans
Πλάνα: id, name, rate_limit, price. Scope: plans:view.
GET
?resource=invoices
Λίστα τιμολογίων. Φίλτρα status, q, username. Πεδία: id, number, customer, username, total, status, issue_date. Scope: billing:view.
GET
?resource=invoice&id=…
Αναλυτικό τιμολόγιο με ΦΠΑ, στοιχεία πληρωμής, κατάσταση ηλ. τιμολόγησης (einv_*) και items[]. Scope: billing:view.
GET
?resource=payments[&username=|&invoice_id=]
Πληρωμές: id, invoice_id, username, amount, method, gateway, reference, paid_at. Scope: billing:view.
GET
?resource=routers
Συσκευές δικτύου: id, name, ip, hostname, site, role, health. Scope: routers:view or monitoring:view.
GET
?resource=tickets
Tickets: id, subject, customer, status, priority, created_at, updated_at. Φίλτρο q. Scope: crm:view.
GET
?resource=ticket&id=…
Αναλυτικό ticket με replies[]. Scope: crm:view.
GET
?resource=messages
Μηνύματα. Φίλτρα direction, channel, phone. Scope: crm:view.

Ενέργειες Εγγραφής (POST) Standalone / με άδεια · api_write

Στείλτε POST /api/v1.php?action=<name> με JSON σώμα (Content-Type: application/json) ή πεδία φόρμας. Κάθε εγγραφή καταγράφεται στο audit log ως api:<όνομα token> και εκπέμπει το αντίστοιχο webhook.

POST
action=send_message
Αποστολή μηνύματος. Διαθέσιμο παντού (δεν απαιτεί api_write). Scope: crm:write. Παράμετροι: channel (sms|viber|whatsapp), to, text, username. Επιστρέφει: status, channel, to. Webhook: message.sent.
POST
action=create_customer [api_write]
Δημιουργεί λογαριασμό RADIUS, προφίλ τιμολόγησης και (προαιρετικά) static IPv4 / IPv6 prefix. 409 username_exists, 422 unknown_plan. Scope: customers:write. Παράμετροι: username, password, plan, name, email, phone, phone2, afm, doy, address, id_card, activity, comment, static_ip, expire_date, expire_time, billing_price, billing_vat, ipv6_mode, ipv6_pool_id, ipv6_prefix. Επιστρέφει: username, plan, disabled, created. Webhook: customer.created.
POST
action=update_customer [api_write]
Επεξεργασία στοιχείων, κωδικού, πλάνου, λήξης, static IP. Scope: customers:write. Παράμετροι: username + any field of create_customer (only sent fields change). Επιστρέφει: username, plan, disabled, updated. Webhook: customer.updated.
POST
action=disable_customer [api_write]
Μπλοκάρει την αυθεντικοποίηση και ρίχνει την ενεργή συνεδρία. Idempotent. Scope: customers:write. Παράμετροι: username. Επιστρέφει: username, disabled, changed. Webhook: customer.disabled.
POST
action=enable_customer [api_write]
Επανενεργοποιεί απενεργοποιημένο πελάτη. Scope: customers:write. Παράμετροι: username. Επιστρέφει: username, disabled, changed. Webhook: customer.enabled.
POST
action=change_plan [api_write]
Ενημερώνονται RADIUS group, προφίλ router και ιστορικό πλάνων· η συνεδρία επαναπρογραμματίζεται. Scope: customers:write. Παράμετροι: username, plan. Επιστρέφει: username, plan, previous_plan, changed. Webhook: customer.plan_changed.
POST
action=set_expire [api_write]
Ορισμός ή καθαρισμός ημερομηνίας λήξης. Scope: customers:write. Παράμετροι: username, expire_date (empty = clear), expire_time. Επιστρέφει: username, expire_date, expire_time. Webhook: customer.updated.
POST
action=reconnect [api_write]
Ρίχνει τις συνεδρίες PPPoE ώστε το CPE να επανασυνδεθεί με νέα attributes. Scope: customers:write. Παράμετροι: username. Επιστρέφει: username, kicked_sessions, closed_accounting. Webhook: customer.reconnected.
POST
action=delete_customer [api_write]
Οριστική διαγραφή (RADIUS, meta, static IP, IPv6). Scope: customers:write. Παράμετροι: username, confirm=yes. Επιστρέφει: username, deleted. Webhook: customer.deleted.
POST
action=create_plan [api_write]
Δημιουργεί το πλάνο και το συγχρονίζει σε όλους τους routers. Scope: plans:write. Παράμετροι: name, rate_limit, price, price_vat_mode, price_vat_rate, price_sub_fee, burst_rate, burst_threshold, burst_time, priority, min_rate, aggregation, data_cap_gb, fup_rate, fup_action. Επιστρέφει: id, name, rate_limit, created. Webhook: plan.created.
POST
action=update_plan [api_write]
Επεξεργασία πλάνου. Scope: plans:write. Παράμετροι: id or current_name, name, rate_limit, … (as create_plan). Επιστρέφει: id, name, rate_limit, updated. Webhook: plan.updated.
POST
action=delete_plan [api_write]
409 plan_in_use αν έχει πελάτες, εκτός αν force=yes. Scope: plans:write. Παράμετροι: id or name, force=yes. Επιστρέφει: id, deleted. Webhook: plan.deleted.
POST
action=create_invoice [api_write]
Εκδίδει τιμολόγιο με τη σειρά αρίθμησης του tenant· χωρίς items χρησιμοποιείται η τιμή πλάνου του πελάτη. Με einv_submit=1 υποβάλλεται σε myDATA/πάροχο. Scope: billing:write. Παράμετροι: username, month (YYYY-MM), items[{description, qty, unit_price, discount_pct, vat_rate}], vat, doctype_title, due_date, einv_submit (0|1, default 1). Επιστρέφει: invoice_id, number, total, status, issue_date, due_date. Webhook: invoice.created.
POST
action=record_payment [api_write]
Καταχωρεί πληρωμή (μερική/ολική)· με username εξοφλεί τα παλαιότερα ανεξόφλητα, το πλεόνασμα γίνεται πίστωση. Scope: billing:write. Παράμετροι: invoice_id or username, amount, method (cash|card|pos|bank|iban|other), reference, note. Επιστρέφει: invoice_id, amount, method, result{paid, applied, remaining, invoice_status, credited}. Webhook: payment.recorded, invoice.paid.
POST
action=set_invoice_status [api_write]
Αλλαγή κατάστασης τιμολογίου (π.χ. ακύρωση). Scope: billing:write. Παράμετροι: invoice_id, status (unpaid|paid|cancelled|draft|issued|overdue|partial), payment_method, payment_reference, payment_note. Επιστρέφει: invoice_id, status, reactivated. Webhook: invoice.status_changed.
POST
action=create_ticket [api_write]
Ανοίγει ticket, προαιρετικά συνδεδεμένο με πελάτη. Scope: crm:write. Παράμετροι: subject, message, username, priority (low|medium|high|urgent), category, contact_email, contact_name. Επιστρέφει: id, subject, customer, status, priority. Webhook: ticket.created.
POST
action=reply_ticket [api_write]
Προσθέτει απάντηση (και προαιρετικά αλλάζει κατάσταση). Scope: crm:write. Παράμετροι: id, message, status. Επιστρέφει: ticket_id, reply_id, status. Webhook: ticket.replied.
POST
action=update_ticket [api_write]
Ενημέρωση πεδίων ticket. Scope: crm:write. Παράμετροι: id, status, priority, subject, assigned_to, category. Επιστρέφει: ticket_id, updated. Webhook: ticket.updated.
# Παράδειγμα — δημιουργία πελάτη και αλλαγή πλάνου (curl) # 1) create curl -X POST "https://panel.example.gr/api/v1.php?action=create_customer" \ -H "Authorization: Bearer vlx_…" -H "Content-Type: application/json" \ -d '{"username":"user123","password":"S3cret!","plan":"PPPoE-100/10","name":"Γιώργος Π.","phone":"6941234567"}' # → {"ok":true,"data":{"username":"user123","plan":"PPPoE-100/10","disabled":false,"created":true},"meta":{…}} # 2) change plan curl -X POST "https://panel.example.gr/api/v1.php?action=change_plan" \ -H "Authorization: Bearer vlx_…" -H "Content-Type: application/json" \ -d '{"username":"user123","plan":"PPPoE-200/20"}' # → {"ok":true,"data":{"username":"user123","plan":"PPPoE-200/20","previous_plan":"PPPoE-100/10","changed":true}} # 3) live session + usage curl "https://panel.example.gr/api/v1.php?resource=sessions&username=user123" -H "Authorization: Bearer vlx_…" curl "https://panel.example.gr/api/v1.php?resource=usage&username=user123&from=2026-09-01&to=2026-09-30" -H "Authorization: Bearer vlx_…"

Κοινές Παράμετροι Query

ΠαράμετροςΤύποςΠεριγραφή
resource / rstringΌνομα πόρου (GET)
actionstringΌνομα ενέργειας (POST· query ή σώμα)
limitintΜέγεθος σελίδας, 1–500 (προεπιλογή 100)
offsetintOffset σελιδοποίησης (προεπιλογή 0)
qstringΕλεύθερη αναζήτηση (πελάτες/τιμολόγια/tickets)
from / toYYYY-MM-DDΠερίοδος για usage

Σφάλματα

HTTPerrorΣημασία
401unauthorizedToken που λείπει/άκυρο/ανακληθέν/ληγμένο
403insufficient_scopeΤο token δεν έχει το απαιτούμενο scope (error_details.need)
403feature_not_licensedΟι εγγραφές δεν είναι αδειοδοτημένες σε αυτή την εγκατάσταση (api_write)
404unknown_resource / not_foundΆγνωστος πόρος ή δεν βρέθηκε πελάτης/πλάνο/τιμολόγιο/ticket
400unknown_action / invalid_jsonΆγνωστη ενέργεια POST ή μη έγκυρο JSON
409username_exists / plan_in_useΣύγκρουση με υπάρχοντα δεδομένα
422missing_parameter / invalid_parameter / invalid_username / unknown_plan / invalid_amountΑποτυχία επικύρωσης (error_details.param)
429rate_limitedΥπέρβαση ορίου (120 req/min ανά token)
502upstream_errorΑποτυχία router / παρόχου SMS / ηλ. τιμολόγησης

Σώμα σφάλματος: {"ok":false,"error":"<code>","error_code":"<code>","error_message":"…","error_details":{…},"meta":{"request_id":"req_…"}}. Στείλτε envelope=2 για δομημένο αντικείμενο error.

Envelope, Pagination & Request IDs

ΠεδίοΠεριγραφή
okΠάντα παρόν. true σε επιτυχία, false σε σφάλμα.
dataΤο payload (πίνακας για λίστες, object για μονό πόρο).
countΠλήθος γραμμών στην τρέχουσα απάντηση.
paginationlimit, offset, total, has_more, next_offset — για λίστες.
meta.request_idΜοναδικό id κλήσης· επιστρέφεται και ως header X-Request-Id.

Errors stay flat for backward compatibility ({ok:false,error:"…"}). Send envelope=2 for a structured error: {ok:false,error:{code,message,details},meta:{request_id}}. Validation failures return 422. Callers still using ?token=… receive Deprecation/Sunset headers — prefer Authorization: Bearer or X-Api-Token.

Τιμές πεδίων

invoice.statusunpaid · paid · partial · overdue · cancelled
message.channelsms · viber · whatsapp

Προδιαγραφή για μηχανές (OpenAPI)

Το GET /api/v1.php?resource=openapi επιστρέφει το OpenAPI 3.0.3 έγγραφο (v1.2) της εγκατάστασής σας, με όλες τις ενέργειες εγγραφής και σχήματα αιτήματος/απάντησης — φορτώστε το σε Postman/Insomnia ή παράγετε client (openapi-generator, Swagger Codegen) σε οποιαδήποτε γλώσσα.


👥 Πελάτες / Συνδρομητές (action μέσω session panel/mobile)

Διαχείριση συνδρομητών ISP — δημιουργία, επεξεργασία, διαγραφή και έλεγχος κατάστασης υπηρεσίας.

POST
action=add
Δημιουργία νέου πελάτη/συνδρομητή με PPPoE/DHCP credentials, πλάνο υπηρεσίας και στοιχεία επικοινωνίας
POST
action=edit
Ενημέρωση στοιχείων πελάτη — username, πλάνο, ταχύτητα, στοιχεία επικοινωνίας, custom πεδία
POST
action=delete
Διαγραφή πελάτη και συσχετισμένων RADIUS/MikroTik εγγραφών
POST
action=toggle_status
Ενεργοποίηση/απενεργοποίηση υπηρεσίας πελάτη (suspend/unsuspend)
POST
action=save_billing_customer
Αποθήκευση ρυθμίσεων χρέωσης πελάτη (κύκλος χρέωσης, φορολογικά, τρόπος πληρωμής)
POST
action=aade_lookup
Αναζήτηση φορολογικών στοιχείων πελάτη από ΑΑΔΕ με ΑΦΜ

Παράμετροι Πελάτη (action=add / action=edit)

ΠαράμετροςΤύποςΠεριγραφή
user (alias: user_name)stringPPPoE/DHCP username (μοναδικό, με έλεγχο μορφής)
pass (alias: password)stringΚωδικός PPPoE (υποχρεωτικός στην προσθήκη)
limitstringΌνομα πλάνου (υποχρεωτικό· πρέπει να υπάρχει ως πλάνο / rate profile)
commentstringΌνομα εμφάνισης / σχόλιο στον RADIUS χρήστη
static_ip (alias: ip_address)stringΣτατική IPv4 (Framed-IP-Address), προαιρετικό
expire_datedateΗμερομηνία λήξης (YYYY-MM-DD), προαιρετικό
expire_timetimeΏρα λήξης (HH:MM), προαιρετικό

Οι action=delete και action=toggle_status δέχονται user_id (alias username). Η action=aade_lookup δέχεται afm (ΑΦΜ, μόνο ψηφία).

Παράμετροι στοιχείων τιμολόγησης (action=save_billing_customer)

ΠαράμετροςΤύποςΠεριγραφή
usernamestringUsername συνδρομητή (υποχρεωτικό)
cust_namestringΕπωνυμία / ονοματεπώνυμο
cust_afmstringΑΦΜ
cust_doystringΔΟΥ
cust_activitystringΔραστηριότητα
cust_addrstringΔιεύθυνση τιμολόγησης
cust_phonestringΤηλέφωνο
cust_emailstringEmail
cust_idcardstringΑΔΤ
billing_pricefloatΤιμή ανά πελάτη (override, προαιρετικό)
billing_vatfloatΣυντελεστής ΦΠΑ ανά πελάτη (override, προαιρετικό)

📋 Πακέτα Υπηρεσιών

Δημιουργία και διαχείριση πλάνων υπηρεσιών internet με ταχύτητες, τιμολόγηση και πολιτικές FUP.

POST
action=add_plan
Δημιουργία νέου πλάνου με ταχύτητες, τιμή και MikroTik queue parameters
POST
action=edit_plan
Ενημέρωση υπάρχοντος πλάνου
POST
action=delete_plan
Διαγραφή πλάνου (αποτυγχάνει αν υπάρχουν πελάτες)

Παράμετροι Πλάνου (action=add_plan / action=edit_plan)

ΠαράμετροςΤύποςΠεριγραφή
plan_namestringΌνομα πλάνου (π.χ. 'FTTH 100Mbps')
rate_limitstringΤαχύτητα σε σύνταξη MikroTik rate-limit, upload/download (π.χ. 10M/100M)
default_pricefloatΤιμή (EUR)
price_vat_modestringΑν η default_price είναι καθαρή ή με ΦΠΑ
price_vat_ratefloatΣυντελεστής ΦΠΑ (%)
price_sub_feefloatΤέλος συνδρομητών / επιβάρυνση που προστίθεται στην τιμή
aggregationstringΠροεπιλογή πολιτικής aggregation / burst
burst_timestringBurst time (MikroTik)
priorityintΠροτεραιότητα queue (1–8)
data_cap_gbintΜηνιαίο όριο δεδομένων σε GB (0 = απεριόριστο)
fup_actionstringΕνέργεια όταν εξαντληθεί το όριο (throttle / block)

Η action=delete_plan δέχεται plan_id.


💰 Τιμολόγηση & Παραστατικά

Αυτοματοποιημένη μηχανή χρέωσης με δημιουργία τιμολογίων, παρακολούθηση κατάστασης και batch λειτουργίες.

POST
action=save_billing_settings
Ρύθμιση global ρυθμίσεων χρέωσης — φόροι, κύκλοι χρέωσης, αρίθμηση τιμολογίων, στοιχεία εταιρείας
POST
action=generate_invoices_month
Έκδοση τιμολογίων για μήνα χρέωσης. Παράμετροι: month (YYYY-MM), users[] (προαιρετικό υποσύνολο usernames), einv_submit (1 = υποβολή σε ηλ. τιμολόγηση)
POST
action=create_invoice_manual
Χειροκίνητο τιμολόγιο. Παράμετροι: users, month, items_json, vat, taxes_json, transport_json, doctype_title, einv_submit
POST
action=invoice_set_status
Αλλαγή κατάστασης τιμολογίου. Παράμετροι: id, status ∈ unpaid · paid · overdue · cancelled
POST
action=delete_invoice
Διαγραφή τιμολογίου. Παράμετρος: id. Απορρίπτεται για εκδοθέντα/υποβληθέντα/εξοφλημένα τιμολόγια.

💳 Πληρωμές

Επεξεργασία πληρωμών μέσω πολλαπλών gateways — DIAS τραπεζικό, Revolut, Stripe, Viva Wallet, PayPal.

POST
action=pay_invoice
Καταχώριση πληρωμής για ένα τιμολόγιο. Παράμετροι: invoice_id, amount, method, reference, note
POST
action=customer_bulk_pay
Εξόφληση όλων των ανεξόφλητων τιμολογίων πελάτη. Παράμετροι: username, amount, method, reference, note
POST
action=manual_retry_charge
Επανάληψη αποτυχημένης αυτόματης χρέωσης gateway. Παράμετρος: invoice_id

Υποστηριζόμενα Payment Gateways

Πάροχος πληρωμώνΤύποςΠεριγραφή
DIASbankΕλληνικό τραπεζικό σύστημα (κωδικοί RF)
RevolutonlineOnline πληρωμές κάρτας μέσω Revolut Business
StripeonlineΔιεθνείς πληρωμές κάρτας & subscriptions
Viva WalletonlineΕλληνικές/EU πληρωμές κάρτας
PayPalonlinePayPal πληρωμές
myPOSonline / POSΠληρωμές κάρτας & POS τερματικά (Checkout / REST)

📄 Ηλεκτρονική Τιμολόγηση (ΑΑΔΕ / myDATA)

Υποβολή τιμολογίων ηλεκτρονικά στο ΑΑΔΕ myDATA. Υποστηρίζει πολλαπλούς παρόχους ηλ. τιμολόγησης.

POST
action=einvoicing_submit_now
Υποβολή τιμολογίου μέσω παρόχου. Παράμετροι: invoice_id, provider (βλ. πίνακα)
POST
action=einvoicing_history
Ιστορικό υποβολών τιμολογίου (MARK, UID, σφάλματα). Παράμετρος: invoice_id

Υποστηριζόμενοι Πάροχοι Ηλ. Τιμολόγησης

Πάροχος (τιμή provider)ΚατάστασηΠεριγραφή
myDATA (ΑΑΔΕ) — mydataactiveΑπευθείας υποβολή στο ΑΑΔΕ myDATA API
Elorus — elorusactiveΠλατφόρμα τιμολόγησης / ERP Elorus
ΕΣΚΑΠ — eskapactiveΚανάλι παρόχου ηλ. τιμολόγησης ΑΑΔΕ
ΕΣΥΠ / ΤΗΛΕΔ (ΓΓΠΣ) — esypactiveΗλ. τιμολόγηση δημοσίου (B2G)
SoftOne — softonebetaConnector SoftOne ERP
IMPACT — impactcoming soonIMPACT πάροχος ηλ. τιμολόγησης
Primer (Cosmos) — primercoming soonPrimer/Cosmos ηλ. τιμολόγηση
Retail@Link — retail_at_linkcoming soonRetail@Link ηλ. τιμολόγηση
Edpsoft — edpsoftcoming soonEdpsoft ηλ. τιμολόγηση
Epsilon Net / Entersoft / Galaxy — epsilon, entersoft, galaxycoming soonConnectors ERP

📡 RADIUS / PPPoE / DHCP

Ενσωμάτωση FreeRADIUS για PPPoE και DHCP authentication, CoA (Change of Authorization) και διαχείριση sessions.

Το PPPoE/DHCP authentication, το accounting και το CoA είναι πλήρως ενεργά και οδηγούνται από το panel (προσθήκη/επεξεργασία/απενεργοποίηση πελάτη, αλλαγή πλάνου, επανασύνδεση). Δεν υπάρχουν ακόμη δημόσιες HTTP ενέργειες για λίστα/αποσύνδεση RADIUS sessions (radius_sessions, radius_disconnect, radius_coa είναι στο roadmap). Τα ενεργά sessions είναι διαθέσιμα στο panel και μέσω της mobile ενέργειας mobile_online_users· επανασύνδεση συνδρομητή μέσω mobile_user_reconnect.


🔧 Routers MikroTik

Διαχείριση MikroTik RouterOS συσκευών — προσθήκη, ρύθμιση, παρακολούθηση και εκτέλεση API εντολών.

GET
action=get_routers
Λίστα όλων των ρυθμισμένων routers με κατάσταση σύνδεσης
GET
action=list_routers_ui
Λίστα routers με extended UI metadata (uptime, version, CPU, RAM)
POST
action=add_router
Προσθήκη νέου MikroTik router (IP, API credentials, RADIUS secret)
POST
action=edit_router
Ενημέρωση ρυθμίσεων router
POST
action=delete_router
Αφαίρεση router και καθαρισμός RADIUS/firewall rules
POST
action=switch_router
Εναλλαγή ενεργού router context (για multi-router setups)

Παράμετροι Router (action=add_router / action=edit_router)

ΠαράμετροςΤύποςΠεριγραφή
r_ipstringIP διαχείρισης του router
r_namestringΌνομα εμφάνισης
r_userstringΧρήστης RouterOS API
r_passstringΚωδικός RouterOS API
r_radius_ipstringIP του NAS για RADIUS (προεπιλογή: η IP διαχείρισης)
r_radius_secretstringRADIUS shared secret
r_radius_vendorstringΚατασκευαστής NAS (mikrotik, cisco)
orig_ip (μόνο edit)stringΤρέχουσα IP του router που επεξεργάζεστε

Οι action=delete_router και action=switch_router δέχονται ip.


🌐 Ρυθμίσεις Δικτύου

POST
action=save_network_settings
Ρύθμιση IP pools, VLAN, OSPF, VPLS και routing parameters

🗺️ Τοπολογία & Χάρτες

Οπτικοποίηση τοπολογίας δικτύου με 2D/3D χάρτες. Υποστηρίζει πολλαπλά monitoring backends.

POST
action=save_topology_metrics_source
Ορισμός πηγής δεδομένων topology. Παράμετρος: metrics_source ∈ librenms · observium · zabbix · mikrotik

Υποστηριζόμενα Monitoring Backends

BackendΠρωτόκολλοΠεριγραφή
LibreNMSREST APIOpen-source network monitoring
ObserviumREST APINetwork monitoring platform
ZabbixJSON-RPCEnterprise monitoring solution
MikroTikRouterOS APIDirect router SNMP/API polling

📦 Απογραφή Συσκευών (IPAM)

Διαχείριση IP Addresses και inventory δικτυακών συσκευών με workflows έγκρισης.

POST
action=save_inventory_node
Προσθήκη ή ενημέρωση inventory node (όνομα, IP, τύπος, τοποθεσία, σημειώσεις)
POST
action=approve_inventory_node
Έγκριση pending inventory node
POST
action=approve_inventory_all
Μαζική έγκριση όλων των pending inventory nodes
POST
action=delete_inventory_node
Διαγραφή inventory node
POST
action=delete_inventory_bulk
Μαζική διαγραφή inventory nodes (all_pending, all_approved, ή all)

📊 Εποπτεία SNMP

Real-time παρακολούθηση δικτύου μέσω SNMP. Συλλογή bandwidth, latency και interface metrics από routers και switches.

Η συλλογή τρέχει μέσω προγραμματισμένων collectors και απεικονίζεται στα ενσωματωμένα Grafana dashboards. Η υγεία router (CPU, RAM, uptime, έκδοση) επιστρέφεται από την action=list_routers_ui και, ανά συσκευή, από τον REST πόρο routers (πεδίο health). Mobile: mobile_snmp_devices, mobile_uptime. Οι on-demand ενέργειες snmp_collect / router_health δεν εκτίθενται.


📞 VoIP / Τηλεφωνία (MOR)

MOR/M2 τηλεφωνική ενσωμάτωση — διαχείριση SIP trunks, CDR records, tariffs, balance management και VoIP billing.

GET
action=mor_balance_get
Λήψη υπολοίπου VoIP λογαριασμού
GET
action=mor_cdr_list_local
Ανάκτηση CDR records με φίλτρα (ημερομηνία, αριθμός, διάρκεια)
GET
action=mor_tariffs_list_local
Λίστα διαθέσιμων VoIP tariff πλάνων
POST
action=mor_topup_invoice_create
Προσθήκη credit/υπολοίπου σε VoIP λογαριασμό
POST
action=mor_create_remote_user
Δημιουργία νέων SIP λογαριασμών και ανάθεση DID αριθμών

🔒 WireGuard VPN

POST
action=router_wg_provision
Δημιουργία WireGuard VPN tunnel — δημιουργία keys, ρύθμιση peer σε MikroTik

🎫 Υποστήριξη / Αιτήματα

Σύστημα tickets υποστήριξης πελατών με ανάθεση, προτεραιότητες, κατηγορίες και παρακολούθηση κατάστασης. Ενσωματώσεις: REST ?resource=tickets, ?resource=ticket και (Standalone/με άδεια) action=create_ticket / reply_ticket / update_ticket.

GET
action=crm_tickets
Λίστα tickets (δικαίωμα panel tickets/view_all ή view_own)
POST
action=crm_tickets
Δημιουργία ή ενημέρωση ticket. Παράμετροι: subject (υποχρεωτικό), description, customer, priority, status, assigned_to, category· στείλτε ticket_id για ενημέρωση, delete_id για διαγραφή.
POST
action=customer_crm&sub=create_ticket | ticket_detail | update_ticket | ticket_reply | ticket_note
Ενέργειες ticket από την καρτέλα πελάτη (δημιουργία, προβολή με απαντήσεις, ενημέρωση, δημόσια απάντηση, εσωτερική σημείωση)
POST
action=crm_tickets_bulk
Μαζική ενημέρωση. Παράμετροι: ids (χωρισμένα με κόμμα), bulk_action ∈ status · assign · close, bulk_value
POST
action=mobile_customer_ticket_create / mobile_customer_ticket_reply / mobile_customer_tickets
Tickets συνδρομητή από τη mobile εφαρμογή (customer token)

Τιμές πεδίων

statusopen · in_progress · waiting · resolved · closed
prioritylow · medium · high · urgent

🤖 Βοηθός AI

POST
action=save_ai_settings
Ρύθμιση AI βοηθού — provider/μοντέλο (OpenAI GPT-4o, GPT-4.1, o1-mini, GPT-realtime· Anthropic Claude 3.5/3.7/Sonnet 4.5), API key, συμπεριφορά

🔔 Ειδοποιήσεις

Multi-channel σύστημα ειδοποιήσεων — Telegram, Email, Push notifications.

POST
action=save_telegram_settings
Κανάλι Telegram. Παράμετροι: telegram_enabled, telegram_bot_token, telegram_bot_username, telegram_admin_chat_id
POST
action=incident_notify
Αποστολή ειδοποίησης συμβάντος. Παράμετροι: title, body, severity, channels, users (συνδρομητές-στόχοι)
POST
action=admin_save_notif_overrides
Ορισμός προτιμήσεων ειδοποιήσεων ανά admin

👤 Διαχείριση Διαχειριστών

POST
action=add_web_admin
Δημιουργία διαχειριστή. Παράμετροι: admin_user, admin_pass, admin_email, perms (module→level)
POST
action=edit_web_admin
Ενημέρωση διαχειριστή. Παράμετροι: admin_id, προαιρετικά admin_pass, admin_email, perms
POST
action=delete_web_admin
Διαγραφή διαχειριστή (όχι του κύριου admin). Παράμετρος: admin_id

🏢 Πολλαπλοί Πάροχοι

Multi-tenant αρχιτεκτονική — κάθε tenant είναι μια απομονωμένη ISP instance με δική του βάση, domain, branding και ρυθμίσεις.

Η δημιουργία tenant είναι super-admin ενέργεια από το control panel· εκτελεί όλο το pipeline (βάση, schema, RADIUS, WireGuard/NPM, captive portal) εσωτερικά με rollback σε αποτυχία.

POST
action=provision
Super-admin: δημιουργία νέου tenant (βάση, schema, RADIUS, WireGuard/NPM, captive portal)

⚙️ Ρυθμίσεις Συστήματος

POST
action=save_settings
Αποθήκευση γενικών ρυθμίσεων — στοιχεία εταιρείας, logo, favicon, timezone, γλώσσα, θέμα

🔗 Webhooks

Λήψη real-time ειδοποιήσεων όταν συμβαίνουν events. Ρυθμίστε outbound webhooks στο panel από Admin → API & Webhooks. Το signing secret (whsec_…) εμφανίζεται μία φορά.

Διαθέσιμα Events

ΓεγονόςΠεριγραφή
message.receivedΕλήφθη εισερχόμενο μήνυμα (SMS/άλλο κανάλι)
message.sentΣτάλθηκε εξερχόμενο μήνυμα (π.χ. μέσω API send_message)
pingΔοκιμαστικό event από το admin UI
*Εγγραφή σε όλα τα τρέχοντα και μελλοντικά events

Επιπλέον business events (customer.*, invoice.*, ticket.*, router.*) είναι στο roadmap και δεν εκπέμπονται ακόμη.

Παράδοση & Υπογραφή

Κάθε παράδοση είναι HTTPS POST με JSON body. Επαληθεύστε τη γνησιότητα με την HMAC-SHA256 υπογραφή πάνω στο ακατέργαστο σώμα, με το webhook secret σας.

# Delivery headers Content-Type: application/json X-Veloxiom-Event: message.sent X-Veloxiom-Signature: sha256=<hex hmac-sha256 of raw body> # Body shape { "event": "ping", "ts": "2026-06-17T12:00:00+00:00", "data": { ... } } # Verify (PHP) $expected = 'sha256=' . hash_hmac('sha256', $rawBody, $secret); if (hash_equals($expected, $_SERVER['HTTP_X_VELOXIOM_SIGNATURE'])) { /* trusted */ }

🏗️ Διασυνδέσεις ERP

Σύνδεση Veloxiom με το ERP σύστημά σας για συγχρονισμένη χρέωση, δεδομένα πελατών και οικονομικές αναφορές.

ERPΚατάστασηΤύπος Ενσωμάτωσης
ElorusactiveΠλήρης συγχρονισμός — τιμολόγια, πελάτες, πληρωμές
SoftOnecoming soonREST API integration
Epsilon Netcoming soonREST API integration
Entersoftcoming soonREST API integration
Galaxy / Realcoming soonREST API integration
QuickBooks OnlinebetaOAuth2 — πελάτες, τιμολόγια, πληρωμές μέσω ουράς συγχρονισμού
XerobetaOAuth2 — πελάτες, τιμολόγια, πληρωμές μέσω ουράς συγχρονισμού
1C:EnterprisebetaOData — πελάτες, τιμολόγια, πληρωμές μέσω ουράς συγχρονισμού

📨 Μορφή Απάντησης

Το REST API v1 και όλες οι JSON ενέργειες panel/mobile επιστρέφουν ok: true|false. Ορισμένες παλαιότερες ενέργειες panel που χρησιμοποιούνται από HTML φόρμες απαντούν με redirect αντί για JSON. Οι κωδικοί σφαλμάτων του REST αναφέρονται στην ενότητα REST· οι ενέργειες panel επιστρέφουν σύντομο error string (π.χ. password_required, plan_required).

// Success response { "ok": true, "data": { ... } } // Error response { "ok": false, "error": "missing_username" }

⏱️ Όρια Κλήσεων

ΕύροςΌριοΠαράθυρο
REST API v1 token120 requestsανά λεπτό, ανά token (HTTP 429 σε υπέρβαση)

Χρειάζεστε Βοήθεια;

Για υποστήριξη API και βοήθεια custom integrations, επικοινωνήστε μέσω της