Οδηγοί
Σύνδεση

API έργων

Τα σημεία του API που χρησιμοποιεί η εφαρμογή για έργα και ειδικότητες. Απαιτούν σύνδεση (JWT).

Βρείτε την κλήση που χρειάζεστε

Σύνδεση και πρόσβαση

Οι παρακάτω κλήσεις απαιτούν JWT χρήστη. Οι εγγραφές και οι υπολογισμοί ελέγχουν επιπλέον το δικαίωμα επεξεργασίας του έργου και την ενεργή ειδικότητα.

Authorization: Bearer <access_token>

Έργα

PATCH/api/users/me

Αίτημα, συμπεριφορά και απάντηση

Προφίλ συνδεδεμένου χρήστη: full_name, tee_id, afm, specialty, office_address, phone και engineer_details { first_name, last_name, licence_number, ada, issuing_authority, licence_date, specialty_group (1–4), category }.

Τα στοιχεία άδειας επικυρώνονται· πεδία συνδρομής δεν ενημερώνονται.

GET/api/projects/

Δεδομένα και απάντηση

Τα έργα.

Κάθε έργο έχει review_summary (ή null χωρίς αρχιτεκτονικό έλεγχο): has_report, status, stale, last_run_at, deviations, open_items.

GET/api/projects/{id}

Δεδομένα και απάντηση

Το έργο με τη λίστα disciplines: discipline, status, responsible_name, licence.

Περιέχει municipality_id και municipality_name.

POST/api/projects/

Αίτημα, συμπεριφορά και απάντηση

Νέο έργο.

Δέχεται disciplines (προεπιλογή ["architectural"]).

Μόνο τα αρχιτεκτονικά χρησιμοποιούν φάκελο από το πλάνο (402 χωρίς διαθέσιμο).

PATCH/api/projects/{id}

Αίτημα, συμπεριφορά και απάντηση

Αλλάζει name, address, client_name, application_type, building_use, municipality_code (κωδικός από GET /api/municipalities/) και metadata.

Τα στοιχεία που διαβάζει ο έλεγχος άδειας στο metadata είναι τυποποιημένα: dwellings (ακέραιος ≥ 1), gas_supply (true, false), works_budget_eur (≥ 0)· null σημαίνει άγνωστο, άλλη τιμή δίνει 422. application_type: new_building, addition, revision, renovation, demolition, legalization, small_scale.

Οι γραμμές του ελέγχου έχουν status pass, issue, needs_information, needs_review (δύο έγγραφα του φακέλου διαφέρουν) ή info (πληροφορία, χωρίς σύγκριση).

GET/api/municipalities/

Δεδομένα και απάντηση

Οι δήμοι: id, code, name, name_el, region.

POST/api/projects/{id}/upload, POST /api/projects/{id}/floors/upload

Αίτημα, συμπεριφορά και απάντηση

Μια σάρωση ή ένα αρχείο που δεν διαβάζεται σε 30 δευτερόλεπτα αποθηκεύεται και απαντά αμέσως reading: true με file_id (στους ορόφους id), και διαβάζεται στο παρασκήνιο έως 10 λεπτά.

GET/api/projects/{id}/files/{file_id}/read-status

Δεδομένα και απάντηση

Η κατάσταση της ανάγνωσης: read_status (reading, ready, failed), read_error με τον λόγο στα ελληνικά, building_summary.

Οι λίστες αρχείων και ορόφων έχουν τα ίδια πεδία.

Η συγχώνευση ορόφων απαντά 409 όσο ένα αρχείο διαβάζεται.

PATCH/api/projects/{id}/disciplines

Αίτημα, συμπεριφορά και απάντηση

Ενεργοποιεί, απενεργοποιεί ή αλλάζει κατάσταση ειδικοτήτων.

Έλεγχος άδειας

PATCH/api/projects/{id}/review · approval

Αίτημα, συμπεριφορά και απάντηση

Σώμα { approval: { id, label, requirement, status, reference, file_ids } }.

Αλλάζει μία έγκριση με id approval_… και διατηρεί τις άλλες κατά την ατομική συγχώνευση.

Τα τεκμήρια πρέπει να ανήκουν στο έργο.

Μη απαιτούμενη υπό όρους έγκριση χρειάζεται αιτιολογία.

POST/api/projects/{id}/review/files/{file_id}/deed-suggestions

Αίτημα, συμπεριφορά και απάντηση

Ανάγνωση συνημμένου PDF του ίδιου έργου έως 10 MB.

Επιστρέφει suggestions (created_on, deed_date, kaek), τιμή ή null σε σύγκρουση, evidence με σελίδα/απόσπασμα και notes ορίων ανάγνωσης.

Δεν αποθηκεύει προτάσεις.

Κλήση από τα Στοιχεία δημιουργίας οικοπέδου.

Ειδικότητες

Ειδικότητες: architectural, electrical, mechanical, fire_safety, structural, energy, survey. Καταστάσεις: not_required, external, in_progress, draft_ready, reviewed. Η κατάσταση draft_ready μπαίνει μόνο από εκτέλεση μελέτης.

PATCH /api/projects/{id}/disciplines
[
  { "discipline": "fire_safety", "enabled": false },
  { "discipline": "mechanical", "status": "external", "responsible_name": "Γ. Παπαδόπουλος", "licence": "123456", "file_id": "<project file id>" },
  { "discipline": "electrical", "responsible_user_id": "<user id>" }
]

