Αυτό το άρθρο γίνεται ανάλυση της δομής του 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 | Μέγιστα αποτελέσματα ανα σελίδα | οχι (σε ανάκτηση μόνο) | ακέραιος | Πάντα 100 (προσωρινά) |
p | Αριθμός σελίδας - Σελιδοποιήση | οχι (σε ανάκτηση μόνο) | ακέραιος | 1 |
Tasks
Τιμές task |
Περιγραφή |
agronomist.getprofile | Ανάκτηση προφίλ γεωπόνου |
agronomist.updateprofile | Ενημέρωση προφιλ γεωπόνου |
agronomist.getfarmers | Ανάκτηση προφιλ αγροτών |
agronomist.addfarmer | Ενημέρωση ή προσθήκη αγρότη |
agronomist.getfields | Ανάκτηση αγροτεμαχιών αγροτών μαζί με το ιστορικό των καλλιεργειών |
agronomist.addfield | Ενημέρωση ή προσθήκη αγροτεμαχίου |
agronomist.getcrops | Ανάκτηση καλλιεργιών που υποστηρίζει το AgroBox |
agronomist.getseasons | Ανάκτηση καλλιεργητικών ετών |
Δομή σώματος κλήσης / 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)
key=abd123xxxxxxx&user-request=1&task=agronomist.getfarmers&filters[email=Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από τους αυτοματισμούς αποστολέων ανεπιθύμητων μηνυμάτων. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να μπορέσετε να τη δείτε.
agronomist.addfarmer
key=abd123xxxxxxx&user-request=1&task=agronomist.addfarmer&data[...]=..
Το "data" περιελαμβάνει όλα τα πεδία του αγρότη
Υποχρεωτικά πεδια για την νέα εισαγωγή αγρότη
- email (μοναδικο ανα χρήστη)
- vatid (ΑΦΜ) (μοναδικο ανα χρήστη)
- name (Ονοματεπώνυμο αγρότη)
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.getfields
key=abd123xxxxxxx&user-request=1&task=agronomist.getfields
Παράμετρος filters - Κριτήριο αναζήτσης και περιοσρισμός αποτελσμάτων
- id (ID χωραφιού)
- farmerid (ID αγρότη)
- name
- status (0 ή 1)
- cropid (id καλλιέργειας)
- croplatestonly=1 (να επιστρέφει μονο για την τρέχουσα χρονιά αντι για όλο το ιστορικό)
key=abd123xxxxxxx&user-request=1&task=agronomist.getfields&filters[id]=198&croplatestonly=0
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 (σε στρέμματα ΟΧΙ εκτάρια)
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, ονομα καλλιέργειας και άλλες πληροφορίες. Αποθηκεύστε αυτά τα δεδομένα και ενημερώστε τα μια φορά καθε τόσο καθώς δεν αλλάζουν συχνά.
agronomist.getseasons
key=abd123xxxxxxx&user-request=1&task=agronomist.getaseasons
Επιστρέφει μια λίστα με id, και έτος. Αποθηκεύστε αυτά τα δεδομένα και ενημερώστε τα μια φορά καθε τόσο καθώς δεν αλλάζουν συχνά.
Παράδειγμα σε 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