Метаданные веб-приложения админки для /api/crud/v1

Путь расположения

Путь в сборочном каталоге Назначение

/era_env/priv/metadata/<SOLUTION>/objects.json

Список сущностей

/era_env/priv/metadata/<SOLUTION>/objects/<ENTITY_NAME>.json

Дескриптор конкретной сущности

Обзор

Файл метаданных для веб-приложения "Администратрирование объектов". Определяет структуру подлежащих администрирированию в приложении классов объектов и состава их полей. По каждому полю определяет типы значений и ограничения, а также применяемый для редактирования элемент управления.

Обеспечивает веб-приложению описание корректного актуального представления редактируемых сущностей. Ожидает редактирование через API /api/crud/v1/<OBJECT>/<METHOD>, где <METHOD> принимает значения create, read, update, delete и metadata.

Непосредственно системой «Era» не используется, служит только для выдачи через API. На этом основании содержание файлов произвольно, включая внутреннюю структуру.

Для использования в REST устарело.

Список сущностей

Список сущностей, подлежащих редактированию в домене через веб-прилжение администрирования.

Каждому из перечисленных типов в папке objects должен соответствовать отдельный файл, описывающий состав полей, подлежащих переносу. Должен быть назван идентично названию типа сущности, доступному через API /api/crud/v1/<OBJECT>/<METHOD>.

Формат:
[
  {
    "object": str,
    "name": str,
    "order": int,
    "params": {
      "sub": {
        "ref": str,
        "type": str
      }
    }
  },
  ...
]
  • object – название типа сущности в API /api/crud/v1/<OBJECT>/<METHOD>.

  • name – заголовок в навигационной панели веб-приложения.

  • order – порядок в навигационной панели веб-приложения.

  • paramsобъект-список дополнительных параметров. Ключ – название параметра, значение –

Дескриптор конкретной сущности

Определяет состав полей, порядка их следования, способа отображения и редактирования, типы значений и ограничения для значений.

Формат:
{
  "id_field": str,
  "key_field": str,
  "label_fields": array<str>,
  "fields": object,
  "filters: array<str>,
  "composites": array<str>
}
  • id_field – название поля идентификатора.

  • key_field – название поля ключа, поддерживающего уникальность.

  • label_fields – список названий полей, содержащих имена и заголовки, требуемые для отображения и идентификации человеком.

  • fieldsобъект-список полей

  • filters – список названий полей, подлежащих фильтру.

  • composites – список названий композитных полей.