Το responsible_user_id ορίζει τον υπεύθυνο της μελέτης· null τον αφαιρεί, ενώ αν λείπει μένει ο ίδιος. Ο υπεύθυνος πρέπει να μπορεί να επεξεργαστεί το έργο (ιδιοκτήτης ή μέλος ομάδας με ρόλο owner ή editor), αλλιώς 422.

Απάντηση: { project_id, disciplines }. 422 για διπλή ειδικότητα, για draft_ready ή όταν δεν μένει καμία ενεργή. 402 όταν ενεργοποιούνται αρχιτεκτονικά χωρίς διαθέσιμο φάκελο. 409 για αρχειοθετημένο έργο.

Μελέτες

Οι υπολογισμοί πυροπροστασίας, Η/Μ και ο έλεγχος άδειας απαντούν 409 όταν η αντίστοιχη ειδικότητα δεν είναι ενεργή.

Στοιχείαειδικών ελέγχων review

Αίτημα, συμπεριφορά και απάντηση

plot_facts.site_design: excavation {proposed, datum, bottom_level_m, neighbours_complete, neighbours:[{name, foundation_level_m}], survey_file_id, protection_file_id}; trees {new_or_horizontal_extension, total_count, front_garden_area_sqm, front_garden_count, plan_file_id}; fences:[{name, side:street|boundary, kind:ordinary|gate|retaining|exception, total_m, solid_m, reference, ordinary_scope, evidence_file_id}]; fences_proposed; road {pavement_formed, boundary_clear, level_file_id, boundary_file_id}; heritage {relation:unknown|none|on_plot|adjacent|opposite, designation, designation_file_id, conditions, proposed_works, authority:unknown|ypen|yppo|both}; architecture {screening_complete, triggers, interior_without_facade_change, competition, reference}; bonus {source:unknown|none|transfer|environment|energy|other, baseline_far, reference, title_file_id, route_file_id}.

Οι τριτιμές είναι yes|no|unknown, άγνωστοι αριθμοί null. Όλα τα file_id ελέγχονται ως αρχεία του ίδιου έργου και περιλαμβάνονται στις παραπομπές ZIP.

Στα facts των terms προστίθενται selection_reason και amendment_scope:unknown|full|partial.

Συγκρουόμενη επιλογή ΤΕΕ χωρίς αιτιολογία επιστρέφει422.

Το preview.inputs.terms περιλαμβάνει source_acts με publication_date, selected_record_id και την αποθηκευμένη αιτιολογία.

Γεωμετρίακαι διαδικασία review

Αίτημα, συμπεριφορά και απάντηση

plot_facts.site_design.ground_changes:[{name, ordinary_scope:yes|no|unknown, natural_level_m, final_level_m, slope_pct, section_file_id, exception_file_id}]; structures:[{name,kind:retaining_wall|free_wall|pool,height_or_depth_m,boundary_distance_m,reference,section_file_id}]; rainwater:{tank,capacity_m3,capacity_basis,boundary_distance_m,foundation_distance_m,water_source_distance_m,watertight,ventilation_access,plan_file_id}; building_spacing:{common_rule,height_basis:unknown|permitted|far_exhaustion,reference_height_m,reference,basis_file_id}. demolition:{construction_year,scope_reference,asbestos_status:unknown|not_identified|suspected|identified,neighbours_affected,safety_required,heritage_approval_required,asbestos_survey_file_id,hazard_plan_file_id,technical_report_file_id,waste_file_id,waste_contract_file_id,protection_file_id,safety_file_id}. boundary_confirmation:{context_hash,basis:unknown|drawing|cadastre|corrected,cadastre_status:unknown|clear|under_correction,reason,evidence_file_id}. preview.boundary_review:{context_hash,required,blocked,confirmed,reasons,basis}.

POST /review/run επιστρέφει409 αν blocked· το preview παραμένει διαθέσιμο.

Η επιβεβαίωση δεν διορθώνει αυτόματα τα όρια. Όλα τα τεκμήρια ελέγχονται στο ίδιο έργο.

Φάκελοςκαι στοιχεία στατικού

Αίτημα, συμπεριφορά και απάντηση

plot_facts.dossier: {completed:yes|no|unknown, submission_file_ids:[id], fee_invoice, fem, tee, efka, municipal, survey_declaration, completion_identity}.

Κάθε παραστατικό: {requirement:unknown|required|not_required,reference,evidence_file_id}.

Μη απαίτηση χωρίς αιτιολογία απορρίπτεται.

Μόνο τα submission_file_ids ελέγχονται ως τελικά PDF/30MB/λατινικά ονόματα, όχι όλα τα τεκμήρια. structural:{regulation:unknown|eak|ec8,zone:unknown|I|II|III,zone_reference,zone_file_id,soil_system:unknown|eak|ec8,soil_category:unknown|A|B|C|D|E|S1|S2|X,soil_reference,soil_file_id,importance_class:unknown|1|2|3|4,importance_factor,importance_reference,importance_file_id}. site_context:{infrastructure,health,utilities}, κάθε ενότητα:{reviewed:yes|no|unknown,reference,evidence_file_id}. site_design.front_garden:{inventory_complete:yes|no|unknown,evidence_file_id}.

