Changes for page Методы API для работы с ГЛОНАССSoft
Last modified by Андрей Калиновский on 2025/03/12 10:28
Change comment:
There is no comment for this version
Summary
Details
- Page properties
-
- Content
-
... ... @@ -10,7 +10,7 @@ 10 10 11 11 (% style="color:#000000" %)−(%%) Между запросами должна быть пауза в 1 секунду (превышение отвергается системой с уведомлением о превышении частоты запросов). 12 12 13 -(% style="color:#000000" %)−(%%) Для работы со всеми методами API необходимо в заголовок добавлять X-Auth (токен авторизации, получаемый методом auth/login). 13 +(% style="color:#000000" %)−(%%) Для работы со всеми методами API необходимо в заголовок добавлять **X-Auth** (токен авторизации, получаемый методом **auth/login**). 14 14 15 15 Пример: X-Auth: 34f4919a-099b-4b7d-8aa1-f478ec2062de. 16 16 ... ... @@ -31,7 +31,7 @@ 31 31 32 32 (% style="color:#000000" %)URL запроса: (%%)[[https:~~/~~/hosting.glonasssoft.ru/api/v3/auth/login?username=demo&password=demo>>url:https://hosting.glonasssoft.ru/api/v3/auth/login?username=demo&password=demo]] 33 33 34 -(% style="color:#000000" %)В случае успешного выполнения метода, поле «AuthId» содержит токен авторизации «X-Auth». 34 +(% style="color:#000000" %)В случае успешного выполнения метода, поле «__**AuthId**__» содержит токен авторизации «__**X-Auth**__». 35 35 36 36 (% lang="en-US" %) 37 37 (% style="color:#000000" %)**Ответ:** ... ... @@ -44,7 +44,7 @@ 44 44 "User": "" , ~/~/ имя пользователя 45 45 46 46 (% lang="en-US" %) 47 - 47 +} 48 48 49 49 **Примечание: **Время жизни токена авторизации задается в настройках пользователя, там есть параметр длительность сессии. При каждом запросе токен пролонгируется. 50 50 ... ... @@ -82,13 +82,13 @@ 82 82 83 83 (% style="color:#000000" %)− возвращается информация о клиенте, которому принадлежит авторизованный пользователь, и его дочерних клиентах; 84 84 85 -(% style="color:#000000" %)− информация о клиенте типа «Партнер» и его подклиентов возвращается при наличии права «Доступ к партнёрским клиентам». 85 +(% style="color:#000000" %)− информация о клиенте типа «Партнер» и его подклиентов возвращается при наличии права «__**Доступ к партнёрским клиентам**__». 86 86 87 87 (% style="color:#000000" %)Метод запроса: **GET** 88 88 89 89 (% style="color:#000000" %)URL запроса: (%%)[[https:~~/~~/hosting.glonasssoft.ru/api/v3/agents?parentId=>>url:https://hosting.glonasssoft.ru/api/v3/agents?parentId=]](% style="color:#000000" %)<parentId> 90 90 91 -(% style="color:#000000" %)Параметр запроса: <parentId> - идентификатор клиента-родителя (опционально) 91 +(% style="color:#000000" %)Параметр запроса: <__**parentId**__> - идентификатор клиента-родителя (опционально) 92 92 93 93 (% style="color:#000000" %)В заголовках запроса: X-Auth: Токен авторизации 94 94 ... ... @@ -99,14 +99,11 @@ 99 99 "parentId": "", ~/~/ идентификатор клиента-родителя 100 100 "name": "", ~/~/ наименование клиента 101 101 "fullName": "", ~/~/ полное наименование клиента 102 - "agentInfoType": "", ~/~/ тип клиента1 102 + "agentInfoType": "", ~/~/ тип клиента (0- Клиент, 1 - Партнер, 2 - Группа, 3 - Административная группа, 4 - Тестовый клиент, 5 - Договор) 103 103 "status": "", ~/~/ статус клиента 104 - 104 +} 105 105 106 106 107 -(% style="color:#000000" %)**Примечание:** возможные значение параметра agentInfoType: (% lang="en-US" %)[(% style="color:#000000; font-family:Liberation Serif,serif; font-size:12pt; font-style:normal; font-variant:normal; font-weight:normal" %)0 – Клиент, 1 – Партнер, 2 – Группа, 3 - Административная группа, 4 - Тестовый клиент, 5 - договор(% style="color:#000000" %)] 108 - 109 - 110 110 (% class="box" style="text-align: center;" %) 111 111 ((( 112 112 (% style="color:#000000; font-size:14pt" %)**Раздел Пользователи** ... ... @@ -145,7 +145,7 @@ 145 145 "kind": "", ~/~/ тип аутентификации (None - выключена, Email - по email) 146 146 "target": "" , ~/~/ в случае аутентификации по email - email-адрес 147 147 "groups": "" , ~/~/ группы пользователя, названия групп 148 - 145 +} 149 149 150 150 (% style="text-align:left" %) 151 151 (% style="color:#000000; font-weight:normal" %)Ответ: ... ... @@ -173,7 +173,7 @@ 173 173 "groups": "" , ~/~/ группы пользователя, «user» названия группы пользователя 174 174 175 175 (% style="text-align:left" %) 176 -(% style="color:#000000; font-weight:normal" %) 173 +(% style="color:#000000; font-weight:normal" %)} 177 177 178 178 179 179 (% class="box successmessage" %) ... ... @@ -198,7 +198,7 @@ 198 198 "login": "qqqqqq", ~/~/ Логин пользователя, по которому фильтруется, null - неважно 199 199 "email": "eee", ~/~/ Email пользователя, по которому фильтруется, null - неважно 200 200 201 -(% style="color:#000000" %) 198 +(% style="color:#000000" %)} 202 202 203 203 (% style="color:#000000" %)Ответ: 204 204 ... ... @@ -218,7 +218,7 @@ 218 218 "status": "1", ~/~/ статус пользователя 219 219 "astLogged": "", ~/~/ дата/время последней авторизации 220 220 221 -(% style="color:#000000" %) 218 +(% style="color:#000000" %)} 222 222 223 223 224 224 (% class="box warningmessage" %) ... ... @@ -261,16 +261,16 @@ 261 261 "groups": "" , ~/~/ группы пользователя, «user» названия группы пользователя 262 262 263 263 (% lang="en-US" style="text-align:left" %) 264 -(% lang="ru-RU" style="color:#000000; font-weight:normal" %) // //__}__261 +(% lang="ru-RU" style="color:#000000; font-weight:normal" %)__}__ 265 265 266 266 (% lang="en-US" style="text-align:left" %) 267 267 (% lang="ru-RU" style="color:#000000; font-weight:normal" %)//Ответ~:// 268 268 269 269 (% lang="en-US" style="text-align:left" %) 270 -(% lang="ru-RU" style="color:#000000; font-weight:normal" %) //{//267 +(% lang="ru-RU" style="color:#000000; font-weight:normal" %){ 271 271 272 272 (% lang="en-US" style="text-align:left" %) 273 -(% lang="ru-RU" style="color:#000000; font-weight:normal" %) //"id": "" , ~/~/ идентификатор пользователя270 +(% lang="ru-RU" style="color:#000000; font-weight:normal" %) "id": "" , ~/~/ идентификатор пользователя 274 274 "lastName": "" , ~/~/ фамилия 275 275 "firstName": "" , ~/~/ имя 276 276 "position": "" , ~/~/ должность ... ... @@ -286,10 +286,10 @@ 286 286 "doubleAuth": "" , ~/~/ параметры двухфакторной аутентификации 287 287 "kind": "" , ~/~/ тип аутентификации 288 288 "target": "" , ~/~/ в случае аутентификации по email - email-адрес 289 - "groups": "" , ~/~/ группы пользователя, «user» названия группы пользователя //286 + "groups": "" , ~/~/ группы пользователя, «user» названия группы пользователя 290 290 291 291 (% lang="en-US" style="text-align:left" %) 292 -(% lang="ru-RU" style="color:#000000; font-weight:normal" %) // //}289 +(% lang="ru-RU" style="color:#000000; font-weight:normal" %)} 293 293 294 294 295 295 (% class="box warningmessage" %) ... ... @@ -303,7 +303,7 @@ 303 303 304 304 (% style="color:#000000" %)URL запроса: (%%)[[https:~~/~~/hosting.glonasssoft.ru/api/v3/users/status/>>url:https://hosting.glonasssoft.ru/api/v3/users/status/]](% style="color:#000000" %){id} 305 305 306 -(% style="color:#000000" %)Параметр запроса: {id} - Guid пользователя 303 +(% style="color:#000000" %)Параметр запроса: {__**id**__} - Guid пользователя 307 307 308 308 (% style="color:#000000" %)В заголовках запроса: X-Auth: Токен авторизации 309 309 ... ... @@ -315,7 +315,7 @@ 315 315 "description": "" , ~/~/ описание 316 316 "data": "" , ~/~/ данные, связанные со сменой статуса 317 317 318 - 315 +(% style="color:#000000" %)} 319 319 320 320 (% style="text-align:left" %) 321 321 (% style="color:#000000" %)**Ответ: В случае успешного выполнения запроса вернется HTTP ответ «200»** ... ... @@ -383,7 +383,7 @@ 383 383 "unitName": "" , ~/~/ наименование подразделения 384 384 "status": "" , ~/~/ статус объекта 385 385 386 - 383 +} 387 387 388 388 (% style="text-align:left" %) 389 389 Параметр «status» содержит id статуса объекта в системе, соответствие id и текстовое названия статуса приведены ниже: ... ... @@ -425,7 +425,7 @@ 425 425 "mileageEnabled": true, ~/~/ флаг активности счётчика "пробег" 426 426 "motohours": "" , ~/~/ моточасы 427 427 "motohoursEnabled": true ~/~/ флаг активности счётчика "моточасы" 428 - }, 425 + }, 429 429 "cmsv6Parameters": { ~/~/ параметры CMSv6 430 430 "enabled": true, ~/~/ флаг включения 431 431 "id": "" , ~/~/ идентификатор ... ... @@ -432,7 +432,7 @@ 432 432 "host": "" , ~/~/ IP-адрес или доменное имя из URL веб-сайта CMSV6 433 433 "login": "" , ~/~/ имя учетной записи 434 434 "password": "" ~/~/ пароль учетной записи 435 - }, 432 + }, 436 436 "inspectionTasks": ~/~/ задания на ТО 437 437 { 438 438 "enabled": "" , ~/~/ Признак включения ... ... @@ -470,7 +470,7 @@ 470 470 "motohoursEnabled": true, 471 471 "mileage": "", 472 472 "motohours": 345.0 473 - }, 470 + }, 474 474 "cmsv6Parameters": { ~/~/Параметры CmsV6 475 475 "id": null, 476 476 "enabled": true, ~/~/флаг включения ... ... @@ -477,7 +477,7 @@ 477 477 "host": "", ~/~/ IP-адрес или доменное имя из URL веб-сайта CMSV6 478 478 "login": "", ~/~/ имя учетной записи 479 479 "password": "" ~/~/ пароль учетной записи 480 - }, 477 + }, 481 481 "inspectionTasks": { ~/~/ задания на ТО 482 482 "id": "", ~/~/ ID задачи 483 483 "enabled": false, ~/~/ Признак включения ... ... @@ -490,7 +490,7 @@ 490 490 "periodicCondition": "", ~/~/ Условие периодичности по времени 491 491 "kind": "", ~/~/ Вид периодичности по времени 492 492 "maxQuantity": "" ~/~/ Сколько раз выполнить задание (null - однократно) 493 - 490 + } 494 494 495 495 (% style="text-align:left" %) 496 496 (% style="color:#000000" %)} ... ... @@ -581,34 +581,34 @@ 581 581 582 582 (% style="color:#000000" %)В заголовках запроса: X-Auth: Токен авторизации 583 583 584 -(% style="color:#000000" %)Параметры в теле запроса (JSON): {581 +(% style="color:#000000" %)Параметры в теле запроса (JSON): 585 585 583 +(% style="color:#000000" %){ 586 586 587 -(% class="western" %) 588 -{{{ "status": "", // значение статуса (-1 - Новый, 0 - Блокировка, 1 - Активен, 2 - Отменен, 3 - Оборудован, 4 - Диагностика, 589 - // 5 - Сервис, 6 - Демонтаж, 7 - Монтаж, 8 - Дозаказ, 9 - Обслужен, 10 - Списан, 590 - // 11 - Неисправен, 12 - Проверен, 13 - Не эксплуатируется) 591 - "date": "", // Дата смены статуса (null если сменить немедленно) 592 - "description": "", // Описание 593 - "data": "", // Данные 594 - "overwrite": false, // Флаг перезаписи 595 - "stage": "", // Состояние, может быть null}}} 585 + "status": "", ~/~/ значение статуса (-1 - Новый, 0 - Блокировка, 1 - Активен, 2 - Отменен, 3 - Оборудован, 4 - Диагностика, 586 + ~/~/ 5 - Сервис, 6 - Демонтаж, 7 - Монтаж, 8 - Дозаказ, 9 - Обслужен, 10 - Списан, 587 + ~/~/ 11 - Неисправен, 12 - Проверен, 13 - Не эксплуатируется) 588 + "date": "", ~/~/ Дата смены статуса (null если сменить немедленно) 589 + "description": "", ~/~/ Описание 590 + "data": "", ~/~/ Данные 591 + "overwrite": false, ~/~/ Флаг перезаписи 592 + "stage": "", ~/~/ Состояние, может быть null 596 596 597 - 598 598 (% style="color:#000000" %)} 599 599 600 -(% style="color:#000000" %)Ответ: {596 +(% style="color:#000000" %)Ответ: 601 601 602 -(% class="western" %) 603 -{{{ "status": "", // значение статуса 604 - "date": "", // Дата смены статуса 605 - "description": "", // Описание 606 - "data": "", // Данные 607 - "overwrite": false, // Флаг перезаписи 608 - "stage": "", // Состояние}}} 598 +(% style="color:#000000" %){ 609 609 600 + "status": "", ~/~/ значение статуса 601 + "date": "", ~/~/ Дата смены статуса 602 + "description": "", ~/~/ Описание 603 + "data": "", ~/~/ Данные 604 + "overwrite": false, ~/~/ Флаг перезаписи 605 + "stage": "", ~/~/ Состояние 606 + 610 610 (% style="text-align:left" %) 611 -(% style="color:#000000" %)} 608 +(% style="color:#000000" %) } 612 612 613 613 614 614 (% class="box warningmessage" %) ... ... @@ -626,14 +626,102 @@ 626 626 627 627 (% style="color:#000000" %)Параметры в теле запроса (JSON): 628 628 629 -(% style="color:#000000" %) //Обязательные параметры наименование и модель объекта //В теле запроса - объект JSON{«vehicleId»:«», //ID ТС «parentId»:«», //ID клиента «name»:«», //имя ТС «imei»:«»,//IMEI «deviceTypeId»: «», //ID типа устройства «modelId»: «», «unitId»: «», //ID подразделения «sim1»: «», //SIM 1 «sim2»: «», //SIM2 «consumptionPer100Km»: «», //Расход топлива на 100 км «consumptionIdle»: «», //Расход топлива на холостом ходу «counters»: { «mileageEnabled»: true, //флаг активности счётчика «пробег» «motohoursEnabled»: true, //флаг активности счётчика «моточасы» «mileage»: «», //пробег «motohours»: «» //моточасы }, «cmsv6Parameters»: { //параметры CMSv6 «id»: «», //идентификатор «enabled»: true, //флаг включения «host»: «», //IP-адрес или доменное имя из URL веб-сайта CMSV6 «login»: «», //имя учетной записи «password»: «» //пароль учетной записи }, «inspectionTasks»: [ //задания на ТО { «id»: «», //ID задания «enabled»: false, //Признак включения «name»: «», //Имя задания «description»: «», //Описание задания «mileageCondition»: «», //Условие по пробегу (в метрах, null - условие не работает) «lastMileage»: «», //Пробег (в метрах) на момент последнего ТО (null - неважно) «motohoursCondition»: «», //Условие по моточасам (в секундах, null - условие не работает) «lastMotohours»: «», //Моточасы (в секундах) на момент последнего ТО (null - неважно) «periodicCondition»: «», //Условие периодичности по времени (null - условие не работает) «kind»: «», //Вид периодичности по времени «maxQuantity»: «» //Сколько раз выполнить задание } ] }626 +(% style="color:#000000" %){ 630 630 628 +(% style="color:#000000" %) "vehicleId": "", ~/~/ ID ТС 629 + "parentId": "", ~/~/ ID клиента 630 + "name": "", ~/~/ имя ТС 631 + "imei": "", ~/~/ IMEI 632 + "deviceTypeId": "", ~/~/ ID типа устройства 633 + "modelId": "", ~/~/ , ID модели 634 + "unitId": "", ~/~/ подразделения 635 + "sim1": "", ~/~/ SIM 1 636 + "sim2": "", ~/~/ SIM2 637 + "consumptionPer100Km": "", ~/~/ Расход топлива на 100 км 638 + "consumptionIdle": "", ~/~/ Расход топлива на холостом ходу 639 + "counters": 640 + { 641 + "mileageEnabled": true, ~/~/ флаг активности счётчика «пробег» 642 + "motohoursEnabled": true, ~/~/ флаг активности счётчика «моточасы» 643 + "mileage": «», пробег 644 + "motohours": «» моточасы 645 + } 646 + "cmsv6Parameters": ~/~/ параметры CMSv6 647 + { 648 + "id": "", ~/~/ идентификатор 649 + "enabled": true, ~/~/ флаг включения 650 + "host": "", ~/~/ IP-адрес или доменное имя из URL веб-сайта CMSV6 651 + "login": "", ~/~/ имя учетной записи 652 + "password": "", ~/~/ пароль учетной записи 653 + } 654 + "inspectionTasks": ~/~/ задания на ТО 655 + { 656 + "id": "", ~/~/ ID задания 657 + "enabled": false, ~/~/ Признак включения 658 + "name": "", ~/~/ Имя задания 659 + "description": "", ~/~/ Описание задания 660 + "mileageCondition": "", ~/~/ Условие по пробегу (в метрах, null - условие не работает) 661 + "lastMileage": "", ~/~/ Пробег (в метрах) на момент последнего ТО (null - неважно) 662 + "motohoursCondition": "", ~/~/ Условие по моточасам (в секундах, null - условие не работает) 663 + "lastMotohours": "", ~/~/ Моточасы (в секундах) на момент последнего ТО (null - неважно) 664 + "periodicCondition": "", ~/~/ Условие периодичности по времени (null - условие не работает) 665 + "kind": "", ~/~/ Вид периодичности по времени 666 + "maxQuantity": "", ~/~/ Сколько раз выполнить задание 667 + } 668 + 669 +(% style="color:#000000" %)} 670 + 631 631 (% style="color:#000000" %)Ответ: 632 632 633 633 (% lang="en-US" style="text-align:left" %) 634 -(% lang="ru-RU" style="color:#000000; font-weight:normal" %){ «vehicleId»:«», //ID ТС «parentId»:«», //ID клиента «name»:«», //имя ТС «imei»:«»,//IMEI «deviceTypeId»: «», //ID типа устройства «modelId»: «», «unitId»: «», //ID подразделения «sim1»: «», //SIM 1 «sim2»: «», //SIM2 «consumptionPer100Km»: «», //Расход топлива на 100 км «consumptionIdle»: «», //Расход топлива на холостом ходу «counters»: { «mileageEnabled»: true, //флаг активности счётчика «пробег» «motohoursEnabled»: true, //флаг активности счётчика «моточасы» «mileage»: «», //пробег «motohours»: «» //моточасы }, «cmsv6Parameters»: { //параметры CMSv6 «id»: «», //идентификатор «enabled»: true, //флаг включения «host»: «», //IP-адрес или доменное имя из URL веб-сайта CMSV6 «login»: «», //имя учетной записи «password»: «» //пароль учетной записи }, «inspectionTasks»: [ //задания на ТО { «id»: «», //ID задания «enabled»: false, //Признак включения «name»: «», //Имя задания «description»: «», //Описание задания «mileageCondition»: «», //Условие по пробегу «lastMileage»: «», //Пробег (в метрах) на момент последнего ТО «motohoursCondition»: «», //Условие по моточасам «lastMotohours»: «», //Моточасы «periodicCondition»: «», //Условие периодичности по времени «kind»: «», //Вид периодичности по времени «maxQuantity»: «» //Сколько раз выполнить задание } ] }674 +(% lang="ru-RU" style="color:#000000; font-weight:normal" %){ 635 635 676 +(% lang="en-US" style="text-align:left" %) 677 + "vehicleId": "", ~/~/ ID ТС 678 + "parentId": "", ~/~/ ID клиента 679 + "name": "", ~/~/ имя ТС 680 + "imei": "", ~/~/ IMEI 681 + "deviceTypeId": "", ~/~/ типа устройства 682 + "modelId": "", ~/~/ ID модели 683 + "unitId": "", ~/~/ ID подразделения 684 + "sim1": "", ~/~/ SIM 1 685 + "sim2": "", ~/~/ SIM2 686 + "consumptionPer100Km": "", ~/~/ Расход топлива на 100 км 687 + "consumptionIdle": "", ~/~/ Расход топлива на холостом ходу 688 + "counters": 689 + { 690 + "mileageEnabled": true, ~/~/ флаг активности счётчика «пробег» 691 + "motohoursEnabled": true, ~/~/ флаг активности счётчика «моточасы» 692 + "mileage": "", ~/~/ пробег 693 + "motohours": "", ~/~/ моточасы 694 + } 695 + "cmsv6Parameters": ~/~/ параметры CMSv6 696 + { 697 + "id": ~/~/ идентификатор 698 + "enabled": true, ~/~/ флаг включения 699 + "host": "", ~/~/ IP-адрес или доменное имя из URL веб-сайта CMSV6 700 + "login": "", ~/~/ имя учетной записи 701 + "password": "", ~/~/ пароль учетной записи 702 + } 703 + "inspectionTasks": ~/~/ задания на ТО 704 + { 705 + "id": "", ~/~/ ID задания 706 + "enabled": false, ~/~/ Признак включения 707 + "name": "", ~/~/ Имя задания 708 + "description": "", ~/~/ Описание задания 709 + "mileageCondition": "", ~/~/ Условие по пробегу 710 + "lastMileage": "", ~/~/ Пробег (в метрах) на момент последнего ТО 711 + "motohoursCondition": "", ~/~/ Условие по моточасам 712 + "lastMotohours": "", ~/~/ Моточасы 713 + "periodicCondition": "", ~/~/ Условие периодичности по времени 714 + "kind": "", ~/~/ Вид периодичности по времени 715 + "maxQuantity": "", ~/~/ Сколько раз выполнить задание 716 + } 636 636 718 +(% lang="en-US" style="text-align:left" %) 719 +(% lang="ru-RU" style="color:#000000; font-weight:normal" %)} 720 + 721 + 637 637 (% class="box errormessage" %) 638 638 ((( 639 639 (% style="color:#000000; line-height:100%" %)**Удаление объекта — **(% lang="en-US" %)**DELETE /api/v3/vehicles/{vehicleId}** ... ... @@ -671,16 +671,15 @@ 671 671 672 672 (% style="color:#000000" %)В заголовках запроса: X-Auth: Токен авторизации 673 673 674 -(% style="color:#000000" %)Ответ: [759 +(% style="color:#000000" %)Ответ: 675 675 676 -(% class="western" %) 677 -{{{ { 678 - "deviceTypeId" : "", // ID типа устройства 679 - "deviceTypeName" : "" // Название типа устройства 680 - },}}} 761 +(% style="color:#000000" %){ 681 681 763 + "deviceTypeId" : "", ~/~/ ID типа устройства 764 + "deviceTypeName" : "" ~/~/ Название типа устройства 765 + 682 682 (% style="text-align:left" %) 683 -(% style="color:#000000" %) …** **]767 +(% style="color:#000000" %)} 684 684 685 685 686 686 (% class="box" style="text-align: center;" %) ... ... @@ -701,19 +701,16 @@ 701 701 702 702 (% style="color:#000000" %)В заголовках запроса:X-Auth: Токен авторизации 703 703 704 -(% style="color:#000000" %)Ответ: [788 +(% style="color:#000000" %)Ответ: 705 705 706 -(% class="western" style="margin-bottom:19px" %) 707 -{{{ {}}} 790 +(% style="color:#000000" %){ 708 708 709 -(% style="color:#000000" %)«id»: «», //ID типа датчика «name»: «», //Название 792 + "id": "", ~/~/ ID типа датчика 793 + "name": "", ~/~/ Название 794 + "description": "", ~/~/ Описание 710 710 711 -(% class="western" %) 712 -{{{ "description": "" // Описание 713 - },}}} 714 - 715 715 (% style="text-align:left" %) 716 -(% style="color:#000000" %) … ]797 +(% style="color:#000000" %)} 717 717 718 718 719 719 (% class="box" lang="en-US" style="text-align: center;" %)