Пример для domain.json:
{
  "id_field": "id",
  "key_field": "name",
  "label_fields": [
    "name"
  ],
  "fields": {
    "id": {
      "title": "id",
      "view": {
        "viewName": "id",
        "viewParams": {
          "disabled": true
        }
      },
      "hidden": true,
      "order": 50
    },
    "name": {
      "title": "Название домена",
      "descr": "Название КД первого уровня. Название должно быть внесено в cfg файл основной конфигурации",
      "view": {
        "viewName": "text",
        "viewParams": {}
      },
      "order": 100
    },
    "solution": {
      "title": "Тип домена",
      "descr": "Тип домена",
      "view": {
        "viewName": "select",
        "viewParams": {
          "items": [
            {
              "title": "Омниканальные коммуникации",
              "value": "oce"
            },
            {
              "title": "IP-ATC",
              "value": "sipssw"
            },
            {
              "title": "Управление лицензиями",
              "value": "submaster"
            },
            {
              "title": "Система оповещения",
              "value": "alert"
            },
            {
              "title": "Единая очередь",
              "value": "ssq"
            }
          ]
        }
      },
      "default": "oce",
      "order": 105
    },
    "template": {
      "title": "Копировать из КД",
      "view": {
        "viewName": "domains",
        "viewParams": {}
      },
      "order": 120,
      "hidden": false
    },
    "seperateLicSIP": {
      "view": {
        "viewName": "separator",
        "viewParams": {
          "title": "Лицензии SIP"
        }
      },
      "order": 200
    },
    "seperateLicScript": {
      "view": {
        "viewName": "separator",
        "viewParams": {
          "title": "Лицензии Сценарии"
        }
      },
      "order": 300
    },
    "seperateLicWebservice": {
      "view": {
        "viewName": "separator",
        "viewParams": {
          "title": "Лицензии WebService"
        }
      },
      "order": 400
    },
    "seperateLicHunt": {
      "view": {
        "viewName": "separator",
        "viewParams": {
          "title": "Лицензии Очередей"
        }
      },
      "order": 500
    },
    "seperateLicCommon": {
      "view": {
        "viewName": "separator",
        "viewParams": {
          "title": "Лицензии Дочерних КД"
        }
      },
      "order": 600
    },
    "lic": {
      "type": "fields",
      "fields": {
        "devices": {
          "title": "Внутренних SIP-устройств",
          "descr": "Максимальное количество одновременно зарегистрированных SIP-устройств",
          "view": {
            "viewName": "number",
            "viewParams": {}
          },
          "default": 0,
          "order": 210
        },
        "siptrunks": {
          "title": "Внешних SIP-каналов",
          "descr": "Максимальное количество внешних SIP-каналов",
          "view": {
            "viewName": "number",
            "viewParams": {}
          },
          "default": 0,
          "order": 220
        },
        "ivrscripts": {
          "title": "Сценариев IVR",
          "descr": "Максимальное количество созданных IVR-сценариев",
          "view": {
            "viewName": "number",
            "viewParams": {}
          },
          "default": 0,
          "order": 320
        },
        "svcscripts": {
          "title": "Сценариев SVC",
          "descr": "Максимальное количество созданных SVC-сценариев",
          "view": {
            "viewName": "number",
            "viewParams": {}
          },
          "default": 0,
          "order": 310
        },
        "webservice_public": {
          "title": "Публичный канал WebService",
          "descr": "Максимальное количество подключаемых публичных каналов интеграции WebService",
          "view": {
            "viewName": "number",
            "viewParams": {}
          },
          "default": 0,
          "order": 410
        },
        "webservice_subscr": {
          "title": "Канал подписки на события Web Eventing",
          "descr": "Максимальное количество внешних систем, котоым разрешено подписываться на события",
          "view": {
            "viewName": "number",
            "viewParams": {}
          },
          "default": 0,
          "order": 420
        }
        "webservice_telegram": {
          "title": "Внешний канал Telegram",
          "descr": "Максимальное количество подключаемых преднастроенных каналов Telegram",
          "view": {
            "viewName": "number",
            "viewParams": {}
          },
          "default": 0,
          "order": 440
        },
        "domains": {
          "title": "Всего доменов",
          "descr": "Максимальное количество дочерних КД вне зависимости от базового продукта",
          "view": {
            "viewName": "number",
            "viewParams": {}
          },
          "default": 0,
          "order": 610
        },
        "solution_oce": {
          "title": "Дочерних КД по типу Омниканальные коммуникации",
          "descr": "Максимальное количество дочерних КД с типом домена ОКП",
          "view": {
            "viewName": "number",
            "viewParams": {}
          },
          "default": 0,
          "order": 615
        },
        "solution_sipssw": {
          "title": "Дочерних КД по типу домена IP-ATC",
          "descr": "Максимальное количество дочерних КД с типом домена IP-ATC",
          "view": {
            "viewName": "number",
            "viewParams": {}
          },
          "default": 0,
          "order": 616
        },
        "solution_submaster": {
          "title": "Дочерних КД по типу домена Управление лицензями",
          "descr": "Максимальное количество дочерних КД с типом домена Управление лицензями",
          "view": {
            "viewName": "number",
            "viewParams": {}
          },
          "default": 0,
          "order": 618
        },
        "solution_alert": {
          "title": "Дочерних КД по типу домена Система оповещения",
          "descr": "Максимальное количество дочерних КД с типом домена Система оповещения",
          "view": {
            "viewName": "number",
            "viewParams": {}
          },
          "default": 0,
          "order": 619
        },
        "solution_ssq": {
          "title": "Дочерних КД по типу домена Единая очередь",
          "descr": "Максимальное количество дочерних КД с типом домена Единая очередь",
          "view": {
            "viewName": "number",
            "viewParams": {}
          },
          "default": 0,
          "order": 621
        },
        "userqueue": {
          "title": "Операторов в чат-очередях",
          "descr": "Максимальное количество пользователей (user), которые могут быть назначены на обслуживание текстовых очередей",
          "view": {
            "viewName": "number",
            "viewParams": {}
          },
          "default": 0,
          "order": 520
        },
        "sipqueue": {
          "title": "Операторов в голосовых очередях",
          "descr": "Максимальное количество внутренних номеров (sipuser), которые могут быть назначены на обслуживание голосовых очередей",
          "view": {
            "viewName": "number",
            "viewParams": {}
          },
          "default": 0,
          "order": 510
        }
      }
    },
    "seperateDoS": {
      "view": {
        "viewName": "separator",
        "viewParams": {
          "title": "Параметры безопасности"
        }
      },
      "order": 700
    },
    "seperateComment": {
      "view": {
        "viewName": "separator",
        "viewParams": {
          "title": "Комментарии"
        }
      },
      "order": 800
    },
    "opts": {
      "type": "fields",
      "fields": {
        "script_allow_global_variables": {
          "title": "Разрешить использование глобальных переменных",
          "descr": "Определяет доступ к типу переменной 'Глобальная общая'. Если запрещено, то распространяется на все дочерние домены.",
          "view": {
            "viewName": "toggle",
            "viewParams": {}
          },
          "default": true,
          "order": 710
        },
        "script_pause_between_components": {
          "title": "Дополнительная задержка между компонентами сценариев, мс",
          "descr": "Усредненный таймаут между выполнениями компонентов сценария. По умолчанию не ограничено (0). Не может быть задано меньше, чем у родительского домена.",
          "view": {
            "viewName": "number",
            "viewParams": {}
          },
          "default": 0,
          "order": 740
        },
        "script_limit_component_count": {
          "title": "Максимум исполняемых компонент в сценарии (-1 = неограничено)",
          "descr": "Количество исполняемых компонент в каждом запущенном экземпляре сценариев. Вложенные считаются отдельно. При прерывании добавляется 200 компонентов для ветки пост-обработки. Не может быть задано более, чем в родительском домене. По умолчанию не ограничено (-1)",
          "view": {
            "viewName": "number",
            "viewParams": {}
          },
          "default": -1,
          "order": 730
        },
        "script_duration_sec": {
          "title": "Максимальная продолжительность экземпляра сценария, сек (-1 = неограничено)",
          "descr": "Продолжительность выполнения сценария в секундах, включая все вложенные. По умолчанию не ограничено (-1). Не может быть задано больше чем у родительского домена. При превышении дает еще 60 секунд на выполнение ветки пост-обработки.",
          "view": {
            "viewName": "number",
            "viewParams": {}
          },
          "default": -1,
          "order": 750
        },
        "script_limit_site_count": {
          "title": "Максимум одновременно запущенных сценариев КД на сайте (-1 = неограничено)",
          "descr": "Ограничнивает количество исполняемых сценариев в домене на каждом сайте. По умолчанию не ограничено (-1). Не может быть назначено больше, чем в родительском домене.",
          "view": {
            "viewName": "number",
            "viewParams": {}
          },
          "default": -1,
          "order": 720
        },
        "comment": {
          "title": "Комментарии",
          "view": {
            "viewName": "textarea",
            "viewParams": {
              "line": 3
            }
          },
          "default": "",
          "order": 810
        }
      }
    }
  },
  "filters": [
    "id",
    "solution",
    "title",
    "dbdefaultconn",
    "dbhost",
    "dbport",
    "dblogin",
    "dbpwd",
    "lic",
    "opts"
  ],
  "composites": [
    "lic",
    "opts"
  ]
}

См. также