Κάθε αρχείο ελέγχεται ως συνημμένο ίδιου έργου, περιλαμβάνεται στις παραπομπές και επηρεάζει την εγκυρότητα της αναφοράς.

Ο κατάλογος τροποποιητικών πράξεων και τα δεδομένα OSM εμφανίζουν ελλείψεις/αβεβαιότητα, χωρίς αυτόματη αλλαγή όρων ή επιλογών Η/Μ.

POST/api/workspaces/join/{token}

Αίτημα, συμπεριφορά και απάντηση

Αποδοχή πρόσκλησης από τον συνδεδεμένο λογαριασμό του παραλήπτη.

Το token καταναλώνεται μία φορά.

Οικόπεδο και πηγές

GET/api/projects/{id}/site/address-parcels

Δεδομένα και απάντηση

Γεωτεμάχια στη διεύθυνση του έργου όσο δεν έχει επιλεγεί γεωτεμάχιο.

Δεν αποθηκεύει τίποτα. status: parcel_found, several_parcels, nearby_parcels (το σημείο πέφτει στον δρόμο, records τα γειτονικά), no_parcel, address_not_found, parcels_unavailable, no_address ή site_chosen· point και records (GeoJSON).

POST/api/projects/{id}/site

Αίτημα, συμπεριφορά και απάντηση

Ορίζει το γεωτεμάχιο ({kaek} ή {geometry}) και αναζητά τους όρους στο ΤΕΕ.

Επιστρέφει όλο τον έλεγχο και source_error όταν το ΤΕΕ δεν απάντησε.

POST/api/projects/{id}/sources/refresh

Αίτημα, συμπεριφορά και απάντηση

Ζητά ξανά από το ΤΕΕ όλα τα επίπεδα του γεωτεμαχίου, ακόμη κι αν οι αποθηκευμένες απαντήσεις είναι πρόσφατες, και αποθηκεύει νέο στιγμιότυπο. Έως 3 φορές την ώρα ανά έργο (429).

Επιστρέφει όλο τον έλεγχο.

Έλεγχος άδειας

GET/api/projects/{id}/review

Δεδομένα και απάντηση

Ο έλεγχος άδειας: preview.inputs με την τιμή, την πηγή (manual, tee, drawing) και την αξιοπιστία (high, estimated, assumed) κάθε όρου και μέτρησης, preview.checks (με measurement_confidence, limit_confidence, upper_bound όταν ο ΣΔ υπολογίζεται από το συνολικό εμβαδόν, και advisories: σημειώσεις από κείμενα όρων ΤΕΕ που δεν αλλάζουν το αποτέλεσμα), preview.rule_texts, todos (με action για το ένα στοιχείο που ξεμπλοκάρει πολλά), warnings και summary.

PATCH/api/projects/{id}/review

Αίτημα, συμπεριφορά και απάντηση

Αποθηκεύει τιμές σας: {terms: {key: fact|null}, measurements: {...}, checklist, plot_facts}.

Αλλάζουν μόνο τα κλειδιά που στέλνετε· null αφαιρεί τη δική σας τιμή. plot_facts: {created_on (YYYY-MM-DD), created_on_file_id, land_contribution (yes, no, unknown), land_contribution_file_id, deed_area_sqm, access: {frontage_kind (unknown, recognized_public, public_unverified, pedestrian, private, none), recognition_file_id, servitude (yes, no, unknown), deed_file_id, provision_reference, provision_file_id, public_space_kind (unknown, none, square, other)}, subdivision: {occurred (yes, no, unknown), latest_on, history_file_id}, site_design: {excavation, trees, fences, fences_proposed, road, heritage, architecture, bonus, ground_changes, structures, rainwater, building_spacing, front_garden}, demolition, boundary_confirmation, dossier, structural, site_context}, αντικαθίσταται ολόκληρο· τα αρχεία είναι συνημμένα του έργου.

Κάθε γραμμή του preview.checks έχει exception {outcome (met, depends, not_met), label, text, documents, evidence_missing} όταν αποφάσισαν οι παρεκκλίσεις του ΤΕΕ, αλλιώς null.

Επιστρέφει όλο τον έλεγχο.

GET/api/projects/{id}/review/rule-texts

Δεδομένα και απάντηση

Τα κείμενα όρων του τρέχοντος στιγμιότυπου ΤΕΕ: rule_texts [{text_hash, layer, field, raw_text, fek, fek_url, retrieved_at, status (waiting, code_parsed, ai_proposed, verified, rejected), readings, area}] και waiting (πόσα δεν έχουν ερμηνεία).

Τα ίδια υπάρχουν στο preview.rule_texts του GET /review.

POST/api/projects/{id}/review/rule-texts/interpret

Αίτημα, συμπεριφορά και απάντηση

Ζητά ερμηνεία AI στο παρασκήνιο για έως 10 κείμενα χωρίς ερμηνεία και απαντά αμέσως, πάντα με 200: {queued, daily_cap_reached, status, message}. status: queued (ξεκίνησε), nothing_waiting (δεν μένει κείμενο), no_key, key_refused, daily_cap (δεν γίνεται ερμηνεία τώρα), busy (πάνω από 3 αιτήματα το λεπτό ανά χρήστη).

Με status εκτός από queued το message λέει τον λόγο· μην ξαναρωτάτε.

