hw_api::content — Returns content of an object
(PHP 4, PHP 5 hw_api::content — Returns content of an object
Описание
This function returns the content of a document as an object of type hw_api_content.
Список параметров
The parameter array contains the required elements ‘objectidentifier’ and the optional element ‘mode’. The mode can be one of the constants HW_API_CONTENT_ALLLINKS , HW_API_CONTENT_REACHABLELINKS or HW_API_CONTENT_PLAIN .
HW_API_CONTENT_ALLLINKS means to insert all anchors even if the destination is not reachable.
HW_API_CONTENT_REACHABLELINKS tells this method to insert only reachable links and HW_API_CONTENT_PLAIN will lead to document without any links.
Возвращаемые значения
Returns an instance of hw_api_content.
Hyperwave API Функции
Integration with Apache
The integration with Apache and possible other servers is already described in the Hyperwave module which has been the first extension to connect a Hyperwave Server.
> The API prov > HW_API
Some basic >HW_API_String, HW_API_String_Array, etc., which exist in the Hyperwave SDK have not been implemented since PHP has powerful replacements for them.
Each > objectIdentifier The name or id of an object, e.g. «rootcollection», «0x873A8768 0x00000002».
Methods returning boolean can return TRUE, FALSE or HW_API_Error object.
hw_api_content
(PHP 4, PHP 5 hw_api_content — Create new instance of class hw_api_content
Описание
Creates a new content object from the string content.
Список параметров
The mimetype for the contents.
Возвращаемые значения
НОВОСТИ ФОРУМА Рыцари теории эфира |
01.10.2020 — 05:20: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education -> [center][Youtube]69vJGqDENq4[/Youtube][/center] [center]14:36[/center] Osievskii Global News 29 сент. Отправлено 05:20, 01.10.2020 г.’ target=_top>Просвещение от Вячеслава Осиевского — Карим_Хайдаров. 30.09.2020 — 12:51: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education -> [center][Ok]376309070[/Ok][/center] [center]11:03[/center] Отправлено 12:51, 30.09.2020 г.’ target=_top>Просвещение от Дэйвида Дюка — Карим_Хайдаров. 30.09.2020 — 11:53: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education -> [center][Youtube]VVQv1EzDTtY[/Youtube][/center] [center]10:43[/center] |
интервью Раввина Борода https://cursorinfo.co.il/all-news/rav.
мой телеграмм https://t.me/peshekhonovandrei
мой твиттер https://twitter.com/Andrey54708595
мой инстаграм https://www.instagram.com/andreipeshekhonow/
[b]Мой комментарий:
Андрей спрашивает: Краснодарская синагога — это что, военный объект?
— Да, военный, потому что имеет разрешение от Росатома на манипуляции с радиоактивными веществами, а также иными веществами, опасными в отношении массового поражения. Именно это было выявлено группой краснодарцев во главе с Мариной Мелиховой.
[center][Youtube]CLegyQkMkyw[/Youtube][/center]
[center]10:22 [/center]
Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html
Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
http://av-inf.blogspot.com/2013/12/dalles.html
[center][b]Сон разума народа России [/center]
[center][Youtube]CLegyQkMkyw[/Youtube][/center]
[center]10:22 [/center]
Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html
Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
http://av-inf.blogspot.com/2013/12/dalles.html
[center][b]Сон разума народа России [/center]
Руководство по построению HTTP API
Введение
Данное руководство содержит рекомендации по проектированию HTTP API, которые были почерпнуты из работы API облачной платформы Heroku, кроме того, оно также содержит информацию о новом функционале и внутреннем API в Heroku.
Нашими основными целями при построении API является соблюдение последовательности и концентрация на реализации бизнес-логики. Мы ищем различные, не обязательно самые лучшие, но хорошо документируемые способы разработки API.
При прочтении данной статьи подразумевается, что вы знакомы с основными принципами HTTP и JSON.
Основы
Принцип разделения ответственности
При проектировании старайтесь сохранять простоту системы, разделяя ответственность между различными частями цикла «запрос-ответ». При этом простота принимаемых решений позволит концентироваться на решении все более сложных задач. Запросы и ответы выполняются для получения доступа к определенному ресурсу или набору ресурсов. Для определения сущности, которую необходимо получить, используйте путь и тело ответа для передачи содержимого, а заголовки – для передачи метаданных. Можно передавать все параметры в теле запроса, но, как показывает практика, такое решение является менее гибким. Более правильным подходом будет передача части параметров в заголовках.
Требуйте использования защищенных соединений
Для получения данных при помощи API используйте только защищенные соединения с TLS.
Лучше решением было бы отклонять все запросы, не использующие TLS, а именно запросы по http или на 80-ый порт, во избежание небезопасного обмена данными. В случаях, когда это невозможно, отдавайте ответ 403 Forbidden .
14 ноября в 10:00, Санкт-Петербург, беcплатно
Перенаправления не приветствуются, поскольку они допускают некорректное поведение клиента, не предоставляя при этом никаких четких объяснений. Клиенты, которые полагаются на редиректы, удваивают таким образом трафик сервера и использование TLS в этом случае бесполезно, поскольку важные данные оказываются незащищенными при первом вызове.
Требуйте наличие версии в заголовке Accept
Наличие нескольких версий и переходы между ними может быть одним из самых сложных аспектов проектирования и использования API. Поэтому лучше заранее учесть этот момент.
Для того, чтобы клиент не пользовался нестабильным API, лучше всего проверять наличие его версии в каждом запросе. При этом стоит избегать указания версии по умолчанию, поскольку это значительно усложняет заголовок, и эта версия также может меняться в будущем.
Лучше всего – добавить версию в заголовок вместе с другими метаданными, используя заголовок Accept с пользовательским типом содержимого:
Используйте заголовок ETags для кеширования
Включайте заголовок ETags во все запросы, определяя при этом версию возвращаемого ресурса. Это позволит пользователям кэшировать ресурсы и реализовывать условные запросы при помощи использования заголовка If-None-Match , который поможет определить, нужно обновлять кэш или нет.
Используйте Request-ID для интроспекции
Включайте заголовок Request-Id , содержащий в себе UUID значение, в каждый ответ сервера. Регистрируя эти значения на клиенте, сервере или другом сервисе, вы получаете возможность отлаживать и диагностировать проблемы, связанные с запросами.
Разделяйте большие ответы сервера на несколько небольших при помощи заголовка Range
Большие ответы необходимо разбивать на более мелкие, используя заголовок Range . Для получения более детальной информации о заголовках запросов/ответов, кодах состояний и ограничениях изучите Обсуждение использования заголовка Range в API платформы Heroku .
Запросы
Возвращайте соответствующие коды состояний
Возвращайте соотвествующий код состояния HTTP в каждом ответе. Успешные ответы должны содержать такие коды состояний:
- 200 – GET запрос завершился успешно, синхронный DELETE или PATCH запрос завершился успешно или синхронный PUT запрос обновил существующий ресурс.
- 201 – Синхронный POST запрос завершился, синхронный PUT запрос создал новый ресурс.
- 202 – Принят POST , PUT , DELETE или PATCH запрос, который будет обработан асинхронно.
- 206 – GET запрос завершился успешно, но будет возвращен частичный ответ (см. раздел про заголовок Range ).
Обратите внимание на использование кодов состояния ошибок авторизации и аутентификации:
- 401 Unauthorized – запрос завершился с ошибкой, поскольку пользователь не прошел аутентификацию.
- 403 Forbidden – запрос завершился с ошибкой, так как пользователь не авторизовался для получения доступа к определенному ресурсу.
Возвращайте соответствующие коды ошибок для предоставления дополнительной информации об их причинах:
- 422 Unprocessable Entity – Ваш запрос был распознан, но содержит неверные параметры.
- 429 Too Many Requests – Превышен лимит запросов, попробуйте позже.
- 500 Internal Server Error – Проблема на стороне сервера, проверьте состояние сайта и/или сообщите о проблеме.
Для получения более подробной информации о кодах состояния HTTP изучите спецификацию.
По возможности, предоставляйте полные версии ресурсов
Возвращайте пользователям вашего API полное представление ресурса (то есть объект со всеми атрибутами) во всех ответах, где это возможно. Всегда предоставляйте полную версию ресурса в ответах на запросы с кодами состояния 200 и 201 , включая PUT , PATCH и DELETE запросы.
Ответы на запросы с кодом состояния 202 не должны содержать все поля объекта
Ваш API должен принимать сериализованный JSON в теле запроса
Ваш API должен предусматривать возможность передачи сереализованного JSON в теле PUT / PATCH / POST запросов вместо, либо в дополнение к передаваемым данным формы. Таким образом создается симметрия в JSON-ответах:
Будьте последовательны при конструировании пути к ресурсу
Названия ресурсов
Используйте множественную форму названия ресурса, за исключением тех случаев, когда запрашиваемый ресурс в системе всегда один – например, в большинстве систем, у пользователя всегда только один аккаунт. Такой подход помогает сохранять единообразие при доступе к конкретному ресурсу.
Действия
Старайтесь проектировать такие конечные url, которые не требуют дополнительных действий для отдельных ресурсов. В случаях, когда это необходимо, добавляйте в общий путь компонент «action» для того, чтобы четко определить эти действия:
Используйте названия компонентов пути и атрибутов в нижнем регистре
Для названий компонентов пути к ресурсу используйте нижний регистр и разделяйте их при помощи дефиса.
Названия атрибутов лучше писать в нижнем регистре, а в качестве разделителя лучше использовать нижнее подчеркивание – таким образом названия полей можно писать без скобок в Javascript:
Ваш API должен поддерживать доступ к ресурсу не только по его id
В некоторых случаях для конечных пользователей неудобен доступ к ресурсу по его идентификатору. Например, пользователю удобнее для доступа к конкретному приложению Heroku использовать название приложения, а не его UUID. В таких случаях нужно организовать доступ как по имени, так и по идентификатору:
Сведите к минимуму количество вложений в пути для доступа к ресурсу
В моделях данных, в которых присутствуют родительские отношения между сущностями, пути доступа к ресурсам могут иметь большой уровень вложенности:
Вы можете ограничить глубину вложенности, если будете размещать ресурсы в корневой директории. Вложенность лучше использовать для обозначения доступа к коллекциям ресурсов:
Ответы
Предоставляйте UUID запрашиваемых ресурсов
У каждого ресурса по умолчанию должен быть атрибут id . В качестве значений идентификатора ресурса старайтесь всегда использовать UUID. Не используйте идентификаторы, которые не будут уникальными в масштабе вашего сервиса, особенно автоинкрементные идентификаторы.
UUID ресурса выводите в формате 8-4-4-4-12:
Предоставляйте информацию о дате создания и изменения ресурса
По умолчанию ресурс должен хранить информацию о дате его создания created_at и обновления updated_at .
Временные величины должны быть форматированы согласно ISO8601
Принимайте и возвращайте временные данные только в UTC, а выводите в формате ISO8601:
Отношения с внешними сущностями должны быть вынесены во вложенный объект
Внешние отношения должны быть сериализованы как вложенный объект:
А не как поле объекта:
Такой подход позволяет добавить больше информации о связанном объекте без необходимости менять структуру ответа:
Создавайте структурированные ответы в случае возникновения ошибок
Отдавайте последовательное, структурированное тело ответа в случае возникновения ошибок. Ответ при этом должен содержать удобочитаемое сообщение об ошибке и, опционально, url , который указывает клиенту где можно получить дополнительную информацию о проблеме и способах ее решения.
Показывайте ограничение по количеству запросов
Ограничение по количеству запросов вводится для поддержания работоспособности системы и возможности качественного обслуживания других клиентов. Для расчета ограничений на количество запросов можно использовать алгоритм текущего ведра. Возвращайте оставшееся количество запросов для каждого запроса в заголовке ответа RateLimit-Remaining .
JSON во всех ответах должен быть минимизирован
Лишний пробел увеличивает размер ответа и многие Javascript клиенты для удобочитаемости автоматически отформатируют JSON. Поэтому лучше минимизировать JSON ответы:
Вы можете опционально добавить возможность получать более развернутый ответ, указывая дополнительный параметр (например, ?pretty=true ) или задавая значения для заголовка Accept ( Accept: application/vnd.heroku+json; version=3; indent=4; ).
Артефакты
Предоставляйте удобную для обработки JSON-схему
Для точного описания вашего API предоставляйте JSON-схему. Для управления схемой используйте prmd, также удостоверьтесь в том, что она проходит валидацию при помощи команды prmd verify .
Предоставляйте удобочитаемую документацию
Для того, чтобы разработчики разбирались в принципах работы вашего API, предоставьте им удобную документацию. Если вы создали JSON-схему, используя prmd , как описано выше, вы можете легко сгенерировать Markdown документацию для всех конечных url, используя команду prmd doc .
Вдобавок к описанию конечных url, предоставьте обзор API, включая туда следующую информацию:
- процесс аутентификации – получение и использование пользовательского токена;
- стабильность API и его версию, а также информацию о том, как выбрать нужную версию API;
- общие заголовки запросов и ответов;
- формат выдачи ошибки;
- примеры использования API с клиентами на разных языках;
Предоставляйте примеры запросов, которые можно протестировать
Предоставляйте примеры запросов, которые пользователи могут протестировать. Для тестирования этих запросов пользователь должен выполнить минимум действий:
Если вы используете prmd для создания документации, то такие примеры будут сгенерированы автоматически для каждого конечного url.
Опишите стабильность вашего API
Вы можете описать степень стабильности вашего API или отдельных конечных url при помощи установки флагов prototype / development / production .
Для получения дополнительной информации, вы можете изучить документ Политика совместимости Heroku API.
Как только вы объявили ваш API готовым к релизу и стабильным, не стоит совершать модификаций, которые нарушают обратную совместимость внутри этой версии. Для внесения таких изменений создайте новою ветвь API с новым индексом версии.
Что такое код hw_api_content
hw_api->content — возвращает содержимое объекта.
Описание
object content (array parameter)
Эта функция возвращает содержимое документа как объект типа hw_api_content . Массив parameter содержит необходимый элемент ‘objectidentifier’ и необязательный элемент ‘mode’. Этот mode может быть одной из констант: HW_API_CONTENT_ALLLINKS, HW_API_CONTENT_REACHABLELINKS или HW_API_CONTENT_PLAIN.
HW_API_CONTENT_ALLLINKS вставляет все якоря, даже если цель недостижима. HW_API_CONTENT_REACHABLELINKS говорит hw_api_content() — вставить только достижимые ссылки, а HW_API_CONTENT_PLAIN даст документ без ссылок.
Что такое API? Простое объяснение для начинающих
Этот краткий термин на слуху у всех, кто хоть как-то сталкивался с разработкой. Но далеко не все понимают, что именно он обозначает и зачем нужен. Разработчик Пётр Газаров рассказал об API простыми словами в своём блоге.
Аббревиатура API расшифровывается как «Application Programming Interface» (интерфейс программирования приложений, программный интерфейс приложения). Большинство крупных компаний на определённом этапе разрабатывают API для клиентов или для внутреннего использования. Чтобы понять, как и каким образом API применяется в разработке и бизнесе, сначала нужно разобраться, как устроена «всемирная паутина».
Всемирная паутина и удалённые серверы
WWW можно представить как огромную сеть связанных серверов, на которых и хранится каждая страница. Обычный ноутбук можно превратить в сервер, способный обслуживать целый сайт в сети, а локальные серверы разработчики используют для создания сайтов перед тем, как открыть их для широкого круга пользователей.
При введении в адресную строку браузера www.facebook.com на удалённый сервер Facebook отправляется соответствующий запрос. Как только браузер получает ответ, то интерпретирует код и отображает страницу.
Каждый раз, когда пользователь посещает какую-либо страницу в сети, он взаимодействует с API удалённого сервера. API — это составляющая часть сервера, которая получает запросы и отправляет ответы.
API как способ обслуживания клиентов
Многие компании предлагают API как готовый продукт. Например, Weather Underground продаёт доступ к своему API для получения метеорологических данных.
Сценарий использования: на сайте небольшой компании есть форма для записи клиентов на приём. Компания хочет встроить в него Google Календарь, чтобы дать клиентам возможность автоматически создавать событие и вносить детали о предстоящей встрече.
Применение API: цель — сервер сайта должен напрямую обращаться к серверу Google с запросом на создание события с указанными деталями, получать ответ Google, обрабатывать его, и передавать соответствующую информацию в браузер, например, сообщение с запросом на подтверждение пользователю.
В качестве альтернативы браузер может сделать запрос к API сервера Google, минуя сервер компании.
Чем API Google Календаря отличается от API любого другого удалённого сервера в сети?
Технически, разница в формате запроса и ответа. Чтобы сгенерировать полную веб-страницу, браузер ожидает ответ на языке разметки HTML, в то время как API Google Календаря вернёт просто данные в формате вроде JSON.
Если запрос к API делает сервер веб-сайта компании, то он и является клиентом (так же, как клиентом выступает браузер, когда пользователь открывает веб-сайт).
Пользователь благодаря API получает возможность совершить действие, не покидая сайт компании.
Большинство современных сайтов используют по крайней мере несколько сторонних API. Многие задачи уже имеют готовые решения, предлагаемые сторонними разработчиками, будь то библиотека или услуга. Зачастую проще и надёжнее прибегнуть именно к уже готовому решению.
Многие разработчики разносят приложение на несколько серверов, которые взаимодействуют между собой при помощи API. Серверы, которые выполняют вспомогательную функцию по отношению к главному серверу приложения, называются микросервисами.
Таким образом, когда компания предлагает своим пользователям API, это просто означает, что она создала ряд специальных URL, которые в качестве ответа возвращают только данные.
Такие запросы часто можно отправлять через браузер. Так как передача данных по протоколу HTTP происходит в текстовом виде, браузер всегда сможет отобразить ответ. Например, через браузер можно напрямую обратиться к API GitHub (https://api.github.com/users/petrgazarov), причём без маркера доступа, и получить вот такой ответ в формате JSON:
Браузер отлично отображает JSON-ответ, который вполне можно вставлять в код. Из такого текста достаточно просто извлечь данные, чтобы использовать их по своему усмотрению.
Ещё несколько примеров API
Слово «application» (прикладной, приложение) может применяться в разных значениях. В контексте API оно подразумевает:
- фрагмент программного обеспечения с определённой функцией,
- сервер целиком, приложение целиком или же просто отдельную часть приложения.
Любой фрагмент ПО, который можно чётко выделить из окружения, может заменять букву «А» в англоязычной аббревиатуре, и тоже может иметь некоторого рода API. Например, при внедрении в код разработчиком сторонней библиотеки, она становится частью всего приложения. Будучи самостоятельным фрагментом ПО, библиотека будет иметь некий API, который позволит ей взаимодействовать с остальным кодом приложения.
В объектно-ориентированном проектировании код представлен в виде совокупности объектов. В приложении таких объектов, взаимодействующих между собой, могут быть сотни. У каждого из них есть свой API — набор публичных свойств и методов для взаимодействия с другими объектами в приложении. Объекты могут также иметь частную, внутреннюю логику, которая скрыта от окружения и не является API.
Как получать данные от API и показывать их в Web?
Уважаемые пользователи, здравствуйте!
Возникла необходимость в реализации некоторой программы, которой нет в интернете.
Поподробнее:
Есть сервер игры, на котором хочется отслеживать онлайн. Например, вот: https://minecraft-statistic.net/ru/server/mcmwc/st.
Онлайн этого сервера обновляется каждые 10 минут, ибо так решил администратор ресурса.
Скажите, можно ли реализовать посредством получения значения api и других манипуляций вывод подобного на свою страницу и, если да, то как.
Например:
мы получаем значение онлайна сервера по api с сайта https://mcapi.ca/query/play.minesuperior.com/info , где play.minesuperior.com — ip сервера.
в формате json нам нужна только одна строка:
а именно online
дальше необходимо обращаться к этому же api каждую минуту, а значения online выводить в график на странице по типу того, что есть https://minecraft-statistic.net/ru/server/mcmwc/st.
Есть мысли, как можно это реализовать?
Посредством python можно обращаться к api и получать значения online, а дальше их, например, записывать в файл или в базу данных, а php будет забирать каждую минуту значения из БД и показывать их на сайт
но тогда встает вопрос: а будет ли динамичное обновление страницы и не надо ли ее будет перезагружать каждый раз?
Если нет, то может посредством php без python? но если в первом я смогу это сделать, то с php могут возникнуть большие проблемы: я не представляю, как это реализовать
Если есть какие-либо идеи, предложения или вопросы по тому, что я написал — пишите, всем отвечу!
Заранее спасибо!
hw_api->content
Returns content of an object ( )
This function returns the content of a document as an object of type hw_api_content .
Parameters
The parameter array contains the required elements ‘object >HW_API_CONTENT_ALLLINKS , HW_API_CONTENT_REACHABLELINKS or HW_API_CONTENT_PLAIN .
HW_API_CONTENT_ALLLINKS means to insert all anchors even if the destination is not reachable.
HW_API_CONTENT_REACHABLELINKS tells this method to insert only reachable links and HW_API_CONTENT_PLAIN will lead to document without any links.
DATA API
Соглашения
Приняты следующие соглашения при использовании Data API:
- Пустые поля всегда возвращаются в ответе со значением null . В случае массива возвращается пустой массив, в случае объекта возвращается пустой объект;
- Все поля связанные с датой и временем передаются в формате YYYY-MM-DD hh:mm:ss;
- Запросы к API выполняются всегда с помощью метода POST;
- Все параметры в запросах/ответах, а также в структурах данных в формате JSON и название методов именуются в стиле Snake Case — разделение слов через нижнее подчёркивание;
- Данные возвращаются только в JSON формате согласно спецификации RFC 7159. Заголовок Accept игнорируется;
- Кодировка данных UTF-8;
- Заголовок Content-Type должен быть «application/json; charset=UTF-8» ;
- Заголовок Content-Length должен содержать корректную длину сообщения, следуя спецификации HTTP/1.1
Добавить IP-адрес в список разрешенных
По умолчанию доступ к API запрещен всем, чтобы можно было делать запросы необходимо IP-адрес хоста с которого делается запрос добавить в белый список. Это можно сделать через личный кабинет «Администратор -> Аккаунт -> Правила и настройки безопасности» вкладка «API».
Если необходимо разрешить доступ всем IP-адресам, то нужно добавить в список разрешенных 0.0.0.0/0
Если запрос делается из под агента, то его IP адрес должен быть добавлен в белый список клиентского аккаунта
Пользователи API и аутентификация
К пользователям и ключам доступа применяются права доступа аналогичные правам доступа в личном кабинете
Доступ по ключу
Ключи генерируются на уровне пользователя в разделе личного кабинета «Аккаунт» → «Управление пользователями»
Существует два типа ключей:
Постоянный ключ имеет неограниченное время действия.
Временный ключ имеет конкретную дату окончания действия ключа.
Доступ по логину и паролю
Используется аутентификация с использованием сессий
Отчёт по запросам к API
В личном кабинете «Отчёты»->»Служебные»->»Запросы к API» можно построить отчёт по запросам к API
Базовый URL для доступа к API
Базовый URL для доступа к API соответствует следующему шаблону:
— https;
Версионность
Текущая версия Data API 2.0
Data API поддерживает версионность. Версия указывается в базовом URL как vX.Y , где X — номер мажорной версии, Y — номер минорной версии
Если была выпущена новая версия, то старая считается устаревшей и соответственно при обращении к старой версии API в мета-параметрах (см. раздел Мета-параметры) будет возвращаться параметр «current_version_deprecated» со значением «true»
Максимальное количество поддерживаемых версий — 2
Период поддержки устаревшей версии 2 месяца
Лимиты и ограничения
Баллы списываются только за успешные запросы, т.е в отчете по запросам к API (см. раздел Отчёт по запросам к API) он помечен как успешный.
Информация о лимитах возвращается во всех ответах в мета-парметрах (см. раздел Мета-параметры) кроме случаев когда лимиты не учитываются;
Лимиты построены по бальной системе, т.е каждый метод имеет свой вес. Вызов метода уменьшает доступные дневные/минутные баллы на размер веса вызываемого метода
Информация о лимитах в мета-параметрах:
Название параметра | Описание |
---|---|
day_limit | Текущий лимит баллов в день |
day_remaining | Какое количество баллов осталось до достижения дневного лимита |
day_reset | Время в секундах через которое дневной лимит будет сброшен |
minute_limit | Текущий лимит баллов за минуту |
minute_remaining | Какое количество баллов осталось до достижения минутного лимита |
minute_reset | Время в секундах через которое минутный лимит будет сброшен |
Методы и их стоимость в баллах
Тип операции | Стоимость в баллах |
---|---|
Все операции | 1 |
Расширение лимитов
На странице «Аккаунт» -> «Тарифы и опции» в личном кабинете можно расширить лимиты.
Обработка ошибок
Параметры сообщения об ошибке
Название | Тип | Обязательный | Описание |
---|---|---|---|
error | object | да | Объект с содержимым ошибки |
code | number | да | Не уникальный код ошибки (см. раздел Группы кодов ошибок ) |
message | string | да | Cообщение об ошибке |
data | object | да | Объект с деталями ошибки |
mnemonic | string | да | Уникальный текстовый код ошибки. При обработке ошибок рекомендуется использовать этот параметр. |
value | string | нет | Содержит то, что передал пользователь без изменений |
В некоторых случаях может отсутствовать. К примеру, обязательный параметр вообще не был заполнен.
Вложенные параметры отображаются через разделитель точка «.»
К примеру: «employee.phone_number»
JSON структура ошибки
Группы кодов ошибок
Код ошибки | Описание |
---|---|
-32700 | Ошибки связанные с валидацией JSON |
-32600 | Ошибки связанные с валидацией параметров запроса — id , jsonrpc |
-32601 | Ошибки связанные с методом |
-32602 | Ошибки связанные с валидацией параметров в вызываемом методе |
-32603 | Внутренние ошибки JSON RPC сервера |
-32001 | Ошибки аутентификации и ошибки с ключами |
-32003 | Ошибки с правами доступа — ip адрес не в белом списке, нет прав у пользователя |
-32004 | Ошибки связанные с неверной последовательностью вызываемых методов |
-32007 | Ошибки связанные с виртуальным номером |
-32008 | Ошибки связанные с компонентами |
-32009 | Ошибки связанные с аккаунтом |
-32029 | Ошибки связанные с лимитами |
-32099 | Ошибки связанные с поддержкой различных частей спецификации JSON RPC 2.0 — Групповые операции, Уведомления |
Список ошибок общих для всех методов
Текст сообщение | Код | Мнемоника | Описание |
---|---|---|---|
Invalid Request The JSON sent is not a valid Request object | -32600 | invalid_request | Ошибки связанные с валидацией параметров запроса — id , jsonrpc |
Access token has been expired | -32001 | access_token_expired | Применяется только к постоянному токену. Если время жизни постоянного токена истекло, то возвращается указанная ошибка |
Access token has been blocked | -32001 | access_token_blocked | Если постоянный токен заблокирован, то возвращается указанная ошибка |
Access token is invalid | -32001 | access_token_invalid | Указанная ошибка возвращается если постоянный/временный токен не найден |
Limit per |
-32029 | limit_exceeded | Лимит превышен |
You need at least on of the following components to access this method: | -32008 | method_component_disabled | Если не подключен компонент, который требуется для работы метода |
You need at least on of the following components to access this paremeter: | -32008 | parameter_component_disabled | Если не подключен компонент, который нужен для заполнения параметра и создания сущности |
Your IP |
-32003 | ip_not_whitelisted | IP адрес с которого делается запрос не находится в белом списке адресов. Если запрос делается из под агента, то ваш IP адрес должен быть в списках разрешеных адресов внутри клиентского аккаунта |
Login or password is wrong | -32001 | auth_error | Неправильный логин или пароль |
Your account has been disabled, contact the support service | -32009 | account_inactive | Аккаунт заблокирован |
Internal error, contact the support service | -32603 | internal_error | Внутренняя ошибка, необходимо обратиться в службу технической поддержки |
Data supplied is of wrong type | -32602 | data_type_error | К примеру, если ожидаем string а передали int |
The method does not exist / is not available | -32601 | method_not_found | Вызываемый метод не найден |
Permission denied | -32003 | forbidden | Нет прав на доступ к методу или API, или запрещено выполнять какое-либо действие |
Invalid JSON was received by the server. | -32700 | parse_error | Ошибка валидации JSON |
Batch operations not supported | -32099 | batch_opreations_not_supported | Групповые операции не поддерживаются |
Notifications not supported | -32099 | notifications_not_supported | Был потерян параметр id в запросе. См. раздел Общие параметры для всех методов» |
The required parameter has been missed | -32602 | required_parameter_missed | Обязательный параметр не передали |
Invalid parameter value | -32602 | invalid_parameter_value | Возвращается во всех случаях, если было передано некорректное значение параметра или переданное значение не соответствует требуемому формату ввода |
Unexpected method parameter(s) | -32602 | unexpected_parameters | Если в «params» были переданы параметры которые не предусмотрены JSON структурой метода или указан параметр для сортировки, фильтрации и выборки, который не существует |
The combination of parameters is not permitted | -32602 | invalid_parameters_combination | Если параметры указанные в методе находятся в недопустимой комбинации или имеют зависмость друг от друга. Нужно смотреть документацию по методу и его параметрам. |
-32602 | error | Динамические ошибки |
Список ошибок для методов с глаголом get
Текст ошибки | Код | Мнемоника | Описание |
---|---|---|---|
Invalid parameter value | -32602 | invalid_parameter_value | Если в фильтрах было передано некорректное значение для regexp, jsquery или любых значений не соответствующих документации |
Sort by parameter is prohibited | -32602 | sort_prohibited | Сортировка по параметру запрещена и невозможна, так как параметр для сортировки не находится в списке разрешенных для сортировки |
Filter by parameter is prohibited | -32602 | filter_prohibited | Фильтрация по параметру запрещена и невозможна, так как параметр для фильтрации не находится в списке разрешенных для фильтрации |
Max value of requested date interval is 3 months | -32602 | date_interval_limit_reached | Если в запросе период между указанными датами в date_from и date_till превышает 3 месяца. В основном ошибка актуальна только для методов получения отчетов, но не для всех. |
Список ошибок общих для методов с глаголом delete
Текст ошибки | Код | Мнемоника | Описание |
---|---|---|---|
Entity not found | -32602 | entity_not_found | Если передан уникальный идентификатор сущности, которая не найдена |
You have interdependet entities | -32602 | dependency_error | Удаляемая сущность используется в других сущностях. Чтобы удалить, необходимо убрать удаляемую сущность из всех возможных мест где она используется |
Permission denied | -32602 | forbidden | Удалить сущность невозможно так как она системная, к примеру группа «Черный список» в адресной книге |
Список ошибок общих для методов с глаголом create и update, set, unset
Текст ошибки | Код | Мнемоника | Описание |
---|---|---|---|
Entity not found | -32602 | entity_not_found | Если передан уникальный идентификатор сущности, которая не найдена |
Duplicate entity | -32602 | duplicate_entity | Если сущность уже существует |
A new data limit has been exceeded | -32602 | data_limit_exceeded | Ошибка возникает в случае, если было достигнуто максимальное количество данных. |
Action is not allowed for your tariff plan. You need contact support service or change your tariff plan settings in your account | -32602 | tariff_restrictions | Любые ограничения тарифного плана |
This value is already used by another entity | -32602 | already_in_use | Значение указанного параметра уже используется в другой сущности. К примеру, виртуальный номер уже используется в другой рекламной кампании. |
Групповые операции
Функционал не поддерживается
Принцип именования методов
Имя JSON-RPC метода состоит из двух частей разделенных точкой: глагола и имени объекта.
Имя объекта выбирается как существительное во множественном числе, отражающее бизнес-сущность, например subscribers .
Имя метода должно начинаться с глагола, отражающего суть операции.
Глаголы используемые в именовании методов
Глагол | Описание |
---|---|
create | Добавляет сущность. |
get | Возвращает список отсортированных и отфильтрованных данных с помощью критериев фильтрации и методов сортировки. К запросу возможно применить лимит и постраничный вывод на количество получаемых данных (см. раздел Постраничный вывод). С помощью критериев фильтрации может быть так же получена одна запись, по ёё уникальному идентификатору (см. раздел Критерии фильтрации). В специальном мета-параметре возвращается общее количество записей (см. раздел Мета-параметры). С помощью специального параметра можно указать какие поля возвращать в ответном сообщении (см. раздел Представление возвращаемых данных). |
update | Обновляет сущность с определённым идентификатором. |
Возможно частичное обновление параметров
При обновлении массивов обновляется весь массив целиком, т.е все элементы которые не были переданы удаляются.
Для зануления необязательного параметра нужно передать null
Критерии фильтрации
Фильтрация данных применяется только к глаголу «get» (см. раздел «Глаголы используемые в именовании методов» с помощью необязательного примитива «filter» , который является объектом и может содержать:
- Простой фильтр;
- Дерево фильтров которое содержит простые фильтры с условиями.
Простой фильтр — это объект, который содержит в себе обязательные примитивы:
- field — поле сущности к которой будет применяться фильтрация (список заранее определён для метода);
- operator — оператор фильтрации. Список всех операторов можно получить в разделе «Операторы фильтрации»;
- value — значение для оператора фильтрации. Необязательное поле, если оно отсутствует, то считается пустота.
Дерево фильтров содержит специальный примитив «filters» , который может содержать в себе как простые фильтры, так и дерево фильтров.
Возможные ошибки при фильтрации
Текст | Код | Мнемоника | Описание |
---|---|---|---|
Filter by parameter is prohibited | -32602 | filter_prohibited | Фильтрация по параметру запрещена и невозможна, так как параметр для фильтрации не находится в списке разрешенных для фильтрации |
Unexpected method parameter(s) | -32602 | unexpected_parameters | Передан ошибочный параметр или параметр, которого не существует |
Пример JSON структуры простого фильтра
Получаем список записей у которых поле «name» имеет имя «Bob»
Пример JSON структуры дерева фильтров с одним уровнем вложенности
Получаем список записей у которых поле «name» имеет имя «Bob» и его возраст 25 лет
Пример JSON структуры дерева фильтров с двойным уровнем вложенности
Получаем список записей у которых поле «name» имеет имя «Bob» и его возраст 25 лет или список записей у которых поле «name» имеет имя «Dexter» и его возраст 2 года
Пример JSON структуры дерева фильтров с тройным уровнем вложенности
Условие запроса ((addv_comp_ >
Операторы фильтрации
Фильтрация null и not null будет =null, !=null
Оператор | Описание | Учёт регистра строк | Тип данных |
---|---|---|---|
= | Равно | да | number, string, null, boolean, iso8601, enum |
!= | Не равно | да | number, string, null, boolean, iso8601, enum |
Меньше чем | — | number, iso8601 | |
> | Больше чем | — | number, iso8601 |
Меньше или равно | — | number, iso8601 | |
>= | Больше или равно | — | number, iso8601 |
like | Начинается с, Заканчивается на, Содержит |
Сортировка данных
Сортировка данных применяется только к глаголу «get» (см. раздел «Глаголы используемые в именовании методов») с помощью массива объектов сортировки со следующими примитивами:
- field — поле по которому производится сортировка;
- order — направления сортировки. Возможные значения «asc» / «desc» . «asc» — по возрастанию, «desc» — по убыванию. Параметр необязателен. Значение по умолчанию «asс» .
Список полей по которым можно производить сортировку определяется индивидуально для каждого метода.
Возможные ошибки при сортировки
Текст ошибки | Код | Мнемоника | Описание |
---|---|---|---|
Sort by parameter is prohibited | -32602 | sort_prohibited | Сортировка по параметру запрещена и невозможна, так как параметр для сортировки не находится в списке разрешенных для сортировки |
Unexpected method parameter(s) | -32602 | unexpected_parameters | Передан ошибочный параметр или параметр, которого не существует |
Постраничный вывод
Постраничный вывод может быть применён к глаголу «get» (см. раздел «Глаголы используемые в именовании методов»). Для выполнения пагинации данных используются следующие параметры:
Параметр | Значение по умолчанию | Допустимое значение | Описание |
---|---|---|---|
offset | 100 000 | Сдвиг, определяет с какого номера записи возвращать «limit» записей | |
limit | 1000 | 10 000 | Размер возвращаемых данных (количество записей) |
Мета-параметры
Возвращаются при использовании глагола «get» (см. раздел «Глаголы используемые в именовании методов»).
Присутствуют как в ошибочном, так и в успешном ответе
Параметр «api_version» возвращается только для версий которые deprecated.
Представление возвращаемых данных
Отдельный список возвращаемых столбцов
В глаголе получения данных «get» (см. раздел «Глаголы используемые в именовании методов») может быть указан специальный необязательный примитив «fields» с типом массив, который может содержать список полей которые необходимо показать в выводе. Если примитив «fields» не используется, то в выводе показываются все поля по умолчанию для вызываемого метода.
Список полей индивидуален для каждого метода.
Возможные ошибки в представлении возвращаемых данных
Текст | Код | Мнемоника | Описание |
---|---|---|---|
Unexpected method parameter(s) | -32602 | unexpected_parameters | Передан ошибочный параметр или параметр, которого не существует |
Общие поля для всех методов
Название | Тип | Обязательный | Допустимые значения | Описание |
---|---|---|---|---|
id | string или number | да | Уникальный идентификатор запроса к API, который используется для связи запроса с ответом. Рекомендуется делать в виде уникального хэша или случайного числа . | |
method | string | да | Вызываемый метод | |
jsonrpc | string | да | 2.0 | Номер спецификации JSON-RPC |
params | object | да | Содержит тело запроса к API. В зависимости от вызываемого метода тело запроса меняется. |
Аутентификация
Метод | login.user |
---|---|
Описание | Вход и получение ключа сессии аутентификации |
Кому доступен | Партнёр, Клиент |
Параметры запроса
Название | Тип | Обязательный | Допустимые значения | Описание |
---|---|---|---|---|
login | string | да | Логин пользователя | |
password | string | да | Пароль пользователя |
Параметры ответа
Название | Тип | Обязательный | Описание |
---|---|---|---|
access_token | string | да | Ключ сессии аутентификации |
expire_at | number | да | Timestamp когда выданный токен перестанет быть валидным |
app_id | number | да | Уникальный идентификатор клиента |
Время жизни полученного ключа сессии аутентификации после вызова метода «login.user» — 1 час. По истечению времени жизни ключа сессии его необходимо запрашивать заново, т.е. вызывать метод «login.user» .
Для совершения запросов к API возможно использование постоянного ключа аутентификации, который доступен в Личном кабинете на уровне пользователя.
Как получать данные от API и показывать их в Web?
Уважаемые пользователи, здравствуйте!
Возникла необходимость в реализации некоторой программы, которой нет в интернете.
Поподробнее:
Есть сервер игры, на котором хочется отслеживать онлайн. Например, вот: https://minecraft-statistic.net/ru/server/mcmwc/st.
Онлайн этого сервера обновляется каждые 10 минут, ибо так решил администратор ресурса.
Скажите, можно ли реализовать посредством получения значения api и других манипуляций вывод подобного на свою страницу и, если да, то как.
Например:
мы получаем значение онлайна сервера по api с сайта https://mcapi.ca/query/play.minesuperior.com/info , где play.minesuperior.com — ip сервера.
в формате json нам нужна только одна строка:
а именно online
дальше необходимо обращаться к этому же api каждую минуту, а значения online выводить в график на странице по типу того, что есть https://minecraft-statistic.net/ru/server/mcmwc/st.
Есть мысли, как можно это реализовать?
Посредством python можно обращаться к api и получать значения online, а дальше их, например, записывать в файл или в базу данных, а php будет забирать каждую минуту значения из БД и показывать их на сайт
но тогда встает вопрос: а будет ли динамичное обновление страницы и не надо ли ее будет перезагружать каждый раз?
Если нет, то может посредством php без python? но если в первом я смогу это сделать, то с php могут возникнуть большие проблемы: я не представляю, как это реализовать
Если есть какие-либо идеи, предложения или вопросы по тому, что я написал — пишите, всем отвечу!
Заранее спасибо!