Умные многоразовые карточки. Разбор слова по составу
Умные многоразовые карточки. Разбор слова по составу- Описание
- Характеристики
- Отзывы (0)
ISBN: 460-3-727-56398-6
Автор: Стронская И.М.
Издательство: Литера
Год издания: 2018
В серии «Умные многоразовые карточки» представлены учебные пособия для тренировки умений и навыков, которые школьники с 1 по 4 классы получают на уроках. Каждое из пособий предлагает ученикам отработать самые трудные темы по русскому языку, математике и английскому языку. Специальное покрытие карточек и волшебный фломастер позволяют писать и стирать написанное столько раз, сколько потребуется.
| ISBN: | 460-3-727-56398-6 |
| Год Выпуска: | 2018 |
| Автор: | Стронская И. М. |
| Издательство: | Литера |
| Размер: | 200х140 мм |
| Страниц: | 16 |
Пока нет отзывов
Оставить отзыв
Все поля обязательны к заполнению
Перед публикацией отзывы проходят модерацию
Доставка почтой
- Не доставляется почтой (2)
Формат
- 60х84 1/16 (1)
- 70х100 1/16 (4)
- 70х108 1/16 (1)
- 70х90 1/16 (4)
- 84х100 1/16 (1)
- 84х108 1/16 (1)
- 84х108 1/32 (1)
- 84х60 1/16 (3)
Год Выпуска
- 2014 (2)
- 2015 (1)
- 2016 (16)
- 2017 (3)
- 2018 (11)
- 2019 (5)
- 2020 (4)
Автор
-
Векшина Т.
В.,Алимпиева М.Н. (3)
- Крутецкая В.А (1)
Малюшкин А.Б., Рогачева Е.Ю (2)-
Перова О.
Д. (1)
- Перова О.Д. (5)
- Полникова М.Ю. (8)
-
Стронская И.
М (1)
- Стронская И.М. (5)
- Узорова О.В., Нефедова Е.А. (1)
-
Ундзенкова А.
В., Колпакова О.В. (1)
- Ушакова О.Д. (6)
- Чистякова О.В. (1)
Издательство
- АСТ (1)
- Владос (3)
- Леда, Алтея (5)
- Литера (14)
- Литур (1)
- М-КНИГА (6)
- СМИО Пресс (8)
- Сфера (6)
Размер
- 200х125 мм (1)
- 200х140 мм (7)
- 215х165 мм (4)
- 235х165 мм (5)
- 255х165 мм (2)
- 440х590 мм (3)
- 490х330 мм (4)
Страниц
- 112 (2)
-
112 с.
х 2 (1)
- 16 (3)
- 160 (2)
-
160 с.
(Газетная) (1)
- 258 (газетная) (1)
- 32 (5)
- 64 (1)
- 80 (3)
Тип обложки
- мягкий (15)
- картон (1)
Переплёт
- металлическая пружина (1)
- мягкий переплет (крепление скрепкой или клеем) (14)
- мягкая, склейка (1)
Материал
- картон (3)
Класс
- 2 (2)
- 1 (1)
- 3 (1)
- 4 (1)
- 1-4 (1)
Плакаты обучающие и развивающие пособия
Демонстрационный плакат Дорожные знаки А2
Демонстрационный плакат Дорожные знаки А2
Товар не доступен для заказа
Демонстрационный плакат Дорожные знаки А2
Демонстрационный плакат Дорожные знаки А2
Товар не доступен для заказа
Демонстрационный плакат Правила поведения при пожаре А2
Демонстрационный плакат Правила поведения при пожаре А2
Товар не доступен для заказа
Демонстрационный плакат Правила пожарной безопапсности А2
Демонстрационный плакат Правила пожарной безопапсности А2
Товар не доступен для заказа
Карточка «Состав слова в русском языке»
Карточка «Состав слова в русском языке»
Товар не доступен для заказа
Карточка «Таблица Менделеева» 109*202мм
Карточка «Таблица Менделеева» 109*202мм
Товар не доступен для заказа
Карточка «Таблица умножения» 109*202мм
Карточка «Таблица умножения» 109*202мм
Товар не доступен для заказа
Карточка «Таблица умножения» 109*202мм
Карточка «Таблица умножения» 109*202мм
Товар не доступен для заказа
Карточка-шпаргалка «Алгебра 7 класс.
Правила» 155*210Карточка-шпаргалка «Алгебра 7 класс. Правила» 155*210
Товар не доступен для заказа
Карточка-шпаргалка «Глагол»
Карточка-шпаргалка «Глагол»
Товар не доступен для заказа
Карточка-шпаргалка «Гласные в корне слова»
Карточка-шпаргалка «Гласные в корне слова»
Товар не доступен для заказа
Карточка-шпаргалка «Изменение глаголов / Члены предложения»
Карточка-шпаргалка «Изменение глаголов / Члены предложения»
Товар не доступен для заказа
Карточка-шпаргалка «Местоимение»
Карточка-шпаргалка «Местоимение»
Товар не доступен для заказа
Карточка-шпаргалка «Периметр и площадь»
Карточка-шпаргалка «Периметр и площадь»
Товар не доступен для заказа
Карточка-шпаргалка «Разбор слова по составу / Правила переноса»
Карточка-шпаргалка «Разбор слова по составу / Правила переноса»
Товар не доступен для заказа
Карточка-шпаргалка «Русский алфавит / Пиши правильно»
Карточка-шпаргалка «Русский алфавит / Пиши правильно»
Товар не доступен для заказа
Карточка-шпаргалка «Согласные звуки русского языка»
Карточка-шпаргалка «Согласные звуки русского языка»
Товар не доступен для заказа
Карточка-шпаргалка «Таблица Менделеева / Таблица растворимости»
Карточка-шпаргалка «Таблица Менделеева / Таблица растворимости»
Товар не доступен для заказа
Карточка-шпаргалка «Ударения / Словарные слова»
Карточка-шпаргалка «Ударения / Словарные слова»
Товар не доступен для заказа
Карточка-шпаргалка «Часть и целое.
Дроби / Таблица умножения»Карточка-шпаргалка «Часть и целое. Дроби / Таблица умножения»
Товар не доступен для заказа
Title
Главная
Карта сайта
Всероссийский телефон доверия:
8-800-2000-122Телефон доверия для помощи лицам с кризисными состояниями и суицидальным поведением:8-800-200-47-03
ИСТОРИЯ УЧРЕЖДЕНИЯ
Муниципальное бюджетное учреждение “Бокситогорский центр психолого-педагогической, медицинской и социальной помощи” (далее – МБУ «БЦППМиСП», ) функционирует с 01.
10.1992 года. С данного периода времени учреждение имело наименование «Психолого-медико-педагогический центр при отделе народного образования Бокситогорского района Ленинградской области» ( Постановление главы администрации Бокситогорского района Ленинградской области от 30.09.1992г № 662) . Постановлением Главы администрации Муниципального образования «Бокситогорский район» Ленинградской области от 01.12.1997 года № 549 учреждение переименовано в Муниципальное образовательное учреждение «Психолого-медико-педагогический центр» с правами юридического лица и утвержден Устав учреждения с последующей государственной регистрацией. Приказом Комитета общего и профессионального образования «Бокситогорский район» от 26.11.2002г. № 245 учреждение переименовано в Муниципальное образовательное учреждение для детей, нуждающихся в психолого-педагогической и медико-социальной помощи «Бокситогорский центр диагностики и консультирования». На основании Постановления администрации Бокситогорского муниципального района Ленинградской области № 292 от 04 апреля 2011 года учреждение реорганизовано в форме присоединения к нему Муниципального образовательного учреждения для детей, нуждающихся в психолого-педагогической и медико-социальной помощи «Центр диагностики и консультирования» города Пикалево.
На основании распоряжения администрации Бокситогорского муниципального района Ленинградской области № 793 от 03 октября 2011 года наименование учреждения изменено на Муниципальное бюджетное образовательное учреждение для детей, нуждающихся в психолого-педагогической и медико-социальной помощи “Бокситогорский центр диагностики и консультирования”. На основании Постановление администрации Бокситогорского муниципального района Ленинградской области от 9 июня 2015 года № 744 «О переименовании Муниципального бюджетного образовательного учреждения для детей, нуждающихся в психолого-педагогической и медико-социальной помощи “Бокситогорский центр диагностики и консультирования» наименование учреждения изменено на муниципальное бюджетное учреждение “Бокситогорский центр психолого-педагогической, медицинской и социальной помощи»
/ ОБРАЗОВАНИЕ /
Психолого-медико-педагогическая комиссия
ПОДРОБНЕЕ
Коррекционно-развивающий отдел
ПОДРОБНЕЕ
Консультативно-диагностический отдел
ПОДРОБНЕЕ
/ ПОЛЕЗНЫЕ ССЫЛКИ /
Всероссийский телефон доверия
Информационный ресурс Госзаказа Ленинградской области
Сайт Комитета образования Администрации Бокситогорского Муниципального района Ленинградской области
Перечень ФГОС и Образовательных стандартов
Официальный сайт для размещения информации о государственных (муниципальных) учреждениях
Сайт «Единое окно доступа к образовательным ресурсам»
Единая коллекция цифровых образовательных ресурсов
Сайт информационно-образовательных ресурсов
Сайт администрации Бокситогорского муниципального района Ленинградской области
Федеральный портал «Российское образование»
Официальный сайт Министерства образования и науки
|
|
Что такое IDE или интегрированная среда разработки?
История IDE
До появления IDE программисты писали свои программы в текстовых редакторах.
Это включало в себя написание и сохранение приложения в текстовом редакторе перед запуском компилятора, принятие к сведению любых сообщений об ошибках, а затем возвращение в текстовый редактор для проверки их кода.
Только в 1983 году компания Borland Ltd. приобрела компилятор Pascal и опубликовала его как TurboPascal, в котором впервые были интегрированы редактор и компилятор.
TurboPascal, возможно, положил начало идее интегрированной среды разработки, но многие считают, что Microsoft Visual Basic (VB), выпущенный в 1991 году, на самом деле был первой настоящей IDE в истории. Построенный на старом языке BASIC, Visual Basic был популярным языком программирования в 1980-х годах. Развитие Visual Basic означало, что вместо этого программирование можно было рассматривать в графических терминах, и стали очевидны заметные преимущества производительности.
Преимущества использования IDE
Интегрированные среды разработки повышают производительность разработчиков.
Эти IDE повышают производительность, сокращая время установки, повышая скорость выполнения задач разработки, информируя разработчиков о последних рекомендациях и угрозах, а также стандартизируя процесс разработки, чтобы каждый мог присоединиться к нему.
- Ускоренная установка: Программистам приходится тратить время на настройку нескольких средств разработки без установленного интерфейса IDE. Интегрируя IDE, программисты могут иметь один и тот же набор возможностей в одном месте без необходимости постоянно переключаться между инструментами.
- Ускорение задач разработки: Более тесная интеграция задач разработки означает повышение производительности труда разработчиков. Например, разработчики могут анализировать код и проверять синтаксис во время редактирования, что позволяет мгновенно реагировать на появление синтаксических ошибок. Программистам больше не нужно переключаться между приложениями для завершения задач. Кроме того, инструменты и функции IDE помогают программистам организовывать ресурсы, предотвращать ошибки и реализовывать ярлыки.

Чтобы получить еще больше преимуществ, IDE могут помочь реструктурировать процесс разработки, продвигая целостную стратегию. Они заставляют программистов думать о своих действиях с точки зрения всего жизненного цикла разработки (SDLC), а не серии отдельных задач.
- Непрерывное обучение: Еще одним преимуществом является возможность быть в курсе последних событий и получать образование. Например, разделы справки IDE постоянно обновляются вместе с новыми примерами, шаблонами проектов и т. д. Разработчики, которые постоянно учатся и следят за лучшими практиками, с большей вероятностью принесут пользу своей команде и предприятию, повысив производительность.
- Стандартизация: Он также регулирует процесс разработки, помогая программистам беспрепятственно работать вместе и помогая новым сотрудникам быстро освоиться, чтобы они могли сразу приступить к работе.
Языки, поддерживаемые IDE
В некоторых случаях IDE предназначены для определенного языка программирования или набора языков, что создает набор функций, соответствующий специфике этого языка.
Например, Xcode для языков Objective-C и Swift, API Cocoa и Cocoa Touch.
Однако многоязычные IDE, такие как Eclipse (C, C++, Python, Perl, PHP, Java, Ruby и др.), Komodo (Perl, Python, Tcl, PHP, Ruby, Javascript и др.) и NetBeans (Java, JavaScript, PHP, Python, Ruby, C, C++ и другие) существуют.
Разработчики часто могут найти поддержку альтернативных языков через плагины. Например, Flycheck — это расширение для проверки синтаксиса для GNU Emacs 24 с поддержкой 39 языков.
Различные типы IDE
Разработчики работают по-разному, создавая различные типы кода, а это значит, что существует множество IDE, которые можно использовать. Некоторые из них предназначены для работы с одним конкретным языком, в то время как другие представляют собой облачные IDE, IDE, настроенные для создания мобильных приложений или HTML, а также IDE, предназначенные специально для разработки Apple или Microsoft.
Многоязычная среда IDE
Многоязычные среды IDE, такие как Eclipse, Aptana, Komodo, NetBeans и Geany, поддерживают несколько языков программирования.
- Eclipse: Поддерживает C, C++, Perl, Python, Ruby, PHP, Java и другие. Это бесплатный редактор с открытым исходным кодом для многих сред разработки. Хотя он начинался как среда разработки Java, он расширился за счет плагинов. Эта среда разработки управляется и управляется консорциумом Eclipse.org.
- NetBeans: Поддерживает Java, PHP, JavaScript, C, C++, Python, Ruby и другие. Это также бесплатно и с открытым исходным кодом. Модули обеспечивают все функции IDE. Разработчики могут добавить поддержку других языков программирования, установив дополнительные модули.
- Komodo IDE: Поддерживает Perl, PHP, Python, Tcl, JavaScript, Ruby и другие. Это инструмент корпоративного уровня с более высокой ценой.
- Aptana: Поддерживает HTML, JavaScript, CSS, AJAX и другие через плагины. Это популярный выбор для программистов, занимающихся разработкой веб-приложений.
- Geany: Поддерживает C, PHP, Java, HTML, Perl, Python, Pascal и многие другие.
Это очень настраиваемая среда с большим набором плагинов.
IDE для мобильных процессов разработки
Специально для мобильной разработки существуют IDE, включающие PhoneGap и Titanium Mobile от Appcelerator.
Многие IDE, особенно многоязычные IDE, имеют подключаемые модули для мобильной разработки. Eclipse, например, имеет такую функциональность.
HTML IDE
IDE для разработки HTML-приложений являются одними из самых популярных IDE. Например, DreamWeaver, HomeSite и FrontPage автоматизируют множество задач, связанных с процессом разработки веб-сайта.
Облачная IDE
Облачные IDE становятся все более популярными, и за ними нужно следить. Возможности таких сетевых IDE быстро растут; по этой причине большинству крупных поставщиков, вероятно, придется предлагать его, если они хотят оставаться конкурентоспособными на своих рынках. Облачные IDE важны, потому что они дают программистам доступ к своему коду из любого места.
Например, Nitrous — это облачная платформа среды разработки, поддерживающая Ruby, Python, Node.
js и другие. Cloud9 IDE поддерживает более 40 языков, включая PHP, Ruby, Python, JavaScript с Node.js и Go. Heroku — это облачная платформа разработки как услуга (PaaS), поддерживающая несколько языков программирования.
IDE, специально предназначенные для Apple или Microsoft
Следующие IDE предназначены для программистов, работающих в средах Microsoft или Apple:
- Visual Studio: Поддерживает VB.NET, Visual C++, C#, F# и другие. Visual Studio — это интегрированная среда разработки Microsoft, предназначенная для создания приложений для платформы Microsoft.
- MonoDevelop: Поддерживает Visual Basic, C/C++, C# и дополнительные языки .NET.
- Xcode: Поддерживает языки Swift и Objective-C, а также API-интерфейсы Cocoa и Cocoa Touch. Эта IDE предназначена исключительно для создания приложений для iOS и Mac. Он включает в себя конструктор графического интерфейса и симулятор iPhone/iPad.
- Эспрессо: Поддерживает XML, HTML, CSS, PHP и JavaScript.
Espresso — это инструмент, специально предназначенный для веб-программистов Mac. - Код: Поддерживает PHP, CSS, HTML, JavaScript, AppleScript и Cocoa API. Эта IDE отмечена как «разработка в одном окне» для пользователей Mac.
IDE, созданная для определенных языков
Существуют специальные IDE, предназначенные для программистов, работающих на одном языке. К ним относятся Jikes и Jcreator для Java, CodeLite и C-Free для C/C++, RubyMine для Ruby/Rails и Idle для Python.
Безопасность приложений и интегрированная среда разработки.
Хотя безопасность приложений является важнейшим приоритетом для групп разработчиков, управление тестированием безопасности в интегрированной среде разработки часто представляло собой серьезную проблему. Разработчики, стремящиеся уложиться в сроки в гибких или каскадных процессах разработки программного обеспечения, часто уже используют множество отдельных инструментов. Новая технология AppSec, в которой отсутствуют гибкие API-интерфейсы и которую сложно использовать в интегрированной среде разработки, часто не будет принята, что приведет к большим проблемам с безопасностью и трудностям с соблюдением требований нормативных рамок, таких как соответствие требованиям HIPAA и SarbOx.
Для повышения безопасности приложений Veracode предлагает набор решений для тестирования безопасности настольных компьютеров, веб-приложений и мобильных приложений в облачной службе, которые можно легко комбинировать в интегрированной среде разработки для поиска и устранения недостатков в любой точке SDLC.
Документы и слайды
Документы и слайды
Высокоточная проверка ввода: запирание входной двери. Кэтлин Фишер (Университет Тафтса).
Аннотация: Кибербезопасность — это сложная проблема со значительными негативными последствиями для личной, финансовой и национальной безопасности из-за неправильного решения. Одна из причин сложности заключается в том, что защитники должны запирать каждую дверь, в то время как защитники должны найти только один вход. Защита от ввода вредоносных программ эквивалентна блокировке входной двери, но, согласно объявлению DARPA Safedocs Broad Agency, 80% из проблем в базе данных MITRE Common Vulnerabilities and Exposures связаны с ошибками проверки ввода.
Мы даже не запираем должным образом входную дверь! Как будет выглядеть высоконадежная проверка ввода? По крайней мере, это требует нескольких шагов:
(1) указание языка ввода на формальном языке описания, (2) проверка спецификации путем систематического тестирования, (3) создание синтаксического анализатора высокой надежности, а затем (4) гарантировать, что клиентский код правильно обрабатывает все термины на языке ввода.
Конечно, это видение вводит множество практических проблем, включая выразительность языка формального описания, существование и удобство использования высоконадежной инфраструктуры синтаксического анализа, производительность сгенерированных синтаксических анализаторов и применимость инструментов рассуждений для оценки клиентского кода. В этом докладе я расскажу о состоянии дел в области высоконадежной проверки входных данных, обсужу препятствия для внедрения и выскажу предположения о будущих направлениях исследований.
Биография: Кэтлин Фишер — профессор и заведующая кафедрой компьютерных наук Университета Тафтса.
Ранее она была менеджером программы в DARPA и главным членом технического персонала исследовательской лаборатории AT&T. Она получила степень доктора компьютерных наук в Стэнфордском университете. Исследования Кэтлин сосредоточены на развитии теории и практики языков программирования, а также на применении идей сообщества языков программирования к проблеме специального управления данными. Кэтлин является членом ACM и бывшим председателем специальной группы ACM по языкам программирования (SIGPLAN). Она работала председателем программ PLDI, ICFP и OOPSLA, редактором Journal of Functional Programming и ассоциированным редактором TOPLAS. Она была сопредседателем CRA-W с 2008 по 2011 год и часто выступает на мероприятиях CRA-W. Она является бывшим председателем ISAT DARPA и членом Совета CCC. Она была стипендиатом фонда Hertz.
[слайды]
Формальные языки, глубокое обучение, топология и алгебраические текстовые задачи. Джордж Цибенко и Джошуа М. Акерман (Дартмутский колледж).