Ελέγξτε το αποτέλεσμα με GET /review/rule-texts.

POST/api/projects/{id}/review/run

Αίτημα, συμπεριφορά και απάντηση

Εκτελεί τους ελέγχους με τις τιμές που υπάρχουν (ανανεώνει πρώτα παλιές πηγές ΤΕΕ) και αποθηκεύει την αναφορά.

Επιστρέφει όλο τον έλεγχο και report_id.

Πυροπροστασία

POST/api/projects/{id}/fire-safety/check, POST /api/projects/{id}/hm-study/run

Αίτημα, συμπεριφορά και απάντηση

Η απάντηση έχει input_sources: για κάθε τιμή κτιρίου (π.χ. max_height_m, floor_count, total_floor_area_sqm) "review" όταν τη δώσατε στον έλεγχο άδειας ή "plan" όταν ήρθε από το σχέδιο.

Η αποθηκευμένη αναφορά πυροπροστασίας δεν το περιέχει.

POST/api/projects/{id}/fire-safety/check

Αίτημα, συμπεριφορά και απάντηση

Οι γραμμές πυροπροστασίας έχουν storey (όροφος, για γραμμές ανά όροφο), group (general, population, means, resistance, wildfire) και quote (παράθεμα της διάταξης).

Επιπλέον: category, population (ανά όροφο με χώρους και γραμμή Πίνακα 3), total_population, means (πίνακας μέσων), placements (σύμβολα με θέση), elements (δείκτες πυραντίστασης), appendix_b (στοιχεία Παραρτήματος Β) και inputs.

GET,PUT /api/projects/{id}/fire-safety/inputs

Αίτημα, συμπεριφορά και απάντηση

Τα δηλωμένα στοιχεία της μελέτης: {construction: {structure_rei, floor_rei, compartment_wall_ei, stair_enclosure_ei, fire_door_ei} σε λεπτά, sprinklers, request_type (study_approval, file_update, archiving, certificate, renewal), certificate_issued_on (YYYY-MM-DD)}.

Το PUT αντικαθιστά όλα τα πεδία· null σημαίνει «δεν δηλώθηκε».

Η απάντηση έχει και certificate_expires_on (5 έτη) και dwellings από τα στοιχεία έργου.

GET/api/projects/{id}/fire-safety/pdf, /zip

Δεδομένα και απάντηση

PDF: το τεύχος με τις κατόψεις ανά όροφο.

Χρειάζεται συνδρομή (402 χωρίς).

ZIP: pyrosvestiki_meleti.pdf, pyrosvestiki_katopseis.pdf, ypefthyni_dilosi_michanikou.pdf, ypefthyni_dilosi_idioktiti.pdf, stoixeia_parartima_v.json και fire_floorplan.dxf.

Μηχανολογικές μελέτες

GET/api/projects/{id}/hm-study/hydraulics/inputs, PUT ίδιο

Δεδομένα και απάντηση

Τα στοιχεία της υδραυλικής μελέτης που δηλώνει ο μηχανικός (projects.metadata.hydraulics): network_pressure_bar, service_pipe_length_m, meter_level_m, supply_continuous, occupants, water_l_per_person_day, storage_days, hot_water_source (local_heater | central), hot_water_l_per_person_day, peak_flow_curve {a, b, c}, drainage_k, sewage_disposal (sewer | septic), sewer_system (separate | combined), sewer_connection_length_m, roof_type (pitched | flat | gravel | green), rain_intensity_l_s_ha, downpipes, rainwater_tank, rainwater_tank_m3. null σημαίνει «δεν δηλώθηκε».

Το GET δίνει και τις επιλογές (choices) και τον αριθμό κατοικιών από τα Στοιχεία έργου· το PUT θέλει ενεργή μηχανολογική μελέτη.

GET/api/projects/{id}/hm-study/report

Δεδομένα και απάντηση

Ο τελευταίος αποθηκευμένος υπολογισμός ανά μελέτη στο reports (electrical, lighting, plumbing, hvac, natural_gas, null πριν την πρώτη εκτέλεση) και ο πιο πρόσφατος συνολικά στο report.

Τα αποτελέσματα μιας μελέτης βρίσκονται στο reports[type].calcs[type].

Το ηλεκτρολογικό αποτέλεσμα είναι null όταν το ηλεκτρολογικό σχέδιο άλλαξε μετά την εκτέλεση: τρέξτε νέο υπολογισμό.

GET,PUT /api/projects/{id}/natural-gas/inputs

Αίτημα, συμπεριφορά και απάντηση

Τα δηλωμένα στοιχεία της μελέτης αερίου (projects.metadata.natural_gas): appliances [{kind (boiler, cooker, water_heater_flow, water_heater_storage, space_heater), label, model, heat_input_kw, output_kw, flue_type, room_id, x, y, flame_supervision, window_openable, co_safety_device, hood_m3h, exhaust_fan_m3h, flue_terminal (roof, facade), terminal_above_roof_m, terminal {below_window_m, window_side_m, above_ground_m}}], meter {room_id, x, y, description}, ventilation_openings_cm2 {room_id: cm²}, clear_height_m, previously_heated, hkasp, application_number.

Το PUT αντικαθιστά όλα τα πεδία· null σημαίνει «δεν δηλώθηκε».

Το GET δίνει και appliance_kinds και τους χώρους του σχεδίου (rooms).

