Przejdź do treści

CEEB-Integracja

Proces integracji z systemem

CEEB-Integracja

Aby zintegrować się z naszym systemem, należy wykonać poniższe kroki:

  1. Wystąpić z wnioskiem o możliwość przekazywania do Centralnej Ewidencji Emisyjności Budynków danych poprzez API
  2. Przygotować dane (muszą być zgodne ze strukturą wymaganą przez system (XSD do pobrania), która została udostępniona na stronie wraz z przykładami poprawnych Pliki do Pobrania)
  3. Przesłać plik z danymi
  4. Sprawdzić wyniki walidacji
  5. Ponowić kroki 2-4 lub przekazać dane z pośrednictwem aplikacji webowej

Szczegółowy opis przekazania danych znajduje się w instrukcja dla użytkowników

Interakcja z API wymaga podania również tokena jako nagłówka zapytania

Środowisko Key Value
Testowe Authorization fmetoken token=99140591b5904d5d51e3c9ecf60d2c453d27a075

Najczęściej zadawane pytania:

1. Gdzie wysłać zapytanie

W razie pytań proszę wysłać mail na adres: "pomoc.ceeb@gunb.gov.pl" w tytule: "Integracja API".

Ceeb Documentation Block

CSS and JavaScript Example
Wprowadzenie

Instrukcja integracji za pośrednictwem API

z CENTRALNĄ EWIDENCJĄ EMISYJNOŚCI BUDYNKÓW

Procedura udzielania dostępów do komunikacji systemowej z CEEB

Aby uzyskać uprawnienia do integracji z Centralną Ewidencją Emisyjności Budynków (CEEB), należy skierować do Głównego Urzędu Nadzoru Budowlanego wniosek o możliwość przekazywania danych do CEEB poprzez API. W odpowiedzi podmiot otrzyma dane autoryzacyjne umożliwiające przekazywanie danych w postaci plików w formacie GML.

We wniosku należy wykazać uprawnienie do wprowadzania danych do ewidencji wynikające z przepisów ustawy o wspieraniu termomodernizacji i remontów oraz o centralnej ewidencji emisyjności budynków (Dz.U. z 2023 r. poz. 2496), podając jednocześnie numer REGON podmiotu uprawnionego.

Procedura wnioskowa obejmuje dostęp zarówno do środowiska testowego, jak i produkcyjnego CEEB. Wykonanie testów integracyjnych jest obowiązkowe i musi poprzedzić integrację na środowisku produkcyjnym.


Wzór wniosku o możliwość przekazywania danych do Centralnej Ewidencji Emisyjności Budynków poprzez API

Głównym celem działań integracyjnych CEEB z systemami dziedzinowymi jest stworzenie warunków, aby podmiot uprawniony miał możliwość wprowadzania danych do CEEB w sposób zautomatyzowany. W celu uniknięcie błędów w przetwarzaniu (duplikowaniu/nadpisywaniu) danych przez wielu użytkowników wskazane jest aby konto posiadała jedna osoba – w przypadku JST np. wójt, burmistrz, prezydent miasta (wewnętrzne upoważnienia urzędu do dysponowania tokenem nie są przedmiotem wniosku). W przypadku przekazywania wielu danych należy przygotować się na okoliczność pojedynczych przypadków niepowodzenia przekazania danych oraz związanej z tym konieczności obsłużenia takich przypadków. Zespół obsługujący CEEB rekomenduje rozwiązanie, aby w sytuacji odrzucenia danych wprowadzić takie dane do systemu CEEB przez osobę uprawnioną za pomocą interfejsu użytkownika. Podkreślić należy, że zasilanie CEEB jest możliwe za pośrednictwem aplikacji dostępowej udostępnionej podmiotom uprawnionym, natomiast interfejsy systemowe pozwalają w sposób zautomatyzowany osiągać wyznaczane cele.

Przygotowanie danych

API systemu CEEB wymaga wcześniejszego przygotowania danych do integracji. W przykładowych plikach do pobrania można odnaleźć wypełniony szablony do zbierania danych. Dopuszczalne i obligatoryjne wartości którymi może lub musi zostać wypełniony dany atrybut opisują dołączone pliki XSD. Kluczowymi elementami w procesie przygotowania danych są:

ID_ZRODLOWE - Unikalny identyfikator rekordu w systemie dostawcy. Na podstawie tego identyfikatora rekordy są aktualizowane w systemie CEEB. Rekomendujemy użycie prefixu Twojej organizacji np. GUNB_1001 przed własnym identyfikatorem lokalnym. W odpowiedzi API może zwracać informacje, że obiekt o danym ID już istnieje w systemie – należy w takich przypadkach upewnić się że podany identyfikator jest unikalny w skali zbioru.

OPERACJA - Określenie jak przekazywany plik za pośrednictwem API ma wpłynąć na system dokonując dodania nowych elementów, aktualizacji istniejących lub przeniesienia do archiwum- atrybut powinien przyjmować odpowiednio wartość: nowy, aktualizacja lub usuń.

Aby dane mogły zasilić system muszą być zgodne nie tylko pod względem struktury ale również z rejestrem TERYT i bazą referencyjną adresową CEEB. API umożliwia przekazywanie danych jedynie zgodnych z referencyjną bazą adresową, której podstawę stanowi Państwowy Rejestr Granic prowadzony przez Prezesa Głównego Urzędu Geodezji i Kartografii. W przypadku adresu spoza bazy referencyjnej jego przekazanie jest możliwe jedynie za pośrednictwem GUI systemu dostępnego pod adresem  zone-web.gunb.gov.pl

Rekomendujemy zatem dokonanie wstępnej walidacji samego adresu i jego ewentualną aktualizację.

Przykładowe, opcjonalne zapytanie umożliwiające wstępne sprawdzenie czy dana kombinacja kodów terc, simc, ulic oraz numeru porządkowego jest poprawna względem aktualnego rejestru TERYT oraz PRG

curl --location 'https://zone-test-fme.gunb.gov.pl/fmedatastreaming/Uniwersalne_API_data_upload/walidator_wystepowania_w_PRG.fmw?simc=0973524&ulic=17918&nr=9&token=99140591b5904d5d51e3c9ecf60d2c453d27a075'

Do zapytania należy wprowadzić następujące parametry i nagłówki:

  • SIMC – identyfikator miejscowości z rejestru TERYT
  • ULIC – identyfikator ulicy z rejestru TERYT
  • NR – numer budynku
  • TOKEN aktualny token przekazany przez GUNB

Walidacja plików XML system Windows

Aby uniknąć błędów w trakcie importu danych za pośrednictwem API warto dokonać walidacji pliku. Można tego dokonać za pomocą np. darmowego oprogramowania Notepad++ z wtyczką XML Tools (wymaga włączenia/instalacji). Aby to zrobić, należy wybrać polecenie z menu Wtyczk > XML Tools > Validate Now . Otwórz plik XML, który chcesz zweryfikować, a następnie uruchom wspomniane polecenie. Wskaż właściwy plik XSD udostępniony na stronie GUNB i po kilku sekundach wyświetli się informacja o poprawności pliku lub o błędzie walidacji, który zostanie zaznaczony w oknie pliku w Notepad++.


Walidacja plików XML system macOS

Po wypakowaniu plików pobranych z sekcji pliki do pobrania, katalog powinen wygądać następująco: ├── 1.3_przyklady │   ├── Redame.md │   ├── dofinansowanie-aktualizacja.gml │   ├── dofinansowanie-nowy.gml │   ├── dofinansowanie-usun.gml │   ├── pomoc-aktualizacja.gml │   ├── pomoc-nowy.gml │   └── pomoc-usun.gml └── 1.3_walidacja ├── 1.1 │   ├── instytucjeFinansujace.xsd │   ├── pomocSpoleczna.xsd │   ├── zone-finansowe.xsd │   └── zone-wspolne.xsd └── 1.2 ├── instytucjeFinansujace.xsd └── pomocSpoleczna.xsd 5 directories, 13 files

Walidację struktury pliku XML można przeprowadzić za pomocą narzędzia xmllint, które jest częścią pakietu libxml2. Aby zwalidować plik XML w odniesieniu do odpowiedniego pliku XSD, wykonaj następujące kroki:

  1. Otwórz terminal w macOS.
  2. Użyj poniższych poleceń w zależności od pliku, który chcesz zweryfikować.
