Skip to content

Встраиваемые виджеты

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

Необходимый модуль

Для всех эндпоинтов виджетов требуется модуль module:embeddable-widgets, активированный для вашей организации.


Типы виджетов

Следующие типы виджетов доступны в зависимости от ваших активных модулей:

ТипОписаниеНеобходимый модуль
natalИнтерактивная натальная картаnatal:calc
synastryСравнительная карта синастрииsynastry:calc
transitНаложение транзитной картыtransit:calc
compositeКомпозитная карта отношенийcomposite:calc
moonphaseОтображение фазы Луныmoonphase:calc
daily-horoscopeЕжедневный гороскоп для всех знаковmodule:daily-report
numerologyФорма нумерологического профиляmodule:numerology
compatibilityСовместимость знаков Солнцаcompatibility:calc
moon-calendarЕжемесячный лунный календарьmoon-calendar:calc

Управление виджетами

Список виджетов

bash
curl "https://api.astroapi.cloud/api/widgets" \
  -H "X-Api-Key: your-api-key"

Получение виджета

bash
curl "https://api.astroapi.cloud/api/widgets/wgt_abc123" \
  -H "X-Api-Key: your-api-key"

Создание виджета

Виджеты создаются в формате JSON:API:

bash
curl -X POST "https://api.astroapi.cloud/api/widgets" \
  -H "X-Api-Key: your-api-key" \
  -H "Content-Type: application/vnd.api+json" \
  -d '{
    "data": {
      "type": "widgets",
      "attributes": {
        "name": "My Natal Chart Widget",
        "widgetType": "natal",
        "allowedDomains": ["example.com", "www.example.com"],
        "customization": {
          "language": "en",
          "layout": "card",
          "colors": {
            "primary": "#5b2d8e",
            "background": "#ffffff",
            "text": "#1a1a1a"
          },
          "widgetOptions": {
            "showAspects": true,
            "showPoints": true,
            "showHouses": true,
            "chartSize": 500,
            "theme": "light"
          }
        }
      }
    }
  }'

Обновление виджета

bash
curl -X PATCH "https://api.astroapi.cloud/api/widgets/wgt_abc123" \
  -H "X-Api-Key: your-api-key" \
  -H "Content-Type: application/vnd.api+json" \
  -d '{
    "data": {
      "type": "widgets",
      "id": "wgt_abc123",
      "attributes": {
        "name": "Updated Widget Name",
        "customization": {
          "language": "nl"
        }
      }
    }
  }'

Удаление виджета

bash
curl -X DELETE "https://api.astroapi.cloud/api/widgets/wgt_abc123" \
  -H "X-Api-Key: your-api-key"

Ответ виджета

json
{
    "data": {
        "type": "widgets",
        "id": "wgt_abc123",
        "attributes": {
            "name": "My Natal Chart Widget",
            "widgetType": "natal",
            "allowedDomains": ["example.com", "www.example.com"],
            "embedCode": "<script src=\"https://cdn.astroapi.cloud/widget.js\" data-widget-id=\"wgt_abc123\"></script>",
            "customization": {
                "language": "en",
                "layout": "card",
                "colors": {
                    "primary": "#5b2d8e",
                    "background": "#ffffff",
                    "text": "#1a1a1a"
                },
                "widgetOptions": {
                    "showAspects": true,
                    "showPoints": true,
                    "showHouses": true,
                    "chartSize": 500,
                    "theme": "light"
                }
            },
            "createdAt": "2024-06-15T12:00:00Z",
            "updatedAt": "2024-06-15T12:00:00Z"
        }
    }
}

Перегенерация API-ключа

Перегенерация встроенного API-ключа виджета. Используйте это, если ключ был скомпрометирован:

bash
curl -X POST "https://api.astroapi.cloud/api/widgets/wgt_abc123/regenerate-key" \
  -H "X-Api-Key: your-api-key"

Смена ключа

После перегенерации ключа существующие вставки, использующие старый ключ, немедленно перестанут работать. Обновлять код вставки не нужно — ID виджета остаётся прежним.


Доступные параметры виджетов

Получение типов виджетов, доступных вашей организации на основе активных модулей:

bash
curl "https://api.astroapi.cloud/api/widgets/options" \
  -H "X-Api-Key: your-api-key"