Ο υπολογισμός τρέχει με POST /hm-study/run (study_type natural_gas) και μόνο όταν metadata.gas_supply είναι true.

GET/api/projects/{id}/natural-gas/zip

Δεδομένα και απάντηση

Ο φάκελος της μελέτης αερίου: meleti_fysikou_aeriou.pdf (τεχνική έκθεση, υπολογισμοί, κατόψεις, ισομετρικό), enaon/ (έντυπα ΣΥΝ-439, ΣΥΝ-370, ΣΥΝ-869 σε .docx, υπεύθυνη δήλωση Mod.

128 σε PDF), e-adeies/ (μελέτη και οδηγίες ανάρτησης), δεδομένα JSON.

Το ίδιο PDF δίνει GET /hm-study/pdf?study_type=natural_gas.

409 χωρίς δηλωμένη παροχή αερίου, 422 όταν δεν υπάρχει όδευση (λείπει μετρητής ή χώρος συσκευής).

GET/api/projects/{id}/hm-study/hvac/inputs

Δεδομένα και απάντηση

Τα δηλωμένα στοιχεία θέρμανσης και ψύξης (inputs: climate {prefecture, altitude_m, station, winter_design_c, summer_design_c, summer_wet_bulb_c, annual_mean_c}, north_angle_deg, storey_height_m, window_height_m, door_height_m, constructions {στοιχείο: {u_value, layers [{material, thickness_m, lambda_w_mk}], g_value, description}}, systems, shading {N..NW: γωνίες}, rooms {id: {heated}}), οι επιλογές (νομοί με ζώνη, σταθμοί ΤΟΤΕΕ 20701-3, υλικά με λ, στοιχεία), όσα προκύπτουν (ζώνη, θερμοκρασίες σχεδιασμού, τι λείπει) και οι χώροι του σχεδίου με θερμαινόμενο ή όχι.

PUT/api/projects/{id}/hm-study/hvac/inputs

Αίτημα, συμπεριφορά και απάντηση

Αντικαθιστά τα δηλωμένα στοιχεία (projects.metadata.hvac). null σημαίνει «δεν δηλώθηκε».

422 για άγνωστο υλικό, σταθμό, νομό ή στοιχείο.

Χρειάζεται ενεργή μηχανολογική μελέτη.

GET/api/projects/{id}/hm-study/hvac/mea-inputs?format=json|csv

Δεδομένα και απάντηση

Τα δεδομένα εισόδου της ΜΕΑ από το ίδιο κέλυφος: ζώνη, επιφάνειες ανά τύπο και προσανατολισμό (γωνία αζιμουθίου, κλίση, εμβαδόν, U, g, b, σκίαση), ποσοστό υαλοπινάκων, συστήματα, ηλιακό μερίδιο ΖΝΧ.

Το csv είναι ο πίνακας κελύφους.

Και το json και το csv χρειάζονται συνδρομή.

Λίστες και αρχεία μελετών

POST/api/projects/{id}/studies/{discipline}/files

Αίτημα, συμπεριφορά και απάντηση

Ανεβάζει υπογεγραμμένη μελέτη (πεδίο file, μόνο PDF έως 25 MB).

Επιστρέφει id, file_name, file_type, file_size_bytes, created_at, discipline.

Το id γίνεται file_id στο PATCH disciplines.

GET/api/studies/{discipline}

Δεδομένα και απάντηση

Η μελέτη της ειδικότητας (electrical, mechanical, fire_safety, structural, energy, survey) σε κάθε έργο που ανοίγετε, δικό σας ή της ομάδας σας.

Παραλείπει αρχειοθετημένα έργα και μελέτες «Δεν απαιτείται».

Φίλτρα: q (μέρος ονόματος, διεύθυνσης ή δήμου, χωρίς τόνους), status (in_progress, draft_ready, external, reviewed), mine=true (υπεύθυνος είστε εσείς).

Κάθε γραμμή στο studies: project_id, project_name, address, municipality_name, status, responsible_user_id, responsible_user_name, responsible_name, updated_at, last_run_at και, για electrical, floors και drafts.

404 για άγνωστη ειδικότητα, 422 για άγνωστη κατάσταση.

GET/api/projects/{id}/studies

Δεδομένα και απάντηση

Όλες οι μελέτες του έργου εκτός από τα αρχιτεκτονικά, και όσες είναι «Δεν απαιτείται», με τα ίδια πεδία.

GET/api/projects/{id}/studies/{discipline}/files

Δεδομένα και απάντηση

Οι μελέτες της ειδικότητας στο files, νεότερη πρώτη.

Λήψη από GET /api/projects/{id}/review/files/{file_id}/download.

ΥΔΕ

GET/api/projects/{id}/electrical/yde

Δεδομένα και απάντηση

Η ΥΔΕ του έργου: { inputs, form, checks: [{ number 1 έως 10, title, status: pass | fail | manual, items: [{ status, text }] }], missing: [{ field (π.χ. installer.first_name), label }], can_finalise, has_model, file_name }.

Τα τεχνικά στοιχεία έρχονται από το διαστασιολογημένο σχέδιο, τα στοιχεία εγκαταστάτη από το προφίλ όπου η ΥΔΕ τα αφήνει κενά.

PUT/api/projects/{id}/electrical/yde

Αίτημα, συμπεριφορά και απάντηση

