openapi: 3.1.0 info: title: API dla systemu Krajowej Infolinii 19111 description: Specyfikacja interfejsu umożliwiającego integrację z Systemem Centralnym version: '1.0' servers: - url: https://system-centralny tags: - name: call description: Odebrana rozmowa przychodząca lub wychodząca - name: call-event description: Zdarzenie związane z obsługą rozmowy - name: call-keyword description: Wykryte w rozmowie skategoryzowane słowo kluczowe paths: /incoming-calls: post: tags: - call summary: Zapisuje informację o odebraniu rozmowy przychodzącej description: Zapisuje informację o szczegółach odebranej rozmowy przychodzącej operationId: addIncomingCall requestBody: description: Tworzy nową odebraną rozmowę przychodzącą content: application/json: schema: $ref: '#/components/schemas/Call' required: true responses: '201': description: Operacja zakończyła się powodzeniem i doprowadziła do utworzenia rozmowy przychodzącej '400': description: Błędne żądanie np. brak wymaganych danych '401': description: Brak autoryzacji, błąd uwierzytelnienia '409': description: Wystąpienie konfliktu uniemożliwiającego obsługę żądania np. otrzymanie żądania utworzenia już istniejącej rozmowy przychodzącej '500': description: Wewnętrzny błąd serwera security: - sc_auth: [] /outgoing-calls: post: tags: - call summary: Zapisuje informację o odebraniu rozmowy wychodzącej description: Zapisuje informację o szczegółach odebranej rozmowy wychodzącej operationId: addOutgoingCall requestBody: description: Tworzy nową odebraną rozmowę wychodzącą content: application/json: schema: $ref: '#/components/schemas/Call' required: true responses: '201': description: Operacja zakończyła się powodzeniem i doprowadziła do utworzenia rozmowy wychodzącej '400': description: Błędne żądanie np. brak wymaganych danych '401': description: Brak autoryzacji, błąd uwierzytelnienia '409': description: Wystąpienie konfliktu uniemożliwiającego obsługę żądania np. otrzymanie żądania utworzenia już istniejącej rozmowy wychodzącej '500': description: Wewnętrzny błąd serwera security: - sc_auth: [] /call-events: post: tags: - call-event summary: Zapisuje informację o zdarzeniach związanych z obsługą rozmowy description: Zapisuje informację o szczegółach zdarzenia związanego z obsługą rozmowy operationId: addCallEvent requestBody: description: Tworzy nowe zdarzenie związane z obsługą rozmowy content: application/json: schema: $ref: '#/components/schemas/CallEvent' required: true responses: '201': description: Operacja zakończyła się powodzeniem i doprowadziła do utworzenia zdarzenia '400': description: Błędne żądanie np. brak wymaganych danych '401': description: Brak autoryzacji, błąd uwierzytelnienia '404': description: Wskazany zasób nie istnieje np. Rozmowa o wskazanym identyfikatorze '409': description: Wystąpienie konfliktu uniemożliwiającego obsługę żądania np. otrzymanie żądania utworzenia już istniejącego zdarzenia np. zakończenia rozmowy '500': description: Wewnętrzny błąd serwera security: - sc_auth: [] /call-keywords: post: tags: - call-keyword summary: Zapisuje informację o skategoryzowanych słowach kluczowych wypowiadanych przez rozmówcę description: Zapisuje informację o skategoryzowanych słowach kluczowych wypowiadanych przez rozmówcę operationId: addCallKeyword requestBody: description: Tworzy nowe słowo kluczowe wykryte podczas rozmowy content: application/json: schema: $ref: '#/components/schemas/CallKeyword' required: true responses: '201': description: Operacja zakończyła się powodzeniem i doprowadziła do zapisu wykrytego słowa kluczowego '400': description: Błędne żądanie np. brak wymaganych danych '401': description: Brak autoryzacji, błąd uwierzytelnienia '404': description: Wskazany zasób nie istnieje np. Rozmowa o wskazanym identyfikatorze '409': description: Wystąpienie konfliktu uniemożliwiającego obsługę żądania np. otrzymanie żądania utworzenia wykrytego słowa kluczowego w nieistniejącej kategorii '500': description: Wewnętrzny błąd serwera security: - sc_auth: [] components: schemas: Call: description: Komunikat z informacją o odebranej rozmowie przychodzącej lub wychodzącej required: - idCall - phoneNumber - idAgent - answeredTimestamp type: object properties: idCall: description: Unikalny identyfikator połączenia z systemu Krajowej Infolinii 19111 type: string examples: ['a961002e-41bf-49db-80e3-02406ad0391d'] idCallForwardedFrom: description: Unikalny identyfikator połączenia z systemu Krajowej Infolinii 19111, z którego nastąpiło bezpośrednie przekierowanie type: string examples: ['a567098e-32bf-23db-84e5-75976ad0367a'] phoneNumber: description: Numer telefonu rozmówcy type: string examples: ['+48123456789'] contactName: description: Nazwa rozmówcy z książki kontaktowej type: string examples: ['Name from contacts'] idAgent: description: Unikalny identyfikator użytkownika systemu Krajowej Infolinii 19111, który przeprowadza rozmowę type: string examples: ['1001'] answeredTimestamp: description: Data i czas odebrania rozmowy type: string format: date-time examples: ['2025-02-21T14:25:05+01:00'] CallEvent: description: Komunikat z informacją o zdarzeniu związanym z rozmową required: - idCall - eventType - eventTimestamp type: object properties: idCall: description: Unikalny identyfikator połączenia z systemu Krajowej Infolinii 19111 type: string examples: ['a961002e-41bf-49db-80e3-02406ad0391d'] eventType: description: Symbol typu zdarzenia type: string examples: ['CALL_ENDED'] enum: - CALL_ENDED - CALL_FORWARDED - CALL_HELD eventTimestamp: description: Data i czas wystąpienia zdarzenia type: string format: date-time examples: ['2025-02-21T14:25:05+01:00'] CallKeyword: description: Komunikat z informacją o wykrytym słowie kluczowym required: - idCall - category - keyword - timestamp type: object properties: idCall: description: Unikalny identyfikator połączenia z systemu Krajowej Infolinii 19111 type: string examples: ['a961002e-41bf-49db-80e3-02406ad0391d'] category: description: Kategoria przypisana do zarejestrowanego słowa kluczowego type: string $ref: "#/components/schemas/KeywordCategory" examples: ['ROAD_NUMBER'] keyword: description: Słowo kluczowe type: string examples: ['A4'] timestamp: description: Data i czas wystąpienia zdarzenia type: string format: date-time examples: ['2025-02-21T14:25:05+01:00'] KeywordCategory: description: | Kategoria przypisana do zarejestrowanego słowa kluczowego: - ROAD_NUMBER - Numer drogi (np. A1, S1, DK1) - ROAD_KILOMETERS - Kilometraż, kilometr drogi (np. 1, 10, 100) - ROAD_METERS - Kilometraż, metr drogi (np. 10, 100, 950) - ROAD_DIRECTION - Kierunek drogi (np. Warszawa, Gdańsk, Jezdnia prawa, Jezdnia lewa) - ROAD_INTERCHANGE - Numer lub nazwa węzła drogowego (np. Łódź Północ, Częstochowa Południe, węzeł 21, węzeł 34) - VOIVODESHIP - Nazwa województwa (np. mazowieckie, śląskie) - NEAREST_TOWN - Nazwa najbliższej miejscowości (np. Kutno, Tuszyn) - TOWNS_BETWEEN - Nazwy miejscowości, pomiędzy którymi wystąpiło zgłaszane zdarzenie (np. Tuszyn – Piotrków Trybunalski) - TRAFFIC_CONSTRICTION - Typ ograniczenia ruchu spowodowany zdarzeniem. Wartość pola 'keyword' w tej kategorii jest typem 'components/schemas/TrafficConstriction' - TRAFFIC_CONSTRICTION_OTHER - Typ ograniczenia ruchu spowodowany zdarzeniem, jeśli wartość jest poza słownikiem dla kategorii TRAFFIC_CONSTRICTION (np. Jednia częściowo zablokowana, Droga częściowo zablokowana) - PAVEMENT_TYPE - Typ jezdni, na której wystąpiło zdarzenie. Wartość pola 'keyword' w tej kategorii jest typem 'components/schemas/PavementType' - PAVEMENT_TYPE_OTHER - Typ jezdni, na której wystąpiło zdarzenie, jeśli wartość jest poza słownikiem dla kategorii PAVEMENT_TYPE (np. Jezdnia dojazdowa, Jezdnia wewnętrzna) - LANE - Pas ruchu, na którym występuje zdarzenie (np. prawy, lewy, awaryjny, pas 1, pas 2) - VEHICLE_TYPE - Typ pojazdu biorący udział w zdarzeniu. Wartość pola 'keyword' w tej kategorii jest typem 'components/schemas/VehicleType' - VEHICLE_TYPE_OTHER - Typ pojazdu biorący udział w zdarzeniu, jeśli wartość jest poza słownikiem dla kategorii VEHICLE_TYPE (np. karetka pogotowia, traktor) - TOTAL_NUMBER_OF_VEHICLES - Liczba pojazdów uczestniczących w zdarzeniu (np. 1, 2, 5) - TOTAL_NUMBER_OF_INJURED - Liczba poszkodowanych w zdarzeniu (np. 1, 2) - PARTICIPANTS_LOCATION - Miejsce, w którym znajdują się uczestnicy zdarzenia (np. jezdnia, pobocze, pas zieleni) - DETECTION_EVENT_TYPE - Rodzaj zgłoszenia. Wartość pola 'keyword' w tej kategorii jest typem 'components/schemas/DetectionEventType' - ACCIDENT - Wykryte słowa związane z wypadkiem drogowym (np. kolizja, zderzenie, najechanie, karambol, wypadnięcie z drogi) - OBSTRUCTION - Wykryte słowa związane z utrudnieniem na drodze (np. powalone drzewo, konar na drodze, zadymienie, zgubiony ładunek) - ROAD_CONDITION - Wykryte słowa związane z warunkami drogowymi (np. marznący deszcz, luźny śnieg, błoto pośniegowe, zalana droga) - ENVIRONMENT_CONDITION - Wykryte słowa związane z warunkami pogodowymi (np. grad, mgła, marznąca mgła, wichura) - ROADWORK - Wykryte słowa związane z robotami drogowymi (np. koszenie, malowanie pasów, odnawianie nawierzchni) - ABNORMAL_TRAFFIC - Wykryte słowa związane z płynnością ruchu (np. korek, kolejka, pojazd jadący za szybko) enum: - ROAD_NUMBER - ROAD_KILOMETERS - ROAD_METERS - ROAD_DIRECTION - ROAD_INTERCHANGE - VOIVODESHIP - NEAREST_TOWN - TOWNS_BETWEEN - TRAFFIC_CONSTRICTION - TRAFFIC_CONSTRICTION_OTHER - PAVEMENT_TYPE - PAVEMENT_TYPE_OTHER - LANE - VEHICLE_TYPE - VEHICLE_TYPE_OTHER - TOTAL_NUMBER_OF_VEHICLES - TOTAL_NUMBER_OF_INJURED - PARTICIPANTS_LOCATION - DETECTION_EVENT_TYPE - ACCIDENT - OBSTRUCTION - ROAD_CONDITION - ENVIRONMENT_CONDITION - ROADWORK - ABNORMAL_TRAFFIC TrafficConstriction: description: | Typ ograniczenia ruchu spowodowany zdarzeniem: - CARRIAGEWAY_BLOCKED - Jezdnia zablokowana - ROAD_BLOCKED - Droga zablokowana enum: - CARRIAGEWAY_BLOCKED - ROAD_BLOCKED PavementType: description: | Typ jezdni, na której wystąpiło zdarzenie: - MAIN_CARRIAGEWAY - Jezdnia zasadnicza - RIGHT_HAND_PARALLEL_CARRIAGEWAY - Jezdnia zbierająco-rozprowadzająca - ENTRY_SLIP_ROAD - Łącznica wjazdowa - EXIT_SLIP_ROAD - Łącznica zjazdowa enum: - MAIN_CARRIAGEWAY - RIGHT_HAND_PARALLEL_CARRIAGEWAY - ENTRY_SLIP_ROAD - EXIT_SLIP_ROAD VehicleType: description: | Typ pojazdu biorący udział w zdarzeniu: - CAR - Samochód osobowy - LORRY - Samochód ciężarowy - CAR_WITH_TRAILER - Samochód z przyczepą - MOTORCYCLE - Motocykl - TANKER - Cysterna - BUS - Autobus - BICYCLE -Rower enum: - CAR - LORRY - CAR_WITH_TRAILER - MOTORCYCLE - TANKER - BUS - BICYCLE DetectionEventType: description: | Rodzaj zgłoszenia: - VEHICLE_BREAKDOWN - Awaria pojazdu - VEHICLE_ACCIDENT - Wypadek - UPSTREAM_VEHICLE - Pojazd jadący pod prąd - SLOW_VEHICLE - Wolno poruszający się pojazd - OBJECT_ON_ROAD - Obiekt na drodze - PEDESTRIAN_ON_ROAD - Pieszy na drodze - PEDESTRIAN_ON_ROADSIDE - Pieszy na poboczu - ANIMAL_ON_ROAD - Zwierzę na drodze - CONGESTION - Zator - STRONG_WINDS - Silny wiatr - VISIBILITY_REDUCED - Ograniczona widoczność - HEAVY_RAIN - Intensywny opad - SLIPPERY_ROAD - Śliska droga - BLACK_ICE - Gołoledź enum: - VEHICLE_BREAKDOWN - VEHICLE_ACCIDENT - UPSTREAM_VEHICLE - SLOW_VEHICLE - OBJECT_ON_ROAD - PEDESTRIAN_ON_ROAD - PEDESTRIAN_ON_ROADSIDE - ANIMAL_ON_ROAD - CONGESTION - STRONG_WINDS - VISIBILITY_REDUCED - HEAVY_RAIN - SLIPPERY_ROAD - BLACK_ICE requestBodies: Call: description: Obiekt odebranej rozmowy przychodzącej lub wychodzącej content: application/json: schema: $ref: '#/components/schemas/Call' CallEvent: description: Obiekt zdarzenia związanego z obsługą rozmowy content: application/json: schema: $ref: '#/components/schemas/CallEvent' CallKeyword: description: Obiekt skategoryzowanego słowa kluczowego wypowiadanego przez rozmówcę content: application/json: schema: $ref: '#/components/schemas/CallKeyword' securitySchemes: sc_auth: type: http scheme: basic