Ответ

json
{
    "data": {
        "availableTypes": ["natal", "moonphase", "daily-horoscope"],
        "planFeatures": {
            "canRemoveBranding": false,
            "canUseCustomLogo": false,
            "canUseCustomCss": true,
            "maxDomains": 5
        }
    }
}

Функции тарифного плана

ФункцияОписание
canRemoveBrandingМожно ли скрыть брендинг AstroAPI
canUseCustomLogoМожно ли показывать пользовательский логотип вместо стандартного
canUseCustomCssМожно ли внедрять пользовательский CSS в виджет
maxDomainsМаксимальное количество разрешённых доменов на виджет

Объект настройки

Объект customization управляет внешним видом и поведением виджета:

json
{
    "colors": {
        "primary": "#5b2d8e",
        "secondary": "#a07cc5",
        "background": "#ffffff",
        "text": "#1a1a1a",
        "border": "#e0e0e0"
    },
    "fonts": {
        "family": "Inter, sans-serif",
        "size": "14px"
    },
    "borders": {
        "radius": "8px",
        "width": "1px"
    },
    "spacing": {
        "padding": "16px",
        "gap": "12px"
    },
    "shadows": {
        "card": "0 2px 8px rgba(0,0,0,0.1)"
    },
    "layout": "card",
    "interaction": {
        "allowUserInput": true,
        "showTooltips": true
    },
    "branding": {
        "showPoweredBy": true,
        "logoUrl": null
    },
    "language": "en",
    "customCss": ".astroapi-widget { font-weight: 500; }",
    "widgetOptions": {
        "showAspects": true,
        "showPoints": true,
        "showHouses": true,
        "chartSize": 500,
        "theme": "light"
    }
}

Поля настройки

ПолеТипОписание
colors.primarystringОсновной акцентный цвет (hex)
colors.secondarystringВторичный акцентный цвет (hex)
colors.backgroundstringЦвет фона виджета (hex)
colors.textstringОсновной цвет текста (hex)
colors.borderstringЦвет границы (hex)
fonts.familystringЗначение CSS font-family
fonts.sizestringБазовый размер шрифта (CSS-значение)
borders.radiusstringРадиус границы для карточек и полей ввода (CSS-значение)
borders.widthstringШирина границы (CSS-значение)
spacing.paddingstringВнутренний отступ (CSS-значение)
spacing.gapstringПромежуток между элементами (CSS-значение)
shadows.cardstringCSS box-shadow для карточных элементов
layoutstringСтиль разметки виджета (см. ниже)
interaction.allowUserInputbooleanМогут ли пользователи вводить свои данные о рождении
interaction.showTooltipsbooleanПоказывать подсказки при наведении
branding.showPoweredBybooleanПоказывать значок «Powered by AstroAPI»
branding.logoUrlstring | nullURL пользовательского логотипа (требуется canUseCustomLogo)
languagestringКод языка отображения
customCssstring | nullВнедрение пользовательского CSS (требуется canUseCustomCss)
widgetOptions.showAspectsbooleanПоказывать линии аспектов на картах
widgetOptions.showPointsbooleanПоказывать символы планет на картах
widgetOptions.showHousesbooleanПоказывать разделение домов на картах
widgetOptions.chartSizenumberРазмер карты в пикселях
widgetOptions.themestringЦветовая тема ("light" или "dark")

Варианты разметки

ЗначениеОписание
compactМинимальное пространство, подходит для боковых панелей
cardЗакруглённая карточка с тенью (по умолчанию)
fullНа всю ширину, без границ
minimalБез фона и границ

Встраивание виджета

После создания виджета скопируйте embedCode из ответа и вставьте его в HTML вашего сайта:

html
<!-- Разместите здесь, где должен появиться виджет -->
<div id="astroapi-widget-container"></div>

<!-- Загрузка скрипта виджета -->
<script
    src="https://cdn.astroapi.cloud/widget.js"
    data-widget-id="wgt_abc123">
</script>

Белый список доменов

Виджеты загружаются только на домены, указанные в allowedDomains. Обязательно добавьте все домены (включая варианты с www), где планируете встраивать виджет.

AstroAPI Documentation