Σώμα { status, installer, owner, consumer, site: { supply_number, use_codes, region, municipality, area, street, floor, apartment, coordinates }, inspection: { kind, reason, reason_text, issue_date, next_date, next_date_reason, energised, follows_not_finalised, energised_on }, technical: { earthing, network_earthing, lift, ev, self_generation, generation_kw, production_kw, meter_line_conductors, meter_line_mm2 }, declared_pages }.

Αποθηκεύεται στο έργο (metadata.yde) και επιστρέφει ό,τι το GET.

Χρειάζεται δικαίωμα επεξεργασίας και ενεργή ηλεκτρολογική μελέτη.

GET/api/projects/{id}/electrical/yde/export/{format}

Δεδομένα και απάντηση

format pdf: το έντυπο με τα συνημμένα σε ένα PDF έως 10 MB, όνομα YDE_<αριθμός παροχής>_<YYYYMMDD>.pdf (409 για οριστικοποιημένη ΥΔΕ με έλεγχο που αποτυγχάνει, 413 πάνω από 10 MB). format json: τα πεδία του εντύπου, ανοιχτό σε κάθε πλάνο.

Το PDF χρειάζεται συνδρομή (402 χωρίς).

Ηλεκτρολογικά σχέδια

PUT/api/projects/{id}/electrical/revisions/{revision_id}/preferences

Αίτημα, συμπεριφορά και απάντηση

Σώμα { expected_version, rooms: [{ room_id, preferences }] }.

Οι preferences: ceiling_lights 0 έως 8, wall_lights 0 έως 6, dimmable, switch_type (single, double, two_way, intermediate, relay), sockets 0 έως 12, tv_point, data_point, ac_supply, appliances (cooker, oven, washing_machine, dishwasher, water_heater).

Ξανατοποθετεί τα σημεία των χώρων αυτών και επιστρέφει νέα έκδοση (202).

409 όταν υπάρχει νεότερη έκδοση.

PATCH/api/projects/{id}/electrical/revisions/{revision_id}

Αίτημα, συμπεριφορά και απάντηση

Σώμα { expected_version, devices: [{ id, room_id, x, y }], circuits?, assignments?, added?, removed? }.

Το devices έχει κάθε συσκευή που μένει (όλες εκτός από όσες γράφει το removed) με τη θέση της (0 έως 1). added: [{ id, room_id, kind, x, y, copy_of? }] νέες συσκευές, με id που διαλέγει ο πελάτης· kind: light, wall_light, switch, socket, socket_waterproof, tv, data, smoke_detector, ac, cooker, oven, washing_machine, dishwasher, water_heater.

Μια νέα συσκευή μπαίνει στο κύκλωμα του χώρου (φωτισμός ή πρίζες), μία συσκευή με δικό της κύκλωμα παίρνει νέο, το tv, data και ο ανιχνευτής καπνού δεν έχουν κύκλωμα, ο διακόπτης ανάβει το κοντινότερο φωτιστικό του χώρου. copy_of: αντίγραφο συσκευής του ίδιου είδους με το κύκλωμα και τα φωτιστικά της. removed: συσκευές που διαγράφονται (όχι ο πίνακας)· διακόπτες που μένουν χωρίς φωτιστικό φεύγουν και αυτοί.

Νέα έκδοση (202) που υπολογίζεται ξανά.

400 όταν το σχέδιο άλλαξε, 422 όταν η συσκευή είναι έξω από τον χώρο, ο χώρος δεν δέχεται συσκευές, το είδος δεν επιτρέπεται ή λείπει φωτιστικό για διακόπτη, 409 όταν υπάρχει νεότερη έκδοση.

PUT/api/projects/{id}/electrical/revisions/{revision_id}/supply

Αίτημα, συμπεριφορά και απάντηση

Σώμα { expected_version, phases: 1 | 3 | null }.

Δηλώνει τις φάσεις παροχής (null: χωρίς δήλωση, ο υπολογισμός προτείνει) και επιστρέφει νέα έκδοση (202) που διαστασιολογείται ξανά.

Κάθε έκδοση επιστρέφει supply (phases, contracted_kva, earthing, sized_phases, demand_kva, supply_code, supply_fuse_a, meter_line_mm2, status, reasons) και ανά κύκλωμα sizing (status, reasons, cable_mm2, breaker_a, breaker_curve, rcd_type, phase, voltage_drop_pct, origin_drop_pct, length_m, length_source).

409 όταν υπάρχει νεότερη έκδοση.

POST/api/projects/{id}/electrical/revisions/{revision_id}/guidance

Αίτημα, συμπεριφορά και απάντηση

Σώμα { text } έως 1000 χαρακτήρες.

