{"$id":"https://schemas.nimsuite.com/rest-connector.json#","$ref":"#/definitions/IRestJsonSchema","$schema":"http://json-schema.org/draft-07/schema#","definitions":{"AllowanceText":{"enum":["optional","mandatory","prohibited"],"type":"string"},"AuthTypes":{"enum":["basic_auth","duo_auth","client_credentials","certificate","jwt","aeries","custom_post_token","digest","authorization_code_grant","password_grant"],"type":"string"},"CallConfig":{"anyOf":[{"additionalProperties":false,"properties":{"extraHeaders":{"additionalProperties":{"type":"string"},"description":"An object specifying additional headers to be included in the REST call.","type":"object"},"mode":{"const":"normal","description":"The mode of the call configuration.\r\n'normal' for normal call configurations.","type":"string"},"path":{"description":"The path to be of the resource. This is appended to the base URL.","type":"string"},"post_processing":{"$ref":"#/definitions/RestCallPostProcessingText","description":"The post processing to be applied to the data returned by the REST call."},"queryParameters":{"$ref":"#/definitions/RestQueryParameters","description":"The parameters to be used in the query string of the HTTP request"},"queryParametersConfig":{"$ref":"#/definitions/IQueryParamConfig","description":"Configuration for query parameter handling, for example to not send empty parameters.","examples":[{"doNotSendIfEmpty":true}]},"query_parameters":{"$ref":"#/definitions/RestQueryParameters","deprecated":"Use queryParameters instead","description":"The parameters to be used in the query string of the HTTP request\n*deprecated* Use queryParameters instead"}},"required":["path"],"type":"object"},{"additionalProperties":false,"properties":{"base":{"description":"The base object to be used for the REST call.\r\n{iterator} is replaced with the current iterator value.\r\n{name} is replaced with the extra fields, where name much math the extra field to replace it with","type":"object"},"extraHeaders":{"additionalProperties":{"type":"string"},"description":"An object specifying additional headers to be included in the REST call.","type":"object"},"filter":{"$ref":"#/definitions/IFilterConfig","description":"The filter to be applied to the iterator."},"iterator":{"description":"The name of the iterator column.","type":"string"},"iterator_columns":{"description":"The columns to be included in the iterator.","items":{"type":"string"},"type":"array"},"mode":{"const":"iteration","description":"The mode of the call configuration.\r\n'iteration' to iterate over another table and use those values in this REST call.","type":"string"},"path":{"description":"The path to the resource. This is appended to the base URL. \r\n{iterator} is replaced with the current iterator value.\r\n{name} is replaced with the extra fields, where name much math the extra field to replace it with","type":"string"},"post_processing":{"$ref":"#/definitions/RestCallPostProcessingText","description":"The post processing to be applied to the data returned by the REST call."},"queryParameters":{"$ref":"#/definitions/RestQueryParameters","description":"The parameters to be used in the query string of the HTTP request"},"queryParametersConfig":{"$ref":"#/definitions/IQueryParamConfig","description":"Configuration for query parameter handling, for example to not send empty parameters.","examples":[{"doNotSendIfEmpty":true}]},"query_parameters":{"$ref":"#/definitions/RestQueryParameters","deprecated":"Use queryParameters instead","description":"The parameters to be used in the query string of the HTTP request\n*deprecated* Use queryParameters instead"},"table":{"description":"The name of the table to be iterated.","type":"string"}},"required":["iterator","mode","path","table"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"const":"constant","description":"The mode of the call configuration.\r\n'constant' to fill a table with constant values instead of values from a REST call.","type":"string"},"values":{"description":"The values to fill the NIM table with.","items":{"type":"object"},"type":"array"}},"required":["mode","values"],"type":"object"}]},"ConnectionInfo":{"additionalProperties":false,"properties":{"items":{"description":"The extra items to show in the connection interface tab in the NIM Studio.","items":{"$ref":"#/definitions/IConnectionInterfaceItemOptionalOrder"},"type":"array"}},"required":["items"],"type":"object"},"CrudOperationConfig":{"anyOf":[{"$ref":"#/definitions/IPatchOperationConfig"},{"$ref":"#/definitions/IPutOperationConfig"},{"$ref":"#/definitions/IDeleteOperationConfig"},{"$ref":"#/definitions/IGetOperationConfig"},{"$ref":"#/definitions/IPostOperationConfig"}]},"DigestAlgorithm":{"enum":["MD5","MD5-sess","SHA-256","SHA-256-sess","SHA-512-256","SHA-512-256-sess","SHA-512","SHA-512-sess"],"type":"string"},"HttpVerb":{"enum":["get","post","patch","put","delete"],"type":"string"},"IConfigScenarioBase":{"additionalProperties":false,"properties":{"collections":{"items":{"$ref":"#/definitions/ISysColBase"},"type":"array"},"createTime":{"type":"number"},"description":{"type":"string"},"modifyTime":{"type":"number"},"name":{"type":"string"},"name_values":{"items":{"$ref":"#/definitions/NVJson"},"type":"array"},"version":{"type":"string"}},"required":["name","description","name_values","collections"],"type":"object"},"IConnectionInterfaceAction":{"anyOf":[{"$ref":"#/definitions/IConnectionInterfaceActionServiceOperation"},{"$ref":"#/definitions/IConnectionInterfaceActionJavaScript"},{"$ref":"#/definitions/IConnectionInterfaceActionServiceGeneric"}]},"IConnectionInterfaceActionJavaScript":{"additionalProperties":false,"properties":{"code":{"type":"string"},"triggers":{"description":"Specifies when the associated action is triggered","items":{"$ref":"#/definitions/IConnectionInterfaceActionTriggerName"},"type":"array"},"type":{"const":"javascript","description":"Specifies the type of the action\n\"javascript\" for JavaScript code","examples":["javascript"],"type":"string"}},"required":["code","triggers","type"],"type":"object"},"IConnectionInterfaceActionServiceGeneric":{"additionalProperties":false,"properties":{"action_name":{"description":"The name of the service API action to call.","type":"string"},"input_params":{"description":"The input parameters for the service API action.","items":{"additionalProperties":false,"properties":{"param_name":{"description":"The name of the input parameter.","type":"string"},"param_value":{"description":"The value of the input parameter."}},"required":["param_name","param_value"],"type":"object"},"type":"array"},"output_params":{"description":"The output parameters for the service API action.","items":{"additionalProperties":false,"properties":{"item_name":{"description":"The value of the output parameter.","type":"string"},"param_name":{"description":"The name of the output parameter.","type":"string"}},"required":["param_name","item_name"],"type":"object"},"type":"array"},"triggers":{"description":"Specifies when the associated action is triggered","items":{"$ref":"#/definitions/IConnectionInterfaceActionTriggerName"},"type":"array"},"type":{"const":"service_generic","description":"Specifies the type of the action\n\"service_generic\" for a service API call in the \"generic\" context","examples":["service_generic"],"type":"string"}},"required":["action_name","input_params","output_params","triggers","type"],"type":"object"},"IConnectionInterfaceActionServiceOperation":{"additionalProperties":false,"properties":{"command":{"description":"The command of the service API command to call.\nThe form values will be sent as name_values parameter to the command.","examples":["api_system_check_connection"],"type":"string"},"context":{"description":"The context of the service API command to call.","type":"string"},"triggers":{"description":"Specifies when the associated action is triggered","items":{"$ref":"#/definitions/IConnectionInterfaceActionTriggerName"},"type":"array"},"type":{"const":"service_operation","description":"Specifies the type of the action\n\"service_operation\" for a service API call","examples":["service_operation"],"type":"string"}},"required":["command","context","triggers","type"],"type":"object"},"IConnectionInterfaceActionTriggerName":{"enum":["click","update","initialize"],"type":"string"},"IConnectionInterfaceImage":{"const":"vial","type":"string"},"IConnectionInterfaceItemButton":{"additionalProperties":false,"properties":{"actions":{"description":"The actions to associate with the button","items":{"$ref":"#/definitions/IConnectionInterfaceAction"},"type":"array"},"disabled":{"description":"Set to the name of the name value that determines if the item is disabled. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"hidden":{"description":"Set to the name of the name value that determines if the item is hidden. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"icon_class":{"description":"The class of the icon to show in the button","type":"string"},"image":{"$ref":"#/definitions/IConnectionInterfaceImage","description":"The image of the button"},"label":{"description":"The label text to be shown with the item.","type":"string"},"label_indent":{"description":"Set to true if the this item should be indented.","type":"boolean"},"message":{"description":"The message to show when the action, associated with this button, is executed.","type":"string"},"name":{"description":"The name of the item, this is the name that is used to identify the item.","type":"string"},"order":{"description":"The order of the item, this is used to order the items in the interface.","type":"number"},"required":{"description":"Set to true if this is a required field.","type":"boolean"},"text":{"description":"The text of the button","type":"string"},"text_alt":{"description":"The text to show when the action, associated with this button, is executed.","type":"string"},"tooltip":{"description":"The tooltip text to be shown with the item.","type":"string"},"type":{"const":"button","description":"Specifies the type of the item\n\"button\" for a button item","type":"string"}},"required":["actions","name","text","type"],"type":"object"},"IConnectionInterfaceItemCheckbox":{"additionalProperties":false,"properties":{"button":{"description":"If specified a button is shown next to the checkbox, the text of the button is the name of the button.","type":"string"},"disabled":{"description":"Set to the name of the name value that determines if the item is disabled. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"hidden":{"description":"Set to the name of the name value that determines if the item is hidden. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"label":{"description":"The label text to be shown with the item.","type":"string"},"label_indent":{"description":"Set to true if the this item should be indented.","type":"boolean"},"name":{"description":"The name of the item, this is the name that is used to identify the item.","type":"string"},"order":{"description":"The order of the item, this is used to order the items in the interface.","type":"number"},"required":{"description":"Set to true if this is a required field.","type":"boolean"},"tooltip":{"description":"The tooltip text to be shown with the item.","type":"string"},"type":{"const":"checkbox","description":"Specifies the type of the item\n\"checkbox\" for a checkbox item","type":"string"},"value":{"description":"The value of the checkbox item","type":"boolean"}},"required":["name","type"],"type":"object"},"IConnectionInterfaceItemCheckgroup":{"additionalProperties":false,"properties":{"disabled":{"description":"Set to the name of the name value that determines if the item is disabled. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"hidden":{"description":"Set to the name of the name value that determines if the item is hidden. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"label":{"description":"The label text to be shown with the item.","type":"string"},"label_indent":{"description":"Set to true if the this item should be indented.","type":"boolean"},"name":{"description":"The name of the item, this is the name that is used to identify the item.","type":"string"},"order":{"description":"The order of the item, this is used to order the items in the interface.","type":"number"},"required":{"description":"Set to true if this is a required field.","type":"boolean"},"table":{"$ref":"#/definitions/IConnectionInterfaceTableCheckGroup","description":"The specification of the checkbox group items."},"tooltip":{"description":"The tooltip text to be shown with the item.","type":"string"},"type":{"const":"checkgroup","description":"Specifies the type of the item\n\"checkgroup\" for a checkbox group item","type":"string"},"value":{"description":"The value of the checkbox group item, the names of the items specified in the value are checked.","items":{"type":"string"},"type":"array"}},"required":["name","table","type"],"type":"object"},"IConnectionInterfaceItemCombo":{"additionalProperties":false,"properties":{"button":{"description":"If specified a button is shown next to the combobox, the text of the button is the name of the button.","type":"string"},"disabled":{"description":"Set to the name of the name value that determines if the item is disabled. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"hidden":{"description":"Set to the name of the name value that determines if the item is hidden. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"label":{"description":"The label text to be shown with the item.","type":"string"},"label_indent":{"description":"Set to true if the this item should be indented.","type":"boolean"},"name":{"description":"The name of the item, this is the name that is used to identify the item.","type":"string"},"order":{"description":"The order of the item, this is used to order the items in the interface.","type":"number"},"required":{"description":"Set to true if this is a required field.","type":"boolean"},"table":{"$ref":"#/definitions/IConnectionInterfaceTableCombo","description":"The row specification of the combo box"},"tooltip":{"description":"The tooltip text to be shown with the item.","type":"string"},"type":{"const":"combo","description":"Specifies the type of the item\n\"combo\" for a combobox item","type":"string"},"value":{"description":"The value of the combobox item, which is the name of the selected item.","type":"string"}},"required":["name","table","type"],"type":"object"},"IConnectionInterfaceItemDate":{"additionalProperties":false,"properties":{"button":{"description":"If specified a button is shown next to the date, the text of the button is the name of the button.","type":"string"},"disabled":{"description":"Set to the name of the name value that determines if the item is disabled. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"hidden":{"description":"Set to the name of the name value that determines if the item is hidden. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"label":{"description":"The label text to be shown with the item.","type":"string"},"label_indent":{"description":"Set to true if the this item should be indented.","type":"boolean"},"name":{"description":"The name of the item, this is the name that is used to identify the item.","type":"string"},"order":{"description":"The order of the item, this is used to order the items in the interface.","type":"number"},"required":{"description":"Set to true if this is a required field.","type":"boolean"},"tooltip":{"description":"The tooltip text to be shown with the item.","type":"string"},"type":{"const":"date","description":"Specifies the type of the item\n\"date\" for a date item","type":"string"},"value":{"description":"The value of the date item","type":"string"}},"required":["name","type"],"type":"object"},"IConnectionInterfaceItemGrid":{"additionalProperties":false,"properties":{"actions":{"description":"The actions to associate with the grid","items":{"$ref":"#/definitions/IConnectionInterfaceAction"},"type":"array"},"disabled":{"description":"Set to the name of the name value that determines if the item is disabled. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"hidden":{"description":"Set to the name of the name value that determines if the item is hidden. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"label":{"description":"The label text to be shown with the item.","type":"string"},"label_indent":{"description":"Set to true if the this item should be indented.","type":"boolean"},"name":{"description":"The name of the item, this is the name that is used to identify the item.","type":"string"},"order":{"description":"The order of the item, this is used to order the items in the interface.","type":"number"},"required":{"description":"Set to true if this is a required field.","type":"boolean"},"table":{"$ref":"#/definitions/IConnectionInterfaceTableGrid","description":"The specification of the table"},"tooltip":{"description":"The tooltip text to be shown with the item.","type":"string"},"type":{"const":"grid","description":"Specifies the type of the item\n\"grid\" for a table item","type":"string"},"value":{"description":"The value of the grid","type":["string","boolean"]}},"required":["name","table","type"],"type":"object"},"IConnectionInterfaceItemIcon":{"additionalProperties":false,"properties":{"actions":{"items":{"$ref":"#/definitions/IConnectionInterfaceAction"},"type":"array"},"disabled":{"description":"Set to the name of the name value that determines if the item is disabled. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"hidden":{"description":"Set to the name of the name value that determines if the item is hidden. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"icon_class":{"type":"string"},"image":{"enum":["yes","no"],"type":"string"},"label":{"type":"string"},"label_indent":{"description":"Set to true if the this item should be indented.","type":"boolean"},"message":{"type":"string"},"name":{"description":"The name of the item, this is the name that is used to identify the item.","type":"string"},"order":{"description":"The order of the item, this is used to order the items in the interface.","type":"number"},"required":{"description":"Set to true if this is a required field.","type":"boolean"},"text":{"type":"string"},"text_alt":{"type":"string"},"tooltip":{"description":"The tooltip text to be shown with the item.","type":"string"},"type":{"const":"icon","type":"string"}},"required":["actions","icon_class","image","label","name","text","text_alt","type"],"type":"object"},"IConnectionInterfaceItemOptionalOrder":{"anyOf":[{"$ref":"#/definitions/IConnectionInterfaceItemCheckbox"},{"$ref":"#/definitions/IConnectionInterfaceItemTextbox"},{"$ref":"#/definitions/IConnectionInterfaceItemTextarea"},{"$ref":"#/definitions/IConnectionInterfaceItemText"},{"$ref":"#/definitions/IConnectionInterfaceItemIcon"},{"$ref":"#/definitions/IConnectionInterfaceItemButton"},{"$ref":"#/definitions/IConnectionInterfaceItemGrid"},{"$ref":"#/definitions/IConnectionInterfaceItemDate"},{"$ref":"#/definitions/IConnectionInterfaceItemCheckgroup"},{"$ref":"#/definitions/IConnectionInterfaceItemRadio"},{"$ref":"#/definitions/IConnectionInterfaceItemCombo"},{"$ref":"#/definitions/IConnectionInterfaceItemWizard"},{"$ref":"#/definitions/IConnectionInterfaceItemSchemaUpload"}]},"IConnectionInterfaceItemRadio":{"additionalProperties":false,"properties":{"button":{"description":"If specified a button is shown next to the radio group, the text of the button is the name of the button.","type":"string"},"disabled":{"description":"Set to the name of the name value that determines if the item is disabled. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"hidden":{"description":"Set to the name of the name value that determines if the item is hidden. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"label":{"description":"The label text to be shown with the item.","type":"string"},"label_indent":{"description":"Set to true if the this item should be indented.","type":"boolean"},"name":{"description":"The name of the item, this is the name that is used to identify the item.","type":"string"},"order":{"description":"The order of the item, this is used to order the items in the interface.","type":"number"},"required":{"description":"Set to true if this is a required field.","type":"boolean"},"table":{"$ref":"#/definitions/IConnectionInterfaceTableRadio","description":"The specification of the radio group items."},"tooltip":{"description":"The tooltip text to be shown with the item.","type":"string"},"type":{"const":"radio","description":"Specifies the type of the item\n\"radio\" for a radio group item","type":"string"},"value":{"description":"The value of the radio group item, which is the name of the selected item.","type":"string"}},"required":["name","table","type"],"type":"object"},"IConnectionInterfaceItemSchemaUpload":{"additionalProperties":false,"properties":{"disabled":{"description":"Set to the name of the name value that determines if the item is disabled. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"hidden":{"description":"Set to the name of the name value that determines if the item is hidden. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"label":{"description":"The label text to be shown with the item.","type":"string"},"label_indent":{"description":"Set to true if the this item should be indented.","type":"boolean"},"name":{"description":"The name of the item, this is the name that is used to identify the item.","type":"string"},"order":{"description":"The order of the item, this is used to order the items in the interface.","type":"number"},"required":{"description":"Set to true if this is a required field.","type":"boolean"},"text":{"description":"The text of the upload button","type":"string"},"tooltip":{"description":"The tooltip text to be shown with the item.","type":"string"},"type":{"const":"schema_upload","description":"Specifies the type of the item\n\"schema_upload\" for a button that lets the user upload a JSON file with custom schema\nextensions for a REST connector. The uploaded file is stored as\nconfig/rest/systems/<system_name>.json (overwriting any existing file) and is merged into\nthe connector's schema the next time it is loaded.","type":"string"}},"required":["name","type"],"type":"object"},"IConnectionInterfaceItemText":{"additionalProperties":false,"properties":{"alert":{"description":"The alert style to show the text in.","enum":["info","warning","primary","secondary","success","danger","light","dark"],"examples":["info"],"type":"string"},"button":{"description":"If specified a button is shown next to the date, the text of the button is the name of the button.","type":"string"},"disabled":{"description":"Set to the name of the name value that determines if the item is disabled. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"hidden":{"description":"Set to the name of the name value that determines if the item is hidden. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"label":{"description":"The label text to be shown with the item.","type":"string"},"label_indent":{"description":"Set to true if the this item should be indented.","type":"boolean"},"name":{"description":"The name of the item, this is the name that is used to identify the item.","type":"string"},"order":{"description":"The order of the item, this is used to order the items in the interface.","type":"number"},"required":{"description":"Set to true if this is a required field.","type":"boolean"},"text":{"description":"The text to show. This text may contain HTML. White spaces are preserved.","type":"string"},"tooltip":{"description":"The tooltip text to be shown with the item.","type":"string"},"type":{"const":"text","description":"Specifies the type of the item\n\"text\" for a text item","type":"string"}},"required":["name","text","type"],"type":"object"},"IConnectionInterfaceItemTextarea":{"additionalProperties":false,"properties":{"disabled":{"description":"Set to the name of the name value that determines if the item is disabled. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"hidden":{"description":"Set to the name of the name value that determines if the item is hidden. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"label":{"description":"The label text to be shown with the item.","type":"string"},"label_indent":{"description":"Set to true if the this item should be indented.","type":"boolean"},"name":{"description":"The name of the item, this is the name that is used to identify the item.","type":"string"},"order":{"description":"The order of the item, this is used to order the items in the interface.","type":"number"},"required":{"description":"Set to true if this is a required field.","type":"boolean"},"rows":{"description":"Number of visible rows (default 10).","type":"number"},"tooltip":{"description":"The tooltip text to be shown with the item.","type":"string"},"type":{"const":"textarea","description":"Specifies the type of the item\n\"textarea\" for a multi-line textbox item","type":"string"},"value":{"description":"The value of the textarea","type":"string"}},"required":["name","type"],"type":"object"},"IConnectionInterfaceItemTextbox":{"additionalProperties":false,"properties":{"button":{"description":"If specified a button is shown next to the textbox, the text of the button is the name of the button.","type":"string"},"disabled":{"description":"Set to the name of the name value that determines if the item is disabled. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"hidden":{"description":"Set to the name of the name value that determines if the item is hidden. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"label":{"description":"The label text to be shown with the item.","type":"string"},"label_indent":{"description":"Set to true if the this item should be indented.","type":"boolean"},"name":{"description":"The name of the item, this is the name that is used to identify the item.","type":"string"},"order":{"description":"The order of the item, this is used to order the items in the interface.","type":"number"},"password":{"description":"Set to true if the textbox should be a password field.","type":"boolean"},"required":{"description":"Set to true if this is a required field.","type":"boolean"},"tooltip":{"description":"The tooltip text to be shown with the item.","type":"string"},"type":{"const":"textbox","description":"Specifies the of the item\n\"textbox\" for a textbox item","type":"string"},"value":{"description":"The value of the textbox","type":"string"}},"required":["name","type"],"type":"object"},"IConnectionInterfaceItemWizard":{"additionalProperties":false,"properties":{"disabled":{"description":"Set to the name of the name value that determines if the item is disabled. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"hidden":{"description":"Set to the name of the name value that determines if the item is hidden. The name can be prefixed with \"!\" to negate the value.","examples":["!proxy_use_flag"],"type":"string"},"label":{"description":"The label text to be shown with the item.","type":"string"},"label_indent":{"description":"Set to true if the this item should be indented.","type":"boolean"},"name":{"description":"The name of the item, this is the name that is used to identify the item.","type":"string"},"order":{"description":"The order of the item, this is used to order the items in the interface.","type":"number"},"required":{"description":"Set to true if this is a required field.","type":"boolean"},"text":{"description":"The text of the wizard button","type":"string"},"tooltip":{"description":"The tooltip text to be shown with the item.","type":"string"},"type":{"const":"wizard","description":"Specifies the type of the item\n\"wizard\" for a wizard item","type":"string"}},"required":["name","text","type"],"type":"object"},"IConnectionInterfaceTableCheckGroup":{"additionalProperties":false,"properties":{"required":{"description":"Set to true if this is a required field.","type":"boolean"},"rows":{"description":"The rows of the table","items":{"$ref":"#/definitions/IConnectionInterfaceTableGridRow"},"type":"array"},"settings_checkgroup":{"additionalProperties":false,"description":"The settings for the check group","properties":{"display_column":{"description":"The name of the column that is used as display column, this column is used to display the value of the check group.","type":"string"},"value_column":{"description":"The name of the column that is used as value column, this column is used as value of the check group.","type":"string"}},"required":["display_column","value_column"],"type":"object"},"source_name":{"description":"The name of the source for the records in the table. This should be the name of the name_values parameter that contains the records.\nThis can be used when the records for the table are for example stored by a JavaScript action.","type":"string"},"source_type":{"const":"name_value","deprecated":true,"type":"string"}},"required":["settings_checkgroup"],"type":"object"},"IConnectionInterfaceTableColumn":{"additionalProperties":false,"properties":{"display_name":{"description":"The display name of the column, this is the name that is shown in the table header, if not specified the name is used.","type":"string"},"name":{"description":"The name of the column, should match the name of the column in the rows.","type":"string"},"renderer":{"const":"date","description":"The renderer of the column, if specified the renderer is used to render the value of the column.","examples":["date"],"type":"string"},"width":{"description":"The width of the column in pixels.","type":"number"}},"required":["name"],"type":"object"},"IConnectionInterfaceTableCombo":{"additionalProperties":false,"properties":{"required":{"description":"Set to true if this is a required field.","type":"boolean"},"rows":{"description":"The rows of the table","items":{"$ref":"#/definitions/IConnectionInterfaceTableGridRow"},"type":"array"},"settings_combo":{"additionalProperties":false,"description":"The settings for the combo box","properties":{"display_column":{"description":"The name of the column that is used as display column, this column is used to display the value of the combo box.","type":"string"},"value_column":{"description":"The name of the column that is used as value column, this column is used as value of the combo box.","type":"string"}},"type":"object"},"source_name":{"description":"The name of the source for the records in the table. This should be the name of the name_values parameter that contains the records.\nThis can be used when the records for the table are for example stored by a JavaScript action.","type":"string"},"source_type":{"const":"name_value","deprecated":true,"type":"string"}},"required":["settings_combo"],"type":"object"},"IConnectionInterfaceTableGrid":{"additionalProperties":false,"properties":{"required":{"description":"Set to true if this is a required field.","type":"boolean"},"rows":{"description":"The rows of the table","items":{"$ref":"#/definitions/IConnectionInterfaceTableGridRow"},"type":"array"},"settings_grid":{"additionalProperties":false,"description":"The settings for the grid","properties":{"checkbox":{"description":"If true a checkbox is shown in the first column of the grid, to select rows.","type":"boolean"},"columns":{"description":"The columns of the grid","items":{"$ref":"#/definitions/IConnectionInterfaceTableColumn"},"type":"array"},"filter":{"description":"If to true if the quick filter is shown above the grid","type":"boolean"},"key_column":{"description":"The name of the column that is used as key column, this column is used to identify the row.","type":"string"},"selection":{"description":"The selection mode of the grid, can be \"single\" or \"multiple\"","enum":["single","multiple"],"type":"string"}},"required":["key_column"],"type":"object"},"source_name":{"description":"The name of the source for the records in the table. This should be the name of the name_values parameter that contains the records.\nThis can be used when the records for the table are for example stored by a JavaScript action.","type":"string"},"source_type":{"const":"name_value","deprecated":true,"type":"string"}},"required":["settings_grid"],"type":"object"},"IConnectionInterfaceTableGridRow":{"additionalProperties":{"description":"The key is the name of the column, the value is the value of the column for this row.","type":"string"},"properties":{"name":{"description":"The key is the name of the column, the value is the value of the column for this row.","type":"string"}},"required":["name"],"type":"object"},"IConnectionInterfaceTableRadio":{"additionalProperties":false,"properties":{"required":{"description":"Set to true if this is a required field.","type":"boolean"},"rows":{"description":"The rows of the table","items":{"$ref":"#/definitions/IConnectionInterfaceTableGridRow"},"type":"array"},"settings_radio":{"additionalProperties":false,"description":"The settings for the radio buttons","properties":{"display_column":{"description":"The name of the column that is used as display column, this column is used to display the value of the radio button.","type":"string"},"value_column":{"description":"The name of the column that is used as value column, this column is used as value of the radio button.","type":"string"}},"required":["display_column","value_column"],"type":"object"},"source_name":{"description":"The name of the source for the records in the table. This should be the name of the name_values parameter that contains the records.\nThis can be used when the records for the table are for example stored by a JavaScript action.","type":"string"},"source_type":{"const":"name_value","deprecated":true,"type":"string"}},"required":["settings_radio"],"type":"object"},"ICrudConfig":{"anyOf":[{"$ref":"#/definitions/ICrudDynamicConfig"},{"$ref":"#/definitions/ICrudNormalConfig"}]},"ICrudDynamicConfig":{"additionalProperties":false,"properties":{"dynamic_resources":{"$ref":"#/definitions/IDynamicResource"},"groupmembership":{"$ref":"#/definitions/IJsonGroupMemberShipConfigRest","description":"When this table represent some kind of membership relation, the groupmembership configuration \r\nis used to define the operations to add and remove members from a group.\r\nThis configuration is used by the role model in NIM. Without this configuration, the role model is not supported for this table."},"key":{"description":"The key field of the table. This is the field that is used to uniquely identify a record in the table.\r\nThis field must be the name of a field in the resources object.","type":"string"},"keyRefs":{"description":"The key references of the table. Those fields are used as foreign keys in NIM.\r\nThis fields must be the name of a field in the resources object.","items":{"type":"string"},"type":"array"},"operations":{"additionalProperties":{"$ref":"#/definitions/CrudOperationConfig"},"description":"The operation definition to retrieve the data for this table, functions to modify the data of this table in the target system.\r\nThe keys map to the function names as shown in the NIM Studio.","type":"object"}},"required":["dynamic_resources","operations"],"type":"object"},"ICrudNormalConfig":{"additionalProperties":false,"properties":{"groupmembership":{"$ref":"#/definitions/IJsonGroupMemberShipConfigRest","description":"When this table represent some kind of membership relation, the groupmembership configuration \r\nis used to define the operations to add and remove members from a group.\r\nThis configuration is used by the role model in NIM. Without this configuration, the role model is not supported for this table."},"key":{"description":"The key field of the table. This is the field that is used to uniquely identify a record in the table.\r\nThis field must be the name of a field in the resources object.","type":"string"},"keyRefs":{"description":"The key references of the table. Those fields are used as foreign keys in NIM.\r\nThis fields must be the name of a field in the resources object.","items":{"type":"string"},"type":"array"},"operations":{"additionalProperties":{"$ref":"#/definitions/CrudOperationConfig"},"description":"The operation definition to retrieve the data for this table, functions to modify the data of this table in the target system.\r\nThe keys map to the function names as shown in the NIM Studio.","type":"object"},"resources":{"$ref":"#/definitions/IRestResources","description":"The resources of the table. The keys map to the resource names as shown in the NIM Studio."}},"required":["operations","resources"],"type":"object"},"IDeleteOperationConfig":{"additionalProperties":false,"description":"The DELETE operation is mostly used when the delete mapping is executed. The name of this function will be used to show in the NIM Studio.","properties":{"authOptions":{"additionalProperties":false,"default":"undefined","description":"Extend the authentication options for this operation.","examples":[{"scopes":["https://www.googleapis.com/auth/admin.directory.user"]}],"properties":{"JWT":{"$ref":"#/definitions/JWTOptionsType","description":"The JWT options to be used in the authentication.\nThe key is a JWT option the value the value or an an object to describe how to determine the value.\nWhen the value is an object with the property \"name\" the value will be replaced depending on the name.\n\nThe following names are supported:\n\n- now: The current date and time\n- guid: A new UUID\n- oneHour: The current date and time plus one hour\n- endpoint: The endpoint to be used\n- scope: The scope to be used\n- tenantId: The tenantId to be used\n- clientId: The clientId to be used","examples":[{"aud":{"name":"endpoint"},"exp":{"name":"oneHour"},"iat":{"name":"now"},"iss":{"name":"clientId"},"scope":{"name":"scope"},"sub":{"name":"tenantId"}}]},"algorithm":{"$ref":"#/definitions/DigestAlgorithm","default":"MD5","description":"The algorithm to be used for the digest authentication."},"allowedHosts":{"description":"When specified, the token will not be send to hosts not in this list.","items":{"type":"string"},"type":"array"},"authUrl":{"description":"The URL to authenticate against, for example to retrieve some kind of authentication token from.","type":"string"},"cnonceSize":{"default":32,"description":"The size of the cnonce to be used.","type":"number"},"dataToVariables":{"additionalProperties":{"type":"string"},"description":"The result data to store in variables, available to use in the rest calls.\nThe key in the object is the variable name, the value is the JSON path to the value in the response.\nThe path will be prefixed with '$.'","examples":[{"myVariable":"credentials.result.id"}],"type":"object"},"directToken":{"deprecated":"Nim handles this automatically","description":"Send a token at the first call, instead of sending a request and handle the unauth response.\n*deprecated* Nim handles this automatically","type":"boolean"},"expiresPath":{"description":"The JSON path to the expires property in the response.\nIf not specified the token will expire after one hour.\nIf specified the path will be prefixed with '$.'","examples":["credentials.expires"],"type":"string"},"extraParameters":{"additionalProperties":{"type":"string"},"description":"The result data to store in variables, available to use in the rest calls.\nThe key in the object is the variable name, the value is the JSON path to the value in the response.\nThe path will be prefixed with '$.'","examples":[{"geolocation":"geolocation"}],"type":"object"},"extraTokenRequestData":{"additionalProperties":{"type":"string"},"description":"Extra data to be sent in the post request. When requesting the access_token.","examples":[{"credtype":"authtoken"}],"type":"object"},"grantType":{"default":"client_credentials","description":"The oauth2 grant type to be used in the authentication. If not specified 'client_credentials' will be used.","type":"string"},"headerName":{"default":"Authorization","description":"The name of the header used to send the token with the REST requests.","examples":["X-Token"],"type":"string"},"headerTemplate":{"default":"Bearer {token}","description":"The template to be used to replace the variables in the header.","examples":["{token}"],"type":"string"},"httpVerb":{"$ref":"#/definitions/HttpVerb","default":"post","description":"The HTTP verb to be used for the post request.","examples":["get"]},"loginUrl":{"description":"The URL to redirect to when the user clicks the login button in the NIM Studio.\nThe {scopes} can be used to be replaced by the specified scopes.","type":"string"},"postAsForm":{"default":false,"description":"The post data should be send form encoded instead of JSON.","type":"boolean"},"postData":{"anyOf":[{"$ref":"#/definitions/PostDataOptionsType","description":"The data to send in the post request.\nThe key is the name of the property, the value is the value or an an object to describe how to determine the value.\nWhen the value is an object with the property \"name\" the value will be replaced depending on the name.\nThe following specific names are supported:\n\n- JWT: The JWT token\n- clientId: The clientId\n- tenantId: The tenantId\n- scope: The scope\n- endpoint: The endpoint\n- now: The current date and time\n- oneHour: The current date and time plus one hour\n- guid: A new UUID"},{"additionalProperties":{},"description":"The post data to be sent to the authUrl.\nWhen the httpVerb is 'get' or 'delete' the post data will be ignored.","examples":[{"userName":"{userName}"}],"type":"object"}],"description":"The data to send in the post request.\nThe key is the name of the property, the value is the value or an an object to describe how to determine the value.\nWhen the value is an object with the property \"name\" the value will be replaced depending on the name.\nThe following specific names are supported:\n\n- JWT: The JWT token\n- clientId: The clientId\n- tenantId: The tenantId\n- scope: The scope\n- endpoint: The endpoint\n- now: The current date and time\n- oneHour: The current date and time plus one hour\n- guid: A new UUID"},"postHeaders":{"additionalProperties":{},"description":"The headers to be sent to the authUrl.","type":"object"},"precomputedHash":{"description":"Set to true when the password is not the real password, but already the computed hash to be used.","type":"boolean"},"scopes":{"description":"The oauth2 scopes to be used in the authentication.","items":{"type":"string"},"type":"array"},"tokenPath":{"description":"The JSON path to the token property in the response.\nIf not specified the whole response will be used as token.\nIf specified the path will be prefixed with '$.'","examples":["credentials.token"],"type":"string"},"treat500AsAuthError":{"description":"Specify if an HTTP 500 response should be treated as an authentication error.","type":"boolean"},"type":{"anyOf":[{"const":"client-credentials","description":"The type of authentication to be used.\n'client-credentials' for client_credentials authentication.","type":"string"},{"const":"signed-jwt","description":"The type of authentication to be used.\n'signed-jwt' for signed-jwt authentication.","type":"string"},{"const":"jwt","description":"The type of authentication to be used.\n'jwt' for jwt authentication.","type":"string"},{"const":"custom_post_token","description":"The type of authentication to be used.\n'custom-post-token' for custom-post-token authentication.","type":"string"},{"const":"authorization_code_grant","description":"The type of authentication to be used.\n'authorization-code-grant' for authorization_code_grant authentication.","type":"string"},{"const":"digest","description":"The type of authentication to be used.\n'digest' for digest authentication.","type":"string"},{"const":"password_grant","description":"The type of authentication to be used.\n'password_grant' for password_grant authentication.","type":"string"}],"description":"The type of authentication to be used.\n'client-credentials' for client_credentials authentication."},"useBasicAuthPost":{"anyOf":[{"description":"When set to true, the clientId and clientSecret will be sent as basic auth header, instead of in the post body.","type":"boolean"},{"default":false,"description":"Use basic authentication for the post request.","type":"boolean"}],"description":"When set to true, the clientId and clientSecret will be sent as basic auth header, instead of in the post body."}},"type":"object"},"body":{"anyOf":[{"$ref":"#/definitions/ResolvableObject"},{"items":{"$ref":"#/definitions/ResolvableObject"},"type":"array"}],"description":"Specifies the body of the HTTP request.\nAn object or array of objects to be send with the HTTP request. All variables defined as {name} are replaced with the corresponding values\nWhen the property: \"_nim_merge_attributes_\" is found, it is will be replaced with the input data, except when the property is set to false.\nin that case the input data will not be merged with the specified body at all."},"call":{"$ref":"#/definitions/CallConfig","description":"Specifies how the HTTP request should be constructed and executed."},"disableCompression":{"default":false,"description":"When specified no gzip accept header will be send. Some REST systems have issues with gzip compression, so this can be used\nto prevent that. When not specified, the default is to allow gzip encoding.","type":"boolean"},"method":{"const":"delete","type":"string"},"processing_options":{"$ref":"#/definitions/IProcessingOptions","description":"Specifies how the results of the HTTP request should be interpreted."},"removeBlankFields":{"description":"Specifies whether blank fields should be removed from the body of the HTTP request.","type":"boolean"},"resource_allowance_default":{"$ref":"#/definitions/AllowanceText","default":"undefined","description":"Specifies what the default allowance is for the NIM mapping is, based on this operation.","examples":["optional"]},"resource_mandatory":{"description":"Specifies which items from the \"resources\" object are mandatory to be used in this operation.\nFor operations with the \"update\" semantic only one resource is allowed to be mandatory.","items":{"type":"string"},"type":"array"},"resource_prohibited":{"description":"Specifies which items from the \"resources\" object are prohibited from being used in this operation.\nThis influences which attributes are shown in the Mapping in the NIM Studio.","items":{"type":"string"},"type":"array"},"semantics":{"$ref":"#/definitions/NimTableCallSemantics","default":"get","description":"Specifies the semantics of the operation. When not specified 'get' semantics are assumed."},"warning_only":{"description":"Specifies which HTTP status codes are considered warning only.","items":{"type":"number"},"type":"array"}},"required":["method"],"type":"object"},"IDynamicResource":{"additionalProperties":false,"properties":{"type":{"const":"google_sheets","description":"The type of the dynamic resource. Currently only 'google_sheets' is supported.","type":"string"}},"required":["type"],"type":"object"},"IFilterConfig":{"additionalProperties":false,"properties":{"attribute":{"description":"The attribute to be filtered, as a JSON path relative to the row\n(no leading \"$.\"), e.g. \"isMailboxSetup\" or \"profile.mailbox.enabled\".","type":"string"},"operation":{"description":"The operation to be applied to the attribute.\n- 'contains': checks if the attribute equals the value, or (when the attribute is an array) contains the value, case sensitively.\n- 'equals': checks if the attribute strictly equals the value.\n- 'truthy': checks if the attribute resolves to a truthy value. 'value' is not used.\n- 'exists': checks if the attribute path resolves to a value at all. 'value' is not used.\n- 'matches': checks if the attribute (or, when the attribute is an array, any of its elements) matches the regular expression in 'value'.","enum":["contains","equals","truthy","exists","regex"],"markdownDescription":"*","type":"string"},"value":{"description":"The value to be compared to the attribute. Required for 'contains' and 'equals'.\nFor 'matches', this is the regular expression pattern (without delimiters or flags) to test the attribute against.","type":"string"}},"required":["attribute","operation"],"type":"object"},"IGetOperationConfig":{"additionalProperties":false,"description":"The configuration of the method used to retrieve the data for the table from the REST system\nThe name is not shown in the NIM studio, or available for mapping.","properties":{"authOptions":{"additionalProperties":false,"default":"undefined","description":"Extend the authentication options for this operation.","examples":[{"scopes":["https://www.googleapis.com/auth/admin.directory.user"]}],"properties":{"JWT":{"$ref":"#/definitions/JWTOptionsType","description":"The JWT options to be used in the authentication.\nThe key is a JWT option the value the value or an an object to describe how to determine the value.\nWhen the value is an object with the property \"name\" the value will be replaced depending on the name.\n\nThe following names are supported:\n\n- now: The current date and time\n- guid: A new UUID\n- oneHour: The current date and time plus one hour\n- endpoint: The endpoint to be used\n- scope: The scope to be used\n- tenantId: The tenantId to be used\n- clientId: The clientId to be used","examples":[{"aud":{"name":"endpoint"},"exp":{"name":"oneHour"},"iat":{"name":"now"},"iss":{"name":"clientId"},"scope":{"name":"scope"},"sub":{"name":"tenantId"}}]},"algorithm":{"$ref":"#/definitions/DigestAlgorithm","default":"MD5","description":"The algorithm to be used for the digest authentication."},"allowedHosts":{"description":"When specified, the token will not be send to hosts not in this list.","items":{"type":"string"},"type":"array"},"authUrl":{"description":"The URL to authenticate against, for example to retrieve some kind of authentication token from.","type":"string"},"cnonceSize":{"default":32,"description":"The size of the cnonce to be used.","type":"number"},"dataToVariables":{"additionalProperties":{"type":"string"},"description":"The result data to store in variables, available to use in the rest calls.\nThe key in the object is the variable name, the value is the JSON path to the value in the response.\nThe path will be prefixed with '$.'","examples":[{"myVariable":"credentials.result.id"}],"type":"object"},"directToken":{"deprecated":"Nim handles this automatically","description":"Send a token at the first call, instead of sending a request and handle the unauth response.\n*deprecated* Nim handles this automatically","type":"boolean"},"expiresPath":{"description":"The JSON path to the expires property in the response.\nIf not specified the token will expire after one hour.\nIf specified the path will be prefixed with '$.'","examples":["credentials.expires"],"type":"string"},"extraParameters":{"additionalProperties":{"type":"string"},"description":"The result data to store in variables, available to use in the rest calls.\nThe key in the object is the variable name, the value is the JSON path to the value in the response.\nThe path will be prefixed with '$.'","examples":[{"geolocation":"geolocation"}],"type":"object"},"extraTokenRequestData":{"additionalProperties":{"type":"string"},"description":"Extra data to be sent in the post request. When requesting the access_token.","examples":[{"credtype":"authtoken"}],"type":"object"},"grantType":{"default":"client_credentials","description":"The oauth2 grant type to be used in the authentication. If not specified 'client_credentials' will be used.","type":"string"},"headerName":{"default":"Authorization","description":"The name of the header used to send the token with the REST requests.","examples":["X-Token"],"type":"string"},"headerTemplate":{"default":"Bearer {token}","description":"The template to be used to replace the variables in the header.","examples":["{token}"],"type":"string"},"httpVerb":{"$ref":"#/definitions/HttpVerb","default":"post","description":"The HTTP verb to be used for the post request.","examples":["get"]},"loginUrl":{"description":"The URL to redirect to when the user clicks the login button in the NIM Studio.\nThe {scopes} can be used to be replaced by the specified scopes.","type":"string"},"postAsForm":{"default":false,"description":"The post data should be send form encoded instead of JSON.","type":"boolean"},"postData":{"anyOf":[{"$ref":"#/definitions/PostDataOptionsType","description":"The data to send in the post request.\nThe key is the name of the property, the value is the value or an an object to describe how to determine the value.\nWhen the value is an object with the property \"name\" the value will be replaced depending on the name.\nThe following specific names are supported:\n\n- JWT: The JWT token\n- clientId: The clientId\n- tenantId: The tenantId\n- scope: The scope\n- endpoint: The endpoint\n- now: The current date and time\n- oneHour: The current date and time plus one hour\n- guid: A new UUID"},{"additionalProperties":{},"description":"The post data to be sent to the authUrl.\nWhen the httpVerb is 'get' or 'delete' the post data will be ignored.","examples":[{"userName":"{userName}"}],"type":"object"}],"description":"The data to send in the post request.\nThe key is the name of the property, the value is the value or an an object to describe how to determine the value.\nWhen the value is an object with the property \"name\" the value will be replaced depending on the name.\nThe following specific names are supported:\n\n- JWT: The JWT token\n- clientId: The clientId\n- tenantId: The tenantId\n- scope: The scope\n- endpoint: The endpoint\n- now: The current date and time\n- oneHour: The current date and time plus one hour\n- guid: A new UUID"},"postHeaders":{"additionalProperties":{},"description":"The headers to be sent to the authUrl.","type":"object"},"precomputedHash":{"description":"Set to true when the password is not the real password, but already the computed hash to be used.","type":"boolean"},"scopes":{"description":"The oauth2 scopes to be used in the authentication.","items":{"type":"string"},"type":"array"},"tokenPath":{"description":"The JSON path to the token property in the response.\nIf not specified the whole response will be used as token.\nIf specified the path will be prefixed with '$.'","examples":["credentials.token"],"type":"string"},"treat500AsAuthError":{"description":"Specify if an HTTP 500 response should be treated as an authentication error.","type":"boolean"},"type":{"anyOf":[{"const":"client-credentials","description":"The type of authentication to be used.\n'client-credentials' for client_credentials authentication.","type":"string"},{"const":"signed-jwt","description":"The type of authentication to be used.\n'signed-jwt' for signed-jwt authentication.","type":"string"},{"const":"jwt","description":"The type of authentication to be used.\n'jwt' for jwt authentication.","type":"string"},{"const":"custom_post_token","description":"The type of authentication to be used.\n'custom-post-token' for custom-post-token authentication.","type":"string"},{"const":"authorization_code_grant","description":"The type of authentication to be used.\n'authorization-code-grant' for authorization_code_grant authentication.","type":"string"},{"const":"digest","description":"The type of authentication to be used.\n'digest' for digest authentication.","type":"string"},{"const":"password_grant","description":"The type of authentication to be used.\n'password_grant' for password_grant authentication.","type":"string"}],"description":"The type of authentication to be used.\n'client-credentials' for client_credentials authentication."},"useBasicAuthPost":{"anyOf":[{"description":"When set to true, the clientId and clientSecret will be sent as basic auth header, instead of in the post body.","type":"boolean"},{"default":false,"description":"Use basic authentication for the post request.","type":"boolean"}],"description":"When set to true, the clientId and clientSecret will be sent as basic auth header, instead of in the post body."}},"type":"object"},"body":{"anyOf":[{"$ref":"#/definitions/ResolvableObject"},{"items":{"$ref":"#/definitions/ResolvableObject"},"type":"array"}],"description":"Specifies the body of the HTTP request.\nAn object or array of objects to be send with the HTTP request. All variables defined as {name} are replaced with the corresponding values\nWhen the property: \"_nim_merge_attributes_\" is found, it is will be replaced with the input data, except when the property is set to false.\nin that case the input data will not be merged with the specified body at all."},"call":{"$ref":"#/definitions/CallConfig","description":"Specifies how the HTTP request should be constructed and executed."},"disableCompression":{"default":false,"description":"When specified no gzip accept header will be send. Some REST systems have issues with gzip compression, so this can be used\nto prevent that. When not specified, the default is to allow gzip encoding.","type":"boolean"},"graphExcludedFields":{"description":"When the call_handling is set to \"azure\", this property can be used to prevent some fields from being included in the $select parameter of the graph query.","items":{"type":"string"},"type":"array"},"maxPageCount":{"description":"The maximum number of pages to retrieve from the REST system","type":"number"},"maxSessionCount":{"description":"The maximum number of retrieval calls to run concurrently","type":"number"},"method":{"const":"get","description":"The HTTP method to be used for the operation.\n'get' for GET methods.","type":"string"},"pagination":{"anyOf":[{"$ref":"#/definitions/PaginatorConfig"},{"const":"none","type":"string"}],"default":"undefined","description":"The configuration for the pagination of the request. If not specified, the default configuration as defined in the rest settings is used.\nIf set to \"none\", to explicitly disable the pagination for this method."},"processing_options":{"$ref":"#/definitions/IProcessingOptions","description":"Specifies how the results of the HTTP request should be interpreted."},"put_hash_in_child_tables":{"description":"When specified, the hash of every record in a child table will put in a column with the name specified in this property.\nSo if there are child tables defined in the resources, the hash is normally only put in the parent table. \nWhen defined this hash is also put in the child table, which allows for better referencing.","type":"string"},"query_parameters":{"$ref":"#/definitions/RestQueryParameters","deprecated":"Use call.queryParameters instead","description":"The parameters to be used in the query string of the HTTP request\n*deprecated* Use call.queryParameters instead"},"removeBlankFields":{"description":"Specifies whether blank fields should be removed from the body of the HTTP request.","type":"boolean"},"resource_allowance_default":{"$ref":"#/definitions/AllowanceText","default":"undefined","description":"Specifies what the default allowance is for the NIM mapping is, based on this operation.","examples":["optional"]},"resource_mandatory":{"description":"Specifies which items from the \"resources\" object are mandatory to be used in this operation.\nFor operations with the \"update\" semantic only one resource is allowed to be mandatory.","items":{"type":"string"},"type":"array"},"resource_prohibited":{"description":"Specifies which items from the \"resources\" object are prohibited from being used in this operation.\nThis influences which attributes are shown in the Mapping in the NIM Studio.","items":{"type":"string"},"type":"array"},"selector":{"$ref":"#/definitions/IRestSelectorConfig","description":"The selector configuration for the request. If not specified, the default selector configuration as defined in the rest settings is used."},"semantics":{"$ref":"#/definitions/NimTableCallSemantics","default":"get","description":"Specifies the semantics of the operation. When not specified 'get' semantics are assumed."},"verb":{"$ref":"#/definitions/HttpVerb","default":"get","description":"The HTTP verb to use for the request."},"warning_only":{"description":"Specifies which HTTP status codes are considered warning only.","items":{"type":"number"},"type":"array"}},"required":["method"],"type":"object"},"IJsonAuthOptionsAuthorizationGrantCodeToken":{"additionalProperties":false,"properties":{"authUrl":{"description":"The URL to authenticate against, for example to retrieve some kind of authentication token from.","type":"string"},"directToken":{"deprecated":"Nim handles this automatically","description":"Send a token at the first call, instead of sending a request and handle the unauth response.\n*deprecated* Nim handles this automatically","type":"boolean"},"grantType":{"default":"client_credentials","description":"The oauth2 grant type to be used in the authentication. If not specified 'client_credentials' will be used.","type":"string"},"loginUrl":{"description":"The URL to redirect to when the user clicks the login button in the NIM Studio.\nThe {scopes} can be used to be replaced by the specified scopes.","type":"string"},"scopes":{"description":"The oauth2 scopes to be used in the authentication.","items":{"type":"string"},"type":"array"},"treat500AsAuthError":{"description":"Specify if an HTTP 500 response should be treated as an authentication error.","type":"boolean"},"type":{"const":"authorization_code_grant","description":"The type of authentication to be used.\n'authorization-code-grant' for authorization_code_grant authentication.","type":"string"},"useBasicAuthPost":{"description":"When set to true, the clientId and clientSecret will be sent as basic auth header, instead of in the post body.","type":"boolean"}},"required":["authUrl","type"],"type":"object"},"IJsonAuthOptionsClientCredentials":{"additionalProperties":false,"properties":{"authUrl":{"description":"The URL to authenticate against, for example to retrieve some kind of authentication token from.","type":"string"},"directToken":{"deprecated":"Nim handles this automatically","description":"Send a token at the first call, instead of sending a request and handle the unauth response.\n*deprecated* Nim handles this automatically","type":"boolean"},"grantType":{"default":"client_credentials","description":"The oauth2 grant type to be used in the authentication. If not specified 'client_credentials' will be used.","type":"string"},"scopes":{"description":"The oauth2 scopes to be used in the authentication.","items":{"type":"string"},"type":"array"},"treat500AsAuthError":{"description":"Specify if an HTTP 500 response should be treated as an authentication error.","type":"boolean"},"type":{"const":"client-credentials","description":"The type of authentication to be used.\n'client-credentials' for client_credentials authentication.","type":"string"},"useBasicAuthPost":{"description":"When set to true, the clientId and clientSecret will be sent as basic auth header, instead of in the post body.","type":"boolean"}},"required":["authUrl","type"],"type":"object"},"IJsonAuthOptionsCustomPostToken":{"additionalProperties":false,"properties":{"authUrl":{"description":"The URL to authenticate against, for example to retrieve some kind of authentication token from.","type":"string"},"dataToVariables":{"additionalProperties":{"type":"string"},"description":"The result data to store in variables, available to use in the rest calls.\nThe key in the object is the variable name, the value is the JSON path to the value in the response.\nThe path will be prefixed with '$.'","examples":[{"myVariable":"credentials.result.id"}],"type":"object"},"directToken":{"deprecated":"Nim handles this automatically","description":"Send a token at the first call, instead of sending a request and handle the unauth response.\n*deprecated* Nim handles this automatically","type":"boolean"},"expiresPath":{"description":"The JSON path to the expires property in the response.\nIf not specified the token will expire after one hour.\nIf specified the path will be prefixed with '$.'","examples":["credentials.expires"],"type":"string"},"headerName":{"default":"Authorization","description":"The name of the header used to send the token with the REST requests.","examples":["X-Token"],"type":"string"},"headerTemplate":{"default":"Bearer {token}","description":"The template to be used to replace the variables in the header.","examples":["{token}"],"type":"string"},"httpVerb":{"$ref":"#/definitions/HttpVerb","default":"post","description":"The HTTP verb to be used for the post request.","examples":["get"]},"postAsForm":{"default":false,"description":"The post data should be send form encoded instead of JSON.","type":"boolean"},"postData":{"additionalProperties":{},"description":"The post data to be sent to the authUrl.\nWhen the httpVerb is 'get' or 'delete' the post data will be ignored.","examples":[{"userName":"{userName}"}],"type":"object"},"postHeaders":{"additionalProperties":{},"description":"The headers to be sent to the authUrl.","type":"object"},"tokenPath":{"description":"The JSON path to the token property in the response.\nIf not specified the whole response will be used as token.\nIf specified the path will be prefixed with '$.'","examples":["credentials.token"],"type":"string"},"treat500AsAuthError":{"description":"Specify if an HTTP 500 response should be treated as an authentication error.","type":"boolean"},"type":{"const":"custom_post_token","description":"The type of authentication to be used.\n'custom-post-token' for custom-post-token authentication.","type":"string"},"useBasicAuthPost":{"default":false,"description":"Use basic authentication for the post request.","type":"boolean"}},"required":["authUrl","type"],"type":"object"},"IJsonAuthOptionsDigest":{"additionalProperties":false,"properties":{"algorithm":{"$ref":"#/definitions/DigestAlgorithm","default":"MD5","description":"The algorithm to be used for the digest authentication."},"cnonceSize":{"default":32,"description":"The size of the cnonce to be used.","type":"number"},"precomputedHash":{"description":"Set to true when the password is not the real password, but already the computed hash to be used.","type":"boolean"},"type":{"const":"digest","description":"The type of authentication to be used.\n'digest' for digest authentication.","type":"string"}},"required":["type"],"type":"object"},"IJsonAuthOptionsJWT":{"additionalProperties":false,"properties":{"JWT":{"$ref":"#/definitions/JWTOptionsType","description":"The JWT options to be used in the authentication.\nThe key is a JWT option the value the value or an an object to describe how to determine the value.\nWhen the value is an object with the property \"name\" the value will be replaced depending on the name.\n\nThe following names are supported:\n\n- now: The current date and time\n- guid: A new UUID\n- oneHour: The current date and time plus one hour\n- endpoint: The endpoint to be used\n- scope: The scope to be used\n- tenantId: The tenantId to be used\n- clientId: The clientId to be used","examples":[{"aud":{"name":"endpoint"},"exp":{"name":"oneHour"},"iat":{"name":"now"},"iss":{"name":"clientId"},"scope":{"name":"scope"},"sub":{"name":"tenantId"}}]},"allowedHosts":{"description":"When specified, the token will not be send to hosts not in this list.","items":{"type":"string"},"type":"array"},"authUrl":{"description":"The URL to authenticate against, for example to retrieve some kind of authentication token from.","type":"string"},"directToken":{"deprecated":"Nim handles this automatically","description":"Send a token at the first call, instead of sending a request and handle the unauth response.\n*deprecated* Nim handles this automatically","type":"boolean"},"scopes":{"description":"The oauth2 scopes to be used in the authentication.","items":{"type":"string"},"type":"array"},"treat500AsAuthError":{"description":"Specify if an HTTP 500 response should be treated as an authentication error.","type":"boolean"},"type":{"const":"jwt","description":"The type of authentication to be used.\n'jwt' for jwt authentication.","type":"string"}},"required":["JWT","authUrl","scopes","type"],"type":"object"},"IJsonAuthOptionsPasswordGrant":{"additionalProperties":false,"properties":{"authUrl":{"description":"The URL to authenticate against, for example to retrieve some kind of authentication token from.","type":"string"},"directToken":{"deprecated":"Nim handles this automatically","description":"Send a token at the first call, instead of sending a request and handle the unauth response.\n*deprecated* Nim handles this automatically","type":"boolean"},"extraParameters":{"additionalProperties":{"type":"string"},"description":"The result data to store in variables, available to use in the rest calls.\nThe key in the object is the variable name, the value is the JSON path to the value in the response.\nThe path will be prefixed with '$.'","examples":[{"geolocation":"geolocation"}],"type":"object"},"extraTokenRequestData":{"additionalProperties":{"type":"string"},"description":"Extra data to be sent in the post request. When requesting the access_token.","examples":[{"credtype":"authtoken"}],"type":"object"},"grantType":{"default":"client_credentials","description":"The oauth2 grant type to be used in the authentication. If not specified 'client_credentials' will be used.","type":"string"},"scopes":{"description":"The oauth2 scopes to be used in the authentication.","items":{"type":"string"},"type":"array"},"treat500AsAuthError":{"description":"Specify if an HTTP 500 response should be treated as an authentication error.","type":"boolean"},"type":{"const":"password_grant","description":"The type of authentication to be used.\n'password_grant' for password_grant authentication.","type":"string"},"useBasicAuthPost":{"description":"When set to true, the clientId and clientSecret will be sent as basic auth header, instead of in the post body.","type":"boolean"}},"required":["authUrl","type"],"type":"object"},"IJsonAuthOptionsSignedJWT":{"additionalProperties":false,"properties":{"JWT":{"$ref":"#/definitions/JWTOptionsType","description":"The JWT options to be used in the authentication.\nThe key is a JWT option the value the value or an an object to describe how to determine the value.\nWhen the value is an object with the property \"name\" the value will be replaced depending on the name.\n\nThe following names are supported:\n\n- now: The current date and time\n- guid: A new UUID\n- oneHour: The current date and time plus one hour\n- endpoint: The endpoint to be used\n- scope: The scope to be used\n- tenantId: The tenantId to be used\n- clientId: The clientId to be used","examples":[{"aud":{"name":"endpoint"},"exp":{"name":"oneHour"},"iat":{"name":"now"},"iss":{"name":"clientId"},"scope":{"name":"scope"},"sub":{"name":"tenantId"}}]},"allowedHosts":{"description":"When specified, the token will not be send to hosts not in this list.","items":{"type":"string"},"type":"array"},"authUrl":{"description":"The URL to authenticate against, for example to retrieve some kind of authentication token from.","type":"string"},"directToken":{"deprecated":"Nim handles this automatically","description":"Send a token at the first call, instead of sending a request and handle the unauth response.\n*deprecated* Nim handles this automatically","type":"boolean"},"postData":{"$ref":"#/definitions/PostDataOptionsType","description":"The data to send in the post request.\nThe key is the name of the property, the value is the value or an an object to describe how to determine the value.\nWhen the value is an object with the property \"name\" the value will be replaced depending on the name.\nThe following specific names are supported:\n\n- JWT: The JWT token\n- clientId: The clientId\n- tenantId: The tenantId\n- scope: The scope\n- endpoint: The endpoint\n- now: The current date and time\n- oneHour: The current date and time plus one hour\n- guid: A new UUID"},"scopes":{"description":"The oauth2 scopes to be used in the authentication.","items":{"type":"string"},"type":"array"},"treat500AsAuthError":{"description":"Specify if an HTTP 500 response should be treated as an authentication error.","type":"boolean"},"type":{"const":"signed-jwt","description":"The type of authentication to be used.\n'signed-jwt' for signed-jwt authentication.","type":"string"}},"required":["JWT","authUrl","postData","scopes","type"],"type":"object"},"IJsonGroupMemberShipConfigRest":{"additionalProperties":false,"properties":{"add_operation":{"type":"string"},"group_attributes":{"additionalProperties":{"type":"string"},"type":"object"},"group_table":{"type":"string"},"member_attributes":{"additionalProperties":{"type":"string"},"type":"object"},"member_table":{"type":"string"},"remove_operation":{"type":"string"}},"required":["add_operation","remove_operation","member_table","group_table","member_attributes","group_attributes"],"type":"object"},"ILastPageConfig":{"anyOf":[{"$ref":"#/definitions/ILastPageFieldConfig"},{"$ref":"#/definitions/ILastPageTokenConfig"}]},"ILastPageFieldConfig":{"additionalProperties":false,"properties":{"name":{"description":"The name of an attribute in the response data that contains the last page.\r\nWhen the value of this attribute is true the paginator will stop.","type":"string"},"type":{"const":"field","description":"The type of the last page configuration\r\n'field' indicates that the paginator will use a field in the response to determine the last page.","type":"string"}},"required":["type","name"],"type":"object"},"ILastPageTokenConfig":{"additionalProperties":false,"properties":{"path":{"description":"The JSON path of attribute in the response data that contains the token to determine the last page.\r\nWhen the value of this attribute is false, null or not there the paginator will stop.","type":"string"},"type":{"const":"token","description":"The type of the last page configuration\r\n'token' indicates that the paginator will use a token in the response to determine the last page.","type":"string"}},"required":["type","path"],"type":"object"},"IPaginatorGenericConfig":{"additionalProperties":false,"properties":{"mode":{"const":"generic","description":"The mode of the paginator\r\n'generic' indicates that the paginator will use the page number to determine the next page.","type":"string"},"page_size":{"description":"The number of records to return in a single page.\r\nIt is allowed to specify a variable here that resolves to the page size.","pattern":"^(\\{[a-zA-Z\\-\\_0-9]+\\})|(\\d+)$","type":["number","string"]},"params":{"additionalProperties":{"type":["string","number"]},"description":"The parameters to be used in the url, where the key is the name of the parameter and the value is the value to be used.\r\n{page_number} is replaced with the current page number.\r\n\r\nNIM will automatically stop when a page is returned with less records than the page size.","type":"object"},"totalAttribute":{"description":"The JSON path of attribute in the response data that contains the total number of records. This allows NIM to know when all the records are retrieved.\r\nThe value specified here is always prefixed with '$.'.","type":"string"},"totalPageAttribute":{"description":"The JSON path of attribute in the response data that contains the total number of pages. This allows NIM to know when all the records are retrieved.\r\nThe value specified here is always prefixed with '$.'.","type":"string"},"zero_based":{"description":"If the page number is zero based","type":"boolean"}},"required":["mode"],"type":"object"},"IPaginatorLinkConfig":{"additionalProperties":false,"properties":{"mode":{"const":"link","description":"The mode of the paginator\n'link' indicates that the paginator will use the 'link' header in the response to determine the next page.","type":"string"},"page_size":{"description":"The number of records to return in a single page.\r\nIt is allowed to specify a variable here that resolves to the page size.","pattern":"^(\\{[a-zA-Z\\-\\_0-9]+\\})|(\\d+)$","type":["number","string"]},"zero_based":{"description":"If the page number is zero based","type":"boolean"}},"required":["mode"],"type":"object"},"IPaginatorSkipTakeConfig":{"additionalProperties":false,"properties":{"mode":{"const":"skip_take","description":"The mode of the paginator\n'skip_take' indicates that the paginator will use the '{skip_count}' and '{take_count}' parameters in the url to determine the next page.","type":"string"},"page_size":{"description":"The number of records to return in a single page.\r\nIt is allowed to specify a variable here that resolves to the page size.","pattern":"^(\\{[a-zA-Z\\-\\_0-9]+\\})|(\\d+)$","type":["number","string"]},"params":{"additionalProperties":{"type":"string"},"description":"The parameters to be used in the url, where the key is the name of the parameter and the value is the value to be used.\n{skip_count} is replaced with the current page number multiplied by the page size.\n{take_count} is replaced with the page size.\n\nNIM will automatically stop when a page is returned with less records than the page size.","type":"object"},"zero_based":{"description":"If the page number is zero based","type":"boolean"}},"required":["mode"],"type":"object"},"IPaginatorUrlConfig":{"additionalProperties":false,"properties":{"field":{"description":"The JSON path of attribute in the response data that contains the url to the next page.\r\nThe value specified here is always prefixed with '$.'.\r\nIf the field is not specified, the url_part must be specified.\r\nIf the field is specified, the url_part must not be specified.","type":"string"},"last_page":{"$ref":"#/definitions/ILastPageConfig","description":"The configuration for the last page.\r\nIf the last page is reached, the paginator will stop."},"mode":{"const":"url","description":"The mode of the paginator\r\n'url' indicates that the paginator will use an url in the response to determine the next page.","type":"string"},"page_size":{"description":"The number of records to return in a single page.\r\nIt is allowed to specify a variable here that resolves to the page size.","pattern":"^(\\{[a-zA-Z\\-\\_0-9]+\\})|(\\d+)$","type":["number","string"]},"query_params":{"description":"The query parameters to be used in the url.","items":{"additionalProperties":false,"properties":{"name":{"description":"The name of the query parameter.","type":"string"},"value":{"$ref":"#/definitions/IQueryParamValue","description":"The value specification of the query parameter."}},"required":["name","value"],"type":"object"},"type":"array"},"replace_in_url":{"description":"If the {page_number} should be replaced, {page_number} in the url_part is always replaced with the current page number.","type":"boolean"},"url_part":{"description":"The url part to be used in the url, where the page number is replaced with '{page_number}'.\r\nIf the field is not specified, the url_part must be specified.\r\nIf the field is specified, the url_part must not be specified.","type":"string"},"zero_based":{"description":"If the page number is zero based","type":"boolean"}},"required":["mode"],"type":"object"},"IPatchOperationConfig":{"additionalProperties":false,"description":"The PATCH operation is mostly used when the update mapping is executed. The name of this function will be used to show in the NIM Studio.","properties":{"authOptions":{"additionalProperties":false,"default":"undefined","description":"Extend the authentication options for this operation.","examples":[{"scopes":["https://www.googleapis.com/auth/admin.directory.user"]}],"properties":{"JWT":{"$ref":"#/definitions/JWTOptionsType","description":"The JWT options to be used in the authentication.\nThe key is a JWT option the value the value or an an object to describe how to determine the value.\nWhen the value is an object with the property \"name\" the value will be replaced depending on the name.\n\nThe following names are supported:\n\n- now: The current date and time\n- guid: A new UUID\n- oneHour: The current date and time plus one hour\n- endpoint: The endpoint to be used\n- scope: The scope to be used\n- tenantId: The tenantId to be used\n- clientId: The clientId to be used","examples":[{"aud":{"name":"endpoint"},"exp":{"name":"oneHour"},"iat":{"name":"now"},"iss":{"name":"clientId"},"scope":{"name":"scope"},"sub":{"name":"tenantId"}}]},"algorithm":{"$ref":"#/definitions/DigestAlgorithm","default":"MD5","description":"The algorithm to be used for the digest authentication."},"allowedHosts":{"description":"When specified, the token will not be send to hosts not in this list.","items":{"type":"string"},"type":"array"},"authUrl":{"description":"The URL to authenticate against, for example to retrieve some kind of authentication token from.","type":"string"},"cnonceSize":{"default":32,"description":"The size of the cnonce to be used.","type":"number"},"dataToVariables":{"additionalProperties":{"type":"string"},"description":"The result data to store in variables, available to use in the rest calls.\nThe key in the object is the variable name, the value is the JSON path to the value in the response.\nThe path will be prefixed with '$.'","examples":[{"myVariable":"credentials.result.id"}],"type":"object"},"directToken":{"deprecated":"Nim handles this automatically","description":"Send a token at the first call, instead of sending a request and handle the unauth response.\n*deprecated* Nim handles this automatically","type":"boolean"},"expiresPath":{"description":"The JSON path to the expires property in the response.\nIf not specified the token will expire after one hour.\nIf specified the path will be prefixed with '$.'","examples":["credentials.expires"],"type":"string"},"extraParameters":{"additionalProperties":{"type":"string"},"description":"The result data to store in variables, available to use in the rest calls.\nThe key in the object is the variable name, the value is the JSON path to the value in the response.\nThe path will be prefixed with '$.'","examples":[{"geolocation":"geolocation"}],"type":"object"},"extraTokenRequestData":{"additionalProperties":{"type":"string"},"description":"Extra data to be sent in the post request. When requesting the access_token.","examples":[{"credtype":"authtoken"}],"type":"object"},"grantType":{"default":"client_credentials","description":"The oauth2 grant type to be used in the authentication. If not specified 'client_credentials' will be used.","type":"string"},"headerName":{"default":"Authorization","description":"The name of the header used to send the token with the REST requests.","examples":["X-Token"],"type":"string"},"headerTemplate":{"default":"Bearer {token}","description":"The template to be used to replace the variables in the header.","examples":["{token}"],"type":"string"},"httpVerb":{"$ref":"#/definitions/HttpVerb","default":"post","description":"The HTTP verb to be used for the post request.","examples":["get"]},"loginUrl":{"description":"The URL to redirect to when the user clicks the login button in the NIM Studio.\nThe {scopes} can be used to be replaced by the specified scopes.","type":"string"},"postAsForm":{"default":false,"description":"The post data should be send form encoded instead of JSON.","type":"boolean"},"postData":{"anyOf":[{"$ref":"#/definitions/PostDataOptionsType","description":"The data to send in the post request.\nThe key is the name of the property, the value is the value or an an object to describe how to determine the value.\nWhen the value is an object with the property \"name\" the value will be replaced depending on the name.\nThe following specific names are supported:\n\n- JWT: The JWT token\n- clientId: The clientId\n- tenantId: The tenantId\n- scope: The scope\n- endpoint: The endpoint\n- now: The current date and time\n- oneHour: The current date and time plus one hour\n- guid: A new UUID"},{"additionalProperties":{},"description":"The post data to be sent to the authUrl.\nWhen the httpVerb is 'get' or 'delete' the post data will be ignored.","examples":[{"userName":"{userName}"}],"type":"object"}],"description":"The data to send in the post request.\nThe key is the name of the property, the value is the value or an an object to describe how to determine the value.\nWhen the value is an object with the property \"name\" the value will be replaced depending on the name.\nThe following specific names are supported:\n\n- JWT: The JWT token\n- clientId: The clientId\n- tenantId: The tenantId\n- scope: The scope\n- endpoint: The endpoint\n- now: The current date and time\n- oneHour: The current date and time plus one hour\n- guid: A new UUID"},"postHeaders":{"additionalProperties":{},"description":"The headers to be sent to the authUrl.","type":"object"},"precomputedHash":{"description":"Set to true when the password is not the real password, but already the computed hash to be used.","type":"boolean"},"scopes":{"description":"The oauth2 scopes to be used in the authentication.","items":{"type":"string"},"type":"array"},"tokenPath":{"description":"The JSON path to the token property in the response.\nIf not specified the whole response will be used as token.\nIf specified the path will be prefixed with '$.'","examples":["credentials.token"],"type":"string"},"treat500AsAuthError":{"description":"Specify if an HTTP 500 response should be treated as an authentication error.","type":"boolean"},"type":{"anyOf":[{"const":"client-credentials","description":"The type of authentication to be used.\n'client-credentials' for client_credentials authentication.","type":"string"},{"const":"signed-jwt","description":"The type of authentication to be used.\n'signed-jwt' for signed-jwt authentication.","type":"string"},{"const":"jwt","description":"The type of authentication to be used.\n'jwt' for jwt authentication.","type":"string"},{"const":"custom_post_token","description":"The type of authentication to be used.\n'custom-post-token' for custom-post-token authentication.","type":"string"},{"const":"authorization_code_grant","description":"The type of authentication to be used.\n'authorization-code-grant' for authorization_code_grant authentication.","type":"string"},{"const":"digest","description":"The type of authentication to be used.\n'digest' for digest authentication.","type":"string"},{"const":"password_grant","description":"The type of authentication to be used.\n'password_grant' for password_grant authentication.","type":"string"}],"description":"The type of authentication to be used.\n'client-credentials' for client_credentials authentication."},"useBasicAuthPost":{"anyOf":[{"description":"When set to true, the clientId and clientSecret will be sent as basic auth header, instead of in the post body.","type":"boolean"},{"default":false,"description":"Use basic authentication for the post request.","type":"boolean"}],"description":"When set to true, the clientId and clientSecret will be sent as basic auth header, instead of in the post body."}},"type":"object"},"body":{"anyOf":[{"$ref":"#/definitions/ResolvableObject"},{"items":{"$ref":"#/definitions/ResolvableObject"},"type":"array"}],"description":"Specifies the body of the HTTP request.\nAn object or array of objects to be send with the HTTP request. All variables defined as {name} are replaced with the corresponding values\nWhen the property: \"_nim_merge_attributes_\" is found, it is will be replaced with the input data, except when the property is set to false.\nin that case the input data will not be merged with the specified body at all."},"call":{"$ref":"#/definitions/CallConfig","description":"Specifies how the HTTP request should be constructed and executed."},"disableCompression":{"default":false,"description":"When specified no gzip accept header will be send. Some REST systems have issues with gzip compression, so this can be used\nto prevent that. When not specified, the default is to allow gzip encoding.","type":"boolean"},"mergeOutput":{"description":"Specifies whether the output of the operation should be merged with the input data.","type":"boolean"},"method":{"const":"patch","description":"The HTTP method to be used for the operation.\n'patch' for PATCH methods.","type":"string"},"postAsForm":{"description":"Specifies whether the body should be sent as urlencoded form data. ('application/x-www-form-urlencoded')","type":"boolean"},"processing_options":{"$ref":"#/definitions/IProcessingOptions","description":"Specifies how the results of the HTTP request should be interpreted."},"removeBlankFields":{"description":"Specifies whether blank fields should be removed from the body of the HTTP request.","type":"boolean"},"resource_allowance_default":{"$ref":"#/definitions/AllowanceText","default":"undefined","description":"Specifies what the default allowance is for the NIM mapping is, based on this operation.","examples":["optional"]},"resource_mandatory":{"description":"Specifies which items from the \"resources\" object are mandatory to be used in this operation.\nFor operations with the \"update\" semantic only one resource is allowed to be mandatory.","items":{"type":"string"},"type":"array"},"resource_prohibited":{"description":"Specifies which items from the \"resources\" object are prohibited from being used in this operation.\nThis influences which attributes are shown in the Mapping in the NIM Studio.","items":{"type":"string"},"type":"array"},"scimProtocol":{"description":"Specific for connectors like SAP Concur API where the PATCH operation needs an array of operations instead of a single object,\nas described in RFC 7644 (https://tools.ietf.org/html/rfc7644#section-3.5.2).","type":"boolean"},"semantics":{"$ref":"#/definitions/NimTableCallSemantics","default":"get","description":"Specifies the semantics of the operation. When not specified 'get' semantics are assumed."},"skipEmptyBody":{"default":false,"description":"Specifies whether an empty body should be sent when the body is an empty object or array. When set to true, call will be made, and the input will be treated as the result.","type":"boolean"},"warning_only":{"description":"Specifies which HTTP status codes are considered warning only.","items":{"type":"number"},"type":"array"}},"required":["call","method"],"type":"object"},"IPostOperationConfig":{"additionalProperties":false,"description":"The POST operation is mostly used when the create mapping is executed. The name of this function will be used to show in the NIM Studio.","properties":{"authOptions":{"additionalProperties":false,"default":"undefined","description":"Extend the authentication options for this operation.","examples":[{"scopes":["https://www.googleapis.com/auth/admin.directory.user"]}],"properties":{"JWT":{"$ref":"#/definitions/JWTOptionsType","description":"The JWT options to be used in the authentication.\nThe key is a JWT option the value the value or an an object to describe how to determine the value.\nWhen the value is an object with the property \"name\" the value will be replaced depending on the name.\n\nThe following names are supported:\n\n- now: The current date and time\n- guid: A new UUID\n- oneHour: The current date and time plus one hour\n- endpoint: The endpoint to be used\n- scope: The scope to be used\n- tenantId: The tenantId to be used\n- clientId: The clientId to be used","examples":[{"aud":{"name":"endpoint"},"exp":{"name":"oneHour"},"iat":{"name":"now"},"iss":{"name":"clientId"},"scope":{"name":"scope"},"sub":{"name":"tenantId"}}]},"algorithm":{"$ref":"#/definitions/DigestAlgorithm","default":"MD5","description":"The algorithm to be used for the digest authentication."},"allowedHosts":{"description":"When specified, the token will not be send to hosts not in this list.","items":{"type":"string"},"type":"array"},"authUrl":{"description":"The URL to authenticate against, for example to retrieve some kind of authentication token from.","type":"string"},"cnonceSize":{"default":32,"description":"The size of the cnonce to be used.","type":"number"},"dataToVariables":{"additionalProperties":{"type":"string"},"description":"The result data to store in variables, available to use in the rest calls.\nThe key in the object is the variable name, the value is the JSON path to the value in the response.\nThe path will be prefixed with '$.'","examples":[{"myVariable":"credentials.result.id"}],"type":"object"},"directToken":{"deprecated":"Nim handles this automatically","description":"Send a token at the first call, instead of sending a request and handle the unauth response.\n*deprecated* Nim handles this automatically","type":"boolean"},"expiresPath":{"description":"The JSON path to the expires property in the response.\nIf not specified the token will expire after one hour.\nIf specified the path will be prefixed with '$.'","examples":["credentials.expires"],"type":"string"},"extraParameters":{"additionalProperties":{"type":"string"},"description":"The result data to store in variables, available to use in the rest calls.\nThe key in the object is the variable name, the value is the JSON path to the value in the response.\nThe path will be prefixed with '$.'","examples":[{"geolocation":"geolocation"}],"type":"object"},"extraTokenRequestData":{"additionalProperties":{"type":"string"},"description":"Extra data to be sent in the post request. When requesting the access_token.","examples":[{"credtype":"authtoken"}],"type":"object"},"grantType":{"default":"client_credentials","description":"The oauth2 grant type to be used in the authentication. If not specified 'client_credentials' will be used.","type":"string"},"headerName":{"default":"Authorization","description":"The name of the header used to send the token with the REST requests.","examples":["X-Token"],"type":"string"},"headerTemplate":{"default":"Bearer {token}","description":"The template to be used to replace the variables in the header.","examples":["{token}"],"type":"string"},"httpVerb":{"$ref":"#/definitions/HttpVerb","default":"post","description":"The HTTP verb to be used for the post request.","examples":["get"]},"loginUrl":{"description":"The URL to redirect to when the user clicks the login button in the NIM Studio.\nThe {scopes} can be used to be replaced by the specified scopes.","type":"string"},"postAsForm":{"default":false,"description":"The post data should be send form encoded instead of JSON.","type":"boolean"},"postData":{"anyOf":[{"$ref":"#/definitions/PostDataOptionsType","description":"The data to send in the post request.\nThe key is the name of the property, the value is the value or an an object to describe how to determine the value.\nWhen the value is an object with the property \"name\" the value will be replaced depending on the name.\nThe following specific names are supported:\n\n- JWT: The JWT token\n- clientId: The clientId\n- tenantId: The tenantId\n- scope: The scope\n- endpoint: The endpoint\n- now: The current date and time\n- oneHour: The current date and time plus one hour\n- guid: A new UUID"},{"additionalProperties":{},"description":"The post data to be sent to the authUrl.\nWhen the httpVerb is 'get' or 'delete' the post data will be ignored.","examples":[{"userName":"{userName}"}],"type":"object"}],"description":"The data to send in the post request.\nThe key is the name of the property, the value is the value or an an object to describe how to determine the value.\nWhen the value is an object with the property \"name\" the value will be replaced depending on the name.\nThe following specific names are supported:\n\n- JWT: The JWT token\n- clientId: The clientId\n- tenantId: The tenantId\n- scope: The scope\n- endpoint: The endpoint\n- now: The current date and time\n- oneHour: The current date and time plus one hour\n- guid: A new UUID"},"postHeaders":{"additionalProperties":{},"description":"The headers to be sent to the authUrl.","type":"object"},"precomputedHash":{"description":"Set to true when the password is not the real password, but already the computed hash to be used.","type":"boolean"},"scopes":{"description":"The oauth2 scopes to be used in the authentication.","items":{"type":"string"},"type":"array"},"tokenPath":{"description":"The JSON path to the token property in the response.\nIf not specified the whole response will be used as token.\nIf specified the path will be prefixed with '$.'","examples":["credentials.token"],"type":"string"},"treat500AsAuthError":{"description":"Specify if an HTTP 500 response should be treated as an authentication error.","type":"boolean"},"type":{"anyOf":[{"const":"client-credentials","description":"The type of authentication to be used.\n'client-credentials' for client_credentials authentication.","type":"string"},{"const":"signed-jwt","description":"The type of authentication to be used.\n'signed-jwt' for signed-jwt authentication.","type":"string"},{"const":"jwt","description":"The type of authentication to be used.\n'jwt' for jwt authentication.","type":"string"},{"const":"custom_post_token","description":"The type of authentication to be used.\n'custom-post-token' for custom-post-token authentication.","type":"string"},{"const":"authorization_code_grant","description":"The type of authentication to be used.\n'authorization-code-grant' for authorization_code_grant authentication.","type":"string"},{"const":"digest","description":"The type of authentication to be used.\n'digest' for digest authentication.","type":"string"},{"const":"password_grant","description":"The type of authentication to be used.\n'password_grant' for password_grant authentication.","type":"string"}],"description":"The type of authentication to be used.\n'client-credentials' for client_credentials authentication."},"useBasicAuthPost":{"anyOf":[{"description":"When set to true, the clientId and clientSecret will be sent as basic auth header, instead of in the post body.","type":"boolean"},{"default":false,"description":"Use basic authentication for the post request.","type":"boolean"}],"description":"When set to true, the clientId and clientSecret will be sent as basic auth header, instead of in the post body."}},"type":"object"},"body":{"anyOf":[{"$ref":"#/definitions/ResolvableObject"},{"items":{"$ref":"#/definitions/ResolvableObject"},"type":"array"}],"description":"Specifies the body of the HTTP request.\nAn object or array of objects to be send with the HTTP request. All variables defined as {name} are replaced with the corresponding values\nWhen the property: \"_nim_merge_attributes_\" is found, it is will be replaced with the input data, except when the property is set to false.\nin that case the input data will not be merged with the specified body at all."},"call":{"$ref":"#/definitions/CallConfig","description":"Specifies how the HTTP request should be constructed and executed."},"disableCompression":{"default":false,"description":"When specified no gzip accept header will be send. Some REST systems have issues with gzip compression, so this can be used\nto prevent that. When not specified, the default is to allow gzip encoding.","type":"boolean"},"mergeOutput":{"description":"Specifies whether the output of the operation should be merged with the input data.","type":"boolean"},"method":{"const":"post","description":"The HTTP method to be used for the operation.\n'post' for POST methods.","type":"string"},"postAsForm":{"description":"Specifies whether the body should be sent as urlencoded form data. ('application/x-www-form-urlencoded')","type":"boolean"},"processing_options":{"$ref":"#/definitions/IProcessingOptions","description":"Specifies how the results of the HTTP request should be interpreted."},"removeBlankFields":{"description":"Specifies whether blank fields should be removed from the body of the HTTP request.","type":"boolean"},"resource_allowance_default":{"$ref":"#/definitions/AllowanceText","default":"undefined","description":"Specifies what the default allowance is for the NIM mapping is, based on this operation.","examples":["optional"]},"resource_mandatory":{"description":"Specifies which items from the \"resources\" object are mandatory to be used in this operation.\nFor operations with the \"update\" semantic only one resource is allowed to be mandatory.","items":{"type":"string"},"type":"array"},"resource_prohibited":{"description":"Specifies which items from the \"resources\" object are prohibited from being used in this operation.\nThis influences which attributes are shown in the Mapping in the NIM Studio.","items":{"type":"string"},"type":"array"},"semantics":{"$ref":"#/definitions/NimTableCallSemantics","default":"get","description":"Specifies the semantics of the operation. When not specified 'get' semantics are assumed."},"skipEmptyBody":{"default":false,"description":"Specifies whether an empty body should be sent when the body is an empty object or array. When set to true, call will be made, and the input will be treated as the result.","type":"boolean"},"warning_only":{"description":"Specifies which HTTP status codes are considered warning only.","items":{"type":"number"},"type":"array"}},"required":["call","method"],"type":"object"},"IProcessingOptions":{"additionalProperties":false,"properties":{"keyValue":{"$ref":"#/definitions/RestKeyValueConfig","description":"Set to true when the result is a single object with key value pairs, or specify an object with the key and value column names.\nWhen true is specified, the names of the columns are assumed to be 'key' and 'value'.","examples":["{ keyColumnName: 'org_key', valueColumnName: 'org_name' }"]},"output_field":{"description":"The JSON path of the field where the output is located.\r\nThe value specified here is always prefixed with '$.'.\r\nWhen not specified, the value is assumed to be the table name.\r\n\r\nFor the Google connector:\r\nThis is the field in the output object where the result is located, if not specified the result is assumed to be in the table name.\r\nwhen null is specified the result is assumed to be in the root of the output object.","examples":["field.subfield"],"type":["string","null"]},"stringArrayColumnName":{"description":"When the result is an array, this specifies the name of the column that will contain the array of strings.","type":"string"}},"type":"object"},"IPutOperationConfig":{"additionalProperties":false,"description":"The PUT operation is mostly used when the update mapping is executed. The name of this function will be used to show in the NIM Studio.","properties":{"authOptions":{"additionalProperties":false,"default":"undefined","description":"Extend the authentication options for this operation.","examples":[{"scopes":["https://www.googleapis.com/auth/admin.directory.user"]}],"properties":{"JWT":{"$ref":"#/definitions/JWTOptionsType","description":"The JWT options to be used in the authentication.\nThe key is a JWT option the value the value or an an object to describe how to determine the value.\nWhen the value is an object with the property \"name\" the value will be replaced depending on the name.\n\nThe following names are supported:\n\n- now: The current date and time\n- guid: A new UUID\n- oneHour: The current date and time plus one hour\n- endpoint: The endpoint to be used\n- scope: The scope to be used\n- tenantId: The tenantId to be used\n- clientId: The clientId to be used","examples":[{"aud":{"name":"endpoint"},"exp":{"name":"oneHour"},"iat":{"name":"now"},"iss":{"name":"clientId"},"scope":{"name":"scope"},"sub":{"name":"tenantId"}}]},"algorithm":{"$ref":"#/definitions/DigestAlgorithm","default":"MD5","description":"The algorithm to be used for the digest authentication."},"allowedHosts":{"description":"When specified, the token will not be send to hosts not in this list.","items":{"type":"string"},"type":"array"},"authUrl":{"description":"The URL to authenticate against, for example to retrieve some kind of authentication token from.","type":"string"},"cnonceSize":{"default":32,"description":"The size of the cnonce to be used.","type":"number"},"dataToVariables":{"additionalProperties":{"type":"string"},"description":"The result data to store in variables, available to use in the rest calls.\nThe key in the object is the variable name, the value is the JSON path to the value in the response.\nThe path will be prefixed with '$.'","examples":[{"myVariable":"credentials.result.id"}],"type":"object"},"directToken":{"deprecated":"Nim handles this automatically","description":"Send a token at the first call, instead of sending a request and handle the unauth response.\n*deprecated* Nim handles this automatically","type":"boolean"},"expiresPath":{"description":"The JSON path to the expires property in the response.\nIf not specified the token will expire after one hour.\nIf specified the path will be prefixed with '$.'","examples":["credentials.expires"],"type":"string"},"extraParameters":{"additionalProperties":{"type":"string"},"description":"The result data to store in variables, available to use in the rest calls.\nThe key in the object is the variable name, the value is the JSON path to the value in the response.\nThe path will be prefixed with '$.'","examples":[{"geolocation":"geolocation"}],"type":"object"},"extraTokenRequestData":{"additionalProperties":{"type":"string"},"description":"Extra data to be sent in the post request. When requesting the access_token.","examples":[{"credtype":"authtoken"}],"type":"object"},"grantType":{"default":"client_credentials","description":"The oauth2 grant type to be used in the authentication. If not specified 'client_credentials' will be used.","type":"string"},"headerName":{"default":"Authorization","description":"The name of the header used to send the token with the REST requests.","examples":["X-Token"],"type":"string"},"headerTemplate":{"default":"Bearer {token}","description":"The template to be used to replace the variables in the header.","examples":["{token}"],"type":"string"},"httpVerb":{"$ref":"#/definitions/HttpVerb","default":"post","description":"The HTTP verb to be used for the post request.","examples":["get"]},"loginUrl":{"description":"The URL to redirect to when the user clicks the login button in the NIM Studio.\nThe {scopes} can be used to be replaced by the specified scopes.","type":"string"},"postAsForm":{"default":false,"description":"The post data should be send form encoded instead of JSON.","type":"boolean"},"postData":{"anyOf":[{"$ref":"#/definitions/PostDataOptionsType","description":"The data to send in the post request.\nThe key is the name of the property, the value is the value or an an object to describe how to determine the value.\nWhen the value is an object with the property \"name\" the value will be replaced depending on the name.\nThe following specific names are supported:\n\n- JWT: The JWT token\n- clientId: The clientId\n- tenantId: The tenantId\n- scope: The scope\n- endpoint: The endpoint\n- now: The current date and time\n- oneHour: The current date and time plus one hour\n- guid: A new UUID"},{"additionalProperties":{},"description":"The post data to be sent to the authUrl.\nWhen the httpVerb is 'get' or 'delete' the post data will be ignored.","examples":[{"userName":"{userName}"}],"type":"object"}],"description":"The data to send in the post request.\nThe key is the name of the property, the value is the value or an an object to describe how to determine the value.\nWhen the value is an object with the property \"name\" the value will be replaced depending on the name.\nThe following specific names are supported:\n\n- JWT: The JWT token\n- clientId: The clientId\n- tenantId: The tenantId\n- scope: The scope\n- endpoint: The endpoint\n- now: The current date and time\n- oneHour: The current date and time plus one hour\n- guid: A new UUID"},"postHeaders":{"additionalProperties":{},"description":"The headers to be sent to the authUrl.","type":"object"},"precomputedHash":{"description":"Set to true when the password is not the real password, but already the computed hash to be used.","type":"boolean"},"scopes":{"description":"The oauth2 scopes to be used in the authentication.","items":{"type":"string"},"type":"array"},"tokenPath":{"description":"The JSON path to the token property in the response.\nIf not specified the whole response will be used as token.\nIf specified the path will be prefixed with '$.'","examples":["credentials.token"],"type":"string"},"treat500AsAuthError":{"description":"Specify if an HTTP 500 response should be treated as an authentication error.","type":"boolean"},"type":{"anyOf":[{"const":"client-credentials","description":"The type of authentication to be used.\n'client-credentials' for client_credentials authentication.","type":"string"},{"const":"signed-jwt","description":"The type of authentication to be used.\n'signed-jwt' for signed-jwt authentication.","type":"string"},{"const":"jwt","description":"The type of authentication to be used.\n'jwt' for jwt authentication.","type":"string"},{"const":"custom_post_token","description":"The type of authentication to be used.\n'custom-post-token' for custom-post-token authentication.","type":"string"},{"const":"authorization_code_grant","description":"The type of authentication to be used.\n'authorization-code-grant' for authorization_code_grant authentication.","type":"string"},{"const":"digest","description":"The type of authentication to be used.\n'digest' for digest authentication.","type":"string"},{"const":"password_grant","description":"The type of authentication to be used.\n'password_grant' for password_grant authentication.","type":"string"}],"description":"The type of authentication to be used.\n'client-credentials' for client_credentials authentication."},"useBasicAuthPost":{"anyOf":[{"description":"When set to true, the clientId and clientSecret will be sent as basic auth header, instead of in the post body.","type":"boolean"},{"default":false,"description":"Use basic authentication for the post request.","type":"boolean"}],"description":"When set to true, the clientId and clientSecret will be sent as basic auth header, instead of in the post body."}},"type":"object"},"body":{"anyOf":[{"$ref":"#/definitions/ResolvableObject"},{"items":{"$ref":"#/definitions/ResolvableObject"},"type":"array"}],"description":"Specifies the body of the HTTP request.\nAn object or array of objects to be send with the HTTP request. All variables defined as {name} are replaced with the corresponding values\nWhen the property: \"_nim_merge_attributes_\" is found, it is will be replaced with the input data, except when the property is set to false.\nin that case the input data will not be merged with the specified body at all."},"call":{"$ref":"#/definitions/CallConfig","description":"Specifies how the HTTP request should be constructed and executed."},"disableCompression":{"default":false,"description":"When specified no gzip accept header will be send. Some REST systems have issues with gzip compression, so this can be used\nto prevent that. When not specified, the default is to allow gzip encoding.","type":"boolean"},"mergeOutput":{"description":"Specifies whether the output of the operation should be merged with the input data.","type":"boolean"},"method":{"const":"put","description":"The HTTP method to be used for the operation.\n'put' for PUT methods.","type":"string"},"postAsForm":{"description":"Specifies whether the body should be sent as urlencoded form data. ('application/x-www-form-urlencoded')","type":"boolean"},"processing_options":{"$ref":"#/definitions/IProcessingOptions","description":"Specifies how the results of the HTTP request should be interpreted."},"removeBlankFields":{"description":"Specifies whether blank fields should be removed from the body of the HTTP request.","type":"boolean"},"resource_allowance_default":{"$ref":"#/definitions/AllowanceText","default":"undefined","description":"Specifies what the default allowance is for the NIM mapping is, based on this operation.","examples":["optional"]},"resource_mandatory":{"description":"Specifies which items from the \"resources\" object are mandatory to be used in this operation.\nFor operations with the \"update\" semantic only one resource is allowed to be mandatory.","items":{"type":"string"},"type":"array"},"resource_prohibited":{"description":"Specifies which items from the \"resources\" object are prohibited from being used in this operation.\nThis influences which attributes are shown in the Mapping in the NIM Studio.","items":{"type":"string"},"type":"array"},"semantics":{"$ref":"#/definitions/NimTableCallSemantics","default":"get","description":"Specifies the semantics of the operation. When not specified 'get' semantics are assumed."},"skipEmptyBody":{"default":false,"description":"Specifies whether an empty body should be sent when the body is an empty object or array. When set to true, call will be made, and the input will be treated as the result.","type":"boolean"},"warning_only":{"description":"Specifies which HTTP status codes are considered warning only.","items":{"type":"number"},"type":"array"}},"required":["call","method"],"type":"object"},"IQueryParamConfig":{"additionalProperties":false,"properties":{"doNotSendIfEmpty":{"default":false,"description":"When set to true and the value of a query parameter is undefined, false, or an empty string, the parameter is not send at all. \nThis can be useful for parameters that are variables and should only be send when the variable has a value.","type":"boolean"}},"type":"object"},"IQueryParamValue":{"anyOf":[{"additionalProperties":false,"properties":{"type":{"const":"response_field","description":"The type of the value specification\r\n'response_field' indicates that the value is to be extracted from the response data.","type":"string"},"value":{"description":"The JSON path of attribute in the response data that contains the value to be used.\r\nThe value specified here is always prefixed with '$.'.","type":"string"}},"required":["type","value"],"type":"object"},{"additionalProperties":false,"properties":{"type":{"const":"constant","description":"The type of the value specification\r\n'constant' indicates that the value is a constant.","type":"string"},"value":{"description":"The constant value to be used.","type":"string"}},"required":["type","value"],"type":"object"}]},"IRestAuthOptions":{"anyOf":[{"$ref":"#/definitions/IJsonAuthOptionsClientCredentials"},{"$ref":"#/definitions/IJsonAuthOptionsSignedJWT"},{"$ref":"#/definitions/IJsonAuthOptionsJWT"},{"$ref":"#/definitions/IJsonAuthOptionsCustomPostToken"},{"$ref":"#/definitions/IJsonAuthOptionsAuthorizationGrantCodeToken"},{"$ref":"#/definitions/IJsonAuthOptionsDigest"},{"$ref":"#/definitions/IJsonAuthOptionsPasswordGrant"}]},"IRestJsonSchema":{"additionalProperties":false,"properties":{"$schema":{"type":"string"},"config_scenarios":{"description":"Specification of the scenarios for this connector. Those can be generated by the NIM Studio and should not be modified manually.","items":{"$ref":"#/definitions/IConfigScenarioBase"},"type":"array"},"connection":{"$ref":"#/definitions/ConnectionInfo","description":"Extra interface configuration for the REST connection tab in the NIM Studio."},"rest":{"$ref":"#/definitions/IRestSettings","description":"The generic REST configuration, including default authentication and paging settings, which can be overridden per REST call."},"schema":{"additionalProperties":false,"properties":{"crud_objects":{"additionalProperties":{"$ref":"#/definitions/ICrudConfig","description":"The table name in NIM with all its configuration."},"description":"The keys defined inside this object represent the names of the table in NIM.","type":"object"}},"required":["crud_objects"],"type":"object"},"version":{"description":"The version of the REST configuration. When uploading connectors to Github please do not specify this field.\r\nIt will be automatically generated when the connector is downloaded with the NIM Studio.","type":"string"}},"required":["schema","rest"],"type":"object"},"IRestResource":{"anyOf":[{"type":"string"},{"items":{"anyOf":[{"type":"string"},{"additionalProperties":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"maxItems":1,"minItems":1,"type":"array"},{"$ref":"#/definitions/IRestResource"}]},"propertyNames":{"pattern":"^((?!_nim_mode_).)*$"},"type":"object"}]},"type":"array"},{"$ref":"#/definitions/IRestResourceObjectBase"}]},"IRestResourceObject":{"anyOf":[{"$ref":"#/definitions/IRestResourceObjectDefault"},{"$ref":"#/definitions/IRestResourceObjectArrayElementUpdate"},{"$ref":"#/definitions/IRestResourceObjectArrayUpdate"}]},"IRestResourceObjectArrayElementUpdate":{"additionalProperties":false,"properties":{"_nim_mode_":{"const":"array_element_update","description":"This array element needs to be updated with different REST api calls.","type":"string"},"config":{"$ref":"#/definitions/IRestResource","description":"The type of array elements.","markdownDescription":"The type of array elements."},"handler":{"additionalProperties":false,"description":"The handler to be used for the array element update.","properties":{"add":{"additionalProperties":false,"description":"The add operation to be used for the array element update.","properties":{"attributes":{"additionalProperties":{"description":"The key is the name of the attribute from the resource, which should be used for the operation.\r\nWhen the value is a text, the value from the current resource is used.\r\nWhen the value is \"_nim_element_value_\" the value of the current array_element is used.","type":"string"},"description":"The attributes to be used for the add operation.","examples":[{"alias":"_nim_element_value_","id":"id"}],"type":"object"},"operation":{"description":"The name of the operation, as defined in the operations configuration, to add the alias to this array.","type":"string"}},"required":["operation","attributes"],"type":"object"},"crud_object":{"deprecated":true,"type":"string"},"remove":{"additionalProperties":false,"description":"The remove operation to be used for the array element update.","properties":{"attributes":{"additionalProperties":{"description":"The key is the name of the attribute from the resource, which should be used for the operation.\r\nWhen the value is a text, the value from the current resource is used.\r\nWhen the value is \"_nim_element_value_\" the value of the current array_element is used.","type":"string"},"description":"The attributes to be used for the remove operation.","examples":[{"alias":"_nim_element_value_","id":"id"}],"type":"object"},"operation":{"description":"The name of the operation, as defined in the operations configuration, to remove the alias from this array.","type":"string"}},"required":["operation","attributes"],"type":"object"}},"required":["crud_object","add","remove"],"type":"object"}},"required":["_nim_mode_","handler","config"],"type":"object"},"IRestResourceObjectArrayUpdate":{"additionalProperties":false,"properties":{"_nim_mode_":{"const":"array_update","description":"Update an array resource by merging the desired elements with the current full\narray from the destination system, then sending the complete merged array in a single API call.\nThis is required for APIs that do not support partial array updates (e.g. IncidentIQ custom fields).","type":"string"},"config":{"$ref":"#/definitions/IRestResource","description":"The element type of the array, used to describe the resource for GET operations."},"handler":{"additionalProperties":false,"description":"Handler configuration.","properties":{"attributes":{"additionalProperties":{"description":"Maps the attribute name to send in the operation call to the source field name\nin functionNameValues or resultObject. Most commonly these are identical (e.g. \"UserId\": \"UserId\").","type":"string"},"description":"Attributes to pass to the operation, beside the merged array itself.\nEach entry maps an attribute name (key) to the field to retrieve its value from\nfunctionNameValues or resultObject (value).","examples":[{"UserId":"UserId"}],"type":"object"},"operation":{"description":"The operation to call with the fully merged array.","type":"string"}},"required":["operation","attributes"],"type":"object"}},"required":["_nim_mode_","handler","config"],"type":"object"},"IRestResourceObjectBase":{"additionalProperties":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"maxItems":1,"minItems":1,"type":"array"},{}]},"propertyNames":{"pattern":"^((?!_nim_mode_).)*$"},"type":"object"},"IRestResourceObjectDefault":{"additionalProperties":false,"properties":{"_nim_mode_":{"const":"default","description":"The object to be used for array element update.","type":"string"},"config":{"$ref":"#/definitions/IRestResource"}},"required":["_nim_mode_","config"],"type":"object"},"IRestResources":{"additionalProperties":{"anyOf":[{"$ref":"#/definitions/IRestResourceObject"},{"$ref":"#/definitions/IRestResource"}],"description":"The name of the resource as returned by the REST API. The key path will be used as the column name in the NIM Studio.\r\n\r\nWhen the key path contains a colon (:) the part before the colon is used as the alternative name of the resource in NIM. All other colons are ignored.\r\nand considered part of the name."},"type":"object"},"IRestSelectorConfig":{"anyOf":[{"$ref":"#/definitions/IRestSelectorConfigNone"},{"$ref":"#/definitions/IRestSelectorConfigObjects"},{"$ref":"#/definitions/IRestSelectorConfigArray"}]},"IRestSelectorConfigArray":{"additionalProperties":false,"properties":{"array":{"default":"","description":"The name of the query-parameter to retrieve the selected field names. The name will be repeated for each field with an index added to it.\r\nSo if the name is 'fields' and the selected fields are 'name' and 'age' the query-parameter will be 'fields[0]=name&fields[1]=age'.","type":"string"},"excludedFields":{"description":"The fields to exclude from the selection to be send over.","items":{"type":"string"},"type":"array"},"mode":{"const":"array","description":"The mode of the selector.\r\n'array' for array selector.","type":"string"}},"required":["mode"],"type":"object"},"IRestSelectorConfigNone":{"additionalProperties":false,"properties":{"mode":{"const":"none","description":"The mode of the selector.\r\n'none' or undefined for no selector.","type":"string"}},"type":"object"},"IRestSelectorConfigObjects":{"additionalProperties":false,"properties":{"mode":{"const":"objects","description":"The mode of the selector.\r\n'objects' for object selector.","type":"string"},"parameter":{"description":"The name of the query-parameter, to retrieve a string with the comma separated list of object names.\r\nSo if the name is 'fields' and the selected fields are 'person' and 'address' the query-parameter will be 'fields=person,address'.","type":"string"}},"required":["mode"],"type":"object"},"IRestSettings":{"additionalProperties":false,"properties":{"authOptions":{"$ref":"#/definitions/IRestAuthOptions","description":"The authentication options for the rest calls to be made"},"config":{"additionalProperties":false,"description":"The default configuration for the rest calls to be made","properties":{"accept":{"default":"application/json,application/xml","description":"The value of the accept header when sending requests to the endpoint.","type":"string"},"authentication":{"$ref":"#/definitions/AuthTypes","description":"The authentication type for the rest calls to be made\r\nThe specific options for each authentication type can be configured in the authOptions property."},"baseUrl":{"description":"The base URL to be used for the rest calls to be made.","type":"string"},"call_handling":{"$ref":"#/definitions/RestCallHandling","default":"generic","description":"The handling of the rest calls. This can be \"google\", \"azure\" or \"generic\".\r\nSpecify \"generic\" except for the Google and Azure connectors.","examples":["generic"]},"get":{"additionalProperties":false,"description":"The default configuration for the GET calls to be made.","properties":{"maxPageCount":{"description":"The maximum number of pages to be retrieved in a single call.","type":"number"},"pagination":{"$ref":"#/definitions/PaginatorConfig","description":"The configuration for the pagination of the GET calls."},"queryParameters":{"$ref":"#/definitions/RestQueryParameters","description":"The parameters to be used in the query string of the HTTP request"},"queryParametersConfig":{"$ref":"#/definitions/IQueryParamConfig","description":"Configuration for query parameter handling, for example to not send empty parameters.","examples":[{"doNotSendIfEmpty":true}]},"query_parameters":{"$ref":"#/definitions/RestQueryParameters","deprecated":"Use queryParameters instead","description":"The parameters to be used in the query string of the HTTP request\n*deprecated* Use queryParameters instead"},"selector":{"$ref":"#/definitions/IRestSelectorConfig","description":"The selector configuration for the GET calls. \r\nWhen a user select some columns of a table, it is often preferred to request only the selected columns from the endpoint.\r\nThis specifies how the selected columns should be communicated to the endpoint."}},"type":"object"},"headers":{"description":"The headers to be included in the rest calls to be made."},"maxCallsPerMinute":{"description":"The maximum number of calls that can be made to this REST system in a minute.","type":"number"},"no_keep_alive":{"description":"Specifies whether to disable the keep alive functionality.","type":"boolean"},"postAsForm":{"description":"Specifies whether the body should be sent as urlencoded form data. ('application/x-www-form-urlencoded')","type":"boolean"},"retry":{"description":"The retry configuration for the rest calls to be made.","items":{"$ref":"#/definitions/iRetryConfiguration"},"type":"array"},"socket_timeout":{"description":"The number of seconds to wait before timing out the connection.","type":"number"},"sslLegacyProtocols":{"default":false,"description":"Specifies whether to use the legacy SSL protocols.\r\nBy default NIM will not use any legacy protocols when communicating with external systems. However some systems may still require the use of legacy protocols.","type":"boolean"},"test_connection":{"additionalProperties":false,"description":"The URL to be used to test the connection to the endpoint.","properties":{"url":{"description":"The URL to be used to test the connection to the endpoint.","type":"string"}},"required":["url"],"type":"object"},"wizard":{"$ref":"#/definitions/IRestWizardConfig","description":"The configuration for the wizard to be used when creating a new REST system in the UI.\r\ncurrently this is only supported for Graph based connectors."}},"required":["call_handling","authentication","get","test_connection"],"type":"object"}},"required":["config"],"type":"object"},"IRestWizardConfig":{"$ref":"#/definitions/IRestWizardConfigEntra"},"IRestWizardConfigEntra":{"additionalProperties":false,"properties":{"permissions":{"items":{"type":"string"},"type":"array"},"type":{"const":"entra","type":"string"}},"required":["type","permissions"],"type":"object"},"ISysColBase":{"properties":{"col_name":{"type":"string"},"container":{"type":"string"},"fields":{"items":{"properties":{"field_name":{"type":"string"}},"required":["field_name"],"type":"object"},"type":"array"},"name_values":{"items":{"additionalProperties":false,"properties":{"name":{"type":"string"},"value":{}},"required":["name","value"],"type":"object"},"type":"array"}},"required":["col_name","fields","name_values"],"type":"object"},"JWTOptionsType":{"additionalProperties":{"anyOf":[{"type":"string"},{"$ref":"#/definitions/Variable"},{"format":"date-time","type":"string"},{"type":"number"}]},"type":"object"},"NVJson":{"additionalProperties":false,"properties":{"name":{"type":"string"},"value":{}},"required":["name"],"type":"object"},"NimTableCallSemantics":{"enum":["create","delete","update","set","get",""],"type":"string"},"PaginatorConfig":{"anyOf":[{"$ref":"#/definitions/IPaginatorGenericConfig"},{"$ref":"#/definitions/IPaginatorLinkConfig"},{"$ref":"#/definitions/IPaginatorSkipTakeConfig"},{"$ref":"#/definitions/IPaginatorUrlConfig"}]},"PostDataOptionsType":{"additionalProperties":{"anyOf":[{"type":"string"},{"$ref":"#/definitions/Variable"}]},"type":"object"},"ResolvableObject":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"},{"items":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"}]},"type":"array"},{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"},{"items":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"}]},"type":"array"},{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"},{"items":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"}]},"type":"array"},{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"},{"items":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"}]},"type":"array"},{"items":{"not":{}},"type":"array"}]},"type":"object"},{"items":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"},{"items":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"}]},"type":"array"},{"items":{"not":{}},"type":"array"}]},"type":"object"},"type":"array"}]},"type":"object"},{"items":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"},{"items":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"}]},"type":"array"},{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"},{"items":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"}]},"type":"array"},{"items":{"not":{}},"type":"array"}]},"type":"object"},{"items":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"},{"items":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"}]},"type":"array"},{"items":{"not":{}},"type":"array"}]},"type":"object"},"type":"array"}]},"type":"object"},"type":"array"}]},"type":"object"},{"items":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"},{"items":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"}]},"type":"array"},{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"},{"items":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"}]},"type":"array"},{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"},{"items":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"}]},"type":"array"},{"items":{"not":{}},"type":"array"}]},"type":"object"},{"items":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"},{"items":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"}]},"type":"array"},{"items":{"not":{}},"type":"array"}]},"type":"object"},"type":"array"}]},"type":"object"},{"items":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"},{"items":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"}]},"type":"array"},{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"},{"items":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"}]},"type":"array"},{"items":{"not":{}},"type":"array"}]},"type":"object"},{"items":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"},{"items":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"not":{}},{"type":"null"}]},"type":"array"},{"items":{"not":{}},"type":"array"}]},"type":"object"},"type":"array"}]},"type":"object"},"type":"array"}]},"type":"object"},"type":"array"}]},"type":"object"},"RestCallHandling":{"enum":["google","azure","generic"],"type":"string"},"RestCallPostProcessingText":{"enum":["normal","child_tables","as_input"],"type":"string"},"RestKeyValueConfig":{"anyOf":[{"const":true,"type":"boolean"},{"additionalProperties":false,"properties":{"keyColumnName":{"default":"key","description":"Specifies the name of the column that will contain the key.","type":"string"},"valueColumnName":{"default":"value","description":"Specifies the name of the column that will contain the value.","type":"string"}},"type":"object"}]},"RestQueryParameters":{"additionalProperties":{},"type":"object"},"Variable":{"additionalProperties":false,"properties":{"name":{"enum":["JWT","clientId","tenantId","scope","endpoint","now","oneHour","guid"],"type":"string"}},"required":["name"],"type":"object"},"iRetryConfiguration":{"anyOf":[{"$ref":"#/definitions/iRetryConfigurationStatus"},{"$ref":"#/definitions/iRetryConfigurationConnectionError"},{"$ref":"#/definitions/iRetryConfigurationRetryAfterError"}]},"iRetryConfigurationConnectionError":{"additionalProperties":false,"properties":{"retry":{"anyOf":[{"additionalProperties":false,"properties":{"maxCount":{"description":"The maximum number of retries to be attempted. This field is optional. \r\nWhen not specified there is no maximum in retries, possible resulting in an endless loop.","type":"number"},"type":{"const":"simple","description":"The type of the retry configuration\r\n'simple' indicates that the retry configuration is based on a simple wait time.","type":"string"},"waitTime":{"description":"The time to wait before retrying in seconds.","type":"number"}},"required":["type","waitTime"],"type":"object"},{"additionalProperties":false,"properties":{"ceiling":{"description":"The maximum time to wait in seconds.","type":"number"},"maxCount":{"description":"The maximum number of retries to be attempted. This field is optional. \r\nWhen not specified there is no maximum in retries, possible resulting in an endless loop.","type":"number"},"timeSlice":{"description":"The time slice in seconds.","type":"number"},"type":{"const":"exponential","description":"The type of the retry configuration\r\n'exponential' indicates that the retry configuration is based on an exponential backoff.","type":"string"}},"required":["type"],"type":"object"}],"description":"The retry configuration\r\nif not specified an empty 'exponential' configuration is assumed."},"type":{"const":"connectionError","description":"The type of the retry configuration\r\n'connectionError' indicates that the retry configuration is based on a connection error.","type":"string"}},"required":["type"],"type":"object"},"iRetryConfigurationRetryAfterError":{"additionalProperties":false,"properties":{"retry":{"anyOf":[{"additionalProperties":false,"properties":{"maxCount":{"description":"The maximum number of retries to be attempted. This field is optional. \r\nWhen not specified there is no maximum in retries, possible resulting in an endless loop.","type":"number"},"type":{"const":"simple","description":"The type of the retry configuration\r\n'simple' indicates that the retry configuration is based on a simple wait time.","type":"string"},"waitTime":{"description":"The time to wait before retrying in seconds.","type":"number"}},"required":["type","waitTime"],"type":"object"},{"additionalProperties":false,"properties":{"ceiling":{"description":"The maximum time to wait in seconds.","type":"number"},"maxCount":{"description":"The maximum number of retries to be attempted. This field is optional. \r\nWhen not specified there is no maximum in retries, possible resulting in an endless loop.","type":"number"},"timeSlice":{"description":"The time slice in seconds.","type":"number"},"type":{"const":"exponential","description":"The type of the retry configuration\r\n'exponential' indicates that the retry configuration is based on an exponential backoff.","type":"string"}},"required":["type"],"type":"object"}],"description":"The retry configuration\r\nif not specified an empty 'exponential' configuration is assumed."},"type":{"const":"retryAfter","description":"The type of the retry configuration\r\n'retryAfter' indicates that the retry configuration is based on the 'Retry-After' header in the response.","type":"string"}},"required":["type"],"type":"object"},"iRetryConfigurationStatus":{"additionalProperties":false,"properties":{"filterPath":{"description":"The JSON path of attribute in the **PROCESSED** response that contains the value to be used for filtering.\r\nThe value specified here is always prefixed with '$.'.\r\nThe raw response data could be accessed using '_errorData.result'","type":"string"},"filterValues":{"description":"The values to be used for filtering.","items":{"type":"string"},"type":"array"},"retry":{"anyOf":[{"additionalProperties":false,"properties":{"maxCount":{"description":"The maximum number of retries to be attempted. This field is optional. \r\nWhen not specified there is no maximum in retries, possible resulting in an endless loop.","type":"number"},"type":{"const":"simple","description":"The type of the retry configuration\r\n'simple' indicates that the retry configuration is based on a simple wait time.","type":"string"},"waitTime":{"description":"The time to wait before retrying in seconds.","type":"number"}},"required":["type","waitTime"],"type":"object"},{"additionalProperties":false,"properties":{"ceiling":{"description":"The maximum time to wait in seconds.","type":"number"},"maxCount":{"description":"The maximum number of retries to be attempted. This field is optional. \r\nWhen not specified there is no maximum in retries, possible resulting in an endless loop.","type":"number"},"timeSlice":{"description":"The time slice in seconds.","type":"number"},"type":{"const":"exponential","description":"The type of the retry configuration\r\n'exponential' indicates that the retry configuration is based on an exponential backoff.","type":"string"}},"required":["type"],"type":"object"}],"description":"The retry configuration\r\nif not specified an empty 'exponential' configuration is assumed."},"statusCode":{"description":"The status code that the retry configuration is for.","type":"number"},"type":{"const":"statusCode","description":"The type of the retry configuration\r\n'statusCode' indicates that the retry configuration is based on the status code of the response.","type":"string"}},"required":["type","statusCode"],"type":"object"}}}