Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(schema): schema changes for custom REST endpoints (#1509)
**Issue number:** [ADDON-76812](https://splunk.atlassian.net/browse/ADDON-76812) ### PR Type **What kind of change does this PR introduce?** * [x] Feature * [ ] Bug Fix * [ ] Refactoring (no functional or API changes) * [ ] Documentation Update * [ ] Maintenance (dependency updates, CI, etc.) ## Summary ### Changes Schema changes required for the future feature for adding custom REST endpoints. This change adds new `options` section with `restHandlers`. ```js { "meta": {}, "pages": { "configuration": {}, "inputs": {}, "dashboards": {} }, "alerts": [], "options": { "restHandlers": [] // <--- here } } ``` The array above consists of entries of the following form (example): ```js { "endpoint": "some_endpoint", "handlerType": "EAI", "registerHandler": { "file": "my_handler.py", "actions": ["list", "create", "edit", "remove"] }, "requestParameters": { "create": { "some_param": {"type": "string"}, "other_param": {"type": "number"}, "other_param_nullable": { "type": "number", "nullable": true, } }, "list": { "array_param": { "type": "array", "items": {"type": "string"}, }, "obj_param": { "type": "object", "properties": { "key": {"type": "string"}, } } } }, "responseParams": { // similar to requestParameters } } ``` - `endpoint` - it denotes the URL path that handler is connected to - `handlerType` - currently only `EAI` is specified here, to denote, that only [EAI](https://dev.splunk.com/enterprise/docs/devtools/customrestendpoints/customresteai/) endpoints are supported. This is added in case we would like to support other handlers as well in the future. - `registerHandler` - optional. If specified, it registers the handler in `web.conf` and `restmap.conf`. - `requestParameters` - an object with action name as a key and value being a dictionary containing keys (parameter names) to values (OpenAPI data types). - `responseParameters` - similar to the above one The data types are based on [OpenAPI data types](https://swagger.io/docs/specification/v3_0/data-models/data-types). Example data types: - `{"type": "string"}` - `{"type": "number", "nullable": true}` - `{"type": "boolean"}` - `{"type": "array", "items": {"type": "string"}}` - `{"type": "object", "parameters": {"some_param": {"type": "string"}}}` - `{"anyOf": [...]}` - `{"allOf": [...]}` ### User experience No changes to the current user experience. ## Checklist If an item doesn't apply to your changes, leave it unchecked. * [x] I have performed a self-review of this change according to the [development guidelines](https://splunk.github.io/addonfactory-ucc-generator/contributing/#development-guidelines) * [x] Tests have been added/modified to cover the changes [(testing doc)](https://splunk.github.io/addonfactory-ucc-generator/contributing/#build-and-test) * [ ] Changes are documented * [x] PR title and description follows the [contributing principles](https://splunk.github.io/addonfactory-ucc-generator/contributing/#pull-requests) --------- Co-authored-by: Artem Rys <[email protected]>
- Loading branch information