%PDF- %PDF-
| Direktori : /www/varak.net/nextcloud.varak.net/apps/app_api/docs/tech_details/api/ |
| Current File : //www/varak.net/nextcloud.varak.net/apps/app_api/docs/tech_details/api/settings.rst |
.. _declarative_settings_section:
====================
Declarative Settings
====================
Starting from Nextcloud **29**, AppAPI provides the ability to display ex-application settings.
When admin or user changes some ex-app settings
they will be stored in the database and can be received using :doc:`preferences` or :doc:`appconfig` API.
.. note::
Settings rendered only for enabled ExApps.
.. warning::
``section_id`` from **scheme** should be already registered by any PHP application.
**AppAPI** provides two sections for that: ``ai_integration_team`` and ``declarative_settings``, you can use them.
Register Settings
^^^^^^^^^^^^^^^^^
OCS endpoint: ``POST /apps/app_api/api/v1/ui/settings``
Params
******
Complete list of params (including optional):
.. code-block:: json
{
"formScheme": "settings scheme"
}
Unregister Menu Entry
^^^^^^^^^^^^^^^^^^^^^
OCS endpoint: ``DELETE /apps/app_api/api/v1/ui/settings``
Params
******
.. code-block:: json
{
"formId": "formId from scheme"
}
Example of settings scheme in Python:
.. code-block:: python
{
"id": "settings_example",
"priority": 10,
"section_type": "admin",
"section_id": "ai_integration_team",
"title": "AppAPI declarative settings",
"description": "These fields are rendered dynamically from declarative schema",
"fields": [
{
"id": "field1",
"title": "Multi-selection",
"description": "Select some option setting",
"type": 'multi-select',
"options": ["foo", "bar", "baz"],
"placeholder": "Select some multiple options",
"default": ["foo", "bar"],
},
{
"id": "some_real_setting",
'title': 'Choose init status check background job interval',
'description': 'How often AppAPI should check for initialization status',
'type': 'radio',
'placeholder': 'Choose init status check background job interval',
'default': '40m',
'options': [
{
'name': 'Each 40 minutes',
'value': '40m',
},
{
'name': 'Each 60 minutes',
'value': '60m',
},
{
'name': 'Each 120 minutes',
'value': '120m',
},
{
'name': 'Each day',
'value': f"{60 * 24}m",
},
],
},
{
'id': 'test_ex_app_field_1',
'title': 'Default text field',
'description': 'Set some simple text setting',
'type': 'text',
'placeholder': 'Enter text setting',
'default': 'foo',
},
{
'id': 'test_ex_app_field_1_1',
'title': 'Email field',
'description': 'Set email config',
'type': 'email',
'placeholder': 'Enter email',
'default': '',
},
{
'id': 'test_ex_app_field_1_2',
'title': 'Tel field',
'description': 'Set tel config',
'type': 'tel',
'placeholder': 'Enter your tel',
'default': '',
},
{
'id': 'test_ex_app_field_1_3',
'title': 'Url (website) field',
'description': 'Set url config',
'type': url',
'placeholder': 'Enter url',
'default': '',
},
{
'id': 'test_ex_app_field_1_4',
'title': 'Number field',
'description': 'Set number config',
'type': 'number',
'placeholder': 'Enter number value',
'default': 0,
},
{
'id': 'test_ex_app_field_2',
'title': 'Password',
'description': 'Set some secure value setting',
'type': password',
'placeholder': 'Set secure value',
'default': '',
},
{
'id': 'test_ex_app_field_3',
'title': 'Selection',
'description': 'Select some option setting',
'type': 'select',
'options': ['foo', 'bar', 'baz'],
'placeholder': 'Select some option setting',
'default': 'foo',
},
{
'id': 'test_ex_app_field_4',
'title': 'Toggle something',
'description': 'Select checkbox option setting',
'type': 'checkbox',
'label': 'Verify something if enabled',
'default': False,
},
{
'id': 'test_ex_app_field_5',
'title': 'Multiple checkbox toggles, describing one setting, checked options are saved as an JSON object {foo: true, bar: false}',
'description': 'Select checkbox option setting',
'type': 'multi-checkbox',
'default': {'foo': True, 'bar': True},
'options': [
{
'name':'Foo',
'value': 'foo',
},
{
'name': 'Bar',
'value': 'bar',
},
{
'name': 'Baz',
'value': 'baz',
},
{
'name': 'Qux',
'value': 'qux',
},
],
},
{
'id': 'test_ex_app_field_6',
'title': 'Radio toggles, describing one setting like single select',
'description': 'Select radio option setting',
'type': 'radio',
'label': 'Select single toggle',
'default': 'foo',
'options': [
{
'name': 'First radio',
'value': 'foo'
},
{
'name': 'Second radio',
'value': 'bar'
},
{
'name': 'Second radio',
'value': 'baz'
},
],
},
]
}