Аннотация: В этой статье описываются взаимосвязи между различными современными архитектурами нейронных сетей и формальными языками, например, структурированные языковой иерархией Хомского. Особый интерес представляют способности нейронной архитектуры представлять, распознавать и генерировать слова определенного языка, обучаясь на положительных и отрицательных образцах слов в языке. Особый интерес представляют некоторые отношения между языками, сетями и топологией, которые мы обрисовываем аналитически и исследуем с помощью нескольких иллюстративных экспериментов. Конкретно сравнивая аналитические результаты, связывающие формальные языки с топологией с помощью алгебраических задач со словами, с эмпирическими результатами, основанными на нейронных сетях и постоянных гомологических вычислениях, мы видим доказательства того, что определенные наблюдаемые топологические свойства соответствуют свойствам, предсказанным аналитически. Такие результаты обнадеживают для понимания роли, которую современное машинное обучение может играть в задачах обработки формального языка.
Цибенко Биография: Джордж Цибенко — профессор инженерии Дороти и Уолтера Грэмм в Дартмуте. Профессор Цибенко внес ключевой вклад в исследования в области обработки сигналов, нейронных вычислений, параллельной обработки и вычислительного поведенческого анализа. Он был главным редактором-основателем IEEE/AIP Computing in Science and Engineering, IEEE Security & Privacy и IEEE Transactions on Computational Social Systems. В прошлом он работал в Совете по оборонным наукам и Научно-консультативном совете ВВС, а также является советником Армейского киберинститута в Вест-Пойнте. Профессор Цибенко является членом IEEE и SIAM. Он получил степень бакалавра (Университет Торонто) и доктора философии (Принстон) по математике. Цибенко был соучредителем компании Flowtraq Inc, которая была приобретена Riverbed Technology в 2017 году9.0005
Биография Аккермана:
Джошуа Акерман — аспирант Института безопасности, технологий и общества Дартмутского колледжа. Его исследования в целом сосредоточены на пересечении машинного обучения и кибербезопасности с особым акцентом на том, как сделать системы машинного обучения более надежными и надежными.
Он получил степень бакалавра в области математики со специализацией в области компьютерных наук в Университете Карнеги-Меллона.
[Бумага] [слайды]
Незавершенная работа: Единая алгебраическая структура анализа программ. Мартин Ринар (MIT), Хенни Сипма (Aarno Labs), Томас Бурже (MIT).
Аннотация: Программный анализ традиционно формулировался как точечный. решения конкретных задач анализа программ. Мы представляем комплексная, унифицированная структура, в которой анализ программ алгебраическая решетчатая структура, основанная на том, что программа отслеживает, что каждый анализ определяет. В этих рамках каждый программный анализ характеризуется набором программных следов, которые он идентифицирует, с программный анализ, упорядоченный обратным включением подмножества по наборам выявленные программные следы. С этим заказом сбор программы анализ содержит решетку с наименьшей верхней границей и наибольшей нижней граница.
[Бумага] [слайды]
«Дословно: проверенный генератор лексеров».
Дерек Эгольф, Сэм Лассер и Кэтлин Фишер (Университет Тафтса).Лексеры и синтаксические анализаторы часто используются в качестве внешних интерфейсов для соединения входных данных из внешнего мира с внутренними компонентами более крупной программной системы. Эти внешние интерфейсы являются естественными целями для злоумышленников, которые хотят скомпрометировать более крупную систему. Формально проверенный инструмент, выполняющий механизированный лексический анализ, сделает атаки на эти интерфейсы менее эффективными.
В этой статье мы представляем Verbatim, исполняемый лексический модуль, который реализован и проверен с помощью Coq Proof Assistant. Мы доказываем, что Verbatim корректен в отношении стандартной спецификации лексера. Мы также анализируем его теоретическую сложность и приводим результаты эмпирической оценки эффективности. Все доказательства правильности, представленные в статье, были механизированы в Coq.
[бумага] [разговорное видео]
«Теория формального языка для практической безопасности»; Андреас Якоби, Яннис Лойтер и Стефан Лакс (Баухаус-Университет Веймар).

Когда двоичные данные отправляются от одной стороны к другой, кодирование данных можно описать как язык «сериализации данных» (DSL). Многие DSL используют шаблон «префикс длины» для строк, контейнеров и других элементов данных переменной длины. Он состоит из кодирования длины элемента, за которым следует кодирование самого элемента — без закрывающих скобок или «конечных» символов. Получатель должен определить последний байт из длины, считанной ранее. Языки с префиксом длины не являются контекстно-свободными. Таким образом, изобилие инструментов и методов для определения, анализа и синтаксического анализа контекстно-свободных языков кажется бесполезным для языков с префиксом длины. Это, по-видимому, объясняет, почему неправильные спецификации языков с префиксами длины и ошибочные написанные от руки синтаксические анализаторы так часто являются основной причиной проблем с безопасностью и эксплойтов, как, например, в случае со знаменитой ошибкой Heartbleed. Можно даже подумать, что использование языков с префиксом длины представляет угрозу безопасности.
Но это соображение было бы неверным. Мы представляем преобразование слов из «безконтекстно-свободных» языков (надмножество языков без контекста и языков с префиксом длины) в слова из правильных бесконтекстных языков. Преобразование фактически позволяет использовать инструменты из контекстно-свободных языков для работы с языками с префиксом длины.
Наше преобразование выполняется на машине Тьюринга с логарифмическим пространством. Это подразумевает теоретический результат того, что языки без контекста calc относятся к классу сложности logCFL. Точно так же детерминированные языки без контекста вычислений находятся в logDCFL. Чтобы работать в линейном времени, нужно расширить машину Тьюринга стеком для хранения дополнительных данных.
[Бумага] [разговорное видео]
«Формальный синтез компонентов фильтра для использования в архитектурных преобразованиях, повышающих безопасность»; Дэвид Хардин и Конрад Слинд (Collins Aerospace).
Разработчики, критически важные для безопасности, уже давно признали
важность применения высокой степени проверки к системе (или
подсистемы) границы ввода/вывода.
Однако отсутствие внимательности в развитии
таких компонентов фильтра может привести к увеличению, а не
уменьшение поверхности атаки. О программе DARPA Cyber-Assured
Программа системной инженерии (CASE), мы сосредоточили наши исследования
усилия по выявлению киберуязвимостей на ранней стадии системы
разработка, в частности на этапе разработки архитектуры, и
затем автоматически синтезируются компоненты, смягчающие
против выявленных уязвимостей из высокоуровневых спецификаций.
Этот подход хорошо совместим с целями LangSec.
сообщество. Достижения в формальных методах позволили нам получить
аппаратные/программные реализации, которые одновременно являются производительными и
гарантировано правильно. С помощью этих инструментов мы можем синтезировать
высоконадежные «строительные блоки», которые могут быть составлены
автоматически с высокой степенью уверенности для создания надежных систем,
используя метод, который мы называем архитектурными преобразованиями, повышающими безопасность.
Наш подход, ориентированный на синтез
обеспечивает более эффективную точку вставки для формальных методов, чем
возможно с помощью аналитических методов постфактум, как формальное
средства методов непосредственно способствуют внедрению системы,
не требуя, чтобы разработчики стали экспертами по формальным методам.
Наш
методы охватывают разработку систем, аппаратного и программного обеспечения,
а также совместное проектирование/обеспечение аппаратного и программного обеспечения. Мы иллюстрируем нашу
метод и инструменты с примером, который реализует повышение безопасности
преобразования системных архитектур, выраженные с помощью параметра Архитектура
Язык анализа и проектирования (AADL). Мы покажем, как проверка ввода
компоненты фильтра могут быть синтезированы из высокоуровневых
обычные или контекстно-свободные языковые спецификации, и
проверено на соответствие арифметическим ограничениям, извлеченным из AADL
модель. Наконец, мы гарантируем, что целью логики фильтра является
точно отражены в двоичном коде приложения за счет использования
проверенный компилятор CakeML, в случае программного обеспечения, или
Ограниченная алгоритмическая цепочка инструментов C с формальными формами на основе ACL2.
проверка, в случае совместной разработки аппаратного и программного обеспечения.
[Бумага] [Слайды] [обсуждение видео]
«Доступные формальные методы для разработки проверенных синтаксических анализаторов»; Летиция Ли (BAE Systems), Грег Икман (BAE Systems), Элиас Гарсия (Особые обстоятельства) и Сэм Атман (Особые обстоятельства).

Недостатки безопасности в программах чтения Portable Document Format (PDF) могут позволить PDF-файлам скрывать вредоносное ПО, эксфильтровать информацию и выполнять вредоносный код. Чтобы средство чтения PDF смогло идентифицировать эти некорректные PDF-файлы, необходимо провести синтаксический анализ, а затем проанализировать семантические свойства или структуру результата синтаксического анализа. В этой статье показано, как доступные для разработчиков формальные методы поддерживают теоретико-языковой подход к безопасности при анализе и проверке PDF. Мы разрабатываем синтаксический анализатор и валидатор PDF на ACL2, языке доказательства теорем, который позволяет нам генерировать доказательства желаемых свойств функций, таких как правильность. Структура парсера и семантические правила определяются грамматикой PDF и попадают в определенные шаблоны, поэтому могут быть автоматически составлены из набора проверенных базовых функций. Вместо того, чтобы требовать от разработчика знания формальных методов и написания кода ACL2 вручную, мы используем Tower, наш модульный метаязык, для создания проверенных функций и доказательств ACL2, а также эквивалентный код C для анализа семантических свойств, которые затем можно интегрировать в нашу программу.
проверенный синтаксический анализатор или существующий синтаксический анализатор для поддержки проверки PDF.
[бумага] [обсуждение видео]
«Дифференциальный анализ декодеров команд x86-64»; Уильям Вудрафф (Trail of Bits), Ники Кэрролл (Университет Джорджа Мейсона) и Себастьян Питерс (Эйндховенский технологический университет).
Дифференциальный фаззинг заменяет традиционные фаззер-оракулы, такие как сбои, зависания, некорректный доступ к памяти, оракулом различий, где реализация спецификации считается потенциально ошибочной, если ее поведение отличается от поведения другой реализации на тех же входных данных. Дифференциальный фаззинг успешно применялся в криптографии и анализаторах сложных форматов приложений, таких как PDF и ELF.
В этом документе описывается применение дифференциального фаззинга к декодерам инструкций x86-64 для обнаружения ошибок. Он представляет MISHEGOS, новый дифференциальный фаззер, который обнаруживает несоответствия декодирования между декодерами инструкций.
Мы описываем архитектуру MISHEGOS и подход к обнаружению ошибок, а также влияние ошибок декодирования и расхождений на безопасность. Мы также описываем новую стратегию фаззинга для декодеров инструкций на архитектурах с переменной длиной, основанную на аппроксимированной модели машинных инструкций.
MISHEGOS производит сотни миллионов тестов декодера в час на скромном оборудовании. Мы использовали MISHEGOS для обнаружения сотен ошибок в популярных декодерах команд x86-64, не полагаясь на аппаратный декодер для подтверждения истины. MISHEGOS включает расширяемую структуру для анализа результатов кампании фаззинга, позволяющую пользователям обнаруживать ошибки в одном декодере или различные несоответствия между несколькими декодерами. Мы предоставляем доступ к исходному коду MISHEGOS по разрешающей лицензии.
[бумага] [обсуждение видео]
«Богемия: Валидатор для фреймворков парсера»; Аниш Паранджпе и Ганг Тан (Университет штата Пенсильвания).
Синтаксический анализ повсеместно используется в проектах по разработке программного обеспечения, начиная от небольших
утилиты командной строки, высокозащищенные сетевые клиенты, большие
компиляторы.
Программисты предоставляются
с множеством библиотек синтаксического анализа на выбор. Однако,
ошибки реализации в библиотеках синтаксического анализа позволяют генерировать
неправильные парсеры, которые, в свою очередь, могут привести к сбою вредоносных входных данных
системы или запустить эксплойты безопасности.
В этой статье мы описываем облегченную структуру проверки под названием Bohemia.
который разработчик библиотеки синтаксического анализа может использовать в качестве инструмента в наборе инструментов для интеграционного тестирования. Фреймворк использует концепцию эквивалентности.
Modulo Inputs (EMI) для генерации измененных входных грамматик для
стресс-тестирование библиотеки синтаксического анализа. Мы также описываем результат
оценка Bohemia с помощью набора библиотек синтаксического анализа, которые используют
отдельные алгоритмы разбора. В ходе проверки мы обнаружили ряд
ошибок в этих библиотеках. О некоторых из них сообщалось и
исправлено разработчиками.
[бумага] [разговорное видео]
«RL-GRIT: обучение с подкреплением для грамматического вывода»; Уолт Вудс (Galois Inc.
). Когда эксперт по формату работает над пониманием использования формата данных,
примеры формата данных часто более репрезентативны, чем
спецификация формата. Например, два разных приложения могут
использовать очень разные представления JSON или два варианта написания PDF
приложения могут использовать очень разные области PDF
Спецификация для реализации одного и того же визуализируемого содержимого. Сложность
возникающие из этих различных источников, могут привести к большим,
сложные для понимания поверхности атаки, представляющие угрозу безопасности
при рассмотрении как эксфильтрации, так и данных шизофрении. Грамматика
вывод может помочь в описании генератора практического языка
за примерами формата данных. Однако большинство грамматических выводов
исследования сосредоточены на естественном языке, а не на форматах данных, и не
поддерживают важные функции, такие как рекурсия типов. Мы предлагаем роман
набор механизмов для вывода грамматики, RL-GRIT, и применить их к
понимание форматов данных де-факто.
После просмотра существующей грамматики
решения, было определено, что новый, более гибкий
эшафот можно найти в Reinforcement Learning (RL). В рамках этого
работы, мы выкладываем множество алгоритмических изменений, необходимых для адаптации RL
от его традиционной, последовательной временной среды к очень
взаимозависимая среда парсинга. Результат — алгоритм
который может наглядно изучить рекурсивные управляющие структуры в простых
форматы данных и может извлекать осмысленную структуру из фрагментов
формат PDF. Принимая во внимание, что предыдущая работа в области грамматического вывода была сосредоточена на
либо обычные языки, либо синтаксический анализ групп, мы показываем, что RL может
использоваться, чтобы превзойти выразительность обоих классов, и предлагает
четкий путь к изучению контекстно-зависимых языков. Предлагаемый
Алгоритм может служить строительным блоком для понимания
экосистемы форматов данных де-факто.
[бумага] [обсуждение видео]
«Поиск несовместимых документов с использованием сообщений об ошибках от нескольких синтаксических анализаторов»; Майкл Робинсон (Американский университет).