Walidacja InstytucjeFinansujace ( dofinansowanie nowy ) xmllint --noout --schema ../1.3_walidacja/1.3/instytucjeFinansujace.xsd dofinansowanie-nowy.gml Walidacja InstytucjeFinansujace ( dofinansowanie aktualizacja ) xmllint --noout --schema ../1.3_walidacja/1.3/instytucjeFinansujace.xsd dofinansowanie-aktualizacja.gml Walidacja InstytucjeFinansujace ( dofinansowanie dofinansowanie-usun.gml ) xmllint --noout --schema ../1.3_walidacja/1.3/instytucjeFinansujace.xsd dofinansowanie-usun.gml Walidacja Pomoc Społeczna ( nowy ) xmllint --noout --schema ../1.3_walidacja/1.3/pomocSpoleczna.xsd pomoc-nowy.gml Walidacja Pomoc Społeczna ( aktualizacja ) xmllint --noout --schema ../1.3_walidacja/1.3/pomocSpoleczna.xsd pomoc-aktualizacja.gml Walidacja Pomoc Społeczna ( usuń ) xmllint --noout --schema ../1.3_walidacja/1.3/pomocSpoleczna.xsd pomoc-usun.gml
Interpretacja wyników

Po wykonaniu polecenia xmllint zostanie wyświetlona informacja o poprawności pliku XML. Jeśli plik jest zgodny ze schematem, nie zobaczysz żadnych komunikatów. W przypadku błędów komunikaty o błędach zostaną wyświetlone w terminalu, wskazując na konkretne problemy w pliku XML.

Uzyskanie dostępu do integracji poprzez API

Po zakończeniu rejestracji Twojego konta otrzymasz od GUNB identyfikator przypisany do Twojej organizacji, który będzie jednym z niezbędnych parametrów podczas konfiguracji połączeń z API.

Wysłanie pliku

W celu przekazania danych wystarczy wykonać zapytanie typu (test) POST:


curl --location 'https://zone-test- fme.gunb.gov.pl:443/fmedatastreaming/Uniwersalne_API_data_upload/file_send.fmw? user_id= identyfikator&file_name= nazwa_pliku.xml &email_sending=tak' \ --header 'Authorization: fmetoken token=token' \ --header 'Content-Type: application/gml+xml' \ --data 'lokalizacja pliku'

W celu przekazania danych wystarczy wykonać zapytanie typu (prod) POST:


curl --location 'https://zone-int.gunb.gov.pl:443/fmedatastreaming/Uniwersalne_API_data_upload/file_send.fmw? user_id= identyfikator&file_name= nazwa_pliku.xml &email_sending=tak' \ --header 'Authorization: fmetoken token=token' \ --header 'Content-Type: application/gml+xml' \ --data 'lokalizacja pliku'

Do zapytania należy wprowadzić następujące parametry i nagłówki:

  • identyfikator – identyfikator otrzymany od GUNB
  • file_name – nazwa pliku, który przekazujesz wraz rozszerzeniem
  • lokalizacja pliku – plik. @/C:/ Przyklad-InstytucjeFinansujace.gml
  • email_sending opcjonalny parametr przyjmujący wartości tak lub nie (gdzie nie jest wartością domyślną) decydujący o wysyłaniu do użytkownika e-maila na wskazany przez niego w pliku adres wraz z wynikami walidacji
  • token aktualny token przekazany przez GUNB

Wysłanie pojedynczego zapytania możliwe jest np. z poziomu aplikacji Postman.




W odpowiedzi na żądanie użytkownik otrzyma informację o przydzielonej sesji zasilenia. Identyfikator sesji pozwala na późniejsze sprawdzenie wyniku walidacji. W odpowiedzi znajduje się również gotowy link do usługi umożliwiającej wyświetlenie raportu z walidacji. Czas przetwarzania danych zależy od wielkości przesłanego pliku, jednak nie powinien przekraczać kilku minut.

Przykład odpowiedzi

[ { "session_id": "33e55e97-5f4b-4230-8bd8-412d9c2c260ad", "user_id": "885g06d5a352b67bb4b3ee9111bf19sb8a7014c9", "file_name": "finansowanie_v4.xml", "report_link": "https://zone-test- fme.gunb.gov.pl/fmedatastreaming/Uniwersalne_API_data_upload/report_download.fm w?user_id=gunb88921481&id_sesji=33e55e9217-5f4b-4230-8bd8-412d9c2c26350ad &token=99140591b5904d5d51e3c9ecf60d2c453d27a075", "file_body": "<?xml version (...)" }]
Wyniki walidacji

