# Описание на файловете

Този документ представя структурата от данни на приложението.

Използват се 5 основни файла:

1. `stops.json`
2. `routes.json`
3. `directions.json`
4. `trips.json`
5. `stop_times.json`

## 1. `stops.json`

Файлът `stops.json` съдържа информация за спирките в мрежата за обществен транспорт.

### Атрибути:

| Атрибут         | Тип       | Описание                                                       |
|-----------------|-----------|----------------------------------------------------------------|
| `code`          | Integer   | Уникален код на спирката                 |
| `coords`        | Array     | Масив с географските координати на спирката (ширина и дължина).    |
| `names`         | Object    | Обект, съдържащ имената на спирката на различни езици.|

### Пример:

```json
{
  "code": 2,
  "coords": [42.7357, 23.30533],
  "names": {
    "bg": "102-РО ОУ"
  }
}
```

## 2. `routes.json`

Файлът `routes.json` съдържа информация за различните маршрути в мрежата за обществен транспорт.

### Атрибути:

| Име на атрибута  | Тип      | Описание                                                      |
|------------------|----------|---------------------------------------------------------------|
| `route_ref`      | String / Integer   | Идентификатор за маршрута.   |
| `type`           | String   | Вид на транспортното средство (например: `bus`, `trolley`, `tram`, `subway`). |
| `subtype`        | String   | (Пожелателен) Подтип на маршрута (`temporary` за временен маршрут, `night` за нощен маршрут и `school` за училищен маршрут). |

### Пример:

```json
{
  "route_ref": 8,
  "type": "tram"
},
{
  "route_ref": "10ТМ",
  "type": "bus",
  "subtype": "temporary"
},
{
  "route_ref": "N1",
  "type": "bus",
  "subtype": "night"
}
```

## 3. `directions.json`

Файлът `directions.json` съдържа информация за различните направления на всеки маршрут.

### Атрибути:

| Име на атрибута  | Тип      | Описание                                                      |
|------------------|----------|---------------------------------------------------------------|
| `code`           | Integer  | Уникален идентификатор за направлението. <br> ⚠️ **Забележка**: идентификатора не е постоянен, променя се при всяко обновяване на данните.|
| `stops`          | Array    | Списък от кодове на спирки, през които минава маршрутът в това направление. |

### Пример:

```json
{
  "code": 1,
  "stops": [2542, 1033, 318, ..., 6637, 6618, 2759, 2760]
}
```

## 4. `trips.json`

Файлът `trips.json` съдържа информация за отделните пътувания по маршрутите.

### Атрибути:

| Име на атрибута  | Тип       | Описание                                                      |
|------------------|-----------|---------------------------------------------------------------|
| `route_index`    | Integer   | Индекс на маршрута (спрямо `routes.json`), към който принадлежи пътуването.           |
| `direction`      | Integer   | Идентификатор за направлението, който прави връзка с `directions.json` и определя спирките за курса.         |
| `is_weekend`     | Boolean   | Флаг, указващ дали пътуването е за неработни дни (`true`) или за работни дни (`false`). |

### Пример:

```json
{
  "route_index": 0,
  "direction": 247,
  "is_weekend": false
},
{
  "route_index": 0,
  "direction": 247,
  "is_weekend": true
},
{
  "route_index": 0,
  "direction": 248,
  "is_weekend": false
},
{
  "route_index": 0,
  "direction": 248,
  "is_weekend": true
}
```

## 5. `stop_times.json`

Файлът `stop_times.json` съдържа информация за времевите разписания на спирките за всяко пътуване.

### Атрибути:

| Име на атрибута  | Тип       | Описание                                                      |
|------------------|-----------|---------------------------------------------------------------|
| `times`          | Array     | Масив от времена, представени в минути от полунощ. <br><br> Всяко число съответства на време за спирка, като първото време е за първата спирка и т.н. <br> Стойността `null` указва, че превозното средство не спира на съответната спирка. |
| `trip`           | Integer   | Идентификатор на пътуването, който прави връзка с `trips.json`. |

### Пример:

```json
{
  "times": [1331, 1333, 1335, 1337, 1338, 1340, 1342, 1345, 1347, 1350, 1351, 1353, 1355, 1358, 1360, 1362, null],
  "trip": 0
}

