===== API ΠΛΑΤΦΟΡΜΑ ΔΗΛΩΣΗΣ ΕΠΙ ΤΩΝ ΑΚΑΘΑΡΙΣΤΩΝ ΕΣΟΔΩΝ ΚΑΙ ΠΑΡΕΠΙΔΗΜΟΥΝΤΩΝ -- dae.govapp.gr ===== Η πλατφόρμα Δήλωσης επί των ακαθαρίστων εσόδων και παρεπιδημούντων ή αλλιώς ΔΑΕ, παρέχει api για σύνδεση με τρίτες εφαρμογές. ====1. Πληροφορίες για το API ==== * [[https://demo.dae.govapp.gr/docs|Δοκιμαστικό περιβάλλον]] * [[https://dae.govapp.gr/docs|Παραγωγικό περιβάλλον]] ====2. Οδηγίες Δημιουργίας Εφαρμογής στον auth.govhub.gr==== Για να κάνουμε δημιουργία εφαρμογής στο GovHub, θα κάνουμε τα παρακάτω βήματα. - Εισαγωγή στην ιστοσελίδα http://auth.govhub.gr με τους κωδικούς του διαχειριστή του φορέα. - Δημιουργία εφαρμογής με δικαίωμα GovApp.AkatharistaEsoda.Basic. ====3. Οδηγίες για την κλήση του API ==== Για να καλέσουμε τα api του ΔΑΕ πρώτα πρέπει έχουμε κάνει authenticate σαν εφαρμογή και να πάρουμε ένα JWT Token. **Για το παραγωγικό περιβάλλον στο πεδίο scope συμπληρώνουμε GovApp.AkatharistaEsoda.Basic για το Δοκιμαστικό περιβάλλον στο πεδίο scope συμπληρώνουμε GovApp.AkatharistaEsoda.Test.** [[dev-auth|Οδηγίες για λήψη JTW token από τον auth Server]] Αφού λάβετε το JWT Token σύμφωνα με το Auth 2.0 πρότυπο θα πρέπει να κάνετε Bearer Authentication. Authorization: Bearer Αφού ρυθμίσετε τους παραπάνω headers μπορείτε να κάνετε κλήσεις σύμφωνα με τις οδηγίες του OpenApi(παράγραφος 1 docs). ====4. Σύστημα Δηλώσεων ==== ===4.1 Helpers === Στην κλήση ''/api/Helper/Periodoi'' παίρνετε την λίστα των περιόδων, των οποίων το ID χρησιμοποιείται παρακάτω στα φίλτρα. ===4.2 Καταστάσεις === == 4.2.1 Κατάσταση Ελέγχου Δήλωσης == * Προς Έλεγχο = 1 * Ασυμφωνία = 2 * Ολοκληρωμένη = 3 == 4.2.2 Αιτίες Ασυμφωνίας == * Ασυμφωνία Ποσών = 1 * Ελλιπή Δικαιολογητικά = 2 * Άλλο = 3 == 4.2.3 Κατάσταση Πληρωμής == * Πληρωμένη = 2 * Αρνητικό Ποσό = 3 * Μηδενικό Ποσό = 4 * Αυτόματη Δημιουργία Μηδενικής = 5 * Αναμονή Απάντησης Από Τράπεζα = 6 * Πληρωμή στον Δήμο = 7 == 4.2.4 Είδος Ποσοστού Τέλους (ΚΑΔ) == * Παρεπιδημούντων (0.5%) = 1 * Υγειονομικού Ενδιαφέροντος (0.5%) = 2 * Άλλα (0.5%) = 3 * Κέντρα Διασκέδασης (0.5%) = 4 * Καζίνο (2%) = 5 ===4.3 Δηλώσεις Επιχειρήσεων === Στην κλήση ''api/StatementsAdmin/GetStatementsPaged'' το json πρέπει να είναι της μορφής { "Start" : 0, "Length" : 10, "SearchColumns" : [ { "ColumnName" : "EpixirisiTin", "Value" : "123456789" } ], "orders" : [ { "columnName" : "EpixirisiTin", //column name "dir" : "asc" // asc ή desc } ] } Φίλτρα υποστηρίζουμε στα παρακάτω πεδία * EpixirisiTin * EpixirisiDiakritikosTitlos * PeriodosId (το ID της περιόδου που αναφέρεται στο 4.1) * PaymentStatementState (δείτε 4.2.3) * EtosPeriodou (π.χ. 2020) * PeriodikiDilosiApo * PeriodikiDilosiEos * ElegxosState * ThirdPartyIdUpdated (value : "0" επιστρέφει όσες δηλώσεις δεν έχουν δηλωμένο **ThirdPartyId**, "1" όσες έχουν) Στην κλήση ''api/StatementsAdmin/GetStatementByPeriodosData'' το json πρέπει να είναι της μορφής { "epixeirisiAfm": "123456789", "etosPeriodou": 2021, "minasPeriodou": 1, "diakreiaPeriodou": 3 } Το φίλτρο θα κάνει αντιστοίχιση με τις περιόδους που αναφέρονται στο 4.1 Στην κλήση ''api​/StatementsAdmin​/GetStatement​/{statementId}'' το **statementId** αντιπροσωπεύει το **Id** της δήλωσης. Στην κλήση ''api/StatementsAdmin/GetStatementByThirdPartyId/{thirdPartyId}'' το **thirdPartyId** αντιπροσωπεύει το **ThirdPartyId** της δήλωσης. Στην κλήση ''api/StatementsAdmin/EditStatement'' το json πρέπει να είναι της μορφής { "id": 1, "elegxosState": 3, "aitiesAsimfonias": 1, "commentsAdmin": "Σχόλια υπαλλήλου ΟΤΑ" } Οι αιτίες ασυμφωνίας (aitiesAsimfonias 4.2.2) λαμβάνονται υπόψιν μόνο στην περίπτωση που η κατάσταση ελέγχου (elegxosState 4.2.1) είναι "Σε ασυμφωνία". Στην κλήση ''api/StatementsAdmin/UpdateThirdPartyIdList'' το json πρέπει να είναι της μορφής [ { "id": 4, "thirdPartyId": "101011" }, { "id": 7, "thirdPartyId": "753912c1-5016-488b-b672-c83818ee729d" } ] Η κλήση επιστρέφει όλα τα Ids τα οποία αντιστοιχήθηκαν με ThirdPartyIds επιτυχώς. Στην κλήση ''api/StatementsAdmin/DownloadDocument/{statementDocumentId}'' το **statementDocumentId** αντιπροσωπεύει το Id της δήλωσης. ====5. Σύστημα Αιτήσεων ==== ===5.1 Helpers === Στην κλήση ''/api/AitiseisAadeAdmin/GetKatigoriesEpixeirisisGiaDimo'' παίρνετε την λίστα των κατηγοριών των επιχειρήσεων, των οποίων το ID χρησιμοποιείται στον χαρακτηρισμό της κάθε επιχείρησης, στην απάντηση της αίτησης. ===5.2 Καταστάσεις === == 5.2.1 Κατάσταση Αίτησης == * Υποβλήθηκε = 1 [Αρχική κατάσταση όταν ο υπάλληλος ΟΤΑ καταθέτει το αίτημά του] * Αναμονή Απάντησης = 2 [Κατάσταση που μεταβαίνει η αίτηση όταν γίνει επιβεβαίωση παραλαβής από την ΚΕΔΕ] * Ολοκληρώθηκε = 3 [Όταν έχει επιστραφεί απάντηση στον αντίστοιχο Δήμο] == 5.2.2 Είδη Αίτησης == * Άντληση Στοιχείων = 1 == 5.2.3 Είδη Αίτησης == * Επιχειρήσεις με ΕΔΡΑ + Υποκαταστήματα ΟΛΑ στον δήμο & ΜΟΝΟ με ΚΑΔ που εμπίπτουν αποκλειστικά στα Δημοτικά Τέλη (MHTR_AIT_DIMOI) = 1 * Επιχειρήσεις με ΕΔΡΑ στον Δήμο (ΧΩΡΙΣ ΚΑΘΟΛΟΥ Υποκαταστήματα) και ασκούν και ΑΛΛΕΣ δραστηριότητες εκτός από αυτές που εμπίπτουν στα Δημοτικά Τέλη (MHTR_REST) = 2 * Λοιπές Επιχειρήσεις (MHTR_REST2.a - MHTR_REST2.b - MHTR_REST2.c) = 3 ===5.3 Δηλώσεις Επιχειρήσεων === Στην κλήση GET ''/api/AitiseisAadeAdmin/GetAitisiById/{id}'' το ID αντιπροσωπεύει το ID της αίτησης. Στην κλήση GET ''​/api​/AitiseisAadeAdmin​/GetAitiseisList'' επιστρέφεται η λίστα όλων των αιτήσεων που βρίσκονται σε κατάσταση 1 (Υποβλήθηκε). Στην κλήση GET ''/api​/AitiseisAadeAdmin​/ResetAitiseisListForDemo'' γίνεται επαναφορά της λίστας των αιτήσεων στην αρχική τους μορφή μηδενίζοντας τα στοιχεία απάντησης (ημερομηνία και πρωτόκολλο) και επαναφέροντας όλες τις αιτήσεις σε κατάσταση 1 (Υποβλήθηκε). Στην κλήση POST ''/api/AitiseisAadeAdmin/GetAitiseisList'' το json πρέπει να είναι της μορφής { "municipalityTin": "123456789", "start": "2022-01-01T14:38:41.579Z", "end": "2022-01-05T13:38:41.579Z" } Τα φίλτρα είναι προορατικά. Αν θέλετε να χρησιμοποιήσετε ένα από όλα μπορείτε απλά να παραλείψετε τα υπόλοιπα όπως παρακάτω { "start": "2022-01-01T14:38:41.579Z" } Στην κλήση POST ''/api/AitiseisAadeAdmin/ConfirmationOfReceipt'' το json πρέπει να είναι της μορφής { "listaAitisewn": [ { "id": 3, "replyArithmosProtokollou": "25/2021", "replyImerominiaProtokollou": "2021-12-17T09:07:48.631Z" } ] } Η κλήση αυτή ενημερώνει το σύστημα ότι έχει γίνει παραλαβή των αιτήσεων που βρίσκονται στην λίστα και τις μεταβάλλει αυτόματα σε κατάσταση 2 (Αναμονή Απάντησης). Στην κλήση POST ''/api/AitiseisAadeAdmin/AitisiResponse'' το json πρέπει να είναι της μορφής { "aitisiId": 1, "oikonomikoEtos": 2020, "responseSchemaVersion": "string", "finalAitisiResponse": false, "errorCode": "string", "errorMessage": "string", "epixiriseis": [ { "afm": "string", "doyKodikos": "string", "doyPerigrafi": "string", "katigoriaEpixeirisisGiaDimo": 1, "typosEpitideumatia": "string", "imerominiaEnarxis": "2022-05-03T09:05:27.361Z", "imerominiaLixis": "2022-05-03T09:05:27.361Z", "eponimia": "string", "onoma": "string", "patronimo": "string", "fusikoNomikoProsopo": 0, "diakritikosTitlos": "string", "nomikiMorfiKodikos": 0, "nomikiMorfiPerigrafi": "string", "legalPurposePerigrafi": "string", "vivliaKodikos": 0, "vivliaPerigrafi": "string", "address": "string", "addressNo": "string", "zipCode": "string", "perioxi": "string", "tilefono": "string", "etosAnaforas_DoyKodikos": "string", "etosAnaforas_Address": "string", "etosAnaforas_AddressNo": "string", "etosAnaforas_ZipCode": "string", "etosAnaforas_Perioxi": "string", "ypokatastimata": [ { "startDate": "2022-05-03T09:05:27.361Z", "endDate": "2022-05-03T09:05:27.361Z", "aa": "string", "doyKodikos": "string", "address": "string", "addressNo": "string", "zipCode": "string", "perioxi": "string", "etosAnaforas_DoyKodikos": "string", "etosAnaforas_Address": "string", "etosAnaforas_AddressNo": "string", "etosAnaforas_ZipCode": "string", "etosAnaforas_Perioxi": "string", "kad": [ { "kodikos": 0, "perigrafi": "string", "startDate": "2022-05-06T06:26:09.774Z", "changeDate": "2022-05-06T06:26:09.774Z", "endDate": "2022-05-06T06:26:09.774Z", "eidosDrastiriotitas": "string", "eidosDrastiriotitasPerigrafi": "string", "palaiotita": "string" } ] } ], "kad": [ { "kodikos": 0, "perigrafi": "string", "startDate": "2022-05-06T06:26:09.774Z", "changeDate": "2022-05-06T06:26:09.774Z", "endDate": "2022-05-06T06:26:09.774Z", "eidosDrastiriotitas": "string", "eidosDrastiriotitasPerigrafi": "string", "palaiotita": "string" } ], "periodikesDiloseis": [ { "poso": 0, "imerominiaYpovolis": "2022-05-03T09:05:27.361Z", "periodikiDilosiApo": "2022-05-03T09:05:27.361Z", "periodikiDilosiEos": "2022-05-03T09:05:27.361Z", "periodikiDilosiEidos": 0 } ] } ] } Στο πεδίο katigoriaEpixeirisisGiaDimo της κάθε επιχείρησης χρησιμοποιήστε την κατηγορία όπως φαίνεται στο παράρτημα 5.1 . Το πεδίο boolean finalAitisiResponse δηλώνει αν η απάντηση είναι η τελευταία που αφορά την Αίτηση και αν είναι 'true' μετατρέπει την Αίτηση σε κατάσταση 'Ολοκληρωμένη'. == 5.3.1 Κωδικοί Σφαλμάτων Απάντησης Αίτησης ==
Error CodeΠεριγραφή
1000Υπάρχει error από την πλευρά της ΑΑΔΕ με κωδικό {ErrorCode} και περιγραφή : {ErrorMessage}
1001Η απάντηση δεν έχει κωδικό σφάλματος αλλά δεν περιέχει επιχειρήσεις
2000Δεν βρέθηκε αίτηση στο σύστημα με ID {AitisiId}
2001Η αίτηση δεν βρίσκεται σε κατάσταση αναμονής απάντησης
2002Η αίτηση δεν έχει συμπληρωμένα τα στοιχεία Αριθμού πρωτοκόλλου απάντησης και Ημ/νια πρωτοκόλλου απάντησης
2003Το οικονομικό έτος της απάντησης ({response.OikonomikoEtos}) δεν συμπίπτει με αυτό της απάντησης ({aitisi.EtosAnazitisis})
====6. Δοκιμαστικά Δεδομένα ==== AuthServerUrl = "https://auth.govhub.gr" ClientId = "demo-client-govhub-dae" ClientSecret = "επικοινωνήστε με email"