Το AI παίρνει τους χώρους του ορόφου της έκδοσης και, μόνο όταν το κείμενο τους αναφέρει (ισόγειο, α' όροφος, 2ος όροφος, υπόγειο, δώμα), των ορόφων αυτών.

Μία κλήση AI ανά αίτημα.

Επιστρέφει { ok, message, unmatched, missing_floors, rooms: [{ floor_id, floor_name, current_floor, revision_id, revision_version, room_id, room_name, preferences, fields }] } ως πρόταση (fields: τα πεδία που όρισε η οδηγία)· δεν αποθηκεύει τίποτα. missing_floors: όροφοι που αναφέρει το κείμενο αλλά δεν υπάρχουν στο σχέδιο.

503 όταν το AI δεν είναι διαθέσιμο (το GET /electrical δίνει guidance_available).

PUT/api/projects/{id}/electrical/drafts/{draft_id}/preferences

Αίτημα, συμπεριφορά και απάντηση

Σώμα { floors: [{ revision_id, expected_version, rooms: [{ room_id, preferences, all_floors, fields? }] }] }.

Αποθηκεύει τις επιλογές σε έναν ή περισσότερους ορόφους.

Με all_floors: true τα πεδία που αλλάζουν, και όσα γράφει το fields ακόμη κι αν ο χώρος τα είχε ήδη, περνούν και στους ίδιους χώρους των άλλων ορόφων (ίδιος τύπος και ίδια χρήση χώρου)· χώροι με επιλογές ορισμένες για τον ίδιο τον χώρο δεν αλλάζουν.

Νέα έκδοση μόνο για όροφο που αλλάζει, όλες σε μία εγγραφή (202).

Επιστρέφει { rooms: [{ floor_id, floor_name, room_id, room_name, copied }], skipped, unavailable_floors, revisions }.

409 όταν κάποιος όροφος έχει νεότερη έκδοση.

POST/api/projects/{id}/electrical/drafts/{draft_id}/preferences/preview

Αίτημα, συμπεριφορά και απάντηση

Ίδιο σώμα με το PUT.

Δείχνει τι θα άλλαζε ({ rooms, skipped, unavailable_floors }) χωρίς να αποθηκεύσει.

GET/api/projects/{id}/electrical

Δεδομένα και απάντηση

Σχέδια (drafts) με τους ορόφους τους (floors: όνομα, level, θέση, panel_code, project_file_id, κατάσταση, προεπισκόπηση, υποψήφιοι χώροι, σημεία ελέγχου), τους αφαιρεμένους ορόφους (removed_floors, με κρατημένες εκδόσεις), τους πίνακες (panels: code, main, fed_from) και το riser_svg, τις πρόσφατες εκδόσεις με floor_id, τα project_floors της σελίδας Σχέδια (με supported και lost) και το project_sync { draft_id, files, changes: [{ kind: add | replace | remove, floor_name }] }: το σχέδιο που ακολουθεί τα Σχέδια και τι θα άλλαζε ένας συγχρονισμός.

Μόνο ανάγνωση.

POST/api/projects/{id}/electrical/sync

Αίτημα, συμπεριφορά και απάντηση

Φέρνει το σχέδιο που ακολουθεί τα Σχέδια στην κατάσταση των αρχείων ορόφων: νέο αρχείο δίνει νέο όροφο, αλλαγμένο αρχείο (ίδιος όροφος) διαβάζεται ξανά στον ίδιο όροφο με τις παλιές εκδόσεις κρατημένες και τις επιλογές χώρων να περνούν σε χώρους με ίδιο όνομα και χρήση, αρχείο που αφαιρέθηκε σημειώνει τον όροφο ως αφαιρεμένο.

Χωρίς τέτοιο σχέδιο το δημιουργεί.

Επιστρέφει { draft_id, created, added, replaced, removed } (202).

400 όταν δεν υπάρχουν αρχεία ορόφων σε PDF, DXF ή εικόνα.

Η σελίδα το καλεί όταν το project_sync δείχνει αλλαγές και μετά από κάθε προσθήκη ή αφαίρεση ορόφου.

POST/api/projects/{id}/electrical/revisions

Αίτημα, συμπεριφορά και απάντηση

Σώμα { floor_id, rooms? }.

Νέα έκδοση ενός ορόφου, από τους χώρους του ορόφου ή από διορθωμένους χώρους (202).

PATCH/api/projects/{id}/electrical/drafts/{draft_id}

Αίτημα, συμπεριφορά και απάντηση

Σώμα { main_floor_id }.

Ο όροφος του Γενικού Πίνακα· οι άλλοι όροφοι γίνονται υποπίνακες που τροφοδοτούνται από αυτόν.

POST/api/projects/{id}/electrical/drafts/{draft_id}/rooms/move

Αίτημα, συμπεριφορά και απάντηση

Σώμα { revision_id, expected_version, room_ids, target_floor_id }.

Μετακινεί χώρους σε άλλο όροφο της ίδιας κάτοψης ή τους αφαιρεί (target_floor_id null).

Επιστρέφει { revisions } με τη νέα έκδοση κάθε ορόφου (202).

400 όταν ο χώρος δεν χωρά στην κάτοψη του άλλου ορόφου, 409 όταν υπάρχει νεότερη έκδοση.

GET/api/projects/{id}/electrical/placement-settings

Δεδομένα και απάντηση

Κανόνες έργου, υπόδειγμα YAML και δηλωμένες θέσεις στάθμευσης/ανελκυστήρας.

PUT/api/projects/{id}/electrical/placement-settings

Αίτημα, συμπεριφορά και απάντηση

{ rules_yaml, parking_spaces, has_lift, lift_power_kw, lift_phases }.

Επικυρώνει τους κανόνες και αποθηκεύει ατομικά στο metadata.electrical.

Ενεργή ηλεκτρολογική μελέτη και δικαίωμα επεξεργασίας.

GET/api/workspaces/{id}/electrical-rules

Δεδομένα και απάντηση

Κανόνες γραφείου και βασικό υπόδειγμα YAML.

Πρόσβαση μελών· απαιτεί migration 050.

PUT/api/workspaces/{id}/electrical-rules

Αίτημα, συμπεριφορά και απάντηση

{ rules_yaml }.

Επικυρωμένοι κανόνες γραφείου, μόνο από τον ιδιοκτήτη. null επαναφέρει τους βασικούς κανόνες.

GET/api/projects/{id}/electrical/drafts/{draft_id}/exports/{format}

Δεδομένα και απάντηση

format pdf (η μελέτη του κτιρίου σε ένα αρχείο: κατόψεις, μονογραμμικά, καταγραφή ΕΗΕ, πρωτόκολλο ελέγχου), csv (κυκλώματα με όροφο, πίνακα και γραμμές τροφοδοσίας) ή zip (κάθε έγγραφο χωριστά, ένα DXF κάτοψης ανά όροφο, το κατακόρυφο διάγραμμα, το CSV και το DXF σχεδίασης κάθε ορόφου).

Χρειάζεται συνδρομή (402 χωρίς).

409 όσο κάποιος όροφος δεν είναι έτοιμος ή όταν ένας όροφος δεν διαβάζεται.

GET/api/projects/{id}/electrical/revisions/{revision_id}/rules

Δεδομένα και απάντηση

Οι κανόνες τοποθέτησης με τους οποίους φτιάχτηκε η έκδοση, ανά χώρο.

Επιστρέφει { rooms: [{ room_id, name, kind, area_m2, source, dedicated_source, extra_sources, ceiling_lights, wall_lights, sockets (βήματα { up_to_m2, count }), applied (όσα ζητά ο κανόνας για το εμβαδόν του χώρου), dedicated (συσκευές με δικό τους κύκλωμα), changed, on_plan (όσα έχει το σχέδιο) }], sources: { κλειδί: { basis, citation, url, quote, verify } }, building (κανόνες κτιρίου: ανελκυστήρας, φόρτιση ΗΟ, πυρανίχνευση), overrides (διαδρομές που άλλαξε το γραφείο ή το έργο) }.

Μόνο ανάγνωση.

409 όσο η έκδοση δεν έχει σχέδιο.

GET/api/projects/{id}/electrical/revisions/{revision_id}/exports/{format}

Δεδομένα και απάντηση

format pdf, dxf, zip ή json (τα αρχεία ενός ορόφου).

Τα pdf, dxf και zip χρειάζονται συνδρομή (402 χωρίς), το json είναι ανοιχτό σε κάθε πλάνο.

409 όσο η έκδοση δεν είναι έτοιμη.

Εξαγωγές

GET/api/projects/{id}/documents/eydom-xml

Δεδομένα και απάντηση

Το XML με τα ίδια όρια που χρησιμοποιούν οι έλεγχοι. Όρια που δεν είναι γνωστά λείπουν από το XML και αναφέρονται στην κεφαλίδα X-EYDOM-Missing-Terms.

Χωρίς application_type χρησιμοποιείται το είδος αίτησης του έργου· είδος χωρίς γνωστό κωδικό e-Άδειες (π.χ. αναθεώρηση) αφήνει κενό τον κωδικό και αναφέρεται στην ίδια κεφαλίδα.

Υφιστάμενο κτίριο

GET/api/projects/{id}/existing-building

Δεδομένα και απάντηση

{ inputs, drawings: { approved, current }, current_source (upload | project | none), registration: { method, pairs, residual_m, confidence, note }, differences: [{ id, kind, text, storey_id, area_sqm, coverage_sqm, within_tolerance, counted_in, ... }], overlays (δακτύλιοι ανά όροφο), legality: { items: [{ difference_id, status, category, fine_eur, factors, missing, reasons, sources }], base_fine_eur, adjustments, total_fine_eur, fee_eur, instalment_eur, complete, declarable, notes }, transfer: { building_id, pea, areas, co_owners, certificate, reminders }, stay, shop }.

PUT/api/projects/{id}/existing-building/inputs

Αίτημα, συμπεριφορά και απάντηση

Σώμα { facts, declarations: [{ difference_id, built_on, not_violation, small_kind, budget_eur, side_distance, front_garden }], transfer, stay, shop }.

Αντικαθιστά τα στοιχεία· null σημαίνει «δεν δηλώθηκε».

Επιστρέφει την κατάσταση.

POST/api/projects/{id}/existing-building/drawings/{kind}

Αίτημα, συμπεριφορά και απάντηση

kind approved | current, multipart file (DXF, DWG, IFC, PDF, εικόνα).

Το σχέδιο διαβάζεται όπως τα σχέδια του έργου και κρατιούνται όροφοι, χώροι και περιγράμματα.

DELETE/api/projects/{id}/existing-building/drawings/{kind}

Αίτημα, συμπεριφορά και απάντηση

Αφαιρεί το σχέδιο.

Χωρίς αποτύπωση η σύγκριση χρησιμοποιεί τα Σχέδια του έργου.

GET/api/projects/{id}/existing-building/export/{pack}

Δεδομένα και απάντηση

pack transfer | legality | stay | shop: PDF (transfer_pack.pdf, legality_fines.pdf, short_term_rental.pdf, food_shop_layout.pdf).

Χρειάζεται συνδρομή (402 χωρίς).