Wyniki procesu walidacji można sprawdzić za pomocą żądania, które jest dołączone jako report_link w odpowiedzi zwracanej podczas przesyłania danych.

curl --location https://zone-test- fme.gunb.gov.pl/fmedatastreaming/Uniwersalne_API_data_upload/report_download.fm w?file_name= nazwa_pliku &user_id= identyfikator &id_sesji= id_sesji --header 'Authorization: fmetoken token=token' \ --header 'Accept: application/octet-stream'

W odpowiedzi użytkownik otrzyma raport w formacie JSON zawierający informacje o identyfikatorze pliku przesłanego do importu oraz status walidacji. W przypadku wykrycia niepoprawności w danych raport będzie zawierał również komunikat wskazujący na możliwą przyczynę błędu.

{ "id" : "44c3cd5a-1a6f-4345-9f9e-d2367422", "status" : "odrzucony", "process" : "weryfikacja id", "reason" : "id rekordu do usunięcia nie istnieje w bazie danych" },

Do czasu wygenerowania przez system finalnego raportu z walidacji możesz otrzymać następujący komunikat „Plik w trakcie generowania spróbuj później” – po kilku minutach w jego miejscu powinny pojawić się wyniki walidacji.



Jeżeli w zapytaniu przesyłającym dane wybrana została opcja email_sending z wartością „tak”, na e-mail wskazany w pliku jako adres zwrotny trafi dodatkowy raport z podsumowaniem i detalami dla zwolenników widoku tabelarycznego zamiast struktury JSON.

Podsumowanie

Proces integracji z systemem CEEB

Aby zintegrować się z systemem CEEB, należy wykonać poniższe kroki:

  1. Wystąpić z wnioskiem o możliwość przekazywania do Centralnej Ewidencji Emisyjności Budynków danych poprzez API.
  2. Przygotować dane – muszą być zgodne ze strukturą wymaganą przez system (XSD - dostępne w paczce plików do pobrania - Sekcja pliki do pobrania), która została udostępniona na stronie wraz z przykładami poprawnych zapytań.
  3. Ponowić kroki 2 lub przekazać dane z pośrednictwem aplikacji webowej.

Interakcja z API wymaga podania również tokena jako nagłówka zapytania (tokeny zostaną wysłane w odpowiedzi na wniosek).

Środowisko Key Value
Testowe Authorization fmetoken token=xxxxx
Produkcja Authorization fmetoken token=xxxxx

Pliki do pobrania
Przykładowe pliki zasileń.

Schematy walidacji do pobrania
Najczęściej zadawane pytania

1. Gdzie wysłać zapytanie

W razie pytań proszę wysłać e-mail na adres: w tytule: "Integracja API".

2. Jaki kod TERC powinienem podać dla miejscowości miejsko-wiejskiej?

System przyjmuje dane walidując je na podstawie pierwszych 6 znaków kodu TERC, zatem w przypadku miejscowości miejsko-wiejskich nie jest istotne czy podamy 1406054, 1406055 czy 1406053.

3. Czy dane do API muszą być przesyłane w osobnych żądaniach per rekord?

System przyjmuje dane w postaci plików xml. Jeden importowany plik może zawierać wiele rekordów.

4. Dlaczego dodawany przeze mnie adres nie znajduje się w bazie referencyjnej?

Podstawę referencyjnej bazy adresowej stanowi Państwowy Rejestr Granic prowadzony przez Głównego Geodetę Kraju. Wszelkie braki, rozbieżności danych powinny być w pierwszej kolejności uzupełnione na poziomie gminy.

5. Otrzymuje komunikat "Nie masz uprawnień do modyfikacji rekordu o wskazanym id" jaka jest tego przyczyna?

Inny użytkownik Twojej lub inne organizacji wykorzystał już ten identyfikator do wprowadzenia danych. Spróbuj wprowadzić rekord ponownie z prefixem Twojej organizacji np. GUNB_1001

6. Jak sprawdzić czy przesłane dane trafiły do systemu?

Każdy request zwraca w odpowiedzi json w którym znajduje się „report_link” – sprawdzenie zapisanego w nim adresu pozwala na pozyskanie informacji o statusie zasilenia. Ponadto niezależnie manualnie możliwa jest weryfikacja bezpośrednio w aplikacji