Принятие файла одним синтаксическим анализатором не является надежным
указание на то, соответствует ли файл заявленному формату. Ошибки
как в синтаксическом анализаторе, так и в спецификации формата означает, что
совместимый файл может не пройти синтаксический анализ или что несовместимый файл может
читаться без видимых затруднений. Последняя ситуация представляет собой
значительный риск для безопасности, и его следует избегать. эта статья
предполагает, что лучший способ оценить соответствие спецификации формата
заключается в проверке набора сообщений об ошибках, выдаваемых набором синтаксических анализаторов
а не один парсер. Если и образец совместимых файлов, и
образец несовместимых файлов доступен, затем мы покажем, как
статистический тест, основанный на отношении псевдоправдоподобия, может быть очень
эффективен при определении соответствия файла. Наш метод формат
агностик и не опирается непосредственно на формальную спецификацию
Формат. Хотя эта статья посвящена случаю PDF
формате (ISO 32000-2), мы не пытаемся использовать какие-либо конкретные детали
формата.
Кроме того, мы показываем, как анализ главных компонент
может быть полезно разработчику спецификации формата для оценки
качество и структура этих образцов файлов и парсеров. Пока
эти тесты абсолютно рудиментарны, кажется, что их использование для
измерять изменчивость формата файлов и выявлять несовместимые файлы.
одновременно новый и удивительно эффективный.
[бумага] [разговорное видео]
«Безопасность механизированного типа для постепенного потока информации»; Тяньюй Чен и Джереми Сик (Университет Индианы).
Мы моделируем язык безопасности с постепенным потоком информации метки в помощнике по корректуре, продемонстрируйте его потенциальное применение для анализ и защита конфиденциальных входных данных пользователя, представить семантику в качестве интерпретатора определений и докажите безопасность типов. Мы сравниваем языковые особенности и свойства различных существующих постепенных языки безопасности, проливающие свет на будущие проекты.
[Бумага] [обсуждение видео]
«Демистификация PDF с помощью машиночитаемого определения»; Питер Вятт (PDF Association Inc.
). В этом документе Арлингтонская модель PDF представлена как первая модель открытого доступа,
всеобъемлющее машиночитаемое определение всех
формально определенные объекты PDF и отношения целостности данных. Этот
представляет основную часть последней спецификации ISO PDF 2.0 на 1000 страниц.
и является определением всей объектной модели PDF-документа,
установление современной «основной правды» для всех будущих PDF-файлов.
исследовательские усилия и исполнители. Выражается в виде набора текстовых
Файлы TSV с 12 полями данных, модель Arlington PDF в настоящее время
определяет 514 различных объектов PDF с 3551 ключом и элементом массива
и использует 40 пользовательских предикатов для кодирования более 5000 правил.
Модель Arlington PDF была успешно проверена на соответствие альтернативным
модели, а также значительный массив существующих файлов данных, и был
широко распространен в исследовательском сообществе SafeDocs, а также в
Техническая рабочая группа PDF Ассоциации PDF. Он уже
выделил различные существующие искажения данных и вызвал несколько
изменения в спецификации PDF 2.
0, чтобы отразить де-факто
уточнение, устранение неясностей и исправление ошибок.
[бумага] [обсуждение видео]
«Создание обсерватории файлов для разработки безопасного синтаксического анализатора»; Тим Эллисон, Уэйн Берк, Крис Маттманн, Анастасия Менсикова, Филип Саузэм и Райан Стоунбрейкер (Лаборатория реактивного движения НАСА).
Общеизвестно, что синтаксический анализ ненадежных данных является сложной задачей. Неспособность справиться
правильно созданные злонамеренные данные могут привести (и приводят) к широкому спектру
уязвимостей. Языковая теоретическая безопасность (LangSec)
Философия стремится устранить необходимость для разработчиков применять ad hoc
решения, вместо этого предлагая формально правильные и проверяемые входные данные
обработка на протяжении всего жизненного цикла разработки программного обеспечения. Один из ключевых
компонентов в разработке безопасных парсеров представляет собой корпус с широким охватом
который позволяет разработчикам понять проблемное пространство для данного
формата и использовать, возможно, в качестве исходных материалов для фаззинга и других
автоматизированное тестирование.
В этой статье мы предлагаем обновленную информацию о
разработка файловой обсерватории для сбора и анализа
разнообразная коллекция файлов в масштабе. В частности, мы сообщаем о
добавление корпуса баг-трекеров и новых аналитических методов на наш
существующий корпус.
[бумага] [слайды] [разговорное видео]
«Pegmatite: анализ PEG с полями длины в программном и аппаратном обеспечении»; Зефир Лукас, Джоанна Лю, Прашант Анантараман и Шон Смит (Дартмутский колледж).
Поскольку синтаксические анализаторы являются линией защиты между двоичными файлами и ненадежными
данных, они являются одними из наиболее распространенных источников уязвимостей в
программного обеспечения. Теоретико-языковая безопасность обеспечивает подход к
внедрить усиленные парсеры. Мы указываем двоичный формат как формальный
грамматику и реализовать распознаватель для этой формальной грамматики. Однако,
большинство двоичных форматов используют такие конструкции, как поле длины, повторение
поле и инструкцию смещения.
Большинство форматов грамматики не поддерживает
эти особенности. 92) время и параллельный алгоритм парсинга
Вычислить ПЭГ за время O(n). Мы также представляем Pegmatite, инструмент для
генерировать эти парсеры на C с возможностью генерировать код VHDL.
[бумага] [разговорное видео]
«Открытие новейших вычислений за пределами абстракции»; Марк Бодди, Джим Карчиофини, Тодд Карпентер, Алекс Марер, Райан Перутка и Кайл Нельсон (Adventium Labs).
В этом отчете о незавершенных работах мы описываем текущее исследование нашего проекта DECIMAL, направленное на решение проблемы моделирования вычислительных механизмов с достаточной точностью, чтобы рассуждать о семантике выполнения программ вне границ абстракции. Разработанный нами формализм, основанный на автоматах, специально разработан для поддержки рассуждений о временном поведении над композициями многокомпонентных автоматов, моделирующих различные части изучаемой системы. Мы покажем, как мы используем композицию для моделирования широкого спектра конструкций, включая синхронизацию через границы абстракции, взаимодействие асинхронных процессов и определение программ, которые можно обобщить для различных архитектур и локализованных вариаций в спецификации программы.
[бумага] [обсуждение видео]
«Проверенный генератор парсеров для приложений микроконтроллеров»; Самид Али и Шон Смит (Дартмутский колледж).
В этом документе представлен набор инструментов для создания синтаксических анализаторов, который генерирует проверенные синтаксические анализаторы на основе предоставленного пользователем описания синтаксического анализатора. Это описание синтаксического анализатора описывается с использованием нового языка описания синтаксического анализатора (PDL). Синтаксические анализаторы, сгенерированные этим языком описания синтаксических анализаторов, не только проверены (чтобы гарантировать завершение синтаксического анализа и предотвратить повреждение памяти), но также строго ограничены в выразительности, поскольку PDL поддерживается формальной языковой моделью (конечным автоматом). математические ограничения их сложности, что позволяет нам рассуждать о таких свойствах, как разрешимость и эквивалентность. Хотя это и не является целью этой работы, в будущем мы стремимся расширить эту работу с помощью модуля, который позволит нам тестировать парсерную эквивалентность одного или нескольких сгенерированных парсеров.
Произвольный написанный вручную синтаксический анализатор, написанный на C, не позволяет нам с такой гибкостью рассуждать о таких свойствах. Эти синтаксические анализаторы являются нулевыми копиями, предназначенными для работы с крупномасштабными конечными машинами, а также достаточно компактными, чтобы их можно было развертывать на микроконтроллерах с ограниченными вычислительными ресурсами. Кроме того, PDL спроектирован так, чтобы быть кратким и достаточно описательным для описания часто встречающихся грамматических конструкций, встречающихся в пакетах сетевых протоколов. прошивки устройства Ubertooth One и атаки на них с помощью созданных вручную искаженных пакетов BLE LL. Наши первоначальные результаты показывают, что усиленные синтаксические анализаторы эффективны против искаженных пакетов. Наша цель — протестировать его с помощью большого количества известных эксплойтов BLE LL, а также провести фаззинг, чтобы тщательно оценить безопасность этих синтаксических анализаторов. микроконтроллеры BLE
[бумага] [слайды] [обсуждение видео]
«Оптимизация размещения передачи данных с помощью анализа Парето»; Дж.
Питер Брэди и Шон Смит (Дартмутский колледж).Мы демонстрируем новый способ использования посредничества данных и оптимизации Парето для добавления теоретико-языковой безопасности к программным приложениям путем оценки структур данных приложения и их взаимодействия с другими данными в процессе работы приложения. Мы создаем общую модель и автоматизированные программы, которые предоставляют разработчику простой способ выбрать точку баланса между защитой и производительностью.
[бумага] [обсуждение видео]
«На пути к платформе для сравнения генераторов бинарных синтаксических анализаторов»; Оливье Левиллен, Себастьян Но и Айна Токи Расоаманана (Télécom SudParis, Парижский политехнический институт).
Двоичные синтаксические анализаторы широко используются в программном обеспечении, которое мы используем каждый день, будь то интерпретация форматов файлов или сообщений сетевых протоколов. Однако синтаксические анализаторы обычно ненадежны и являются обычным местом для ошибок и уязвимостей безопасности.
За прошедшие годы было разработано несколько проектов, чтобы попытаться решить эту проблему с использованием различных форм, таких как комбинаторы синтаксических анализаторов или языки, специфичные для предметной области. Чтобы лучше понять эту богатую экосистему, мы запустили платформу для тестирования и сравнения таких инструментов с различными спецификациями. С помощью нашей так называемой «платформы LangSec» мы обнаружили ошибки в различных реализациях и получили представление об этих инструментах.
[бумага] [обсуждение видео]
Спецификация OpenAPI — Версия 3.0.3
Версия 3.0.3
Ключевые слова «ДОЛЖЕН», «НЕ ДОЛЖЕН», «ТРЕБУЕТСЯ», «ДОЛЖЕН», «НЕ ДОЛЖЕН», «ДОЛЖЕН», «НЕ ДОЛЖЕН», «РЕКОМЕНДУЕТСЯ», «НЕ РЕКОМЕНДУЕТСЯ», «МОЖЕТ» и «ДОПОЛНИТЕЛЬНО» в этом документе должны интерпретироваться, как описано в BCP 14 RFC2119 RFC8174, когда и только тогда, когда они появляются всеми заглавными буквами, как показано здесь.
Этот документ находится под лицензией Apache License, Version 2.
0.
Введение
Спецификация OpenAPI (OAS) определяет стандартный, не зависящий от языка интерфейс для RESTful API, который позволяет людям и компьютерам обнаруживать и понимать возможности службы без доступа к исходному коду, документации или проверки сетевого трафика. При правильном определении потребитель может понимать и взаимодействовать с удаленной службой с минимальным количеством логики реализации.
Определение OpenAPI затем может использоваться инструментами создания документации для отображения API, инструментами генерации кода для создания серверов и клиентов на различных языках программирования, инструментами тестирования и многими другими вариантами использования.
Содержание
- Определения
- Документ OpenAPI
- Шаблон пути
- Типы носителей
- Коды состояния HTTP
- Спецификация
- Версии
- Формат
- Структура документа
- Типы данных
- Расширенное форматирование текста
- Относительные ссылки в URL-адресах
- Схема
- Объект OpenAPI
- Информационный объект
- Контакт Объект
- Объект лицензии
- Объект сервера
- Объект переменной сервера
- Компоненты Объект
- Пути Объект
- Объект элемента пути
- Операционный Объект
- Объект внешней документации
- Объект параметров
- Объект тела запроса
- Тип носителя Объект
- Объект кодирования
- Ответы Объект
- Объект ответа
- Объект обратного вызова
- Пример объекта
- Объект связи
- Объект заголовка
- Тег объекта
- Справочный объект
- Объект схемы
- Дискриминатор Объект
- XML-объект
- Объект схемы безопасности
- Объект потоков OAuth
- Объект потока OAuth
- Объект требования безопасности
- Расширения спецификации
- Фильтрация безопасности
- Приложение A: История изменений
Определения
Документ OpenAPI
Документ (или набор документов), определяющий или описывающий API.
Определение OpenAPI использует спецификацию OpenAPI и соответствует ей.
Шаблон пути
Шаблон пути относится к использованию выражений шаблона, разделенных фигурными скобками ({}), для пометки раздела пути URL как заменяемого с использованием параметров пути.
Каждое выражение шаблона в пути ДОЛЖНО соответствовать параметру пути, который включен в сам элемент пути и/или в каждую из операций элемента пути.
Типы носителей
Определения типов носителей распределены по нескольким ресурсам. Определения типа носителя ДОЛЖНЫ соответствовать RFC6838.
Некоторые примеры возможных определений типа носителя:
text/plain; кодировка = utf-8 приложение/json приложение/vnd.github+json приложение/vnd.github.v3+json приложение/vnd.github.v3.raw+json приложение/vnd.github.v3.text+json приложение/vnd.github.v3.html+json приложение/vnd.github.v3.full+json приложение /vnd.github.v3.diff приложение /vnd.github.v3.patch
Коды состояния HTTP
Коды состояния HTTP используются для индикации состояния выполняемой операции.
Доступные коды состояния определены в RFC7231, а зарегистрированные коды состояния перечислены в реестре кодов состояния IANA.
Спецификация
Версии
Версия спецификации OpenAPI создается с использованием семантического управления версиями 2.0.0 (semver) и соответствует спецификации semver.
Основной . второстепенная часть сегмента (например, 3.0 ) ДОЛЖЕН обозначать набор функций OAS. Как правило, в версиях .patch в этом документе рассматриваются ошибки, а не набор функций. Инструменты, поддерживающие OAS 3.0, ДОЛЖНЫ быть совместимы со всеми версиями OAS 3.0.*. Версия исправления НЕ ДОЛЖНА учитываться инструментами, например, не делая различий между 3.0.0 и 3.0.1 .
Каждая новая второстепенная версия Спецификации OpenAPI ДОЛЖНА позволять любому документу OpenAPI, который действителен по сравнению с любой предыдущей второстепенной версией Спецификации, в пределах той же основной версии быть обновленным до новой версии Спецификации с эквивалентной семантикой.
Такое обновление ДОЛЖНО требовать только изменения свойство openapi для новой минорной версии.
Например, допустимый документ OpenAPI 3.0.2 после изменения свойства openapi на 3.1.0 ДОЛЖЕН быть действительным документом OpenAPI 3.1.0, семантически эквивалентным исходному документу OpenAPI 3.0.2. Новые второстепенные версии спецификации OpenAPI ДОЛЖНЫ быть написаны, чтобы обеспечить эту форму обратной совместимости.
Документ OpenAPI, совместимый с OAS 3.*.*, содержит обязательное поле openapi , обозначающее используемую семантическую версию OAS. (Документы OAS 2.0 содержат поле версии верхнего уровня с именем swagger и значение "2.0" .)
Формат
Документ OpenAPI, соответствующий спецификации OpenAPI, сам по себе является объектом JSON, который может быть представлен в формате JSON или YAML.
Например, если поле имеет значение массива, будет использоваться представление массива JSON:
{
"поле": [ 1, 2, 3 ]
}
Все имена полей в спецификации чувствительны к регистру .
Сюда входят все поля, которые используются в качестве ключей на карте, за исключением случаев, когда явно указано, что ключами являются без учета регистра .
Схема предоставляет два типа полей: фиксированные поля с объявленным именем и шаблонные поля, которые объявляют шаблон регулярного выражения для имени поля.
Поля шаблона ДОЛЖНЫ иметь уникальные имена в содержащем объекте.
Чтобы сохранить возможность переключения между форматами YAML и JSON, РЕКОМЕНДУЕТСЯ использовать YAML версии 1.2 вместе с некоторыми дополнительными ограничениями:
- Теги ДОЛЖНЫ быть ограничены теми, которые разрешены набором правил схемы JSON.
- Ключи, используемые в картах YAML, ДОЛЖНЫ быть ограничены скалярной строкой, как определено набором правил схемы YAML Failsafe.
Примечание: Хотя API могут быть определены документами OpenAPI в формате YAML или JSON, тела запроса и ответа API, а также другое содержимое не обязательно должны быть в формате JSON или YAML.
Структура документа
Документ OpenAPI МОЖЕТ состоять из одного документа или разделен на несколько связанных частей по усмотрению пользователя. В последнем случае Поля $ref ДОЛЖНЫ использоваться в спецификации для ссылки на эти части, как следует из определений схемы JSON.
РЕКОМЕНДУЕТСЯ, чтобы корневой документ OpenAPI имел имя: openapi.json или openapi.yaml .
Типы данных
Примитивные типы данных в OAS основаны на типах, поддерживаемых спецификацией схемы JSON Wright Draft 00.
Обратите внимание, что целое число в качестве типа также поддерживается и определяется как число JSON без дробной или экспоненциальной части. null не поддерживается как тип (см. nullable для альтернативного решения).
Модели определяются с помощью объекта схемы, который представляет собой расширенное подмножество спецификации схемы JSON Wright Draft 00.
Примитивы имеют необязательное свойство модификатора: формат .
OAS использует несколько известных форматов для точного определения используемого типа данных.
Однако для поддержки потребностей в документации свойство формата представляет собой открытую строку только , как если бы формат со значением и может иметь любое значение.
Такие форматы, как "email" , "uuid" и т. д., МОГУТ использоваться, даже если они не определены этой спецификацией.
Типы, которые не сопровождаются свойством формата формата , соответствуют определению типа в схеме JSON. Инструменты, которые не распознают определенный формат , МОГУТ по умолчанию вернуться к типу не был указан.
OAS определяет следующие форматы:
тип | 9формат 0413 | Комментарии |
|---|---|---|
целое число | инт32 | со знаком 32 бита |
целое число | int64 | подписанный 64-битный (длинный) |
номер | поплавок | |
номер | двойной | |
строка | ||
строка | байт | символов в кодировке base64 |
строка | двоичный | любая последовательность октетов |
логическое значение | ||
строка | дата | Как определено полная дата — RFC3339 |
строка | дата-время | Как определено дата-время — RFC3339 |
строка | пароль | Подсказка пользовательскому интерфейсу, чтобы скрыть ввод.![]() |
Расширенное форматирование текста
Во всей спецификации описания полей отмечены как поддерживающие форматирование уценки CommonMark.
Там, где инструментарий OpenAPI отображает форматированный текст, он ДОЛЖЕН поддерживать, как минимум, синтаксис уценки, как описано в CommonMark 0.27. Инструментарий МОЖЕТ игнорировать некоторые функции CommonMark для решения проблем безопасности.
Относительные ссылки в URL-адресах
Если не указано иное, все свойства, являющиеся URL-адресами, МОГУТ быть относительными ссылками, как определено в RFC3986.
Относительные ссылки разрешаются с использованием URL-адресов, определенных в объекте сервера в качестве базового URI.
Относительные ссылки, используемые в $ref , обрабатываются в соответствии со ссылкой JSON с использованием URL-адреса текущего документа в качестве базового URI. См. также Справочный объект.
Схема
В следующем описании, если поле не указано явно ТРЕБУЕТСЯ или описан как ДОЛЖЕН или СЛЕДУЕТ, его можно считать НЕОБЯЗАТЕЛЬНЫМ.
Объект OpenAPI
Это корневой объект документа OpenAPI.
Фиксированные поля
| Имя поля | Тип | Описание |
|---|---|---|
| опенапи | струна | ТРЕБУЕТСЯ . Эта строка ДОЛЖНА быть семантическим номером версии спецификации OpenAPI, которую использует документ OpenAPI. 9Поле 0413 openapi СЛЕДУЕТ использовать спецификациям инструментов и клиентам для интерпретации документа OpenAPI. Это , а не , связанный со строкой API info.version . |
| информация | Информационный объект | ТРЕБУЕТСЯ . Предоставляет метаданные об API. Метаданные МОГУТ использоваться инструментами по мере необходимости. |
| серверы | [Объект сервера] | Массив серверных объектов, которые предоставляют информацию о подключении к целевому серверу. Если Свойство серверов не указано или представляет собой пустой массив, значением по умолчанию будет объект сервера со значением URL-адреса / .![]() |
| путей | Пути Объект | ТРЕБУЕТСЯ . Доступные пути и операции для API. |
| компоненты | Компоненты Объект | Элемент для хранения различных схем спецификации. |
| безопасность | [Объект требования безопасности] | Объявление того, какие механизмы безопасности можно использовать в API. Список значений включает альтернативные объекты требований безопасности, которые можно использовать. Только один из объектов требования безопасности должен быть удовлетворен для авторизации запроса. Отдельные операции могут переопределить это определение. Чтобы сделать безопасность необязательной, в массив можно включить пустое требование безопасности ( {} ). |
| теги | [Тег объекта] | Список тегов, используемых спецификацией, с дополнительными метаданными. Порядок тегов можно использовать для отражения их порядка инструментами синтаксического анализа. Не все теги, которые используются объектом операции, должны быть объявлены. Теги, которые не объявлены, МОГУТ быть организованы случайным образом или на основе логики инструментов. Каждое имя тега в списке ДОЛЖНО быть уникальным. |
| внешние документы | Объект внешней документации | Дополнительная внешняя документация. |
Этот объект МОЖЕТ быть расширен за счет расширений спецификации.
Информационный объект
Объект предоставляет метаданные об API. Метаданные МОГУТ использоваться клиентами при необходимости и МОГУТ быть представлены в инструментах редактирования или создания документации для удобства.
Фиксированные поля
| Имя поля | Тип | Описание |
|---|---|---|
| название | струна | ТРЕБУЕТСЯ . Название API. |
| описание | струна | Краткое описание API. Синтаксис CommonMark МОЖЕТ использоваться для форматированного текстового представления. |
| условия обслуживания | струна | URL-адрес условий использования API. ДОЛЖЕН быть в формате URL. |
| контакт | Контакт Объект | Контактная информация для открытого API. |
| лицензия | Объект лицензии | Информация о лицензии для открытого API. |
| версия | струна | ТРЕБУЕТСЯ . Версия документа OpenAPI (отличная от версии спецификации OpenAPI или версии реализации API). |
Этот объект МОЖЕТ быть расширен за счет расширений спецификаций.
Пример информационного объекта
{
"title": "Пример приложения для зоомагазина",
"description": "Это пример сервера для зоомагазина.",
"termsOfService": "http://example.com/terms/",
"контакт": {
"name": "Поддержка API",
"url": "http://www.
example.com/support",
"электронная почта": "[email protected]"
},
"лицензия": {
"имя": "Апач 2.0",
"url": "https://www.apache.org/licenses/LICENSE-2.0.html"
},
"версия": "1.0.1"
}
title: Образец приложения для зоомагазина описание: Это пример сервера для зоомагазина. Условия обслуживания: http://example.com/terms/ контакт: имя: Поддержка API URL-адрес: http://www.example.com/support электронная почта: [email protected] лицензия: имя: Апач 2.0 URL-адрес: https://www.apache.org/licenses/LICENSE-2.0.html. версия: 1.0.1
Объект контакта
Контактная информация для открытого API.
Фиксированные поля
| Имя поля | Тип | Описание |
|---|---|---|
| имя | струна | Идентификационное имя контактного лица/организации. |
| адрес | струна | URL-адрес, указывающий на контактную информацию. ДОЛЖЕН быть в формате URL. |
| электронная почта | струна | Адрес электронной почты контактного лица/организации. ДОЛЖЕН быть в формате адреса электронной почты. |
Этот объект МОЖЕТ быть расширен за счет расширений спецификации.
Пример объекта контакта
{
"name": "Поддержка API",
"url": "http://www.example.com/support",
"электронная почта": "[email protected]"
}
имя: Поддержка API URL-адрес: http://www.example.com/support электронная почта: [email protected]
Объект лицензии
Информация о лицензии для открытого API.
Фиксированные поля
| Имя поля | Тип | Описание |
|---|---|---|
| имя | струна | ТРЕБУЕТСЯ . Имя лицензии, используемое для API. |
| адрес | струна | URL-адрес лицензии, используемой для API. ДОЛЖЕН быть в формате URL. |
Этот объект МОЖЕТ быть расширен за счет расширений спецификации.
Пример объекта лицензии
{
"имя": "Апач 2.0",
"url": "https://www.apache.org/licenses/LICENSE-2.0.html"
}
имя: Apache 2.0 URL-адрес: https://www.apache.org/licenses/LICENSE-2.0.html.
Объект сервера
Объект, представляющий сервер.
Фиксированные поля
| Имя поля | Тип | Описание |
|---|---|---|
| адрес | струна | ТРЕБУЕТСЯ . URL-адрес целевого хоста. Этот URL-адрес поддерживает серверные переменные и МОЖЕТ быть относительным, чтобы указать, что расположение хоста относится к местоположению, где обслуживается документ OpenAPI. Подстановки переменных будут сделаны, когда переменная названа в { скобки } . |
| описание | струна | Необязательная строка, описывающая хост, указанный URL-адресом. Синтаксис CommonMark МОЖЕТ использоваться для форматированного текстового представления. |
| переменные | Карта [ строка , объект переменной сервера] | Сопоставление между именем переменной и ее значением. Значение используется для подстановки в шаблоне URL-адреса сервера. |
Этот объект МОЖЕТ быть расширен за счет расширений спецификации.
Пример объекта сервера
Отдельный сервер может быть описан как:
{
"url": "https://development.gigantic-server.com/v1",
"description": "Сервер разработки"
}
URL-адрес: https://development.gigantic-server.com/v1 описание: Сервер разработки
Ниже показано, как можно описать несколько серверов, например, серверы объекта OpenAPI :
{
"серверы": [
{
"url": "https://development.gigantic-server.com/v1",
"description": "Сервер разработки"
},
{
"url": "https://staging.
gigantic-server.com/v1",
"description": "Промежуточный сервер"
},
{
"url": "https://api.gigantic-server.com/v1",
"description": "Производственный сервер"
}
]
}
серверов: - URL-адрес: https://development.gigantic-server.com/v1 описание: Сервер разработки - URL-адрес: https://staging.gigantic-server.com/v1 описание: Промежуточный сервер - URL-адрес: https://api.gigantic-server.com/v1 описание: Рабочий сервер
Ниже показано, как можно использовать переменные для конфигурации сервера:
{
"серверы": [
{
"url": "https://{имя пользователя}.gigantic-server.com:{порт}/{базовый путь}",
"description": "Производственный сервер API",
"переменные": {
"имя пользователя": {
"по умолчанию": "демо",
"description": "это значение назначается поставщиком услуг, в данном примере это `gigantic-server.com`"
},
"порт": {
"перечисление": [
"8443",
"443"
],
"по умолчанию": "8443"
},
"базовый путь": {
"по умолчанию": "v2"
}
}
}
]
}
серверов:
- URL-адрес: https://{имя пользователя}.
gigantic-server.com:{порт}/{базовый путь}
описание: Рабочий сервер API
переменные:
имя пользователя:
# примечание! отсутствие перечисления здесь означает, что это открытое значение
по умолчанию: демо
описание: это значение назначается поставщиком услуг, в данном примере это `gigantic-server.com`.
порт:
перечисление:
- '8443'
- «443»
по умолчанию: '8443'
базовый путь:
# открытый означает, что есть возможность использовать специальные базовые пути, назначенные провайдером, по умолчанию `v2`
по умолчанию: v2
Объект переменной сервера
Объект, представляющий переменную сервера для замены шаблона URL-адреса сервера.
Фиксированные поля
| Имя поля | Тип | Описание |
|---|---|---|
| перечисление | [ строка ] | Перечисление строковых значений, которые следует использовать, если параметры замены относятся к ограниченному набору. Массив НЕ ДОЛЖЕН быть пустым. |
| по умолчанию | струна | ТРЕБУЕТСЯ . Значение по умолчанию, используемое для замены, которое ДОЛЖНО быть отправлено, если предоставлено альтернативное значение , а не . Обратите внимание, что это поведение отличается от обработки объектов схемы значений по умолчанию, потому что в этих случаях значения параметров являются необязательными. Если определено перечисление , значение ДОЛЖНО существовать в значениях перечисления. |
| описание | струна | Необязательное описание серверной переменной. Синтаксис CommonMark МОЖЕТ использоваться для форматированного текстового представления. |
Этот объект МОЖЕТ быть расширен за счет расширений спецификации.
Компоненты Объект
Содержит набор многократно используемых объектов для различных аспектов OAS.
Все объекты, определенные в объекте компонентов, не будут влиять на API, если на них явно не ссылаются свойства вне объекта компонентов.
Фиксированные поля
| Имя поля | Тип | Описание | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| схемы | Карта[ строка , Объект схемы | Справочный объект] | Объект для хранения многократно используемых объектов схемы. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ответов | Карта[ строка , Объект ответа | Справочный объект] | Объект для хранения многократно используемых объектов ответа. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| параметры | Карта[ строка , объект параметра | Справочный объект] | Объект для хранения повторно используемых объектов параметров. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| примеры | Карта[ строка , пример объекта | Справочный объект] | Объект для хранения повторно используемых примеров объектов. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| запросТело | Карта[ строка , Объект тела запроса | Справочный объект] | Объект для хранения повторно используемых объектов тела запроса.![]() | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| коллекторы | Карта[ строка , Объект заголовка | Справочный объект] | Объект для хранения повторно используемых объектов заголовка. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Схемы безопасности | Карта[ строка , Объект схемы безопасности | Справочный объект] | Объект для хранения многократно используемых объектов схемы безопасности. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ссылки | Карта[ строка , Объект ссылки | Справочный объект] | Объект для хранения многоразовых объектов Link. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| обратные вызовы | Карта[ строка , Объект обратного вызова | Справочный объект] | Объект для хранения повторно используемых объектов обратного вызова. 9[a-zA-Z0-9\.\-_]+$ . Примеры имени поля: Пользователь Пользователь_1 Имя пользователя имя пользователя my.org.Пользователь Компоненты Пример объекта "компоненты": {
"схемы": {
"Общая ошибка": {
"тип": "объект",
"характеристики": {
"код": {
"тип": "целое",
"формат": "int32"
},
"сообщение": {
"тип": "строка"
}
}
},
"Категория": {
"тип": "объект",
"характеристики": {
"я бы": {
"тип": "целое",
"формат": "int64"
},
"имя": {
"тип": "строка"
}
}
},
"Ярлык": {
"тип": "объект",
"характеристики": {
"я бы": {
"тип": "целое",
"формат": "int64"
},
"имя": {
"тип": "строка"
}
}
}
},
"параметры": {
"скиппарам": {
"имя": "пропустить",
"в": "запрос",
"description": "количество элементов для пропуска",
«требуется»: правда,
"схема": {
"тип": "целое",
"формат": "int32"
}
},
"лимитПарам": {
"имя": "лимит",
"в": "запрос",
"description": "максимальное количество возвращаемых записей",
«требуется»: правда,
"схема": {
"тип": "целое",
"формат": "int32"
}
}
},
"ответы": {
"Не обнаружена": {
"description": "Объект не найден. Компоненты:
схемы:
Общая ошибка:
тип: объект
характеристики:
код:
тип: целое число
формат: int32
сообщение:
тип: строка
Категория:
тип: объект
характеристики:
я бы:
тип: целое число
формат: int64
имя:
тип: строка
Ярлык:
тип: объект
характеристики:
я бы:
тип: целое число
формат: int64
имя:
тип: строка
параметры:
пропуститьПарам:
имя: пропустить
в: запрос
описание: количество элементов, которые нужно пропустить
требуется: правда
схема:
тип: целое число
формат: int32
limitПарам:
Название: лимит
в: запрос
описание: максимальное количество возвращаемых записей
требуется: правда
схема:
тип: целое число
формат: int32
ответы:
Не обнаружена:
Описание: Объект не найден.Объект путей Содержит относительные пути к отдельным конечным точкам и их операциям.
Путь добавляется к URL-адресу из серверного объекта Узорчатые поля
Этот объект МОЖЕТ быть расширен за счет расширений спецификации. Сопоставление шаблонов путей Предполагая следующие пути, конкретное определение /pets/{petId}
/домашние животные/мой
Следующие пути считаются идентичными и недействительными: /pets/{petId}
/имя питомца}
Следующее может привести к неоднозначному разрешению: /{entity}/me
/книги/{id}
Пример объекта путей {
"/домашние питомцы": {
"получить": {
"description": "Возвращает всех питомцев из системы, к которым у пользователя есть доступ",
"ответы": {
"200": {
"description": "Список питомцев. /домашние животные:
получить:
описание: Возвращает всех питомцев из системы, к которым у пользователя есть доступ
ответы:
«200»:
описание: Список питомцев.
содержание:
приложение/json:
схема:
тип: массив
Предметы:
$ref: '#/компоненты/схемы/домашнее животное'
Объект элемента путиОписывает операции, доступные на одном пути. Элемент пути МОЖЕТ быть пустым из-за ограничений ACL. Сам путь по-прежнему открыт для просмотра документации, но они не будут знать, какие операции и параметры доступны. Фиксированные поля
Этот объект МОЖЕТ быть расширен за счет расширений спецификации. Пример объекта элемента пути {
"получить": {
"description": "Возвращает питомцев по идентификатору",
"summary": "Найти питомцев по ID",
"operationId": "getPetsById",
"ответы": {
"200": {
"description": "ответ питомца",
"содержание": {
"*/*": {
"схема": {
"тип": "массив",
"Предметы": {
"$ref": "#/компоненты/схемы/домашнее животное"
}
}
}
}
},
"дефолт": {
"description": "полезная нагрузка ошибки",
"содержание": {
"текст/html": {
"схема": {
"$ref": "#/компоненты/схемы/ErrorModel"
}
}
}
}
}
},
"параметры": [
{
"имя": "идентификатор",
"в": "путь",
"description": "ID питомца для использования",
«требуется»: правда,
"схема": {
"тип": "массив",
"Предметы": {
"тип": "строка"
}
},
"стиль": "простой"
}
]
}
получить:
описание: Возвращает питомцев на основе ID
резюме: Поиск домашних животных по идентификатору
идентификатор операции: getPetsById
ответы:
«200»:
описание: реакция питомца
содержание:
'*/*' :
схема:
тип: массив
Предметы:
$ref: '#/компоненты/схемы/домашнее животное'
дефолт:
описание: ошибка полезной нагрузки
содержание:
'текст/html':
схема:
$ref: '#/components/schemas/ErrorModel'
параметры:
- имя: идентификатор
в: путь
description: ID питомца для использования
требуется: правда
схема:
тип: массив
Предметы:
тип: строка
стиль: простой
Operation Object Описывает одну операцию API на пути. Фиксированные поля
Этот объект МОЖЕТ быть расширен за счет расширений спецификации. Пример объекта операции {
"метки": [
"домашний питомец"
],
"summary": "Обновляет питомца в магазине с данными формы",
"operationId": "updatePetWithForm",
"параметры": [
{
"имя": "идентификатор домашнего животного",
"в": "путь",
"description": "ID питомца, который необходимо обновить",
«требуется»: правда,
"схема": {
"тип": "строка"
}
}
],
"тело запроса": {
"содержание": {
"приложение/x-www-форма-urlencoded": {
"схема": {
"тип": "объект",
"характеристики": {
"имя": {
"description": "Обновлено имя питомца",
"тип": "строка"
},
"статус": {
"description": "Обновлен статус питомца",
"тип": "строка"
}
},
"требуется": ["статус"]
}
}
}
},
"ответы": {
"200": {
"description": "Питомец обновлен. теги:
- домашний питомец
резюме: Обновляет питомца в магазине с данными формы
идентификатор операции: updatePetWithForm
параметры:
- имя: petId
в: путь
description: ID питомца, который нужно обновить
требуется: правда
схема:
тип: строка
тело запроса:
содержание:
'приложение/x-www-form-urlencoded':
схема:
характеристики:
имя:
описание: Обновлено имя питомца
тип: строка
статус:
описание: Обновлен статус питомца
тип: строка
требуется:
- статус
ответы:
«200»:
описание: Питомец обновлен.Объект внешней документацииПозволяет ссылаться на внешний ресурс для получения расширенной документации. Фиксированные поля
Этот объект МОЖЕТ быть расширен за счет расширений спецификации. Пример объекта внешней документации {
"description": "Подробнее здесь",
"url": "https://example.com"
}
описание: Подробнее здесь адрес: https://example.com Объект параметраОписывает один рабочий параметр. Уникальный параметр определяется комбинацией имени и местоположения. Расположение параметров Существует четыре возможных местоположения параметров, указанных в поле
Фиксированные поля
Правила сериализации параметра задаются одним из двух способов.
Для более простых сценариев схема
Для более сложных сценариев свойство
Значения стиля Для поддержки распространенных способов сериализации простых параметров определен набор значений стиля
Примеры стилей Предположим, что параметр с именем строка -> "синий"
массив -> ["синий","черный","коричневый"]
объект -> { "R": 100, "G": 200, "B": 150}
В следующей таблице показаны примеры различий в отображении для каждого значения.
Этот объект МОЖЕТ быть расширен за счет расширений спецификации. Примеры объектов параметровПараметр заголовка с массивом 64-битных целых чисел: {
"имя": "токен",
"в": "заголовок",
"description": "токен для передачи в качестве заголовка",
«требуется»: правда,
"схема": {
"тип": "массив",
"Предметы": {
"тип": "целое",
"формат": "int64"
}
},
"стиль": "простой"
}
имя: токен
в: заголовок
описание: токен для передачи в качестве заголовка
требуется: правда
схема:
тип: массив
Предметы:
тип: целое число
формат: int64
стиль: простой
Параметр пути строкового значения: {
"имя": "имя пользователя",
"в": "путь",
"description": "имя пользователя для извлечения",
«требуется»: правда,
"схема": {
"тип": "строка"
}
}
имя: имя пользователя в: путь описание: имя пользователя для получения требуется: правда схема: тип: строка Необязательный параметр запроса строкового значения, позволяющий использовать несколько значений путем повторения параметра запроса: {
"имя": "идентификатор",
"в": "запрос",
"description": "ID объекта для извлечения",
«требуется»: ложь,
"схема": {
"тип": "массив",
"Предметы": {
"тип": "строка"
}
},
"стиль": "форма",
"взорваться": правда
}
имя: идентификатор
в: запрос
описание: ID объекта для выборки
требуется: ложь
схема:
тип: массив
Предметы:
тип: строка
стиль: форма
взорваться: правда
Параметр запроса в произвольной форме, допускающий неопределенные параметры определенного типа: {
"в": "запрос",
"имя": "свободная форма",
"схема": {
"тип": "объект",
"дополнительные свойства": {
"тип": "целое число"
},
},
"стиль": "форма"
}
в: запрос
Название: FreeForm
схема:
тип: объект
дополнительные свойства:
тип: целое число
стиль: форма
Сложный параметр, использующий содержимое {
"в": "запрос",
"имя": "координаты",
"содержание": {
"приложение/json": {
"схема": {
"тип": "объект",
"требуется": [
"лат",
"длинная"
],
"характеристики": {
"лат": {
"тип": "число"
},
"длинная": {
"тип": "число"
}
}
}
}
}
}
в: запрос
имя: координаты
содержание:
приложение/json:
схема:
тип: объект
требуется:
- лат
- длинная
характеристики:
лат:
тип: число
длинная:
тип: число
Объект тела запроса Описывает одно тело запроса. Фиксированные поля
Этот объект МОЖЕТ быть расширен за счет расширений спецификации. Примеры тела запросаТело запроса с определением модели, на которую ссылаются. {
"description": "пользователь для добавления в систему",
"содержание": {
"приложение/json": {
"схема": {
"$ref": "#/компоненты/схемы/пользователь"
},
"Примеры": {
"пользователь" : {
"summary": "Пример пользователя",
"externalValue": "http://foo.bar/examples/user-example.json"
}
}
},
"приложение/xml": {
"схема": {
"$ref": "#/компоненты/схемы/пользователь"
},
"Примеры": {
"пользователь" : {
"summary": "Пример пользователя в XML",
"externalValue": "http://foo.bar/examples/user-example.xml"
}
}
},
"текст/обычный": {
"Примеры": {
"пользователь" : {
"summary": "Пример пользователя в текстовом формате",
"externalValue": "http://foo.bar/examples/user-example.txt"
}
}
},
"*/*": {
"Примеры": {
"пользователь" : {
"summary": "Пример пользователя в другом формате",
"externalValue": "http://foo. описание: пользователь для добавления в систему
содержание:
'приложение/json':
схема:
$ref: '#/компоненты/схемы/пользователь'
Примеры:
пользователь:
резюме: пример пользователя
externalValue: 'http://foo.bar/examples/user-example.json'
'приложение/xml':
схема:
$ref: '#/компоненты/схемы/пользователь'
Примеры:
пользователь:
резюме: Пример пользователя в XML
externalValue: 'http://foo.bar/examples/user-example.xml'
'текст/обычный':
Примеры:
пользователь:
резюме: пример пользователя в текстовом формате
externalValue: 'http://foo.bar/examples/user-example.txt'
'*/*':
Примеры:
пользователь:
резюме: пример пользователя в другом формате
externalValue: 'http://foo.bar/examples/user-example.whatever'
Основной параметр, представляющий собой массив строковых значений: {
"description": "пользователь для добавления в систему",
"содержание": {
"текст/обычный": {
"схема": {
"тип": "массив",
"Предметы": {
"тип": "строка"
}
}
}
}
}
описание: пользователь для добавления в систему
требуется: правда
содержание:
текст/обычный:
схема:
тип: массив
Предметы:
тип: строка
Объект типа носителя Каждый объект типа носителя предоставляет схему и примеры для типа носителя, определяемого его ключом. Фиксированные поля
Этот объект МОЖЕТ быть расширен за счет расширений спецификации. Примеры типов носителей {
"приложение/json": {
"схема": {
"$ref": "#/компоненты/схемы/домашнее животное"
},
"Примеры": {
"кошка" : {
"summary": "Пример кота",
"ценность":
{
"имя": "Пушистый",
"petType": "Кошка",
"белый цвет",
"мужской пол",
"порода": "персидская"
}
},
"собака": {
"summary": "Пример собаки с кошачьим именем",
"ценность" : {
"имя": "Пума",
"petType": "Собака",
"черный цвет",
"женский пол",
"порода": "Смешанная"
},
"лягушка": {
"$ref": "#/компоненты/примеры/пример-лягушки"
}
}
}
}
}
приложение/json:
схема:
$ref: "#/компоненты/схемы/домашнее животное"
Примеры:
кошка:
Резюме: Пример кота
ценность:
имя: Пушистый
petType: Кошка
белый цвет
мужской пол
порода: персидская
собака:
резюме: Пример собаки с кошачьим именем
ценность:
имя: Пума
petType: Собака
черный цвет
женский пол
порода: смешанная
лягушка:
$ref: "#/компоненты/примеры/пример-лягушки"
Рекомендации по загрузке файлов В отличие от спецификации 2. # контент, переданный с кодировкой base64 схема: тип: строка формат: base64 # содержимое передается в двоичном виде (октетный поток): схема: тип: строка формат: бинарный Эти примеры относятся либо к входным полезным нагрузкам загрузки файлов, либо к полезным нагрузкам ответов. requestBody:
содержание:
приложение/октетный поток:
схема:
# бинарный файл любого типа
тип: строка
формат: бинарный
Кроме того, МОГУТ быть указаны определенные типы носителей: # несколько, могут быть указаны определенные типы носителей:
тело запроса:
содержание:
# бинарный файл типа png или jpeg
'изображение/jpeg':
схема:
тип: строка
формат: бинарный
'изображение/png':
схема:
тип: строка
формат: бинарный
Для загрузки нескольких файлов ДОЛЖЕН использоваться тип мультимедиа requestBody:
содержание:
составные/данные формы:
схема:
характеристики:
# Имя свойства 'file' будет использоваться для всех файлов.Поддержка тела запроса x-www-form-urlencodedможно использовать определение: тело запроса:
содержание:
приложение/x-www-форма-urlencoded:
схема:
тип: объект
характеристики:
я бы:
тип: строка
формат: UUID
адрес:
# сложные типы преобразуются в строки для поддержки RFC 1866
тип: объект
характеристики: {}
В этом примере содержимое При передаче сложных объектов в типе контента Особые соображения для multipart Content Обычно используется При передаче типов
Примеры: requestBody:
содержание:
составные/данные формы:
схема:
тип: объект
характеристики:
я бы:
тип: строка
формат: UUID
адрес:
# Content-Type по умолчанию для объектов - `application/json`
тип: объект
характеристики: {}
изображение профиля:
# Content-Type по умолчанию для строки/двоичного файла: `application/octet-stream`
тип: строка
формат: бинарный
дети:
# Content-Type по умолчанию для массивов основан на `внутреннем` типе (здесь text/plain)
тип: массив
Предметы:
тип: строка
адреса:
# Content-Type по умолчанию для массивов основан на `внутреннем` типе (показан объект, поэтому в этом примере `application/json`)
тип: массив
Предметы:
тип: '#/компоненты/схемы/адрес'
Атрибут Объект кодированияОдно определение кодирования, примененное к одному свойству схемы. Фиксированные поля
Этот объект МОЖЕТ быть расширен за счет расширений спецификации. Пример объекта кодирования requestBody:
содержание:
составной/смешанный:
схема:
тип: объект
характеристики:
я бы:
# по умолчанию текстовый/обычный
тип: строка
формат: UUID
адрес:
# по умолчанию это приложение/json
тип: объект
характеристики: {}
историяМетаданные:
# нужно объявить формат XML!
описание: метаданные в формате XML
тип: объект
характеристики: {}
изображение профиля:
# по умолчанию используется application/octet-stream, необходимо объявить только тип изображения!
тип: строка
формат: бинарный
кодировка:
историяМетаданные:
# требуется XML Content-Type в кодировке utf-8
ContentType: приложение/xml; кодировка = utf-8
изображение профиля:
# принимаем только png/jpeg
contentType: изображение/png, изображение/jpeg
заголовки:
X-Rate-Limit-Limit:
описание: Количество разрешенных запросов в текущем периоде
схема:
тип: целое число
Responses Object Контейнер для ожидаемых ответов операции. Документация не обязательно должна охватывать все возможные коды ответов HTTP, поскольку они могут быть неизвестны заранее. Однако ожидается, что документация будет охватывать успешный ответ операции и любые известные ошибки. Объект ответов Фиксированные поля
Узорчатые поля
Этот объект МОЖЕТ быть расширен за счет расширений спецификации. Ответы Пример объектаОтвет 200 для успешной операции и ответ по умолчанию для других (подразумевающий ошибку): {
"200": {
"description": "животное, которое нужно вернуть",
"содержание": {
"приложение/json": {
"схема": {
"$ref": "#/компоненты/схемы/домашнее животное"
}
}
}
},
"дефолт": {
"description": "Непредвиденная ошибка",
"содержание": {
"приложение/json": {
"схема": {
"$ref": "#/компоненты/схемы/ErrorModel"
}
}
}
}
}
'200':
описание: домашнее животное, которое нужно вернуть
содержание:
приложение/json:
схема:
$ref: '#/компоненты/схемы/домашнее животное'
дефолт:
описание: Непредвиденная ошибка
содержание:
приложение/json:
схема:
$ref: '#/components/schemas/ErrorModel'
Response Object Описывает один ответ от операции API, включая время разработки, статический Фиксированные поля
Этот объект МОЖЕТ быть расширен за счет расширений спецификации. Примеры объектов ответаОтвет массива сложного типа: {
"description": "Ответ сложного массива объектов",
"содержание": {
"приложение/json": {
"схема": {
"тип": "массив",
"Предметы": {
"$ref": "#/компоненты/схемы/VeryComplexType"
}
}
}
}
}
описание: Ответ массива сложных объектов
содержание:
приложение/json:
схема:
тип: массив
Предметы:
$ref: '#/компоненты/схемы/VeryComplexType'
Ответ строкового типа: {
"description": "Простой строковый ответ",
"содержание": {
"текст/обычный": {
"схема": {
"тип": "строка"
}
}
}
}
описание: Простой строковый ответ
содержание:
текст/обычный:
схема:
тип: строка
Простой текстовый ответ с заголовками: {
"description": "Простой строковый ответ",
"содержание": {
"текст/обычный": {
"схема": {
"тип": "строка",
"пример": "вау!"
}
}
},
"заголовки": {
"Ограничение скорости X-предела": {
"description": "Количество разрешенных запросов в текущем периоде",
"схема": {
"тип": "целое число"
}
},
"X-Rate-Limit-Remaining": {
"description": "Количество оставшихся запросов в текущем периоде",
"схема": {
"тип": "целое число"
}
},
"X-Rate-Limit-Reset": {
"description": "Количество секунд, оставшихся до конца текущего периода",
"схема": {
"тип": "целое число"
}
}
}
}
описание: Простой строковый ответ
содержание:
текст/обычный:
схема:
тип: строка
пример: "уоу!"
заголовки:
X-Rate-Limit-Limit:
описание: Количество разрешенных запросов в текущем периоде
схема:
тип: целое число
X-Rate-Limit-Remaining:
описание: количество оставшихся запросов в текущем периоде
схема:
тип: целое число
X-Rate-Limit-Reset:
описание: Количество секунд, оставшихся в текущем периоде
схема:
тип: целое число
Ответ без возвращаемого значения: {
"description": "объект создан"
}
описание: объект создан Объект обратного вызова Карта возможных внеполосных обратных вызовов, связанных с родительской операцией. Узорчатые поля
Этот объект МОЖЕТ быть расширен за счет расширений спецификации. Выражение ключа Ключ, идентифицирующий объект элемента пути, представляет собой выражение времени выполнения, которое можно оценить в контексте HTTP-запроса/ответа времени выполнения для определения URL-адреса, который будет использоваться для запроса обратного вызова. Например, для следующего HTTP-запроса: POST /subscribe/myevent?queryUrl=http://clientdomain.com/stillrunning HTTP/1.1
Хост: example.org
Тип содержимого: приложение/json
Длина контента: 187
{
"failedUrl": "http://clientdomain.com/failed",
"URL-адреса успеха": [
"http://clientdomain.com/fast",
"http://clientdomain.com/medium",
"http://clientdomain.com/slow"
]
}
201 Создано
Расположение: http://example.org/subscription/1.
В следующих примерах показано, как оцениваются различные выражения, при условии, что операция обратного вызова имеет параметр пути с именем
Примеры объектов обратного вызова В следующем примере используется предоставленный пользователем параметр строки запроса мойОбратный звонок:
'{$request.query.queryUrl}':
почта:
тело запроса:
описание: Полезная нагрузка обратного вызова
содержание:
'приложение/json':
схема:
$ref: '#/компоненты/схемы/SomePayload'
ответы:
«200»:
описание: обратный вызов успешно обработан
В следующем примере показан обратный вызов, в котором сервер жестко запрограммирован, но параметры строки запроса заполняются из свойств транзакцияОбратный звонок:
'http://notificationServer.com?transactionId={$request.body#/id}&email={$request.body#/email}':
почта:
тело запроса:
описание: Полезная нагрузка обратного вызова
содержание:
'приложение/json':
схема:
$ref: '#/компоненты/схемы/SomePayload'
ответы:
«200»:
описание: обратный вызов успешно обработан
Пример объектаФиксированные поля
Этот объект МОЖЕТ быть расширен за счет расширений спецификации. Во всех случаях ожидается, что значение примера будет совместимо со схемой типа связанной с ним стоимости. Инструментальные реализации МОГУТ выбрать автоматически проверять совместимость и отклонять примеры значений, если они несовместимы. Пример Примеры объектовВ теле запроса: запростело:
содержание:
'приложение/json':
схема:
$ref: '#/компоненты/схемы/адрес'
Примеры:
фу:
резюме: пример foo
значение: {"foo": "бар"}
бар:
резюме: пример бара
значение: {"бар": "баз"}
'приложение/xml':
Примеры:
xmlПример:
резюме: это пример в XML
externalValue: 'http://example.org/examples/address-example.xml'
'текст/обычный':
Примеры:
текстПример:
резюме: Это текстовый пример
externalValue: 'http://foo.bar/examples/address-example.txt'
В параметре: параметры:
- имя: 'zipCode'
в: 'запрос'
схема:
тип: 'строка'
формат: 'почтовый индекс'
Примеры:
zip-пример:
$ref: '#/компоненты/примеры/zip-пример'
В ответ: ответов:
«200»:
описание: ваша автомобильная встреча была забронирована
содержание:
приложение/json:
схема:
$ref: '#/компоненты/схемы/SuccessResponse'
Примеры:
подтверждение-успех:
$ref: '#/компоненты/примеры/подтверждение успеха'
Link Object В отличие от динамических ссылок (т. е. ссылок, предоставленных в полезной нагрузке ответа), механизм связывания OAS не требует информации о ссылке в ответе во время выполнения. Для вычисления ссылок и предоставления инструкций по их выполнению выражение времени выполнения используется для доступа к значениям в операции и использования их в качестве параметров при вызове связанной операции. Фиксированные поля
Этот объект МОЖЕТ быть расширен за счет расширений спецификаций. Связанная операция ДОЛЖНА быть идентифицирована с помощью Примеры Вычисление ссылки из операции запроса, где путей:
/пользователи/{идентификатор}:
параметры:
- имя: идентификатор
в: путь
требуется: правда
описание: идентификатор пользователя, как userId
схема:
тип: строка
получить:
ответы:
«200»:
описание: возвращаемый пользователь
содержание:
приложение/json:
схема:
тип: объект
характеристики:
uuid: # уникальный идентификатор пользователя
тип: строка
формат: UUID
ссылки:
адрес:
# идентификатор операции целевой ссылки
идентификатор операции: getUserAddress
параметры:
# получить поле `id` из параметра пути запроса с именем `id`
идентификатор пользователя: $ request.Если выражение среды выполнения не может быть оценено, в целевую операцию не передается значение параметра. Значения из тела ответа можно использовать для управления связанной операцией. ссылки:
адрес:
идентификатор операции: getUserAddressByUUID
параметры:
# получить поле `uuid` из поля `uuid` в теле ответа
userUuid: $response.body#/uuid
Клиенты переходят по всем ссылкам на свое усмотрение. Ни разрешения, ни возможность сделать успешный вызов по этой ссылке не гарантируются. исключительно наличием отношений. OperationRef Примеры Поскольку ссылки на :
Пользовательские репозитории:
# возвращает массив '#/components/schemas/repository'
OperationRef: '#/paths/~12. или абсолютная ссылки:
Пользовательские репозитории:
# возвращает массив '#/components/schemas/repository'
OperationRef: 'https://na2.gigantic-server.com/#/paths/~12.0~1repositories~1{username}/get'
параметры:
имя пользователя: $response.body#/имя пользователя
Обратите внимание, что при использовании Выражения среды выполненияВыражения среды выполнения позволяют определять значения на основе информации, которая будет доступна только в HTTP-сообщении при фактическом вызове API. Этот механизм используется объектами Link и Callback Objects. Выражение среды выполнения определяется следующим синтаксисом ABNF выражение = ( "$url" / "$method" / "$statusCode" / "$request. Здесь В таблице ниже приведены примеры выражений времени выполнения и примеры их использования в значении: Примеры
Выражения среды выполнения сохраняют тип значения, на которое указывает ссылка.
Выражения можно встраивать в строковые значения, окружая выражение фигурными скобками Объект заголовка повторяет структуру объекта параметров со следующими изменениями:
Простой заголовок типа {
"description": "Количество разрешенных запросов в текущем периоде",
"схема": {
"тип": "целое число"
}
}
Описание: Количество разрешенных запросов в текущем периоде схема: тип: целое число Объект тегаДобавляет метаданные к одному тегу, используемому объектом операции. Не обязательно иметь объект тега для каждого тега, определенного в экземплярах объекта операции. Фиксированные поля
Этот объект МОЖЕТ быть расширен за счет расширений спецификации. Пример объекта тега {
"имя": "домашнее животное",
"description": "Операции с домашними животными"
}
имя: домашнее животное описание: Операции с домашними животными Объект ссылкиПростой объект, позволяющий ссылаться на другие компоненты в спецификации, как внутри, так и снаружи. Объект ссылки определяется ссылкой JSON и следует той же структуре, поведению и правилам. Для этой спецификации разрешение ссылок выполняется в соответствии со спецификацией JSON Reference, а не спецификацией JSON Schema. Фиксированные поля
Этот объект не может быть дополнен дополнительными свойствами, и любые добавленные свойства ДОЛЖНЫ игнорироваться. Пример ссылочного объекта {
"$ref": "#/компоненты/схемы/домашнее животное"
}
$ref: '#/components/schemas/Pet' Пример документа относительной схемы {
"$ref": "Pet.json"
}
$ref: Pet.yaml Родственные документы со встроенной схемой Пример {
"$ref": "definitions.json#/домашнее животное"
}
$ref: определения.yaml#/домашнее животное Объект схемыОбъект схемы позволяет определять типы входных и выходных данных. Эти типы могут быть объектами, а также примитивами и массивами. Этот объект является расширенным подмножеством спецификации схемы JSON Wright Draft 00. Дополнительные сведения о свойствах см. в разделе Ядро схемы JSON и Проверка схемы JSON.
Если не указано иное, определения свойств следуют схеме JSON. СвойстваСледующие свойства взяты непосредственно из определения схемы JSON и соответствуют тем же спецификациям:
Следующие свойства взяты из определения схемы JSON, но их определения были скорректированы в соответствии со спецификацией OpenAPI.
В качестве альтернативы, в любое время, когда можно использовать объект схемы, вместо него можно использовать ссылочный объект. Это позволяет ссылаться на определения вместо их встроенного определения. Дополнительные свойства, определенные спецификацией схемы JSON и не упомянутые здесь, строго не поддерживаются. Помимо полей подмножества схемы JSON, следующие поля МОГУТ использоваться для дальнейшей документации схемы: Фиксированные поля
Этот объект МОЖЕТ быть расширен за счет расширений спецификации. Композиция и наследование (полиморфизм) Спецификация OpenAPI позволяет комбинировать и расширять определения моделей, используя свойство Хотя композиция обеспечивает расширяемость модели, она не предполагает иерархии между моделями.
Для поддержки полиморфизма спецификация OpenAPI добавляет
XML-моделирование Свойство xml позволяет использовать дополнительные определения при преобразовании определения JSON в XML. Примеры объектов схемыПримитивная выборка {
"тип": "строка",
"формат": "электронная почта"
}
тип: строка формат: электронная почта Простая модель {
"тип": "объект",
"требуется": [
"имя"
],
"характеристики": {
"имя": {
"тип": "строка"
},
"адрес": {
"$ref": "#/компоненты/схемы/адрес"
},
"возраст": {
"тип": "целое",
"формат": "int32",
"минимум": 0
}
}
}
тип: объект
требуется:
- имя
характеристики:
имя:
тип: строка
адрес:
$ref: '#/компоненты/схемы/адрес'
возраст:
тип: целое число
формат: int32
минимум: 0
Модель со свойствами карты/словаряДля простого преобразования строки в строку: {
"тип": "объект",
"дополнительные свойства": {
"тип": "строка"
}
}
тип: объект дополнительные свойства: тип: строка Для сопоставления строки с моделью: {
"тип": "объект",
"дополнительные свойства": {
"$ref": "#/компоненты/схемы/ComplexModel"
}
}
тип: объект дополнительные свойства: $ref: '#/компоненты/схемы/ComplexModel' Модель с примером {
"тип": "объект",
"характеристики": {
"я бы": {
"тип": "целое",
"формат": "int64"
},
"имя": {
"тип": "строка"
}
},
"требуется": [
"имя"
],
"пример": {
"имя": "Пума",
"идентификатор": 1
}
}
тип: объект
характеристики:
я бы:
тип: целое число
формат: int64
имя:
тип: строка
требуется:
- имя
пример:
имя: Пума
идентификатор: 1
Модели с составом {
"составные части": {
"схемы": {
"Модель ошибки": {
"тип": "объект",
"требуется": [
"сообщение",
"код"
],
"характеристики": {
"сообщение": {
"тип": "строка"
},
"код": {
"тип": "целое",
"минимум": 100,
"максимум": 600
}
}
},
"ExtendedErrorModel": {
"все": [
{
"$ref": "#/компоненты/схемы/ErrorModel"
},
{
"тип": "объект",
"требуется": [
"первопричина"
],
"характеристики": {
"первопричина": {
"тип": "строка"
}
}
}
]
}
}
}
}
Компоненты:
схемы:
Модель ошибки:
тип: объект
требуется:
- сообщение
- код
характеристики:
сообщение:
тип: строка
код:
тип: целое число
минимум: 100
максимум: 600
Расширенная модель ошибки:
все:
- $ref: '#/components/schemas/ErrorModel'
- тип: объект
требуется:
- первопричина
характеристики:
первопричина:
тип: строка
Модели с поддержкой полиморфизма {
"составные части": {
"схемы": {
"Домашний питомец": {
"тип": "объект",
"дискриминатор": {
"имя_свойства": "тип_питомца"
},
"характеристики": {
"имя": {
"тип": "строка"
},
"тип питомца": {
"тип": "строка"
}
},
"требуется": [
"имя",
"тип питомца"
]
},
"Кошка": {
"description": "Изображение кошки. Компоненты:
схемы:
Домашний питомец:
тип: объект
дискриминатор:
имя свойства: petType
характеристики:
имя:
тип: строка
тип питомца:
тип: строка
требуется:
- имя
- тип питомца
Cat: ## "Cat" будет использоваться как значение дискриминатора
описание: Представление кота
все:
- $ref: '#/components/schemas/Pet'
- тип: объект
характеристики:
охотничий навык:
тип: строка
описание: Измеренное умение для охоты
перечисление:
- невежественный
- ленивый
- предприимчивый
- агрессивный
требуется:
- охотничье мастерство
Собака: ## «Собака» будет использоваться в качестве значения дискриминатора.Объект-дискриминаторЕсли тело запроса или полезная нагрузка ответа могут быть одной из нескольких различных схем, можно использовать объект-дискриминатор , чтобы помочь в сериализации, десериализации и проверке. Дискриминатор — это конкретный объект в схеме, который используется для информирования потребителя о спецификации альтернативной схемы на основе связанного с ней значения. При использовании дискриминатора встроенных схем не учитываются. Фиксированные поля
Объект дискриминатора допустим только при использовании одного из составных ключевых слов В OAS 3.0 полезная нагрузка ответа МОЖЕТ быть описана как ровно один из любого количества типов: MyResponseType: один из: - $ref: '#/components/schemas/Cat' - $ref: '#/компоненты/схемы/собака' - $ref: '#/components/schemas/Lizard' что означает, что полезная нагрузка ДОЛЖНА при проверке соответствовать ровно одной из схем, описанных MyResponseType:
один из:
- $ref: '#/components/schemas/Cat'
- $ref: '#/компоненты/схемы/собака'
- $ref: '#/components/schemas/Lizard'
дискриминатор:
имя свойства: petType
Теперь ожидается, что свойство с именем {
"идентификатор": 12345,
"petType": "Кошка"
}
Указывает, что схема В сценариях, где значение поля дискриминатора не соответствует имени схемы или неявное сопоставление невозможно, необязательный MyResponseType: один из: - $ref: '#/components/schemas/Cat' - $ref: '#/компоненты/схемы/собака' - $ref: '#/components/schemas/Lizard' - $ref: 'https://gigantic-server. Здесь дискриминатор значение из При использовании в сочетании с конструкцией В обоих вариантах использования Например: компоненты:
схемы:
Домашний питомец:
тип: объект
требуется:
- тип питомца
характеристики:
тип питомца:
тип: строка
дискриминатор:
имя свойства: petType
сопоставление:
собака Собака
Кошка:
все:
- $ref: '#/components/schemas/Pet'
- тип: объект
# все остальные свойства, характерные для `Cat`
характеристики:
имя:
тип: строка
Собака:
все:
- $ref: '#/components/schemas/Pet'
- тип: объект
# все остальные свойства, характерные для `Dog`
характеристики:
лаять:
тип: строка
Ящерица:
все:
- $ref: '#/components/schemas/Pet'
- тип: объект
# все остальные свойства, специфичные для `Lizard`
характеристики:
любитRocks:
тип: логический
такая полезная нагрузка: {
"petType": "Кошка",
"имя": "туманный"
}
будет означать, что используется схема {
"petType": "собака",
«кора»: «мягкая»
}
будет отображаться в Объект XMLОбъект метаданных, позволяющий более точно настроить определения модели XML. При использовании массивов имена элементов XML равны , а не (для форм единственного/множественного числа), и свойство Фиксированные поля
Этот объект МОЖЕТ быть расширен за счет расширений спецификации. Примеры XML-объектовПримеры определений XML-объектов включены в определение свойства объекта схемы с образцом его XML-представления. Нет XML-элементаСвойство основной строки: {
"животные": {
"тип": "строка"
}
}
животных: тип: строка <животные>...животные> Свойство массива основных строк ( {
"животные": {
"тип": "массив",
"Предметы": {
"тип": "строка"
}
}
}
животных:
тип: массив
Предметы:
тип: строка
<животные>...животные> <животные>...животные> <животные>...животные> Замена имени XML {
"животные": {
"тип": "строка",
"xml": {
"имя": "животное"
}
}
}
животных:
тип: строка
XML:
имя: животное
<животное>. XML-атрибут, префикс и пространство именВ этом примере показано полное определение модели. {
"Человек": {
"тип": "объект",
"характеристики": {
"я бы": {
"тип": "целое",
"формат": "int32",
"xml": {
"атрибут": правда
}
},
"имя": {
"тип": "строка",
"xml": {
"пространство имен": "http://example.com/schema/sample",
"префикс": "образец"
}
}
}
}
}
Лицо:
тип: объект
характеристики:
я бы:
тип: целое число
формат: int32
XML:
атрибут: правда
имя:
тип: строка
XML:
пространство имен: http://example.com/schema/sample
префикс: образец
<Лицо>
Массивы XMLИзменение имен элементов: {
"животные": {
"тип": "массив",
"Предметы": {
"тип": "строка",
"xml": {
"имя": "животное"
}
}
}
}
животные:
тип: массив
Предметы:
тип: строка
XML:
имя: животное
<животное>значениеживотное> <животное>значениеживотное> Внешнее свойство {
"животные": {
"тип": "массив",
"Предметы": {
"тип": "строка",
"xml": {
"имя": "животное"
}
},
"xml": {
"имя": "инопланетяне"
}
}
}
животных:
тип: массив
Предметы:
тип: строка
XML:
имя: животное
XML:
Название: пришельцы
<животное>значениеживотное> <животное>значениеживотное> Даже если массив упакован, если имя не определено явно, одно и то же имя будет использоваться как внутри, так и снаружи: {
"животные": {
"тип": "массив",
"Предметы": {
"тип": "строка"
},
"xml": {
"завернутый": правда
}
}
}
животных:
тип: массив
Предметы:
тип: строка
XML:
завернутый: правда
<животные> <животные>значение <животные>значение животные> Чтобы решить проблему именования в приведенном выше примере, можно использовать следующее определение: {
"животные": {
"тип": "массив",
"Предметы": {
"тип": "строка",
"xml": {
"имя": "животное"
}
},
"xml": {
"завернутый": правда
}
}
}
животных:
тип: массив
Предметы:
тип: строка
XML:
имя: животное
XML:
завернутый: правда
<животные> <животное>значениеживотное> <животное>значениеживотное> животные> Влияет как на внутренние, так и на внешние имена: {
"животные": {
"тип": "массив",
"Предметы": {
"тип": "строка",
"xml": {
"имя": "животное"
}
},
"xml": {
"имя": "инопланетяне",
"завернутый": правда
}
}
}
животных:
тип: массив
Предметы:
тип: строка
XML:
имя: животное
XML:
Название: пришельцы
завернутый: правда
<инопланетяне> <животное>значениеживотное> <животное>значениеживотное> инопланетяне> Если мы меняем внешний элемент, но не внутренние: {
"животные": {
"тип": "массив",
"Предметы": {
"тип": "строка"
},
"xml": {
"имя": "инопланетяне",
"завернутый": правда
}
}
}
животных:
тип: массив
Предметы:
тип: строка
XML:
Название: пришельцы
завернутый: правда
<инопланетяне> <инопланетяне>значение <инопланетяне>значение инопланетяне> Объект схемы безопасности Определяет схему безопасности, которую могут использовать операции. Фиксированные поля
Этот объект МОЖЕТ быть расширен за счет расширений спецификации. Пример объекта схемы безопасностиПример базовой аутентификации {
"тип": "http",
"схема": "базовая"
}
тип: http схема: базовая Образец ключа API {
"тип": "апиКей",
"имя": "api_key",
"в": "заголовок"
}
тип: APIKey имя: API_key в: заголовок Образец носителя JWT {
"тип": "http",
"схема": "носитель",
"bearerFormat": "JWT",
}
тип: http схема: носитель носительФормат: JWT Неявный образец OAuth3 {
"тип": "oauth3",
"течет": {
"скрытый": {
"authorizationUrl": "https://example. тип: oauth3
потоки:
скрытый:
URL-адрес авторизации: https://example.com/api/oauth/dialog
области:
write:pets: изменить питомцев в своей учетной записи
read:pets: читай своих питомцев
Объект потоков OAuthПозволяет настраивать поддерживаемые потоки OAuth. Фиксированные поля
Этот объект МОЖЕТ быть расширен за счет расширений спецификации. Объект потока OAuthСведения о конфигурации для поддерживаемого потока OAuth Фиксированные поля
Этот объект МОЖЕТ быть расширен за счет расширений спецификации. Примеры объектов потока OAuth {
"тип": "oauth3",
"течет": {
"скрытый": {
"authorizationUrl": "https://example.com/api/oauth/dialog",
"области": {
"write:pets": "изменить питомцев в вашем аккаунте",
"read:pets": "читать своих питомцев"
}
},
"Код авторизации": {
"authorizationUrl": "https://example. тип: oauth3
потоки:
скрытый:
URL-адрес авторизации: https://example.com/api/oauth/dialog
области:
write:pets: изменить питомцев в своей учетной записи
read:pets: читай своих питомцев
Код авторизации:
URL-адрес авторизации: https://example.com/api/oauth/dialog
tokenUrl: https://example.com/api/oauth/token
области:
write:pets: изменить питомцев в своей учетной записи
read:pets: читай своих питомцев
Security Requirement ObjectСписок необходимых схем безопасности для выполнения этой операции. Имя, используемое для каждого свойства, ДОЛЖНО соответствовать схеме безопасности, объявленной в схемах безопасности в объекте компонентов. Security Requirement Объекты, которые содержат несколько схем, требуют, чтобы все схемы ДОЛЖНЫ быть удовлетворены для авторизации запроса. Когда список объектов требований безопасности определен для объекта OpenAPI или объекта операции, только один из объектов требований безопасности в списке должен быть удовлетворен для авторизации запроса. Узорчатые поля
Примеры объектов требования безопасностиТребование безопасности без OAuth3 {
"апи_ключ": []
}
API_key: [] Требование безопасности OAuth3 {
"зоомагазин_аутент": [
"написать: домашние животные",
"читать: домашние животные"
]
}
petstore_auth: - напиши: домашние животные - читать: домашние животные Дополнительная безопасность OAuth3Дополнительная безопасность OAuth3, определенная в объекте OpenAPI или объекте операции: {
"безопасность": [
{},
{
"зоомагазин_аутент": [
"написать: домашние животные",
"читать: домашние животные"
]
}
]
}
безопасность:
- {}
- petstore_auth:
- напиши: домашние животные
- читать: домашние животные
Расширения спецификации Хотя спецификация OpenAPI старается учесть большинство вариантов использования, в определенные моменты могут быть добавлены дополнительные данные для расширения спецификации. Свойства расширений реализованы в виде шаблонных полей, которые всегда имеют префикс
Расширения могут поддерживаться или не поддерживаться доступными инструментами, но они также могут быть расширены для добавления запрошенной поддержки (если инструменты являются внутренними или открытыми). Фильтрация безопасностиНекоторые объекты в спецификации OpenAPI МОГУТ быть объявлены и оставаться пустыми или быть полностью удалены, даже если они по своей сути являются ядром документации API. Причина в том, чтобы обеспечить дополнительный уровень контроля доступа к документации. Два примера:
Приложение A: История изменений
Составление спецификации | Docker DocumentationРасчетное время чтения: 85 минут Файл Compose представляет собой файл YAML, определяющий службы, сети и тома для приложения Docker. Последние и рекомендуемые версия формата файла Compose определяется параметром Compose Технические характеристики. Спецификация Compose объединяет устаревшие Версии 2.x и 3.x, объединяющие свойства в этих форматах и реализованные Compose 1.27.0+ . В этом документе указывается формат файла Compose, используемый для определения приложений с несколькими контейнерами. Распространение данного документа не ограничено. Ключевые слова «ДОЛЖЕН», «НЕ ДОЛЖЕН», «ТРЕБУЕТСЯ», «ДОЛЖЕН», «НЕ ДОЛЖЕН», «СЛЕДУЕТ», «НЕ ДОЛЖЕН», «РЕКОМЕНДУЕТСЯ», «МОЖЕТ» и «ДОПОЛНИТЕЛЬНО» в этом документе должны интерпретироваться, как описано в RFC 2119. Требования и необязательные атрибутыСпецификация Compose включает свойства, предназначенные для локальной среды выполнения контейнера OCI, предоставление конкретных параметров конфигурации ядра Linux, а также некоторых конкретных свойств контейнера Windows, а также функций облачной платформы, связанных с размещением ресурсов в кластере, распространением реплицированных приложений и масштабируемостью. Мы признаем, что ни одна реализация Compose не должна поддерживать все атрибуты и что поддержка некоторых свойств зависит от платформы и может быть подтверждено только во время выполнения. Определение версионной схемы для управления поддерживаемыми свойства в файле Compose, установленные инструментом docker-compose, где Compose формат файла был разработан, не дает никаких гарантий того, что атрибуты конечного пользователя будут действительно реализованы. Спецификация определяет ожидаемый синтаксис и поведение конфигурации, но, пока не указано иное, поддержка любого из них НЕОБЯЗАТЕЛЬНА. Реализации Compose для анализа файла Compose с использованием неподдерживаемых атрибутов СЛЕДУЕТ предупреждать пользователя. Мы рекомендуем исполнителей для поддержки этих режимов работы:
Модель приложения ComposeСпецификация Compose позволяет определить приложение на основе контейнера, не зависящее от платформы. Такое приложение разработано как набор контейнеров, которые должны работать вместе с соответствующими общими ресурсами и каналами связи. Вычислительные компоненты приложения определяются как службы. Служба — это абстрактная концепция, реализованная на платформах путем запуска одного и того же образа контейнера (и конфигурации) один или несколько раз. Службы взаимодействуют друг с другом через Сети. В этой спецификации сеть представляет собой абстракцию возможности платформы для установления IP-маршрута между контейнерами в службах, связанных вместе. Низкоуровневые сетевые опции для конкретных платформ сгруппированы в определение сети и МОГУТ быть частично реализованы на некоторых платформах. Службы хранят и совместно используют постоянные данные в томах. Спецификация описывает такие постоянные данные, как монтирование файловой системы высокого уровня с глобальными параметрами. Фактические детали реализации для конкретной платформы сгруппированы в определении Volumes и МОГУТ быть частично реализованы на некоторых платформах. Для некоторых служб требуются данные конфигурации, которые зависят от среды выполнения или платформы. Для этого спецификация определяет специальную концепцию: Configs. С точки зрения сервисного контейнера конфигурации сравнимы с томами в том смысле, что они представляют собой файлы, смонтированные в контейнере. Секрет — это особый вид данных конфигурации для конфиденциальных данных, которые НЕ ДОЛЖНЫ раскрываться без соображений безопасности. Секреты предоставляются службам в виде файлов, смонтированных в их контейнерах, но ресурсы для конкретных платформ для предоставления конфиденциальных данных достаточно специфичны, чтобы заслуживать отдельной концепции и определения в спецификации Compose. Различие в томах, конфигурациях и секретах позволяет реализациям предлагать сопоставимую абстракцию на уровне обслуживания, но охватывать конкретную конфигурацию адекватных ресурсов платформы для четко идентифицированного использования данных. Проект — это отдельное развертывание спецификации приложения на платформе. Название проекта используется для группировки
ресурсы вместе и изолировать их от других приложений или другой установки одного и того же указанного приложения Compose с различными параметрами. Имя проекта может быть задано явным образом атрибутом Наглядный примерСледующий пример иллюстрирует концепции спецификации Compose на конкретном примере приложения. Пример ненормативный. Рассмотрим приложение, разделенное на внешнее веб-приложение и внутреннюю службу. Внешний интерфейс настраивается во время выполнения с файлом конфигурации HTTP, управляемым инфраструктурой, предоставляющим внешнее доменное имя и сертификат сервера HTTPS, введенный защищенным секретным хранилищем платформы. Серверная часть хранит данные в постоянном томе. Обе службы взаимодействуют друг с другом в изолированной сети заднего уровня, в то время как внешний интерфейс также подключен к сети переднего уровня и предоставляет порт 443 для внешнего использования. (внешний пользователь) --> 443 [интерфейсная сеть]
|
+--------------------+
| интерфейсная служба |...ro...Пример приложения состоит из следующих частей:
услуги:
внешний интерфейс:
изображение: круто/веб-приложение
порты:
- "443:8043"
сети:
- передний ярус
- задний ярус
конфиги:
- httpd-конфигурация
секреты:
- сервер-сертификат
серверная часть:
изображение: круто/база данных
тома:
- БД-данные:/и т. В этом примере показано различие между томами, конфигурациями и секретами. Пока все они все разоблачены
для обслуживания контейнеров как смонтированных файлов или каталогов, только том может быть настроен для доступа на чтение и запись.
Секреты и конфиги доступны только для чтения. Конфигурация тома позволяет выбрать драйвер тома и передать параметры драйвера
настроить управление томами в соответствии с фактической инфраструктурой. Конфигурации и секреты полагаются на сервисы платформы,
и объявлены Создать файл Файл Compose представляет собой файл YAML, определяющий
версия (УСТАРЕВШАЯ),
услуги (ОБЯЗАТЕЛЬНО),
сети,
тома,
конфиги и
секреты.
Путь по умолчанию для файла Compose — Несколько файлов Compose можно объединить вместе для определения модели приложения. Комбинация файлов YAML
ДОЛЖЕН быть реализован путем добавления/переопределения элементов YAML на основе порядка файлов Compose, установленного пользователем. Простой
атрибуты и карты переопределяются файлом Compose самого высокого порядка, списки объединяются путем добавления. Родственник
пути ДОЛЖНЫ быть разрешены на основе сначала Создавать родительскую папку файла всякий раз, когда комплементарные файлы
объединенные размещаются в других папках. Поскольку некоторые элементы файла Compose могут быть выражены как в виде отдельных строк, так и в виде сложных объектов, слияния ДОЛЖНЫ применяться к развернутая форма. ПрофилиПрофилипозволяют настроить модель приложения Compose для различных применений и сред. Написать реализации СЛЕДУЕТ позволять пользователю определять набор активных профилей. Точный механизм реализации специфичны и МОЖЕТ включать флаги командной строки, переменные среды и т. д. Элемент верхнего уровня Services поддерживает атрибут Ссылки на другие службы (по Наглядный пример услуги:
фу:
изображение: фу
бар:
изображение: бар
профили:
- тест
баз:
изображение: баз
зависит от:
- бар
профили:
- тест
Зот:
изображение: зот
зависит от:
- бар
профили:
- отлаживать
Версия элемента верхнего уровня Верхний уровень Реализация Compose НЕ ДОЛЖНА использовать эту версию для выбора точной схемы для проверки файла Compose, но предпочитать самую последнюю схему на момент ее разработки. Реализации Compose ДОЛЖНЫ проверять, могут ли они полностью анализировать файл Compose. Если некоторые поля неизвестны, обычно
поскольку файл Compose был написан с полями, определенными в более новой версии спецификации, реализации Compose
ДОЛЖЕН предупредить пользователя. Реализации Compose МОГУТ предлагать опции для игнорирования неизвестных полей (как определено в «свободном» режиме). Имя элемента верхнего уровня Имя верхнего уровня Всякий раз, когда имя проекта определяется именем услуги:
фу:
изображение: бизибокс
Окружающая среда:
- COMPOSE_PROJECT_NAME
команда: echo "Я запускаю ${COMPOSE_PROJECT_NAME}"
Элемент верхнего уровня службы Служба — это абстрактное определение вычислительного ресурса в приложении, которое можно масштабировать/заменять. Файл Compose ДОЛЖЕН объявлять корневой элемент Каждая служба МОЖЕТ также включать раздел сборки, который определяет, как создать образ Docker для службы. Реализации Compose МОГУТ поддерживать создание образов Docker с использованием этого определения службы. Если не реализовано раздел Build СЛЕДУЕТ игнорировать, а файл Compose ДОЛЖЕН считаться действительным. Поддержка сборки является НЕОБЯЗАТЕЛЬНЫМ аспектом спецификации Compose и
подробно описано в документации по поддержке сборки. Каждая служба определяет ограничения времени выполнения и требования для запуска своих контейнеров. Поддержка развертывания является НЕОБЯЗАТЕЛЬНЫМ аспектом спецификации Compose и подробно описано в документации по поддержке развертывания. Если он не реализован, раздел Deploy СЛЕДУЕТ игнорировать, а файл Compose ДОЛЖЕН считаться действительным. сборка blkio_config услуги:
фу:
изображение: бизибокс
blkio_config:
вес: 300
вес_устройство:
- путь: /dev/sda
вес: 400
device_read_bps:
- путь: /dev/sdb
скорость: '12мб'
device_read_iops:
- путь: /dev/sdb
скорость: 120
device_write_bps:
- путь: /dev/sdb
скорость: '1024k'
device_write_iops:
- путь: /dev/sdb
скорость: 30
device_read_bps, device_write_bps Установить ограничение в байтах в секунду для операций чтения/записи на данном устройстве.
device_read_iops, device_write_iopsУстановить лимит операций в секунду для операций чтения/записи на данном устройстве. Каждый элемент в списке ДОЛЖЕН иметь два ключа:
весИзменить пропорцию пропускной способности, выделенной для этой службы, по сравнению с другими службами. Принимает целочисленное значение от 10 до 1000, по умолчанию — 500. вес_устройство Точная настройка распределения полосы пропускания по устройствам.
число_процессоров процессор_процент ЦП_доли период_процессора ЦП_квота cpu_rt_runtime cpu_rt_runtime: «400 мс»
cpu_rt_runtime: cpu_rt_period cpu_rt_period: '1400us' cpu_rt_период: 11000` процессорУСТАРЕЛО: используйте deploy.reservations.cpus процессор cap_add cap_add: - ВСЕ cap_drop кап_дроп: - NET_ADMIN - SYS_АДМИН cgroup_parent cgroup_parent: m-executor-abcd команда : bundle exec thin -p 3000 Команда также может быть списком, аналогично Dockerfile: Команда: ["bundle", "exec", "thin", "-p", "3000"] конфигов Реализации Compose ДОЛЖНЫ сообщать об ошибке, если конфигурация не существует на платформе или не определена в Для конфигураций определены два синтаксиса. Чтобы оставаться совместимым с этой спецификацией, реализация ДОЛЖЕН поддерживать оба синтаксиса. Реализации ДОЛЖНЫ разрешать использование как короткого, так и длинного синтаксиса в одном документе. Краткий синтаксис Вариант с коротким синтаксисом указывает только имя конфигурации. Это дает
контейнерный доступ к конфигу и монтирует его по адресу В следующем примере используется короткий синтаксис для предоставления службы услуги:
редис:
изображение: redis: последний
конфиги:
- мой_конфиг
конфиги:
моя_конфигурация:
файл: ./my_config.txt
мой_другой_конфиг:
внешний: правда
Длинный синтаксисДлинный синтаксис обеспечивает большую детализацию того, как создается конфигурация в контейнерах задач службы.
В следующем примере имя услуги:
редис:
изображение: redis: последний
конфиги:
- источник: my_config
цель: /redis_config
ИД: "103"
гид: "103"
режим: 0440
конфиги:
моя_конфигурация:
внешний: правда
мой_другой_конфиг:
внешний: правда
Вы можете предоставить службе доступ к нескольким конфигурациям, а также использовать длинный и короткий синтаксис. имя_контейнера имя_контейнера: мой-веб-контейнер Реализация Compose НЕ ДОЛЖНА масштабировать службу за пределы одного контейнера, если файл Compose указывает Если присутствует, credential_spec Реализации Compose, поддерживающие службы с использованием контейнеров Windows, ДОЛЖНЫ поддерживать файл учетные_спецификации: файл: my-credential-spec. При использовании HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Containers\CredentialSpecs В следующем примере спецификация учетных данных загружается из значения с именем учетные_спецификации: реестр: my-credential-spec Пример конфигурации gMSA При настройке спецификации учетных данных gMSA для службы вам нужно только
чтобы указать спецификацию учетных данных с услуги:
моя служба:
изображение: мое изображение: последнее
Credential_spec:
конфигурация: my_credential_spec
конфиги:
my_credentials_spec:
файл: ./my-credential-spec.json|
зависит от Краткий синтаксисВариант с коротким синтаксисом указывает только имена служб зависимостей. Зависимости службы вызывают следующее поведение:
Простой пример: услуги:
веб:
строить: .
зависит от:
- дб
- редис
редис:
изображение: редис
дБ:
изображение: постгрес
Реализации Compose ДОЛЖНЫ гарантировать, что службы зависимостей были запущены до запуск зависимой службы. Реализации Compose МОГУТ ждать, пока службы зависимостей будут «готовы», прежде чем запуск зависимой службы. Длинный синтаксис Синтаксис длинной формы позволяет настраивать дополнительные поля, которые нельзя
выражается в краткой форме.
Зависимости службы вызывают следующее поведение:
Простой пример: услуги:
веб:
строить: .
зависит от:
дБ:
состояние: service_healthy
редис:
условие: service_started
редис:
изображение: редис
дБ:
изображение: постгрес
Реализации Compose ДОЛЖНЫ гарантировать, что службы зависимостей были запущены до
запуск зависимой службы.
Реализации Compose ДОЛЖНЫ гарантировать службы зависимостей, отмеченные развертывание устройство_cgroup_rules device_cgroup_rules: - 'с 1:3 г' - 'а 7:* рмв' устройств устройств: - "/dev/ttyUSB0:/dev/ttyUSB0" - "/dev/sda:/dev/xvda:rwm" днс днс: 8.8.8.8 DNS: - 8.8.8.8 - 9.9.9.9 DNS_opt dns_opt: - использовать-VC - нет-TLD-запрос dns_search dns_search: example.com dns_search: - dc1.example.com - dc2.example.com доменное имя точка входа точка входа: /code/entrypoint.sh Точка входа также может быть списком, аналогично Докерфайл: точка входа: - пхп - -д - zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20100525/xdebug. env_file env_file: .env env_file: - ./a.env - ./b.env Относительный путь ДОЛЖЕН быть разрешен из родительской папки файла Compose. Поскольку абсолютные пути не позволяют Compose
чтобы файл не был переносимым, реализациям Compose СЛЕДУЕТ предупреждать пользователей, когда такой путь используется для установки Переменные среды, объявленные в разделе среды ДОЛЖНЫ переопределять эти значения — это остается верным, даже если эти значения пусто или не определено. Env_file формат Каждая строка в файле env ДОЛЖНА быть в формате Значение # Установить среду Rails/Rack RACK_ENV=разработка VAR="в кавычках" окружающая среда Переменные среды МОГУТ быть объявлены одним ключом (без значения знака равенства). В таком случае реализации ДОЛЖНЫ полагаться на некоторое взаимодействие с пользователем для разрешения значения. Если это не так, переменная не установлен и будет удален из среды контейнера служб. Синтаксис карты: среда: RACK_ENV: разработка ШОУ: "правда" ПОЛЬЗОВАТЕЛЬ_ВВОД: Синтаксис массива: среда: - RACK_ENV=разработка - ПОКАЗАТЬ=истина - USER_INPUT Если для службы установлены как разоблачить разоблачить: - "3000" - "8000" удлиняет Расширить другую службу в текущем файле или в другом, при необходимости переопределяя конфигурацию. расширяет: файл: common.yml сервис: веб-приложение Если поддерживается, реализации Compose ДОЛЖНЫ обрабатывать
ОграниченияК службе, на которую делается ссылка, применяются следующие ограничения:
Реализации Compose ДОЛЖНЫ возвращать ошибку во всех этих случаях. Поиск указанной службы
Служба, обозначенная
Объединение определений службы Два определения службы ( основное одно в текущем файле Compose и указанное одно
указанный
Сопоставления Следующие ключи следует рассматривать как сопоставления: Одно исключение, применимое к Например, ввод ниже: услуги:
общий:
изображение: бизибокс
Окружающая среда:
TZ: UTC
ПОРТ: 80
Кли:
расширяет:
обслуживание: общее
Окружающая среда:
ПОРТ: 8080
Производит следующую конфигурацию для среда: ПОРТ: 8080 TZ: UTC изображение: бизибокс Элементы под Например, ввод ниже: услуги:
общий:
изображение: бизибокс
тома:
- общий том:/var/lib/backup/data:rw
Кли:
расширяет:
обслуживание: общее
тома:
- cli-volume:/var/lib/backup/data:ro
Создает следующую конфигурацию для службы изображение: занятбокс тома: - cli-volume:/var/lib/backup/data:ro Если есть ссылка на определение службы содержит Например, ввод ниже: услуги:
база:
изображение: бизибокс
пользователь: корень
общий:
изображение: бизибокс
расширяет:
сервис: база
Кли:
расширяет:
обслуживание: общее
Производит следующую конфигурацию для изображение: занятбокс пользователь: корень Последовательности Следующие ключи следует рассматривать как последовательности: Например, ввод ниже: услуги:
общий:
изображение: бизибокс
security_opt:
- метка: роль: РОЛЬ
Кли:
расширяет:
обслуживание: общее
security_opt:
- метка:пользователь:ПОЛЬЗОВАТЕЛЬ
Создает следующую конфигурацию для службы изображение: занятбокс security_opt: - метка: роль: РОЛЬ - метка:пользователь:ПОЛЬЗОВАТЕЛЬ Если используется синтаксис списка, следующие ключи также следует рассматривать как последовательности: СкалярыЛюбые другие разрешенные ключи в определении службы должны рассматриваться как скаляры. внешние_ссылки внешних_ссылок: - редис - база данных: mysql - база данных: postgresql дополнительных_хостов: - "какой-то хост: 162.242.195.82" - "другой хост: 50.31.209.229" Реализации Compose ДОЛЖНЫ создать соответствующую запись с IP-адресом и именем хоста в сети контейнера.
конфигурация, что означает, что для Linux 162.242.195.82 какой-то хост 50.31.209.229 другой хост группа_добавить Примером того, где это полезно, является ситуация, когда несколько контейнеров (работающих от имени разных пользователей) должны читать или писать
тот же файл на общем томе. Этот файл может принадлежать группе, совместно используемой всеми контейнерами, и указан в услуги:
моя служба:
изображение: альпийский
группа_добавить:
- почта
Запуск проверка здоровья проверка здоровья: тест: ["CMD", "curl", "-f", "http://localhost"] интервал: 1м30с тайм-аут: 10 сек. # Заходим в локальное веб-приложение тест: ["CMD", "curl", "-f", "http://localhost"] Использование тест: ["CMD-SHELL", "curl -f http://localhost || выход 1"]Тест : curl -f https://localhost || выход 1 проверка здоровья: отключить: правда имя хоста изображение изображение: редис
изображение: редис: 5
изображение: redis@sha256:0ed5d5928d4737458944eb604cc8509e245c3e19d02ad838bc4b991aac7
изображение: библиотека/redis
изображение: docker.io/library/redis
изображение: my_private.registry:5000/redis Если образ не существует на платформе, реализации Compose ДОЛЖНЫ попытаться извлечь его на основе инициализация услуги:
веб:
изображение: альпийский: последний
инициализация: правда
Используемый двоичный файл инициализации зависит от платформы. МПК
ipc: "общий доступ"
ipc: "сервис: [имя сервиса]"
изоляция этикетки Рекомендуется использовать обратную DNS-нотацию, чтобы ваши метки не конфликтовали с
те, которые используются другим программным обеспечением. этикеток: com.example.description: "Бухгалтерское веб-приложение" com.example.department: "Финансы" com.example.label-with-empty-value: "" этикеток: - "com.example.description=Бухгалтерское веб-приложение" - "com.example.department=Финансы" - "com.example.label-with-empty-value" Реализации Compose ДОЛЖНЫ создавать контейнеры с каноническими метками:
Префикс метки ссылок веб:
ссылки:
- дб
- БД: база данных
- редис
Контейнеры для связанной службы ДОЛЖНЫ быть доступны по имени хоста, идентичному псевдониму или имени службы. если псевдоним не был указан. Ссылки не требуются для связи служб — если не задана конкретная конфигурация сети,
любая служба ДОЛЖНА иметь возможность связаться с любой другой службой по имени этой службы в сети Ссылки также выражают неявную зависимость между службами так же, как depend_on, поэтому они определяют порядок запуска службы. регистрация ведение журнала:
драйвер: системный журнал
опции:
syslog-адрес: "tcp://192. Имя драйвера сетевой_режим
network_mode: "хост"
network_mode: "нет"
network_mode: "сервис: [имя сервиса]"
сетей услуги:
какой-то сервис:
сети:
- какая-то сеть
- другая-сеть
псевдонимы Поскольку псевдонимы
Здесь показан общий формат: услуги:
какой-то сервис:
сети:
какая-то сеть:
псевдонимы:
- псевдоним1
- псевдоним3
другая сеть:
псевдонимы:
- псевдоним2
В приведенном ниже примере служба 9Внешний интерфейс 0413 сможет подключиться к внутреннему сервису услуги:
внешний интерфейс:
изображение: круто/веб-приложение
сети:
- передний ярус
- задний ярус
мониторинг:
изображение: круто/мониторинг
сети:
- администратор
серверная часть:
изображение: круто/бэкенд
сети:
задний уровень:
псевдонимы:
- база данных
администратор:
псевдонимы:
- mysql
сети:
передний ряд:
задний уровень:
администратор:
ipv4_адрес, ipv6_адресУкажите статический IP-адрес для контейнеров для этой службы при подключении к сети. Соответствующая конфигурация сети в разделе сетей верхнего уровня ДОЛЖНА иметь
Блок услуги:
внешний интерфейс:
изображение: круто/веб-приложение
сети:
передний ряд:
ipv4_адрес: 172.16.238.10
ipv6_адрес: 2001:3984:3989::10
сети:
передний ряд:
IPAM:
драйвер: по умолчанию
конфигурация:
- подсеть: "172.link_local_ips Пример: услуги:
приложение:
изображение: бизибокс
команда: сверху
сети:
приложение_сеть:
link_local_ips:
- 57.123.22.11
- 57.123.22.13
сети:
приложение_сеть:
водитель: мост
приоритет В следующем примере служба приложений сначала подключается к app_net_1, так как она имеет наивысший приоритет. Затем он подключается к app_net_3, затем к app_net_2, который использует значение приоритета по умолчанию 0, .![]() услуги:
приложение:
изображение: бизибокс
команда: сверху
сети:
приложение_net_1:
приоритет: 1000
приложение_net_2:
приложение_net_3:
приоритет: 100
сети:
приложение_net_1:
приложение_net_2:
приложение_net_3:
мак_адрес лимит_памятиУСТАРЕЛО: используйте deploy.limits.memory mem_reservationУСТАРЕЛО: используйте deploy.reservations.memory mem_swappiness
Значение по умолчанию зависит от платформы. memswap_limit
oom_kill_disable Если установлено oom_score_adj идентификатор pids_limitУСТАРЕЛО: используйте deploy.reservations.pids pids_limit: 10 платформа : osx платформа: windows/amd64 платформа: линукс/arm64/v8 портов Открывает контейнерные порты. Краткий синтаксисКраткий синтаксис представляет собой строку, разделенную двоеточием, для установки IP-адреса хоста, порта хоста и порта контейнера. в форме:
IP-адрес хоста, если он не задан, ДОЛЖЕН быть привязан ко всем сетевым интерфейсам. Порт может быть один значение или диапазон. Хост и контейнер ДОЛЖНЫ использовать эквивалентные диапазоны. Либо укажите оба порта ( Образцы: портов: - "3000" - "3000-3005" - "8000:8000" - "9090-9091:8080-8081" - "49100:22" - "127.0.0.1:8001:8001" - "127.0.0.1:5000-5010:5000-5010" - "6060:6060/удп"
Длинный синтаксисСинтаксис длинной формы позволяет настраивать дополнительные поля, которые нельзя выражается в краткой форме.
портов:
- цель: 80
host_ip: 127.0.0.1
опубликовано: 8080
протокол: TCP
режим: хост
- цель: 80
host_ip: 127.0.0.1
опубликовано: 8000-9000
протокол: TCP
режим: хост
привилегированный профилей Если присутствует, профили pull_policy
Если только для чтения перезагрузка
перезапуск: "нет"
перезапуск: всегда
перезапуск: при сбое
перезапуск: если не остановлен
время выполнения Значение веб: изображение: busybox: последний команда: правда время выполнения: runc шкалаУСТАРЕЛО: используйте развертывание/реплики секретов Реализации Compose ДОЛЖНЫ сообщать об ошибке, если секрет не существует на платформе или не определен в Краткий синтаксис Вариант с коротким синтаксисом указывает только секретное имя. Это дает
контейнерный доступ к секрету и монтирует его как доступный только для чтения к В следующем примере используется краткий синтаксис для предоставления внешнего интерфейса услуги:
внешний интерфейс:
изображение: круто/веб-приложение
секреты:
- сервер-сертификат
секреты:
сертификат сервера:
файл: ./server.cert
Длинный синтаксисДлинный синтаксис обеспечивает большую детализацию того, как секрет создается внутри контейнеры службы.
В следующем примере для имени секретного файла сертификата сервера услуги:
внешний интерфейс:
изображение: круто/веб-приложение
секреты:
- источник: сертификат сервера
цель: server.cert
ИД: "103"
гид: "103"
режим: 0440
секреты:
сертификат сервера:
внешний: правда
Службам МОЖЕТ быть предоставлен доступ к нескольким секретам. Длинный и короткий синтаксис для секретов МОГУТ использоваться в
тот же файл Compose. Определение секрета в секретах security_opt безопасность_опт: - метка:пользователь:ПОЛЬЗОВАТЕЛЬ - метка: роль: РОЛЬ размер_шм stdin_open stop_grace_period stop_grace_period: 1 с
stop_grace_period: 1 м 30 с
Значение по умолчанию — 10 секунд для выхода из контейнера перед отправкой SIGKILL. стоп_сигнал стоп_сигнал: SIGUSR1 storage_opt storage_opt: размер: '1G' системные файлы системных файлов: net.core.somaxconn: 1024 net.ipv4.tcp_syncookies: 0 системных файлов: - net.core.somaxconn=1024 - net.ipv4.tcp_syncookies=0 Вы можете использовать только те sysctl, пространство имен которых находится в ядре. Докер не
поддержка изменения sysctl внутри контейнера, который также изменяет хост-систему. тмпфс тмпфс: /выполнить тмпфс: - /бежать - /тмп телетайп пределов пределов:
нпрок: 65535
Нет файла:
мягкий: 20000
жесткий: 40000
пользователь userns_mode userns_mode: "хост" томов Если монтирование является путем к хосту и используется только одной службой, оно МОЖЕТ быть объявлено как часть службы.
определение вместо ключа верхнего уровня Чтобы повторно использовать том в нескольких службах, именованный том ДОЛЖЕН быть объявлен в ключе томов верхнего уровня . В этом примере показан именованный том ( услуги:
серверная часть:
изображение: круто/бэкенд
тома:
- тип: том
источник: БД-данные
цель: /данные
объем:
некопировать: правда
- тип: связать
источник: /var/run/postgres/postgres.Краткий синтаксис В коротком синтаксисе используется одна строка со значениями, разделенными двоеточием, для указания подключения тома.
(
Длинный синтаксисСинтаксис длинной формы позволяет настраивать дополнительные поля, которые нельзя выражается в краткой форме.
тома_от Строковое значение определяет другую службу в модели приложения Compose для подключения томов.
Контейнер томов_от: - наименование услуги - имя_службы:ro - контейнер:имя_контейнера - контейнер:имя_контейнера:rw рабочий_каталог Элемент верхнего уровня сети Сети — это уровень, который позволяет службам взаимодействовать друг с другом. Сетевая модель, предоставляемая сервису
ограничивается простым IP-соединением с целевыми службами и внешними ресурсами, в то время как определение сети позволяет
тонкая настройка фактической реализации, предоставляемой платформой. можно создать, указав имя сети в разделе верхнего уровня В следующем примере во время выполнения будут созданы сети услуги:
внешний интерфейс:
изображение: круто/веб-приложение
сети:
- передний ярус
- задний ярус
сети:
передний ряд:
задний уровень:
драйвер : оверлей Значения по умолчанию и доступные значения зависят от платформы. Спецификация Compose ДОЛЖНА поддерживать следующие конкретные драйверы:
хост или нет Синтаксис для использования встроенных сетей, таких как услуги:
веб:
сети:
хостнет: {}
сети:
хостнет:
внешний: правда
имя: хозяин
услуги:
веб:
...
сети:
нонет: {}
сети:
нонет:
внешний: правда
имя: нет
driver_opts driver_opts: фу: "бар" баз: 1 съемный Если для сетей:
мойнет1:
драйвер: оверлей
прикрепляемый: правда
enable_ipv6 IP-адрес
Полный пример: IP-адрес:
драйвер: по умолчанию
конфигурация:
- подсеть: 172.28.0.0/16
ip_range: 172.28.5.0/24
шлюз: 172.28.5.254
aux_адреса:
хост1: 172.28.1.5
хост2: 172.28.1.6
хост3: 172.28.1.7
опции:
фу: бар
баз: "0"
внутренний По умолчанию реализации Compose ДОЛЖНЫ обеспечивать внешнее подключение к сетям. этикеткиДобавляйте метаданные в контейнеры с помощью меток. Может использовать либо массив, либо словарь. Пользователям СЛЕДУЕТ использовать обратную DNS-нотацию, чтобы предотвратить конфликт меток с метками, используемыми другим программным обеспечением. этикеток: com.example.description: "Сеть финансовых транзакций" com.example.department: "Финансы" com.example.label-with-empty-value: "" этикеток: - "com.Реализации Compose ДОЛЖНЫ устанавливать метки внешний Если установлено значение Если для В приведенном ниже примере
Сервисы:
прокси:
изображение: круто/прокси
сети:
- вне
- дефолт
приложение:
изображение: круто/приложение
сети:
- дефолт
сети:
вне:
внешний: правда
имя сетей:
сеть1:
имя: мое-приложение-сеть
Его также можно использовать в сочетании со свойством сетей:
сеть1:
внешний: правда
имя: "${NETWORK_ID}"
Элемент верхнего уровня Volumes Тома — это постоянные хранилища данных, реализованные платформой. Раздел услуги:
серверная часть:
изображение: круто/база данных
тома:
- БД-данные:/и т.д./данные
резервное копирование:
изображение: служба резервного копирования
тома:
- БД-данные:/var/lib/резервная копия/данные
тома:
БД-данные:
Запись под ключом томов верхнего уровня может быть пустой, и в этом случае она использует конфигурацию платформы по умолчанию для создание тома. Опционально можно настроить его следующими ключами: драйвер Укажите, какой драйвер тома следует использовать для этого тома. драйвер: foobar driver_opts томов:
пример:
driver_opts:
тип: "нфс"
o: "addr=10.40.0.199,nolock,soft,rw"
устройство: ":/докер/пример"
внешний Если установлено значение Если для В приведенном ниже примере вместо попытки создать том с именем услуги:
серверная часть:
изображение: круто/база данных
тома:
- БД-данные:/и т.д./данные
тома:
БД-данные:
внешний: правда
этикетки Рекомендуется использовать обратную DNS-нотацию, чтобы ваши метки не конфликтующие с теми, которые используются другим программным обеспечением. этикетки: com.example.description: "Том базы данных" com.example.department: "ИТ/эксплуатация" com.example.label-with-empty-value: "" этикеток: - "com.example.description=Объем базы данных" - "com.example.department=IT/Ops" - "com.example.label-with-empty-value" Реализация Compose ДОЛЖНА устанавливать метки имя томов:
данные:
имя: "данные моего приложения"
Его также можно использовать вместе с внешним свойством томов:
БД-данные:
внешний:
имя: фактическое имя тома
Это позволяет сделать это имя поиска параметром файла Compose, чтобы идентификатор модели для тома жестко запрограммирован, но фактический идентификатор тома на платформе устанавливается во время выполнения во время развертывания: томов:
БД-данные:
внешний:
имя: ${DATABASE_VOLUME}
Элемент верхнего уровня конфигурацииКонфигурации позволяют службам адаптировать свое поведение без необходимости перестраивать образ Docker. При предоставлении доступа к конфигурации содержимое конфигурации монтируется в виде файла в контейнере. Расположение точки монтирования внутри контейнера по умолчанию равно 9.0413 / По умолчанию конфигурация ДОЛЖНА принадлежать пользователю, запускающему команду контейнера, но может быть переопределена конфигурацией службы. По умолчанию конфигурация ДОЛЖНА иметь права на чтение для всех (режим 0444), если служба не настроена для переопределения этого. Службы могут получить доступ к конфигурациям только в том случае, если они явно предоставлены подразделом Высший уровень
В этом примере создается В этом примере конфигов:
http_config:
файл: ./httpd.conf
В качестве альтернативы конфигов:
http_config:
внешний: правда
Внешний поиск конфигураций также может использовать отдельный ключ, указав конфигов:
http_config:
внешний: правда
имя: "${HTTP_CONFIG_KEY}"
Если для Для создания файла необходимо явно предоставить доступ к конфигурациям соответствующим службам в приложении. Секреты элемента верхнего уровняСекреты— это разновидность конфигураций, ориентированных на конфиденциальные данные, с особыми ограничениями для этого использования. Поскольку реализация платформы может существенно отличаться от Конфигов, специальный раздел Секреты позволяет настраивать связанные ресурсы. Объявление верхнего уровня
В этом примере секреты:
сертификат сервера:
файл: ./server.cert
В этом примере секретов:
токен:
среда: "OAUTH_TOKEN"
В качестве альтернативы, секретов:
сертификат сервера:
внешний: правда
Поиск внешних секретов также может использовать отдельный ключ, указав секретов:
сертификат сервера:
внешний: правда
имя: "${CERTIFICATE_KEY}"
Если для ФрагментыМожно повторно использовать фрагменты конфигурации с помощью привязок YAML. томов:
БД-данные: &объем по умолчанию
драйвер: по умолчанию
метрики: *объем по умолчанию
В предыдущем примере якорь создается как том Также можно частично переопределить значения, заданные ссылкой привязки, с помощью
Тип слияния YAML. В следующем примере
Сервисы:
серверная часть:
изображение: круто/база данных
тома:
- БД-данные
- метрики
тома:
БД-данные: &объем по умолчанию
драйвер: по умолчанию
имя: "данные"
показатели:
<<: * объем по умолчанию
название: "метрики"
Расширение Специальные поля расширения могут иметь любой формат, если их имя начинается с последовательности символов х-пользовательский:
фу:
- бар
- зот
Сервисы:
веб-приложение:
изображение: круто/веб-приложение
х-фу: бар
Содержимое таких полей не указано в спецификации Compose и может использоваться для включения пользовательских функций. Для расширений платформы настоятельно рекомендуется использовать префикс расширения по имени платформы/поставщика, так же, как браузеры добавляют поддержка пользовательских функций CSS. служба:
серверная часть:
развертывать:
размещение:
x-aws-role: "arn:aws:iam::XXXXXXXXXXXX:role/foo"
x-aws-регион: "eu-west-3"
x-azure-region: "центральная Франция"
Информативные исторические заметкиЭтот раздел носит информативный характер. На момент написания были известны следующие префиксы:
Использование расширений в качестве фрагментовБлагодаря поддержке полей расширения файл Compose можно записать следующим образом, чтобы улучшить читаемость повторно используемых фрагментов: x-регистрация: & регистрация по умолчанию
опции:
максимальный размер: "12м"
max-файл: "5"
драйвер: json-файл
Сервисы:
внешний интерфейс:
изображение: круто/веб-приложение
ведение журнала: * ведение журнала по умолчанию
серверная часть:
изображение: круто/база данных
ведение журнала: * ведение журнала по умолчанию
указание значений байтов Значение выражает значение байта в виде строки в формате 2б
1024кб
2048k
300м
1 ГБ
указание длительности Значение, выражающее продолжительность в виде строки в формате 10 мс 40-е годы 1м30с 1ч5м30с20мс Интерполяция Значения в файле Compose могут быть заданы переменными и интерполированы во время выполнения. Составные файлы используют Bash-подобный
синтаксис Поддерживаются синтаксис
Аналогично, следующий синтаксис позволяет указывать обязательные переменные:
Интерполяция также может быть вложенной:
Другие расширенные функции оболочки, такие как Вы можете использовать |
В.,Алимпиева М.Н. (3)
Д. (1)
М (1)
В., Колпакова О.В. (1)
х 2 (1)
(Газетная) (1)
Правила» 155*210
Дроби / Таблица умножения»
Это очень настраиваемая среда с большим набором плагинов.
Espresso — это инструмент, специально предназначенный для веб-программистов Mac.

Не все теги, которые используются объектом операции, должны быть объявлены. Теги, которые не объявлены, МОГУТ быть организованы случайным образом или на основе логики инструментов. Каждое имя тега в списке ДОЛЖНО быть уникальным.
Синтаксис CommonMark МОЖЕТ использоваться для форматированного текстового представления.
example.com/support",
"электронная почта": "
ДОЛЖЕН быть в формате URL.
ДОЛЖЕН быть в формате URL.
Синтаксис CommonMark МОЖЕТ использоваться для форматированного текстового представления.
gigantic-server.com/v1",
"description": "Промежуточный сервер"
},
{
"url": "https://api.gigantic-server.com/v1",
"description": "Производственный сервер"
}
]
}
gigantic-server.com:{порт}/{базовый путь}
описание: Рабочий сервер API
переменные:
имя пользователя:
# примечание! отсутствие перечисления здесь означает, что это открытое значение
по умолчанию: демо
описание: это значение назначается поставщиком услуг, в данном примере это `gigantic-server.com`.
порт:
перечисление:
- '8443'
- «443»
по умолчанию: '8443'
базовый путь:
# открытый означает, что есть возможность использовать специальные базовые пути, назначенные провайдером, по умолчанию `v2`
по умолчанию: v2
Массив НЕ ДОЛЖЕН быть пустым.
"
},
"Незаконный ввод": {
"description": "Недопустимый ввод для операции."
},
"Общая ошибка": {
"description": "Общая ошибка",
"содержание": {
"приложение/json": {
"схема": {
"$ref": "#/компоненты/схемы/Общая ошибка"
}
}
}
}
},
"Схемы безопасности": {
"апи_ключ": {
"тип": "апиКей",
"имя": "api_key",
"в": "заголовок"
},
"зоомагазин_auth": {
"тип": "oauth3",
"течет": {
"скрытый": {
"authorizationUrl": "http://example.org/api/oauth/dialog",
"области": {
"write:pets": "изменить питомцев в вашем аккаунте",
"read:pets": "читать своих питомцев"
}
}
}
}
}
}
Незаконный ввод:
Описание: Недопустимый ввод для операции.
Общая ошибка:
описание: Общая ошибка
содержание:
приложение/json:
схема:
$ref: '#/компоненты/схемы/Общая ошибка'
схемы безопасности:
ключ_апи:
тип: апиКей
имя: API_key
в: заголовок
зоомагазин_auth:
тип: oauth3
потоки:
скрытый:
URL-адрес авторизации: http://example.org/api/oauth/dialog
области:
write:pets: изменить питомцев в своей учетной записи
read:pets: читай своих питомцев
Имя поля ДОЛЖНО начинаться с косой черты (
",
"содержание": {
"приложение/json": {
"схема": {
"тип": "массив",
"Предметы": {
"$ref": "#/компоненты/схемы/животное"
}
}
}
}
}
}
}
}
}
Структура, на которую делается ссылка, ДОЛЖНА быть в формате объекта элемента пути. В случае, если поле Объект элемента пути появляется как в определенном объекте, так и в объекте, на который указывает ссылка, поведение не определено.
Уникальный параметр определяется комбинацией имени и местоположения. Список может использовать ссылочный объект для связи с параметрами, которые определены в компонентах/параметрах объекта OpenAPI.
Значение OperationId равно 9.0016 с учетом регистра . Инструменты и библиотеки МОГУТ использовать идентификатор операции для уникальной идентификации операции, поэтому РЕКОМЕНДУЕТСЯ следовать общепринятым соглашениям об именах в программировании.
В других случаях, когда спецификация HTTP является расплывчатой,
",
"содержание": {
"приложение/json": {},
"приложение/xml": {}
}
},
"405": {
"description": "Метод не разрешен",
"содержание": {
"приложение/json": {},
"приложение/xml": {}
}
}
},
"безопасность": [
{
"зоомагазин_аутент": [
"написать: домашние животные",
"читать: домашние животные"
]
}
]
}
содержание:
'приложение/json': {}
'приложение/xml': {}
«405»:
описание: Метод не разрешен
содержание:
'приложение/json': {}
'приложение/xml': {}
безопасность:
- petstore_auth:
- напиши: домашние животные
- читать: домашние животные


Расположение параметра. Возможные значения:
Это действительно только для 


Этот параметр заменяет
0.



bar/examples/user-example.whatever"
}
}
}
}
}

Кроме того, при ссылке на схему
0,
файл:
тип: массив
Предметы:
тип: строка
формат: бинарный

Этот атрибут только применим к 
Для других типов свойств это свойство не действует. Когда
Контейнер сопоставляет код ответа HTTP с ожидаемым ответом.


например text/plain переопределяет text/*
Каждое значение на карте представляет собой объект элемента пути, описывающий набор запросов, которые могут быть инициированы поставщиком API, и ожидаемые ответы.
Ключевое значение, используемое для идентификации объекта элемента пути, представляет собой выражение, оцениваемое во время выполнения и идентифицирующее URL-адрес, используемый для операции обратного вызова.
Простым примером может быть
org/subscribe/myevent?queryUrl=http://clientdomain.com/stillrunning


Наличие ссылки не гарантирует, что вызывающая сторона сможет успешно вызвать ее, а скорее обеспечивает известную взаимосвязь и механизм обхода между ответами и другими операциями.

path.id
# элемент пути связанной операции
/users/{идентификатор пользователя}/адрес:
параметры:
- имя: идентификатор пользователя
в: путь
требуется: правда
описание: идентификатор пользователя, как userId
схема:
тип: строка
# связанная операция
получить:
идентификатор операции: getUserAddress
ответы:
«200»:
описание: адрес пользователя
0~1repositories~1{username}/get'
параметры:
имя пользователя: $response.body#/имя пользователя
" / "_" / "`" / "|" / "~" / ЦИФРА / АЛЬФА
body#/пользователь/uuid 
Синтаксис CommonMark МОЖЕТ использоваться для форматированного текстового представления.
Ссылочная строка.


Другие ограничения объекта схемы сохраняют свое определенное поведение и, следовательно, могут запрещать использование
Свойство НЕ ДОЛЖНО быть помечено одновременно как
Добавляет дополнительные метаданные для описания XML-представления этого свойства.
Объект XML содержит дополнительную информацию о доступных параметрах.
Обратите внимание, что `Cat` будет использоваться в качестве значения дискриминатора.",
"все": [
{
"$ref": "#/компоненты/схемы/домашнее животное"
},
{
"тип": "объект",
"характеристики": {
"охотничий навык": {
"тип": "строка",
"description": "Измеренное умение для охоты",
"по умолчанию": "ленивый",
"перечисление": [
"невежественный",
"ленивый",
"авантюрный",
"агрессивный"
]
}
},
"требуется": [
"охотничий навык"
]
}
]
},
"Собака": {
"description": "Изображение собаки. Обратите внимание, что `Dog` будет использоваться в качестве значения дискриминатора.",
"все": [
{
"$ref": "#/компоненты/схемы/домашнее животное"
},
{
"тип": "объект",
"характеристики": {
"packSize": {
"тип": "целое",
"формат": "int32",
"description": "размер стаи, из которой собака",
"по умолчанию": 0,
"минимум": 0
}
},
"требуется": [
"Размер упаковки"
]
}
]
}
}
}
}
описание: изображение собаки
все:
- $ref: '#/components/schemas/Pet'
- тип: объект
характеристики:
размер пакета:
тип: целое число
формат: int32
описание: размер стаи, из которой собака
по умолчанию: 0
минимум: 0
требуется:
- размер упаковки
Имя свойства в полезных данных, которое будет содержать значение дискриминатора.
Затем мы можем точно описать, какое поле говорит нам, какую схему использовать:
com/schemas/Monster/schema.json'
дискриминатор:
имя свойства: petType
сопоставление:
собака: '#/компоненты/схемы/собака'
монстр: 'https://gigantic-server.com/schemas/Monster/schema.json'
Чтобы избежать избыточности, дискриминатор МОЖЕТ быть добавлен к определению родительской схемы, и все схемы, содержащие родительскую схему в конструкции
Аналогично этой схеме:
Если 
..животное>
Поддерживаемые схемы: HTTP-аутентификация, ключ API (в виде заголовка, параметра cookie или параметра запроса), общие потоки OAuth3 (неявные, пароль, учетные данные клиента и код авторизации), как определено в RFC6749, и OpenID Connect Discovery.
Имя используемого заголовка, запроса или файла cookie.
Объект, содержащий информацию о конфигурации для поддерживаемых типов потока.
com/api/oauth/dialog",
"области": {
"write:pets": "изменить питомцев в вашем аккаунте",
"read:pets": "читать своих питомцев"
}
}
}
}
0.
URL-адрес токена, который будет использоваться для этого потока. Это ДОЛЖНО быть в форме URL.
com/api/oauth/dialog",
"tokenUrl": "https://example.com/api/oauth/токен",
"области": {
"write:pets": "изменить питомцев в вашем аккаунте",
"read:pets": "читать своих питомцев"
}
}
}
}
Это обеспечивает поддержку сценариев, в которых для передачи информации о безопасности требуется несколько параметров запроса или заголовков HTTP.

Хотя это и не является частью самой спецификации, некоторые библиотеки МОГУТ разрешать доступ к частям документации на основе той или иной формы аутентификации/авторизации.
0.3



Но фактическое определение включает в себя отдельные ресурсы и службы платформы, которые абстрагируются этим типом.
Реализация Compose, создающая ресурсы на платформе, ДОЛЖНА ставить префиксы имен ресурсов по проекту и
установить метку 
д./данные
сети:
- задний ярус
тома:
БД-данные:
водитель: флокер
driver_opts:
размер: "10ГиБ"
конфиги:
httpd-конфигурация:
внешний: правда
секреты:
сертификат сервера:
внешний: правда
сети:
# Наличие этих объектов достаточно для их определения
передний уровень: {}
задний уровень: {}






независимо от других компонентов. Сервисы поддерживаются набором контейнеров, управляемых платформой.
в соответствии с требованиями к репликации и ограничениями по размещению. Службы поддерживаются контейнерами.
образом Docker и набором аргументов времени выполнения. Все контейнеры в сервисе одинаково создаются с помощью этих
аргументы.
Каждый элемент в списке ДОЛЖЕН иметь два ключа:
Каждый элемент в списке должен иметь два ключа:
Может быть
целочисленное значение, использующее микросекунды в качестве единиц измерения или длительности.


Доступный для записи бит ДОЛЖЕН игнорироваться. Исполняемый бит может быть установлен.
json



Это тот же формат, который ядро Linux указывает в контрольных группах.
Контроллер белого списка устройств.
Может быть одним значением или списком.
so
- -д
- memory_limit=-1
- продавец/бен/phpunit
Строки, начинающиеся с 
Вы можете использовать
неполный список таких ключей:
Реализации Compose ДОЛЖНЫ возвращать ошибку, если:
args
Такой же вывод
создается, если используется синтаксис массива.
Затем процесс слияния прерывается
снова выключается до тех пор, пока не останется
Любые дубликаты, полученные в результате слияния, удаляются, так что последовательность остается только
содержит уникальные элементы.

повторы: 3
start_period: 40 с
Альтернативно
проверка здоровья, установленная изображением, может быть отключена установкой
Реализации Compose с поддержкой сборки МОГУТ предлагать конечным пользователям альтернативные варианты управления приоритетом
pull для создания образа из исходного кода, однако извлечение образа ДОЛЖНО быть поведением по умолчанию.
Доступный
значения зависят от платформы, но спецификация Compose определяет конкретные значения
который ДОЛЖЕН быть реализован, как описано, если поддерживается:

168.0.42:123"

16.238.0/24"
- подсеть: "2001:3984:3989::/64"

Это модификатор
атрибут, который имеет значение, только если 

Отображение портов НЕ ДОЛЖНО использоваться с
В последнем случае
Реализации Compose СЛЕДУЕТ автоматически выделять любой неназначенный хост-порт.
Может быть установлен как диапазон с использованием синтаксиса 


cert
Бит записи ДОЛЖЕН игнорироваться, если он установлен. Исполняемый бит МОЖЕТ быть установлен.
Такое разрешение должно быть явным образом указано в спецификации службы как элемент секретной службы.
Обзор поддерживаемых sysctl см. в разделе Настройка ядра с пространством имен.
параметры (sysctls) во время выполнения.
Поддерживаемые значения зависят от платформы и МОГУТ зависеть
на конфигурации платформы
sock
цель: /var/run/postgres/postgres.sock
тома:
БД-данные:

Неприменимо для монтирования tmpfs.
Доступные значения зависят от платформы
Для их использования НЕОБХОДИМО определить внешнюю сеть с именем
Если автономный контейнер подключается к сети, он может взаимодействовать со службами и другими автономными контейнерами.
которые также подключены к сети.
example.description=Сеть финансовых транзакций"
- "com.example.department=Финансы"
- "com.example.label-with-empty-value"
Вместо того, чтобы пытаться создать сеть, Compose
реализациям СЛЕДУЕТ запрашивать у платформы существующую сеть с простым названием
Спецификация Compose предлагает нейтральную абстракцию.
для служб для монтирования томов и параметров конфигурации для их размещения в инфраструктуре.
Значения по умолчанию и доступные значения зависят от платформы. Если драйвер недоступен, реализация Compose ДОЛЖНА вернуть ошибку и остановить развертывание приложения.
docker.compose.project
Конфигурации сопоставимы с томами с точки зрения службы, поскольку они монтируются в файловую систему контейнеров службы. Фактическая деталь реализации для получения конфигурации, предоставляемой платформой, может быть установлена в определении конфигурации.
Источником конфигурации является либо
conf
Если для 

Если для 
Реализация компоновки для обнаружения неизвестного поля расширения НЕ ДОЛЖНА завершаться ошибкой, но МОЖЕТ предупреждать о неизвестном поле.
