Αυτό το άρθρο γίνεται ανάλυση της δομής του API που προσφέρει την δυνατότητα αλληλεπήδρασης με την πλατφόρμα απο γεωπόνους / συμβούλους για την διαχείριση των αγροτών μέσα απ το δικό τους σύστημα πχ ERP/ CRM
Το κλείδι api ειναι διαθέσιμο ΜΟΝΟ στο πακέτο BUSSNESS ΓΕΩΠΟΝΩΝ/ ΣΥΜΒΟΥΛΩΝ
URL API: https://app.agrobox.gr/api.php
Μέθοδος αιτήματος: POST
Παράμετροι: HTTP QUERY
Απάντηση: JSON
Παράμετροι κλήσης API
Παράμετρος | Περιγραφή | Απαιτείται | Τύπος δεδομένων |
Αρχική τιμή |
key | User API Key | ναι | αλφαριθμητικό | |
user-request | Agronomist Auth request | ναι | ακέραιος | Πάντα 1 |
task | API action | ναι | αλφαριθμητικό | |
data | Update or add new data | ναι (σε ενημέρωση ή προσθήκη) | array | |
filters | Φίλτρα ανάκτησης | οχι (σε ανάκτηση μόνο) | array | |
limit | Μέγιστα αποτελέσματα ανα σελίδα | οχι (σε ανάκτηση μόνο) | ακέραιος | 1 έως 200, προκαθορισμένη τιμή100 |
p | Αριθμός σελίδας - Σελιδοποιήση | οχι (σε ανάκτηση μόνο) | ακέραιος | 1 |
Tasks
Τιμές task |
Περιγραφή |
agronomist.getprofile | Ανάκτηση προφίλ γεωπόνου |
agronomist.updateprofile | Ενημέρωση προφιλ γεωπόνου |
agronomist.getfarmers | Ανάκτηση προφιλ αγροτών |
agronomist.addfarmer | Ενημέρωση ή προσθήκη αγρότη |
agronomist.deletefarmer | Διαγραφή αγροτών |
agronomist.getfields | Ανάκτηση αγροτεμαχιών αγροτών μαζί με το ιστορικό των καλλιεργειών |
agronomist.addfield | Ενημέρωση ή προσθήκη αγροτεμαχίου |
agronomist.getcrops | Ανάκτηση καλλιεργιών που υποστηρίζει το AgroBox |
agronomist.getvarieties | Ανάκτηση ποικιλιών των καλλιεργιών |
agronomist.getseasons | Ανάκτηση καλλιεργητικών ετών |
agronomist.getcares | Ανάκτηση καλλιεργητικών εργασιών / φροντίδες |
agronomist.getfieldcares | Ανακτήση καλλιεργητικών εργασιών ανα αγροτεμάχιο |
agronomist.getfertilizers | Ανάκτηση λιπασμάτων |
agronomist.getfytofarmaka | Ανάκτηση φυτοπροασταευτικών σκευασμάτων |
agronomist.addfieldcare | Προσθήκη ή ενημέρωση φροντίδων |
agronomist.deletefieldcare | Διαγραφή φροντίδων |
reseller.addaccount | Σε πελάτες που μεταπωλούν τις υπηρεσίες μας υπάρχει δυνατόητα να ανοιγουν λογαριασμούς μέσω API. |
reseller.getaccounts | Ανακτηση πελατών και συνολικών εγγραφών |
Δομή σώματος κλήσης / Body Request
key=USER_API_KEY&user-request=1&task=TASK_NAME
Παράδειγμα 1
Ανάκτηση δεδομένων προφιλ
key=abd123xxxxxxx&user-request=1&task=agronomist.getprofile
0
1
{
2
"result": 1,
3
"data": {
4
"name": "ΣΥΜΒΟΥΛΟΣ",
5
"email": "geoponosDemo@agrobox.gr",
6
"mobile": "699999999999",
7
"username": "geoponos",
8
"published": "1",
9
"companyname": "Γεωπονος Εταιρεία ΚΥΔ",
10
"city": "ΒΟΛΟΣ",
11
"address": "ΓΑΖΗ 92Β",
12
"zip": "38333",
13
"state": "ΜΑΓΝΗΣΙΑ",
14
"country": "GR",
15
"verified_mobile": "0",
16
"verified_email": "0",
17
"vatid": "048313748",
18
"dailyemail": "0",
19
"serialkey": ""
20
}
21
}
Ενημέρωση δεδομένων προφιλ
key=abd123xxxxxxx&user-request=1&task=agronomist.updateprofile&data[companyname]=My new company name&data[address]=My new address
REST API CLIENT (Firefox)
Στην ενημέρωση / προσθήκη εγγραφών υπάρχουν κάποιοι περιορισμοί στα πεδία που επιτρέπεται να αλλάξουν καθώς και στα πεδία κειμένου γίνεται αυτόματη περικοπή χαρακτήρων οταν υπερβαίνει το μέγιστο μέγεθος.
Στην ενημέρωση εγγραφών δεν είναι υποχρεωτικό να στέλνονται όλα τα πεδία, αλλα μόνο αυτά που αλλάζουν τιμή.
agronomist.getfarmers
key=abd123xxxxxxx&user-request=1&task=agronomist.getfarmers
Παράμετρος filters - Κριτήριο αναζήτσης και περιοσρισμός αποτελσμάτων
- id (ID αγρότη)
- username
- vatid (ΑΦΜ)
- code (κωδικός - αυτο το πεδίο ειναι για δική σας χρηση πχ id αγρότη του ERP/CRM)
- osde_year (έτος ΟΣΔΕ)
key=abd123xxxxxxx&user-request=1&task=agronomist.getfarmers&filters[osde_year]=2023
agronomist.addfarmer
key=abd123xxxxxxx&user-request=1&task=agronomist.addfarmer&data[...]=..
Το "data" περιελαμβάνει όλα τα πεδία του αγρότη
Υποχρεωτικά πεδια για την νέα εισαγωγή αγρότη
- email (μοναδικο ανα χρήστη)
- vatid (ΑΦΜ) (μοναδικο ανα χρήστη)
- name (Ονοματεπώνυμο αγρότη)
- osde_year (έτος ΟΣΔΕ)
username εαν ειναι κενό το σύστημα θα παράξει μόνο του ένα username βάση το email και θα υπάρχει στην απάντηση του api
password εαν ειναι κενό το σύστημα θα παράξει έναν τυχαίο κωδικό και θα υπάρχει στην απάντηση του api
Για την ενημέρωση του προφιλ του αγρότη θα πρέπει να συμπεριλάβετε στο ερώτημα τις παραμέτρους updatekey και updatevalue.
To updatekey ειναι το κριτήριο εύρεσης της υπάρχουσας εγγραφής και μπορει να πάρει τις εξης τιμές:
- id (default)
- username
- vatid (ΑΦΜ)
Προτείνεται να γίνεται πάντα με id, καθώς το email ή το vatid μπορεί να αλλάξει απο τον χρήστη.
key=abd123xxxxxxx&user-request=1&task=agronomist.addfarmer&updatekey=email&updatevalue=Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από τους αυτοματισμούς αποστολέων ανεπιθύμητων μηνυμάτων. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να μπορέσετε να τη δείτε.&data[...]=..
agronomist.deletefarmer
Το "data" περιελαμβάνει όλα τα πεδία για την διαγραφή λογαριασμών αγροτών με id ή με vatid. Η διαγραφή θα διαγράψει ολα τα συσχετιζόμενα δεδομένα αγροτεμάχια, φροντίδες κτλ.
- id (πίνακας με τα id που θέλετε να διαγραφούν)
- vatid (ή πίνακας με τα ΑΦΜ που θέλετε να διαγραφούν)
key=abd123xxxxxxx&user-request=1&task=agronomist.deletefieldcare&data[id][0]=998&data[id][1]=999
ή
key=abd123xxxxxxx&user-request=1&task=agronomist.deletefieldcare&data[vatid][0]=048313749
agronomist.getfields
key=abd123xxxxxxx&user-request=1&task=agronomist.getfields
Παράμετρος filters - Κριτήριο αναζήτησης και περιοσρισμός αποτελσμάτων
- filters_cond (αποδεκτές τιμές AND ή OR, default: AND) Με AND θα πρέπει ολα φίλτρα να ικανοποιούνται
- id (ID χωραφιού)
- farmerid (ID αγρότη)
- vatid (ΑΦΜ αγρότη)
- osde_year (έτος ΟΣΔΕ)
- name
- status (0 ή 1)
- cropid (id καλλιέργειας)
- croplatestonly=1 (να επιστρέφει μονο για την τρέχουσα χρονιά αντι για όλο το ιστορικό)
- hide Αποκρυψη δεδομένων στην απάντηση χωρίστε με κόμμα πχ vertices,measures
- agro_group Ομάδα χωραφιού
- agro_view (0 ή 1) Εαν το παρακολουθεί ο συμβουλος ή οχι
- metra_cond (αποδεκτές τιμές AND ή OR, default: AND) Με AND θα πρέπει ολα μέτρα να ικανοποιούνται
- metra Πινακας με μέτρα *
key=abd123xxxxxxx&user-request=1&task=agronomist.getfields&filters[id]=198&croplatestonly=1
* Το metra περιελαμβάνει αναζήτηση με όλα ή μερικά πεδια απ τα παρακάτω (προτείνεται κατ ελάχιστο να περιελαμβάνει το αίτημα τα πεδία type και measure ή code)
- type (ecoschemes ή metro )
- measure (ID μέτρου)
- code (πχ 11.1.1)
- osde (έτος όσδε)
Χρήση φίλτρων με μέτρα
key=abd123xxxxxxx&user-request=1&task=agronomist.getfields&croplatestonly=1&filters[metra_cond]=OR&filters[metra][0][type]=ecoschemes&filters[metra][0][measure]=35&filters[metra][0][type]=metro&filters[metra][0][code]=11.1.1
agronomist.addfield
key=abd123xxxxxxx&user-request=1&task=agronomist.addfarmer&data[...]=..
Το "data" περιελαμβάνει όλα τα πεδία του αγρότη
Υποχρεωτικά πεδια για την νέα εισαγωγή αγρότη
- farmerid (μοναδικο id αγρότη / χρήστη)
- name (Όνομασία χωραφιού)
- location (Τοποθεσία χωραφιού πχ Αλμυρός, Μαγνησία, 37100, GR)
- esga_vertices ή vertices (lat/lng) (συντεταγμένες χωραφιού)
- crop_data (ιστορικό καλλιέργειας ανα χρονιά)
- ektasi (σε τμ) Εκταση ή area (σε εκτάρια) Εκταση
- osde_field_id (id χωραφιού απο το ΟΣΔΕ)
- osde_code (A/A χωραφιού απο το ΟΣΔΕ)
- osde_xarto_code (Χαρτογραφικός αριθμός απο το ΟΣΔΕ) πχ 496-514-4299-006- /752 /196-515-2102-005-
esga_vertices περιλεμβάνει πολλαπλά set συντεγμένων σε ESGA 87 array(10000,20000). Μπορεί να ειναι σε array ή json
vertices περιλεμβάνει πολλαπλά set συντεγμένων στο διεθνές σύστημα array('lat'=>100000,'lng'=>200000). Μπορεί να ειναι σε array ή json
agro_view: (0 ή 1) εαν θα εμφανίζεται στο διαχειριστικό του γεωπόνου
agro_group: Ομαδοποιήση χωραφιών για την καλυτερη διαχείριση από γεωπόνο / σύμβουλο
crop_data ειναι ένας πίνακας οπου περιέχει ένα ζέυγος καλλιεργητικής χρονιάς και τύπο καλλιέργειας
- seasonid (ή ενναλακτικά year)
- cropid (ή ενναλακτικά cropname - οπου croname πρέπει να ειναι ακριβώς όπως αναγράφεται στο agrobox)
Το έτος 2022 σημαίνει 2022-2023 καλλιεργητική χρονιά.
Το έτος 2023 σημαίνει 2023-2024 καλλιεργητική χρονιά
Κάθε καλλιέργεια δεν έχει την ίδια καλλιεργητική χρονιά την ίδια χρονική στιγμή, η χρονιά αλλάζει με την πρώτη συγκομιδή
Tip:
- Τα seasonid μπορειτε να τα βρείτε απο το agronomist.getseasons
- Τα cropid μπορειτε να τα βρείτε απο το agronomist.getcrops
0
$data= (
1
'farmerid'=>12,
2
'name'=>'ΚΑΡΑΓΚΑΝΙ',
3
'location'=>'Επαρ.Οδ. Περίβλεπτου-Κοκκίνας, Περίβλεπτο 375 00, Ελλάδα'
4
'vertices'=>'[]',
5
'ektasi'=>6685,
6
'crop_data'=> (
7
'year'=>2022,'cropid'=>23),
( 8
'seasonid'=>9,'cropid'=>22),
( 9
),
10
);
11
$data_string=http_build_query($data);
Για ενημέρωση συμπληρώστε το &fieldid=XXX. Η ενημέρωση γίνεται μόνο σε ενεργά αγροτεμάχια (status=1)
key=abd123xxxxxxx&user-request=1&task=agronomist.addfield&farmerid=12&fieldid=122&data[...]
agronomist.getcrops
key=abd123xxxxxxx&user-request=1&task=agronomist.getcrops
Επιστρέφει μια λίστα με id, ονομα καλλιέργειας και άλλες πληροφορίες. Αποθηκεύστε αυτά τα δεδομένα και ενημερώστε τα μια φορά καθε τόσο καθώς δεν αλλάζουν συχνά.
Filters:
- id
- osde_code
- state
agronomist.getvarieties
key=abd123xxxxxxx&user-request=1&task=agronomist.getvarieties
Επιστρέφει μια λίστα με id, ονομα καλλιέργειας και άλλες πληροφορίες. Αποθηκεύστε αυτά τα δεδομένα και ενημερώστε τα μια φορά καθε τόσο καθώς δεν αλλάζουν συχνά.
Filters:
- id
- osde_code
- cropid
agronomist.getseasons
key=abd123xxxxxxx&user-request=1&task=agronomist.getaseasons
Επιστρέφει μια λίστα με id, και έτος. Αποθηκεύστε αυτά τα δεδομένα και ενημερώστε τα μια φορά καθε τόσο καθώς δεν αλλάζουν συχνά.
agronomist.getcares
key=abd123xxxxxxx&user-request=1&task=agronomist.getcares
Επιστρέφει μια λίστα με τις καλλιεργητικές εργασίες / φροντίδων . Αποθηκεύστε αυτά τα δεδομένα και ενημερώστε τα μια φορά καθε τόσο καθώς δεν αλλάζουν συχνά.
Filters:
- id (id καλλιεργητικής φροντίδας)
- cropid (id καλλιέργειας)
Παράδειγμα
key=abd123xxxxxxx&user-request=1&task=agronomist.getcares&filters[cropid]=1
agronomist.getfertilizers
key=abd123xxxxxxx&user-request=1&task=agronomist.getfertilizers
Επιστρέφει μια λίστα με τα λιπάσματα . Αποθηκεύστε αυτά τα δεδομένα και ενημερώστε τα μια φορά καθε τόσο καθώς δεν αλλάζουν συχνά. Η μεταβλήτη filters μπορει να χρησιμοποιηθεί για φιλτράρισμα
Filters:
- id
- typos
- name
- company
agronomist.getfytofarmaka
key=abd123xxxxxxx&user-request=1&task=agronomist.getfytofarmaka
Επιστρέφει μια λίστα με τα φυτοπροστατευτικά σκευάσματα. Αποθηκεύστε αυτά τα δεδομένα και ενημερώστε τα μια φορά καθε τόσο καθώς δεν αλλάζουν συχνά. Η μεταβλήτη filters μπορει να χρησιμοποιηθεί για φιλτράρισμα
Filters:
- id
- cropid
- category
- typos
- typos2
- drastiki
- company
- country
agronomist.getfieldcares
Επιστρέφει μια λίστα με τις καλλιεργητικές εργασιών για τα αγροτεμάχια που ζητήθηκαν
- fields (λίστα με id) (υποχρεωτικό 1)
- farmers (λίστα με id) (υποχρεωτικό 1)
- vatids (λίστα με ΑΦΜ) (υποχρεωτικό 1)
- osde_year (έτος ΟΣΔΕ) (υποχρεωτικό 2)
- cropid (id καλλιέργειας)
- careid (id φροντίδας)
- excludefarmers (0 ή 1) . Εξαιρέστε τις φροντίδες που έχει εισάγει ο αγρότης με τον λογαριασμό του
*1 ενα εκτων fields / farmers /vatids
Επεξήγηση πεδιών:
- id (Το μοναδικό id καταχώρησης της φροντίδας)
- fieldid (ID αγροτεμαχίου)
- farnerid( ID αγρότη)
- vatid (ΑΦΜ αγρότη)
- seasonid (Το id της χρονιάς)
- osde_year (Το έτος της χρονιάς)
- added (Ημερομηνία εφαρμογής φροντίδας)
- completed (0 ή 1, εαν έχει ολοκληρθεί, διαφορετικά το added αναφέρεται σε προγραμματισμό)
- information (Παρατηρήσεις σημειώσεις για την φροντίδα)
- workhours (Εργατοώρες)
- cost_workers (Κόστος εργατικών σε Ευρώ)
- cost_agro (Κόστος λίπανσης/ειδών σε Ευρώ)
- cost_fuels (Κόστος κασυίμων ή ενέργειας σε Ευρώ)
- total_cost (Συνολικό κόστος)
- fytofarmako (ID φυτοφαρμάκου έφοσον η φροντίδα αφορά Φυτοπροστασία)
- fertilizer (ID λιπάσματος έφοσον η φροντίδα αφορά λίπανση)
- fertmeth (Μέθοδος λίπανσης)
- stage (Σταδιο καλλιέργειας)
- watering (Μέθοδος ποτίσματος)
- waterhours (ώρες ποτίσματος)
- qnt (Ποσότητα, ανάλογα τον τύπο της φροντίδας)
- unit (μονάδα ποσότητας του πεδίου qnt)
Παράδειγμα:
key=abd123xxxxxxx&user-request=1&task=agronomist.getfieldcares&filters[fieldid][0]=111&filters[fieldid][1]=112
agronomist.addfieldcare
key=abd123xxxxxxx&user-request=1&task=agronomist.addfieldcare&data[...]=..
Το "data" περιελαμβάνει όλα τα πεδία της φροντίδας
Υποχρεωτικά πεδια για την νέα εισαγωγή φροντίδας είναι δυναμικά ανάλογα την φροντίδα που θα εισαγέται. Τα υποχρεωτικά πεδια ανεξαρτήτως φροντίδας ειναι
- fields Πίνακας με τα id χωραφιών που θα εισαχθεί η φροντίδα
- osde_year (έτος ΟΣΔΕ)
- careid Το id της φροντίδας (δείτε το getcares)
- added (ημερομηνία εφαρμογής)
Υποχρεωτικά πεδια ανα τύπο φροντίδας
ΛΙΠΑΝΣΗ (groupid=1, δειτε το getcares)
- stage
- fertmeth
- fertilizer
- qnt (ποσότητα λιπάσματος)
- unit
ΓΕΝΙΚΕΣ ΚΑΛ. ΕΡΓΑΣΙΕΣ (groupid=2, δειτε το getcares)
- stage
ΑΡΔΕΥΣΗ (groupid=3, δειτε το getcares)
- stage
- watering
- waterhours
- qnt (πόσοτητα νερού)
- unit
ΦΥΤΟΠΡΟΣΤΑΣΙΑ (groupid=4, δειτε το getcares)
- stage
- weather
- fytofarmako
- qnt (Ποσότητα Σκευάσματος)
- unit
Τιμές πεδιου unit:
- ml (μλ)
- lt (λιτρα)
- gr (γραμμάρια)
- kg (κιλά)
- cube (m3)
Τιμές πεδιου stage:
- 1 : Φύτευση
- 2 : Βλαστική Ανάπτυξη φυτών
- 3 : Άνθιση φυτών
- 4 : Συγκομιδή
Τιμές πεδιου fertmeth:
- 1 : Επιφανειακή λίπανση
- 2 : Ενσωμάτωση στο έδαφος
- 3 : Υδρολίπανση
- 4 : Διαφυλλική λίπανση
Τιμές πεδιου watering:
- 1 : Σταγόνες
- 2 : Καρούλι / Κανόνι
- 3 : Κατάκλιση
Τιμές πεδιου weather:
- 1 : Συννεφιά
- 2 : Ηλιοφάνεια
- 3 : Ομίχλη
- 4 : Βροχή
- 5 : Χιόνι
- 6 : Παγετός
agronomist.deletefieldcare
Το "data" περιελαμβάνει όλα τα πεδία για την διαγραφή φροντίδων
Τρόπος 1
- id (πίνακας με τα id που θέλετε να διαγραφούν)
key=abd123xxxxxxx&user-request=1&task=agronomist.deletefieldcare&data[id][0]=5156&data[id][1]=5157
Τρόπος 2
- fields (πίνακας με τα αγροτεμάχια id)
- careid (id φροντίδας (απο getcares))
- osde_year (έτος)
key=abd123xxxxxxx&user-request=1&task=agronomist.deletefieldcare&data[fields][0]=12&data[fields][1]=13&data[careid]=12&data[osde_year]=2023
Παράδειγμα σε PHP
0
1
2
$api_url='https://app.agrobox.gr/api.php';
3
$api_key='xxxxxx';
4
5
//Προσθήκη χωραφιού στον αγρότη με ID:12
6
$query= (
7
'key'=>$api_key,
8
'user-request'=>1,
9
'task'=>'agronomist.addfield',
10
'data'=> (
11
'farmerid'=>12,
12
'name'=>'ΚΑΡΑΓΚΑΝΙ',
13
'location'=>'Επαρ.Οδ. Περίβλεπτου-Κοκκίνας, Περίβλεπτο 375 00, Ελλάδα',
14
'vertices'=>'[]',
15
'ektasi'=>6685,
16
'crop_data'=> (
17
'year'=>2022,'cropid'=>23),
( 18
'seasonid'=>9,'cropid'=>22),
( 19
),
20
)
21
);
22
23
$response=senddata($api_url,$query);
24
$response;
25
26
//Τα χωράφια του αγρότη με ID:12
27
$query= (
28
'key'=>$api_key,
29
'user-request'=>1,
30
'task'=>'agronomist.getfields',
31
'filters'=> (
32
'farmerid'=>12
33
)
34
);
35
36
$response=senddata($api_url,$query)
37
$response;
38
39
40
function senddata($api_url,$query)
41
{
42
$data_string=http_build_query($query);
43
$ch = curl_init();
44
curl_setopt($ch,CURLOPT_URL,$api_url);
45
curl_setopt($ch,CURLOPT_POST, 1);
46
curl_setopt($ch,CURLOPT_POSTFIELDS,$data_string);
47
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
48
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT ,15);
49
curl_setopt($ch,CURLOPT_TIMEOUT, 25);
50
$response = curl_exec($ch);
51
curl_close ($ch);
52
return $response;
53
}
54
55