DefectdojoProducts
Источник данных типа DefectdojoProducts возвращает список продуктов в Defectdojo.
Авторизация
Конфигурация авторизации описана в разделе «Внешний сервис DefectDojo».
Спецификация ответа
Платформа выполняет GET-запрос по URL: /api/v2/products. Возвращаются все доступные значения. Спецификация ответа.
Конфигурация
URL— URL DefectDojo в форматеhttps://example.com.
Параметры
Настраиваемые параметры отсутствуют.
GitlabGroups
Источник данных типа GitlabGroups возвращает список групп в GitLab.
Авторизация
Конфигурация авторизации описана в разделе «Внешний сервис GitLab».
Спецификация ответа
Платформа выполняет GET-запрос к API GitLab по URL: /api/v4/groups. Платформа возвращает все доступные значения. Спецификация ответа.
Конфигурация
URL— URL GitLab в форматеhttps://gitlab.com, без части/api/v4.
Параметры
Настраиваемые параметры отсутствуют.
GitlabProjects
Источник данных типа GitlabProjects возвращает список проектов в GitLab.
Авторизация
Конфигурация авторизации описана в разделе «Внешний сервис GitLab».
Спецификация ответа
В зависимости от конфигурации параметров, платформа выполняет GET-запрос к API GitLab и возвращает соответствующую спецификацию.
Если значение параметра all равно true, выполняется GET-запрос по URL: /api/v4/projects. Платформа возвращает все доступные значения. Спецификация ответа.
Если значение параметра all равно false, выполняется GET-запрос по URL: /api/v4/groups/:id/projects. Платформа возвращает все доступные значения. Спецификация ответа.
Если значение параметра tags равно true, платформа дополнительно получает git-теги. Для получения git-тегов выполняется GET-запрос по URL: /api/v4/projects/:id/repository/tags. Платформа получает список всех git-тегов и расширяет спецификацию ответа полем ddp_repository_tags, которое соответствует спецификации ответа list-project-repository-tags.
Конфигурация
URL— URL GitLab в форматеhttps://gitlab.com, без части/api/v4.
Параметры
| Название | Обязательность | Описание | Возможные значения | По умолчанию |
|---|---|---|---|---|
| all | Опционально | В явном виде указывает, что необходимо собирать репозитории всех групп, к которым есть доступ | true, false | false |
| group_ids | Обязательно, если all в значении false | Источник данных будет собирать проекты групп с указанным ID. ID групп указываются через запятую | Пример: 1001,1002 | - |
| tags | Опционально | Платформа дополнительно получает список всех git тегов и расширяет спецификацию ответа полем ddp_repository_tags, которое соответствует спецификации ответа list-project-repository-tags | true, false | false |
| include_subgroups | Опционально | Если указан параметр group_ids, то параметр include_subgroups определяет, собирать ли проекты подгрупп указанных групп | true, false | false |
| tags_order_by | Опционально | Поле для сортировки тегов. Описание параметра — в GitLab Tags API | updated, name, version | updated |
| tags_sort | Опционально | Направление сортировки тегов. Описание параметра — в GitLab Tags API | asc, desc | desc |
| tags_search | Опционально | Строка для поиска тегов по имени. Описание параметра — в GitLab Tags API | Строка | - |
HarborArtifacts
Источник данных типа HarborArtifacts собирает информацию о всех артефактах в Harbor.
Авторизация
Конфигурация авторизации описана в разделе «Внешний сервис Harbor».
Спецификация ответа
Платформа получает список всех проектов и репозиториев, которые содержатся в этих проектах, затем по каждому из доступных проектов выполняется GET-запрос к API Harbor: /api/v2.0/projects/{project_name}/repositories/{repository_name}/artifacts. Спецификация ответа доступна в интерфейсе Harbor.
Конфигурация
URL— URL Harbor в форматеhttps://example.com.
Параметры
Настраиваемые параметры отсутствуют.
HarborProjects
Источник данных типа HarborProjects собирает информацию о всех проектах в Harbor.
Авторизация
Конфигурация авторизации описана в разделе «Внешний сервис Harbor».
Спецификация ответа
Платформа получает список всех доступных проектов, выполняя GET-запросы к API Harbor: /api/v2.0/projects. Спецификация ответа доступна в интерфейсе Harbor.
Конфигурация
URL— URL Harbor в форматеhttps://example.com.
Параметры
Настраиваемые параметры отсутствуют.
HarborRepositories
Источник данных типа HarborRepositories собирает информацию о всех репозиториях в Harbor.
Авторизация
Конфигурация авторизации описана в разделе «Внешний сервис Harbor».
Спецификация ответа
Платформа получает список всех проектов, затем получает список всех репозиториев в каждом из проектов, выполняя GET-запросы к API Harbor: /api/v2.0/projects/{project_name}/repositories. Спецификация ответа доступна в интерфейсе Harbor.
Конфигурация
URL— URL Harbor в форматеhttps://example.com.
Параметры
Настраиваемые параметры отсутствуют.
HarborTags
Источник данных типа HarborTags собирает информацию о всех тегах у артефактов в Harbor.
Авторизация
Конфигурация авторизации описана в разделе «Внешний сервис Harbor».
Спецификация ответа
Платформа получает список всех проектов и репозиториев, которые содержатся в этих проектах, затем по каждому из доступных проектов выполняется GET-запрос к API Harbor: /api/v2.0/projects/{project_name}/repositories/{repository_name}/artifacts. Затем происходит сбор всех тегов по всем артефактам (поле tags) и результат возвращается в виде массива. Спецификация ответа доступна в интерфейсе Harbor.
Конфигурация
URL— URL Harbor в форматеhttps://example.com.
Параметры
Настраиваемые параметры отсутствуют.
HelmReleases
Источник данных типа HelmReleases возвращает список всех HelmReleases в кластере Kubernetes.
Авторизация
Конфигурация авторизации описана в разделе «Внешний сервис Kubernetes».
Аутентификация в Kubernetes описана в официальной документации.
Спецификация ответа
Платформа возвращает все HelmReleases в кластере Kubernetes. Спецификация:
[
{
"name": "string", // Название.
"info": {
"first_deployed": "string", // Дата и время первого деплоя.
"last_deployed": "string", // Дата и время последнего деплоя.
"deleted": "string", // Дата и время удаления (может быть пустой строкой).
"description": "string", // Описание.
"status": "string", // Статус.
"notes": "string" // Заметки.
},
"chart": {
"metadata": {
"name": "string", // Название чарта.
"home": "string", // Домашняя страница.
"sources": "array", // Массив строк с URL-адресами источников.
"version": "string", // Версия чарта.
"description": "string", // Описание чарта.
"keywords": "array", // Массив строк с ключевыми словами.
"maintainers": "array", // Массив объектов с информацией о мейнтейнерах.
"icon": "string", // URL иконки.
"apiVersion": "string", // Версия API.
"appVersion": "string" // Версия приложения.
},
"templates": [ // Массив объектов с шаблонами.
{
"name": "templates/NOTES.txt",
"data": "..."
},
{
"name": "templates/_helpers.tpl",
"data": "..."
}
// ... другие шаблоны.
],
"values": "object", // Объект с доступными настройками Helm-чарта.
"schema": "null", // Схема (может быть null).
"files": [ // Массив объектов с файлами.
{
"name": ".helmignore",
"data": "..."
},
{
"name": "LICENSE",
"data": "..."
}
// ... другие файлы.
]
},
"config": { // Текущая конфигурация.
"caSecretName": "string",
"cache": {
"enabled": "boolean",
"expireHours": "integer"
}
// ... другие настройки.
},
"manifest": "string", // Отрендеренные манифесты.
"version": "integer", // Версия HelmRelease.
"namespace": "string" // Неймспейс, где развёрнут релиз.
},
// ... другие ресурсы типа HelmRelease.
]Конфигурация
URL— URL Kubernetes API в форматеhttps://api.example.com.
Параметры
Настраиваемые параметры отсутствуют.
KafkaAcls
Источник данных типа KafkaAcls собирает информацию о доступных ACL.
Авторизация
Платформа поддерживает аутентификацию в Kafka с помощью SASL/PLAIN, SASL/SCRAM.
Спецификация ответа
Платформа запрашивает информацию о настроенных ACL в Kafka. Полученные данные предоставляются в следующем формате:
[
{
"Cluster": "string", // Название кластера Kafka.
"ResourceType": "string", // Тип ресурса (TOPIC, GROUP и т. д.).
"ResourceName": "string", // Название ресурса.
"PatternType": "string", // Тип паттерна (LITERAL, PREFIXED и т. д.).
"Principal": "string", // Principal пользователя (например: "User:Alice").
"Host": "string", // Хост (обычно "*" для любого хоста).
"Operation": "string", // Операция (READ, WRITE, DESCRIBE и т. д.).
"PermissionType": "string" // Тип разрешения (ALLOW, DENY).
},
// ... другие записи ACL.
]Конфигурация
URL— URL Kafka в форматеexample.com.
Параметры
| Название | Обязательность | Описание | Возможные значения |
|---|---|---|---|
| SecurityProtocol | Обязательно | Протокол для подключения к Kafka — в документации Kafka | PLAINTEXT, SASL_PLAINTEXT, SASL_SSL |
| SaslMechanism | Опционально | Механизм аутентификации, который будет использовать SASL. Обязателен при использовании протокола SASL_PLAINTEXT или SASL_SSL — в документации Kafka | PLAIN, SCRAM-SHA-256, SCRAM-SHA-512 |
| User | Обязательно | Имя пользователя для подключения к Kafka | - |
| Pass | Обязательно | Пароль пользователя для подключения к Kafka | - |
KafkaBrokers
Источник данных типа KafkaBrokers собирает информацию о доступных брокерах.
Авторизация
Платформа поддерживает аутентификацию в Kafka с помощью SASL/PLAIN, SASL/SCRAM.
Спецификация ответа
Платформа осуществляет несколько запросов к Kafka с целью получения сведений о доступных брокерах. Полученные данные предоставляются в следующем формате:
{
"Cluster": "string", // Название кластера Kafka (из kafkaBrokerMetadata.Cluster).
"Leader": "boolean", // Является ли брокер лидером-контроллером (true/false).
"NodeID": "number", // Уникальный ID брокера (из broker.NodeID).
"Port": "number", // Порт брокера (из broker.Port).
"Host": "string", // Хост брокера (из broker.Host).
"Rack": "string|null", // Рек (зона доступности) брокера (из broker.Rack).
"Configs": { // Конфигурации брокера.
{
"Name": "number", // Уникальный ID брокера.
"Configs": [ // Массив отдельных конфигураций.
{
"Key": "listeners", // Ключ конфигурации.
"Value": "CLIENT://:9092,INTERNAL://:9094", // Значение конфигурации.
"Source": "STATIC_BROKER_CONFIG" // Источник конфигурации.
},
{
"Key": "log.retention.hours", // Ключ конфигурации.
"Value": 168, // Значение конфигурации.
"Source": "DEFAULT_CONFIG" // Источник конфигурации.
},
{
"...": "..." // Другие параметры.
// Полный список параметров — в официальной документации:
// https://kafka.apache.org/documentation/#brokerconfigs.
}
]
}
}
}Конфигурация
URL— URL Kafka в форматеexample.com.
Параметры
| Название | Обязательность | Описание | Возможные значения |
|---|---|---|---|
| SecurityProtocol | Обязательно | Протокол для подключения к Kafka — в документации Kafka | PLAINTEXT, SASL_PLAINTEXT, SASL_SSL |
| SaslMechanism | Опционально | Механизм аутентификации, который будет использовать SASL. Обязателен при использовании протокола SASL_PLAINTEXT или SASL_SSL — в документации Kafka | PLAIN, SCRAM-SHA-256, SCRAM-SHA-512 |
| User | Обязательно | Имя пользователя для подключения к Kafka | - |
| Pass | Обязательно | Пароль пользователя для подключения к Kafka | - |
KafkaTopics
Источник данных типа KafkaTopics собирает информацию о доступных топиках в Kafka.
Авторизация
Платформа поддерживает аутентификацию в Kafka с помощью SASL/PLAIN, SASL/SCRAM.
Спецификация ответа
Платформа осуществляет несколько запросов к Kafka с целью получения сведений о доступных топиках. Полученные данные предоставляются в следующем формате:
{
"Cluster": "string", // Название кластера Kafka.
"Topic": "string", // Название топика.
"ID": "string", // Уникальный идентификатор топика.
"IsInternal": "boolean", // Является ли топик внутренним (Пример внутреннего топика: __consumer_offsets).
"Partitions": "number", // Количество партиций в топике.
"Configs": { // Конфигурации топика (динамические параметры).
"retention.ms": 604800000, // Пример параметра: время хранения сообщений.
"cleanup.policy": "delete", // Пример параметра: политика очистки.
"...": "..." // Другие параметры.
// Полный список параметров — в официальной документации:
// https://kafka.apache.org/documentation/#topicconfigs.
}
}Конфигурация
URL— URL Kafka в форматеexample.com.
Параметры
| Название | Обязательность | Описание | Возможные значения |
|---|---|---|---|
| SecurityProtocol | Обязательно | Протокол для подключения к Kafka — в документации Kafka | PLAINTEXT, SASL_PLAINTEXT, SASL_SSL |
| SaslMechanism | Опционально | Механизм аутентификации, который будет использовать SASL. Обязателен при использовании протокола SASL_PLAINTEXT или SASL_SSL — в документации Kafka | PLAIN, SCRAM-SHA-256, SCRAM-SHA-512 |
| User | Обязательно | Имя пользователя для подключения к Kafka | - |
| Pass | Обязательно | Пароль пользователя для подключения к Kafka | - |
KubernetesResources
Источник данных типа KubernetesResources возвращает список ресурсов Kubernetes. Тип возвращаемых ресурсов задаётся через параметры источника данных. Поддерживаются как встроенные в Kubernetes типы ресурсов, так и любые кастомные ресурсы.
Авторизация
Конфигурация авторизации описана в разделе «Внешний сервис Kubernetes».
Спецификация ответа
Спецификация ответа зависит от типа ресурса, который планируется получить. Для получения точной информации необходимо обратиться к документации. Для встроенных в Kubernetes ресурсов доступна официальная документация.
При отсутствии возможности обратиться к документации можно получить описание спецификации с помощью команды d8 k explain.
Пример для deployment:
d8 k explain deployment --recursive
Примерный вывод:
GROUP: apps
KIND: Deployment
VERSION: v1
DESCRIPTION:
Deployment enables declarative updates for Pods and ReplicaSets.
FIELDS:
apiVersion <string>
kind <string>
metadata <ObjectMeta>
annotations <map[string]string>
creationTimestamp <string>
...Описание спецификации находится внутри FIELDS:.
Конфигурация
URL— URL Kubernetes API в форматеhttps://api.example.com.
Параметры
| Название | Обязательность | Описание | Возможные значения |
|---|---|---|---|
| apiGroup | Опционально | API-группа ресурса. Для ресурсов в core API-группе поле не задаётся | См. определение требуемых Group и Version |
| version | Обязательно | Версия API ресурса | См. определение требуемых Group и Version |
| isNamespaced | Обязательно | Принадлежность ресурса неймспейсам. Проверить принадлежность можно с помощью команды d8 k api-resources | true, false |
| namespace | Опционально | Неймспейс, из которого будут собираться ресурсы. Если не указан, ресурсы будут собираться из всех неймспейсов. Значение параметра учитывается, только если значение isNamespaced равно true | |
| resource | Обязательно | Название ресурса. Указывается маленькими буквами во множественном числе, как в поле NAME вывода команды d8 k api-resources |
Примеры
Собрать все ingress-ресурсы Kubernetes-кластера:
apiGroup: networking.k8s.io
version: v1
isNamespaced: true
resource: ingressesСобрать все поды Kubernetes-кластера:
version: v1
isNamespaced: true
resource: podsСобрать все поды Kubernetes-кластера в неймспейсе d8-development-platform:
version: v1
isNamespaced: true
resource: pods
namespace: d8-development-platformСобрать все неймспейсы Kubernetes-кластера:
version: v1
isNamespaced: false
resource: namespacesСобрать все кастомные ресурсы ModuleRelease Kubernetes-кластера:
apiGroup: deckhouse.io
version: v1alpha1
isNamespaced: false
resource: modulereleasesОпределение требуемых Group и Version
Каждому типу ресурса соответствует своя версия и группа. Полный список API-ресурсов с их группами и версиями — в документации Kubernetes.
Если неизвестно, какие требуются Group и Version, можно попробовать подставить актуальные значения. Есть несколько вариантов, как их посмотреть, например с помощью утилиты d8 k: команда d8 k explain показывает version и apiGroup для ресурса.
Пример:
d8 k explain deploymentВывод:
GROUP: apps
KIND: Deployment
VERSION: v1
DESCRIPTION:
Deployment enables declarative updates for Pods and ReplicaSets.
FIELDS:
...NexusArtifacts
Источник данных типа NexusArtifacts возвращает список артефактов в Nexus.
Авторизация
Конфигурация авторизации описана в разделе «Внешний сервис Nexus».
Спецификация ответа
Платформа формирует список доступных репозиториев, затем по каждому репозиторию выполняется GET-запрос к API Nexus: /service/rest/v1/components. Спецификация ответа.
Конфигурация
URL— URL Nexus в форматеhttps://example.com.
Параметры
Настраиваемые параметры отсутствуют.
NexusRepositories
Источник данных типа NexusRepositories возвращает список репозиториев в Nexus.
Авторизация
Конфигурация авторизации описана в разделе «Внешний сервис Nexus».
Спецификация ответа
Платформа выполняет GET-запрос к API Nexus: /service/rest/v1/repositories. Спецификация ответа.
Конфигурация
URL— URL Nexus в форматеhttps://example.com.
Параметры
Настраиваемые параметры отсутствуют.
PrometheusMetrics
Источник данных типа PrometheusMetrics возвращает результат запроса PromQL в Prometheus.
Авторизация
Конфигурация авторизации описана в разделе «Внешний сервис Prometheus».
Спецификация ответа
Платформа выполняет GET-запрос к API Prometheus: /api/v1/query. Спецификация ответа.
Конфигурация
URL— URL Prometheus API в форматеhttps://example.com/api/v1/query.- «Query» — запрос в формате PromQL, на основе которого будет сформирован ответ.
Параметры
Настраиваемые параметры отсутствуют.
SonarqubeProjects
Источник данных типа SonarqubeProjects возвращает список проектов в SonarQube.
Авторизация
Конфигурация авторизации описана в разделе «Внешний сервис SonarQube».
Спецификация ответа
Платформа выполняет GET-запрос к API SonarQube: /api/projects/search. Система собирает все доступные components и возвращает их в виде массива. Спецификация components.
Конфигурация
URL— URL SonarQube в форматеhttps://example.com.
Параметры
Настраиваемые параметры отсутствуют.
GenericAPI
Источник данных типа GenericAPI позволяет подключаться к любому REST API и получать данные в формате JSON. Поддерживаются различные типы пагинации и настраиваемые параметры запроса.
Авторизация
GenericAPI поддерживает любые типы аутентификации через настройку заголовков HTTP. Наиболее распространённые способы:
Bearer Token:
Authorization: Bearer <токен>Basic Authentication:
Authorization: Basic <base64-encoded-credentials>API Key:
X-API-Key: <ключ>Конфигурация
URL— базовый URL API в форматеhttps://api.example.com.Method— HTTP-метод (GET, POST, PUT, PATCH, DELETE).Query— дополнительные query-параметры (например, для фильтрации или поиска).
Параметры
| Название | Обязательность | Описание | Возможные значения | Примеры | По умолчанию |
|---|---|---|---|---|---|
paginationType | Опционально | Тип пагинации для обработки больших объёмов данных | none, offset, cursor, page, link_header | none | none |
path | Опционально | Путь к эндпоинту API, который будет добавлен к базовому URL | Любая строка, начинающаяся с / | /api/v1/users, /projects | "" |
dataPath | Опционально | Путь к данным в ответе (цепочка ключей через точку) | Любая строка | data, results.items, . | . |
responseFormat | Опционально | Формат ответа | array, map | array, map | array |
mapKeyField | Опционально | При responseFormat равном map: название поля, в которое записать ключ из JSON-объекта | Любая строка | slug, externalId | "" |
pageParam | Опционально | Название параметра для номера страницы (для offset- и page- пагинации) | Любая строка | page, _page, pageNumber | page |
limitParam | Опционально | Название параметра для количества элементов на странице (для offset-пагинации) | Любая строка | limit, per_page, _limit, size | limit |
sizeParam | Опционально | Название параметра для размера страницы (для page-пагинации) | Любая строка | size, pageSize, _size | size |
cursorParam | Опционально | Название параметра для курсора (для cursor-пагинации) | Любая строка | cursor, after, next | cursor |
pageSize | Опционально | Количество элементов на странице для пагинации | Положительное целое число | 10, 20, 50, 100 | 100 |
requestBody | Опционально | Тело запроса для POST/PUT/PATCH-методов | Любая строка | {"query": "example"} | "" |
Спецификация ответа
Формат ожидаемого ответа задаётся параметром responseFormat (по умолчанию array).
Пример ответа для responseFormat: array:
[
{
"id": 1,
"name": "Example Item",
"description": "Description of the item",
"created_at": "2023-01-01T00:00:00Z"
},
{
"id": 2,
"name": "Another Item",
"description": "Another description",
"created_at": "2023-01-02T00:00:00Z"
}
]Пример ответа для responseFormat: map:
{
"billing": { "title": "Billing", "owner": "team-a" },
"shipping": { "title": "Shipping", "owner": "team-b" }
}Перед обработкой ответ с responseFormat: map преобразуется в массив с учётом значения параметра mapKeyField.
При mapKeyField: example в обработку передаётся массив с добавленным полем example со значением, взятым из ключа объекта:
[
{ "example": "billing", "title": "Billing", "owner": "team-a" },
{ "example": "shipping", "title": "Shipping", "owner": "team-b" }
]Если mapKeyField не задан (пустая строка), в обработку передаётся массив без добавления нового поля:
[
{ "title": "Billing", "owner": "team-a" },
{ "title": "Shipping", "owner": "team-b" }
]Типы пагинации
none— без пагинации, получает все данные одним запросом.offset— пагинация по номеру страницы и количеству элементов:- Использует параметры
pageParamиlimitParam. - Пример:
?page=1&limit=20.
- Использует параметры
page— пагинация по номеру страницы и размеру:- Использует параметры
pageParamиsizeParam. - Пример:
?page=1&size=20.
- Использует параметры
cursor— пагинация по курсору:- Использует параметр
cursorParam. - Пример:
?cursor=eyJpZCI6MTIzfQ==.
- Использует параметр
link_header— пагинация через заголовок Link: - Использует заголовокLinkв ответе для определения следующей страницы. - Стандарт RFC 5988.
Примеры конфигурации
JSONPlaceholder API (без пагинации):
url: https://jsonplaceholder.typicode.com
path: /users
paginationType: none
dataPath: .GitLab API (offset пагинация):
url: https://gitlab.example.com
path: /api/v4/projects
paginationType: offset
pageParam: page
limitParam: per_page
pageSize: 20
headers:
Authorization: Bearer <token>GitHub API (link header пагинация):
url: https://api.github.com
path: /repos/owner/repo/issues
paginationType: link_header
headers:
Authorization: Bearer <token>
Accept: application/vnd.github.v3+jsonAPI с вложенными данными:
url: https://api.example.com
path: /data
dataPath: response.data.items
paginationType: offset
pageParam: page
limitParam: limit
query: "filter=active&sort=name"POST-запрос с телом:
url: https://api.example.com
path: /search
method: POST
requestBody: '{"query": "example", "filters": {"status": "active"}}'
query: "include=metadata&format=json"
headers:
Content-Type: application/json
Authorization: Bearer <token>