[Index]
Validation Rule relation
Model ref.: relation/ValidationRules
The full URL would include the host-proxy name: https://[host-proxy].
Variables are enclosed in square brackets.
{ "$schema": "http://json-schema.org/draft-03/schema", "type": "object", "properties": { "modelName": { "type": "string", "title": "Model Name" }, "description": { "type": "string", "title": "Description" }, "refreshModels": { "items": { "type": "object", "properties": { "attribute": { "type": "string", "description": "The attribute in the target model to match.", "title": "Find Attribute" }, "modelName": { "type": "string", "title": "Model Name" }, "value": { "type": "string", "description": "The value of the attribute in the target model to match.", "title": "Find Value" } } }, "type": "array", "description": "Refresh data instances prior to applying validation rules. This ensures current data is evaluated.", "title": "Refresh Data" }, "rules": { "items": { "type": "object", "properties": { "hierarchy": { "type": "string", "description": "Optional macro to provide a hierarchy at which to evaluate the rule. If unset, the execution hierarchy will be used.", "title": "Macro Evaluation Hierarchy" }, "attribute": { "type": "string", "title": "Attribute" }, "message": { "type": "string", "title": "Message" }, "rule": { "title": "Rule", "type": "string", "description": "Macro that evaluates to true when required condition is met", "choices": [ { "value": "(( fn.is_none_or_empty pwf.attributeValue == false ))<{{ fn.true }}><{{ fn.false }}>", "title": "Required" }, { "value": "(( fn.lower pwf.attributeValue == pwf.attributeValue ))<{{ fn.true }}><{{ fn.false }}>", "title": "Lower Case Only" }, { "value": "(( fn.upper pwf.attributeValue == pwf.attributeValue ))<{{ fn.true }}><{{ fn.false }}>", "title": "Upper Case Only" }, { "value": "(( fn.length pwf.attributeValue < 32 ))<{{ fn.true }}><{{ fn.false }}>", "title": "Less Than 32 Characters" }, { "value": "(( fn.length pwf.attributeValue < 50 ))<{{ fn.true }}><{{ fn.false }}>", "title": "Less Than 50 Characters" }, { "value": "custom", "title": "Custom - enter macro" } ] } } }, "required": true, "type": "array", "title": "Rules" }, "operation": { "title": "Operation", "type": "string", "choices": [ { "value": "create", "title": "Create" }, { "value": "update", "title": "Update" } ] }, "noInstance": { "type": "object", "properties": { "name": { "is_password": false, "title": "Name", "required": true, "displayable": false, "readonly": false, "maxLength": 1024, "type": "string" } }, "title": "No Instance" } } }
Task | Call | URL | Parameters | Response |
---|---|---|---|---|
Get the GUI Add form. | GET | /api/relation/ValidationRules/add/ |
|
The GUI Add form of relation/ValidationRules as JSON |
The API call to the /add/ URL can only be made from a hierarchy that allows the model type to be added. The actions in the response shows the url for the POST API call to create an instance.
Task | Call | URL | Parameters | Payload |
---|---|---|---|---|
Create | POST | /api/relation/ValidationRules/ | hierarchy=[hierarchy] |
|
tool/Transaction/[trans pkid]to inspect the created resource and its instance pkid.
Task | Call | URL | Parameters | Payload |
---|---|---|---|---|
Bulk delete [pkid1],[pkid2]... | DELETE | /api/relation/ValidationRules/ | hierarchy=[hierarchy] | {"hrefs":["/api/relation/ValidationRules/[pkid1]", "/api/relation/ValidationRules/[pkid2]", ...]} |
GET http://[host-proxy]/api/relation/ValidationRules/?hierarchy=[hierarchy]&format=json
Task | Call | URL | Parameters | Payload |
---|---|---|---|---|
Get a selected [export_format] of the schema and instances [pkid1], [pkid2],... of relation/ValidationRules; optionally with tag_version at [version] and Configuration Template as [configtemplate]. | POST | /api/relation/ValidationRules/export/ |
|
{ "hrefs":["/api/relation/ValidationRules/[pkid1]", "/api/relation/ValidationRules/[pkid2]",...]}} |
For export_format=json, the response is a time stamped zip file of data in JSON as in the system database. Item properties such as strings that are empty or Boolean values that are not set, are not included. The filename in the response is of the format as the example:
Content-Disposition: attachment; filename=export_2013-05-17_14:20:19.186444.json.zip Content-Language:en Content-Type:application/x-zip
For export_format=raw_xlsx, the response is a MS Excel spreadsheet with columns corresponding to the JSON format export and a response filename format:
Content-Disposition: attachment; filename=<resource_type>_<resource_name>_exportedsheet_CCYY-MM-DD_HH-MM-SS.xlsx Content-Language:en Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
For export_format=xlsx, the response is a MS Excel spreadsheet, arranged by any Field Display Policies that apply. The columns correspond with those of a Bulk Load Template export sheet. The response filename format is:
Content-Disposition: attachment; filename=<resource_type>_<resource_name>_exportedsheet_formatted_CCYY-MM-DD_HH-MM-SS.xlsx Content-Language:en Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
The XLSX format can be used to bulk load instances of relation/ValidationRules and the JSON format can be used to import instances of relation/ValidationRules.
GET http://[host-proxy]/api/relation/ValidationRules/?hierarchy=[hierarchy]
Task | Call | URL | Parameters | Response |
---|---|---|---|---|
Get a compressed format of the Bulk Load spreadsheet template for relation/ValidationRules | POST | /api/relation/ValidationRules/export_bulkload_template/ |
|
The response is an attachment of the format: filetype_bulkloadsheet.xlsx.gz |
Task | Call | URL | Parameters | Response |
---|---|---|---|---|
List | GET | /api/relation/ValidationRules/ |
|
The relation/ValidationRules schema and all instances as JSON. |
(The list will return 0 to 3 relation/ValidationRules instances)
{ "operations": [ "field_display_policy", "configuration_template", "help", "get", "clone", "list", "update", "remove", "add", "bulk_update", "export", "export_bulkload_template" ], "pagination": { "direction": "asc", "order_by": "modelName", "maximum_limit": 2000, "skip": 0, "current": "/api/relation/ValidationRules/?skip=0&limit=3&order_by=modelName&direction=asc&traversal=default", "limit": 3, "total_limit": null, "total": 1 }, "meta": { "tags": [], "cached": true, "title": "", "business_key": {}, "schema_version": null, "references": { "device": [ { "pkid": "", "href": "" } ], "self": [ { "pkid": null, "href": "/api/relation/ValidationRules/None/" } ], "children": [], "parent": [ { "pkid": "6t0ggef2c0deab00hb595101", "href": "/api/data/HierarchyNode/6t0ggef2c0deab00hb595101" } ], "foreign_key": [] }, "actions": [ { "add": { "support_async": false, "class": "add", "href": "/api/relation/ValidationRules/add/?hierarchy=[hierarchy]", "method": "GET", "title": "Add" } }, { "remove": { "support_async": true, "class": "delete", "href": "/api/relation/ValidationRules/?hierarchy=[hierarchy]", "method": "DELETE", "title": "Delete" } }, { "export": { "title": "Export", "support_async": false, "submit": "payload", "class": "export", "href": "/api/relation/ValidationRules/export/?hierarchy=[hierarchy]", "method": "POST", "view": "/api/view/ExportData/add/?auth_token=[authtoken] } }, { "export_bulkload_template": { "support_async": false, "class": "bulkload_template", "href": "/api/relation/ValidationRules/export_bulkload_template/?hierarchy=[hierarchy]", "method": "POST", "title": "Export Bulk Load Template" } }, { "list": { "support_async": false, "class": "list", "href": "/api/relation/ValidationRules/?hierarchy=[hierarchy]", "method": "GET", "title": "List" } } ], "model_type": "relation/ValidationRules", "model_specific_actions": [ "get", "clone", "list", "update", "remove", "add", "export", "export_bulkload_template" ], "summary_attrs": [ { "name": "modelName", "title": "Model Name" }, { "name": "operation", "title": "Operation" }, { "name": "description", "title": "Description" }, { "allow_filtering": true, "name": "hierarchy_friendly_name", "title": "Located At" } ], "api_version": "21.2", "tagged_versions": [] }, "resources": [ { "pkid": "6305155c43fcc416f18fa0fe", "meta": { "tags": [ "V4UC", "ba_CommonOverlay" ], "cached": true, "title": "view/HybridMultiVendorVIEW - create", "business_key": { "hierarchy": true, "unique": [ "modelName", "operation" ] }, "schema_version": "0.7", "summary": "false", "references": { "device": [ { "pkid": "", "href": "" } ], "owner": [ { "pkid": "" } ], "self": [ { "pkid": "6305155c43fcc416f18fa0fe", "href": "/api/relation/ValidationRules/6305155c43fcc416f18fa0fe/" } ], "parent": [ { "pkid": "6305086243fcc416f18ea4ac", "href": "/api/data/HierarchyNode/6305086243fcc416f18ea4ac" } ], "foreign_key": [] }, "actions": [ { "update": { "support_async": true, "class": "update", "href": "/api/relation/ValidationRules/6305155c43fcc416f18fa0fe/", "method": "PUT", "title": "Modify" } }, { "remove": { "support_async": true, "class": "delete", "href": "/api/relation/ValidationRules/6305155c43fcc416f18fa0fe/", "method": "DELETE", "title": "Delete" } }, { "clone": { "support_async": false, "class": "clone", "href": "/api/relation/ValidationRules/6305155c43fcc416f18fa0fe/clone/?schema=&schema_rules=true", "method": "GET", "title": "Clone" } }, { "export": { "title": "Export", "support_async": false, "submit": "payload", "class": "export", "href": "/api/relation/ValidationRules/6305155c43fcc416f18fa0fe/export/", "method": "GET", "view": "/api/view/ExportData/add/" } }, { "get": { "support_async": false, "class": "get", "href": "/api/relation/ValidationRules/6305155c43fcc416f18fa0fe/", "method": "GET", "title": "Get" } } ], "model_type": "relation/ValidationRules", "path": [ "6t0ggef2c0deab00hb595101", "6305086243fcc416f18ea4ac", "6305155c43fcc416f18fa0fe" ], "summary_attrs": [ { "name": "modelName", "title": "Model Name" }, { "name": "operation", "title": "Operation" }, { "name": "description", "title": "Description" }, { "allow_filtering": true, "name": "hierarchy_friendly_name", "title": "Located At" } ], "api_version": "21.2", "tagged_versions": [] }, "data": { "modelName": "view/HybridMultiVendorVIEW", "description": "MVS validation rules", "refreshModels": [ { "attribute": "UserPrincipalName", "modelName": "device/msgraph/MsolUser", "value": "{{ data.User.username_ms_365 | username:input.username }}" } ], "rules": [ { "attribute": "username", "message": "Hybrid Service Type - [{{ input.MultiVendorServiceType }}] does not exist.", "rule": "(( input.MultiVendorServiceType == data.SubscriberProfile.name | name:input.MultiVendorServiceType,hybrid:fn.true ))<{{ fn.true }}><{{ fn.false }}>" }, { "attribute": "username", "message": "[{{ input.username }}] data/User cannot be found.", "rule": "(( input.username == data.User.username | username:input.username ))<{{ fn.true }}><{{ fn.false }}>" }, { "attribute": "line1DN", "message": "A valid Directory Number for [{{ input.username }}] has not been selected.", "rule": "(( data.MultiVendorServiceDefinitions_DAT.noService | serviceType:macro.Multivendor_ValidateHybridServiceTypeFromServiceProfile | direction:up == true ))<{{ fn.true }}>(( fn.is_none_or_empty pwf.attributeValue == false ))<{{ fn.true }}><{{ fn.false }}>" }, { "attribute": "line1DN", "message": "A valid Directory Number for [{{ input.username }}] has not been selected.", "rule": "(( data.MultiVendorServiceDefinitions_DAT.noService | serviceType:macro.Multivendor_ValidateHybridServiceTypeFromServiceProfile | direction:up == true ))<{{ fn.true }}>(( data.InternalNumberInventory.internal_number | internal_number:pwf.attributeValue == pwf.attributeValue ))<{{ fn.true }}><{{ fn.false }}>" }, { "attribute": "line1DN", "message": "The selected Directory Number - [{{ pwf.attributeValue }}] is Used.", "rule": "(( data.MultiVendorServiceDefinitions_DAT.noService | serviceType:macro.Multivendor_ValidateHybridServiceTypeFromServiceProfile | direction:up == true ))<{{ fn.true }}>(( fn.list_contain pwf.attributeValue,macro.hybridUserLineList == true ))<{{ fn.true }}>(( data.User.mvs_extensions.*.line | mvs_extensions.*.line:pwf.attributeValue == pwf.attributeValue ))<{{ fn.false }}>(( fn.list_contain pwf.attributeValue,macro.MS-Teams-getUserCucmLines == true ))<{{ fn.true }}> (( fn.contains macro.Multivendor_Validate_E164_LineUri_format,macro.Multivendor_Validate_CsolUser-LineURI == true )) <{{ fn.true }}> (( data.InternalNumberInventory.status | internal_number:pwf.attributeValue == Available ))<{{ fn.true }}><{{ fn.false }}>" }, { "attribute": "line1DN", "message": "The selected Directory Number - [{{ pwf.attributeValue }}] is Reserved.", "rule": "(( data.MultiVendorServiceDefinitions_DAT.noService | serviceType:macro.Multivendor_ValidateHybridServiceTypeFromServiceProfile | direction:up == true ))<{{ fn.true }}>(( data.InternalNumberInventory.status | internal_number:pwf.attributeValue == Reserved ))<{{ fn.false }}>(( fn.list_in pwf.attributeValue, data.InternalNumberInventory.internal_number | extra1:/Reserved/i == True ))<{{ fn.false }}><{{ fn.true }}>" }, { "attribute": "entitlement_profile", "message": "A valid Entitlement Profile for [{{ input.username }}] has not been set.", "rule": "(( fn.is_none_or_empty macro.Multivendor_Validate_GetEpFromServiceType == false ))<{{ fn.true }}>(( fn.list_in pwf.attributeValue, data.HcsEntitlementProfileDAT.__bkey || direction:up == True ))<{{ fn.true }}><{{ fn.false }}>" }, { "attribute": "qagroup_name", "message": "A valid Quick Add Group for [{{ input.username }}] has not been set.", "rule": "(( fn.is_none_or_empty macro.Multivendor_Validate_GetGroupFromServiceType == false ))<{{ fn.true }}>(( input.qagroup_name == pwf.unset ))<{{ fn.false }}>(( fn.is_none_or_empty pwf.attributeValue == false ))<{{ fn.true }}><{{ fn.false }}>" }, { "attribute": "username", "message": "[{{ input.username }}] is not associated with a Microsoft 365 user account.", "rule": "(( macro.global_setting_map_upn_from_cucm_useridentity == fn.true ))<{{ fn.true }}>(( fn.is_none_or_empty macro.Multivendor_Validate_GetMs365Username == fn.true ))<{{ fn.false }}><{{ fn.true }}>" }, { "attribute": "username", "message": "[{{ input.username }}] is not associated with a Microsoft Teams Online user account.", "rule": "(( macro.global_setting_map_upn_from_cucm_useridentity == fn.true ))<{{ fn.true }}>(( fn.is_none_or_empty macro.Multivendor_Validate_GetMsTeamsUsername == fn.true ))<{{ fn.false }}><{{ fn.true }}>" }, { "attribute": "line1E164", "message": "LineURI is associated with another user [{{ fn.one macro.MS-Teams-GetUserNameFromLineURI }}]", "rule": "(( macro.global_setting_map_upn_from_cucm_useridentity == fn.true ))<{{ fn.true }}>(( data.MultiVendorServiceDefinitions_DAT.noService | serviceType:macro.Multivendor_ValidateHybridServiceTypeFromServiceProfile | direction:up == fn.true ))<{{ fn.true }}>(( fn.is_none_or_empty pwf.attributeValue == true ))<{{ fn.true }}>(( fn.list_contain macro.MS-Teams-GetUserCsolUpnFromUsername,macro.MS-Teams-GetUserNameFromLineURI == true ))<{{ fn.true }}>(( macro.MS-Teams-GetUserNameFromLineURI == fn.list_empty ))<{{ fn.true }}><{{ fn.false }}>" }, { "hierarchy": "{{ data.BaseCustomerDAT.Hierarchy || direction:up }}", "attribute": "MultiVendorServiceType", "message": "User does not have the required license", "rule": "(( macro.global_setting_map_upn_from_cucm_useridentity == fn.true ))<{{ fn.true }}>(( fn.list_contain MicrosoftSubscriberQas,macro.Multivendor_ValidateHybridViewList == fn.false ))<{{ fn.true }}>(( data.SiteDefaultsDoc.manageLicenses || direction:local == fn.true ))<{{ fn.true }}>(( fn.list_contain PhoneSystem,macro.ValidateMicrosoftTeamsServices == fn.true ))<{{ fn.true }}><{{ fn.false }}>" }, { "attribute": "MultiVendorServiceType", "message": "Tenant Dialplan must be set in site defaults doc", "rule": "(( fn.list_contain MicrosoftSubscriberQas,macro.Multivendor_ValidateHybridViewList == false ))<{{ fn.true }}>(( fn.is_none_or_empty macro.Multivendor_Validate_GetTenantDialplanFromSdd == false ))<{{ fn.true }}><{{ fn.false }}>" }, { "attribute": "MultiVendorServiceType", "message": "User does not have MS Teams username set", "rule": "(( macro.global_setting_map_upn_from_cucm_useridentity == fn.true ))<{{ fn.true }}>(( data.SiteDefaultsDoc.manageLicenses || direction:local == fn.true ))<{{ fn.true }}>(( fn.list_contain MicrosoftSubscriberQas,data.MultiVendorServiceDefinitions_DAT.qasData.*.viewName | serviceType:macro.Multivendor_ValidateHybridServiceTypeFromServiceProfile == fn.false ))<{{ fn.true }}>(( fn.is_none_or_empty macro.Multivendor_Validate_GetMsTeamsUsername == fn.false ))<{{ fn.true }}><{{ fn.false }}>" }, { "attribute": "MultiVendorServiceType", "message": "User does not have MS O365 username set", "rule": "(( macro.global_setting_map_upn_from_cucm_useridentity == fn.true ))<{{ fn.true }}>(( data.SiteDefaultsDoc.allowMsolUserAdd || direction:local == fn.true ))<{{ fn.true }}>(( fn.list_contain MicrosoftSubscriberQas,data.MultiVendorServiceDefinitions_DAT.qasData.*.viewName | serviceType:macro.Multivendor_ValidateHybridServiceTypeFromServiceProfile == fn.false ))<{{ fn.true }}>(( fn.is_none_or_empty macro.Multivendor_Validate_GetMs365Username == fn.false ))<{{ fn.true }}><{{ fn.false }}>" } ], "pkid": "6305155c43fcc416f18fa0ff", "operation": "create", "hierarchy_friendly_name": "hcs (Hcs)", "hierarchy_path": "sys.hcs" } } ] }
(Show the first instance)
{ "pkid": "6305155c43fcc416f18fa0fe", "meta": { "tags": [], "cached": true, "cache_control_policy": "cache_then_device", "title": "view/HybridMultiVendorVIEW", "business_key": {}, "schema_version": null, "references": { "device": [ { "pkid": "", "href": "" } ], "self": [ { "pkid": "6305155c43fcc416f18fa0fe", "href": "/api/relation/ValidationRules/6305155c43fcc416f18fa0fe/" } ], "children": [], "parent": [ { "pkid": "6305086243fcc416f18ea4ac", "href": "/api/data/HierarchyNode/6305086243fcc416f18ea4ac" } ] }, "actions": [ { "update": { "support_async": true, "class": "update", "href": "/api/relation/ValidationRules/6305155c43fcc416f18fa0fe/?hierarchy=[hierarchy]", "method": "PUT", "title": "Modify" } }, { "remove": { "support_async": true, "class": "delete", "href": "/api/relation/ValidationRules/6305155c43fcc416f18fa0fe/?hierarchy=[hierarchy]", "method": "DELETE", "title": "Delete" } }, { "clone": { "support_async": false, "class": "clone", "href": "/api/relation/ValidationRules/6305155c43fcc416f18fa0fe/clone/?hierarchy=[hierarchy]&schema=&schema_rules=true", "method": "GET", "title": "Clone" } }, { "export": { "title": "Export", "support_async": false, "submit": "payload", "class": "export", "href": "/api/relation/ValidationRules/6305155c43fcc416f18fa0fe/export/?hierarchy=[hierarchy]", "method": "GET", "view": "/api/view/ExportData/add/?auth_token=[authtoken] } }, { "get": { "support_async": false, "class": "get", "href": "/api/relation/ValidationRules/6305155c43fcc416f18fa0fe/?hierarchy=[hierarchy]", "method": "GET", "title": "Get" } } ], "model_type": "relation/ValidationRules", "summary_attrs": [ { "name": "modelName", "title": "Model Name" }, { "name": "operation", "title": "Operation" }, { "name": "description", "title": "Description" }, { "allow_filtering": true, "name": "hierarchy_friendly_name", "title": "Located At" } ], "api_version": "21.2", "tagged_versions": [] }, "data": { "rules": [ { "attribute": "username", "message": "Hybrid Service Type - [{{ input.MultiVendorServiceType }}] does not exist.", "rule": "(( input.MultiVendorServiceType == data.SubscriberProfile.name | name:input.MultiVendorServiceType,hybrid:fn.true ))<{{ fn.true }}><{{ fn.false }}>" }, { "attribute": "username", "message": "[{{ input.username }}] data/User cannot be found.", "rule": "(( input.username == data.User.username | username:input.username ))<{{ fn.true }}><{{ fn.false }}>" }, { "attribute": "line1DN", "message": "A valid Directory Number for [{{ input.username }}] has not been selected.", "rule": "(( data.MultiVendorServiceDefinitions_DAT.noService | serviceType:macro.Multivendor_ValidateHybridServiceTypeFromServiceProfile | direction:up == true ))<{{ fn.true }}>(( fn.is_none_or_empty pwf.attributeValue == false ))<{{ fn.true }}><{{ fn.false }}>" }, { "attribute": "line1DN", "message": "A valid Directory Number for [{{ input.username }}] has not been selected.", "rule": "(( data.MultiVendorServiceDefinitions_DAT.noService | serviceType:macro.Multivendor_ValidateHybridServiceTypeFromServiceProfile | direction:up == true ))<{{ fn.true }}>(( data.InternalNumberInventory.internal_number | internal_number:pwf.attributeValue == pwf.attributeValue ))<{{ fn.true }}><{{ fn.false }}>" }, { "attribute": "line1DN", "message": "The selected Directory Number - [{{ pwf.attributeValue }}] is Used.", "rule": "(( data.MultiVendorServiceDefinitions_DAT.noService | serviceType:macro.Multivendor_ValidateHybridServiceTypeFromServiceProfile | direction:up == true ))<{{ fn.true }}>(( fn.list_contain pwf.attributeValue,macro.hybridUserLineList == true ))<{{ fn.true }}>(( data.User.mvs_extensions.*.line | mvs_extensions.*.line:pwf.attributeValue == pwf.attributeValue ))<{{ fn.false }}>(( fn.list_contain pwf.attributeValue,macro.MS-Teams-getUserCucmLines == true ))<{{ fn.true }}> (( fn.contains macro.Multivendor_Validate_E164_LineUri_format,macro.Multivendor_Validate_CsolUser-LineURI == true )) <{{ fn.true }}> (( data.InternalNumberInventory.status | internal_number:pwf.attributeValue == Available ))<{{ fn.true }}><{{ fn.false }}>" }, { "attribute": "line1DN", "message": "The selected Directory Number - [{{ pwf.attributeValue }}] is Reserved.", "rule": "(( data.MultiVendorServiceDefinitions_DAT.noService | serviceType:macro.Multivendor_ValidateHybridServiceTypeFromServiceProfile | direction:up == true ))<{{ fn.true }}>(( data.InternalNumberInventory.status | internal_number:pwf.attributeValue == Reserved ))<{{ fn.false }}>(( fn.list_in pwf.attributeValue, data.InternalNumberInventory.internal_number | extra1:/Reserved/i == True ))<{{ fn.false }}><{{ fn.true }}>" }, { "attribute": "entitlement_profile", "message": "A valid Entitlement Profile for [{{ input.username }}] has not been set.", "rule": "(( fn.is_none_or_empty macro.Multivendor_Validate_GetEpFromServiceType == false ))<{{ fn.true }}>(( fn.list_in pwf.attributeValue, data.HcsEntitlementProfileDAT.__bkey || direction:up == True ))<{{ fn.true }}><{{ fn.false }}>" }, { "attribute": "qagroup_name", "message": "A valid Quick Add Group for [{{ input.username }}] has not been set.", "rule": "(( fn.is_none_or_empty macro.Multivendor_Validate_GetGroupFromServiceType == false ))<{{ fn.true }}>(( input.qagroup_name == pwf.unset ))<{{ fn.false }}>(( fn.is_none_or_empty pwf.attributeValue == false ))<{{ fn.true }}><{{ fn.false }}>" }, { "attribute": "username", "message": "[{{ input.username }}] is not associated with a Microsoft 365 user account.", "rule": "(( macro.global_setting_map_upn_from_cucm_useridentity == fn.true ))<{{ fn.true }}>(( fn.is_none_or_empty macro.Multivendor_Validate_GetMs365Username == fn.true ))<{{ fn.false }}><{{ fn.true }}>" }, { "attribute": "username", "message": "[{{ input.username }}] is not associated with a Microsoft Teams Online user account.", "rule": "(( macro.global_setting_map_upn_from_cucm_useridentity == fn.true ))<{{ fn.true }}>(( fn.is_none_or_empty macro.Multivendor_Validate_GetMsTeamsUsername == fn.true ))<{{ fn.false }}><{{ fn.true }}>" }, { "attribute": "line1E164", "message": "LineURI is associated with another user [{{ fn.one macro.MS-Teams-GetUserNameFromLineURI }}]", "rule": "(( macro.global_setting_map_upn_from_cucm_useridentity == fn.true ))<{{ fn.true }}>(( data.MultiVendorServiceDefinitions_DAT.noService | serviceType:macro.Multivendor_ValidateHybridServiceTypeFromServiceProfile | direction:up == fn.true ))<{{ fn.true }}>(( fn.is_none_or_empty pwf.attributeValue == true ))<{{ fn.true }}>(( fn.list_contain macro.MS-Teams-GetUserCsolUpnFromUsername,macro.MS-Teams-GetUserNameFromLineURI == true ))<{{ fn.true }}>(( macro.MS-Teams-GetUserNameFromLineURI == fn.list_empty ))<{{ fn.true }}><{{ fn.false }}>" }, { "hierarchy": "{{ data.BaseCustomerDAT.Hierarchy || direction:up }}", "attribute": "MultiVendorServiceType", "message": "User does not have the required license", "rule": "(( macro.global_setting_map_upn_from_cucm_useridentity == fn.true ))<{{ fn.true }}>(( fn.list_contain MicrosoftSubscriberQas,macro.Multivendor_ValidateHybridViewList == fn.false ))<{{ fn.true }}>(( data.SiteDefaultsDoc.manageLicenses || direction:local == fn.true ))<{{ fn.true }}>(( fn.list_contain PhoneSystem,macro.ValidateMicrosoftTeamsServices == fn.true ))<{{ fn.true }}><{{ fn.false }}>" }, { "attribute": "MultiVendorServiceType", "message": "Tenant Dialplan must be set in site defaults doc", "rule": "(( fn.list_contain MicrosoftSubscriberQas,macro.Multivendor_ValidateHybridViewList == false ))<{{ fn.true }}>(( fn.is_none_or_empty macro.Multivendor_Validate_GetTenantDialplanFromSdd == false ))<{{ fn.true }}><{{ fn.false }}>" }, { "attribute": "MultiVendorServiceType", "message": "User does not have MS Teams username set", "rule": "(( macro.global_setting_map_upn_from_cucm_useridentity == fn.true ))<{{ fn.true }}>(( data.SiteDefaultsDoc.manageLicenses || direction:local == fn.true ))<{{ fn.true }}>(( fn.list_contain MicrosoftSubscriberQas,data.MultiVendorServiceDefinitions_DAT.qasData.*.viewName | serviceType:macro.Multivendor_ValidateHybridServiceTypeFromServiceProfile == fn.false ))<{{ fn.true }}>(( fn.is_none_or_empty macro.Multivendor_Validate_GetMsTeamsUsername == fn.false ))<{{ fn.true }}><{{ fn.false }}>" }, { "attribute": "MultiVendorServiceType", "message": "User does not have MS O365 username set", "rule": "(( macro.global_setting_map_upn_from_cucm_useridentity == fn.true ))<{{ fn.true }}>(( data.SiteDefaultsDoc.allowMsolUserAdd || direction:local == fn.true ))<{{ fn.true }}>(( fn.list_contain MicrosoftSubscriberQas,data.MultiVendorServiceDefinitions_DAT.qasData.*.viewName | serviceType:macro.Multivendor_ValidateHybridServiceTypeFromServiceProfile == fn.false ))<{{ fn.true }}>(( fn.is_none_or_empty macro.Multivendor_Validate_GetMs365Username == fn.false ))<{{ fn.true }}><{{ fn.false }}>" } ], "operation": "create", "modelName": "view/HybridMultiVendorVIEW", "description": "MVS validation rules", "refreshModels": [ { "attribute": "UserPrincipalName", "modelName": "device/msgraph/MsolUser", "value": "{{ data.User.username_ms_365 | username:input.username }}" } ] } }
Task | Call | URL | Parameters | Payload |
---|---|---|---|---|
Modify | PUT | /api/relation/ValidationRules/[pkid]/ | hierarchy=[hierarchy] | (For payload specification) |
For Bulk modification, refer to the Bulk Modify section.
Task | Call | URL | Parameters | Response |
---|---|---|---|---|
Delete | DELETE | /api/relation/ValidationRules/[pkid]/ | hierarchy=[hierarchy] |
Task | Call | URL | Parameters | Response |
---|---|---|---|---|
Clone instance with [pkid]. The schema rules are applied. | GET | /api/relation/ValidationRules/[pkid]/clone/?schema=&schema_rules=true |
|
A JSON payload with:
|
GET http://[host-proxy]/api/relation/ValidationRules/?hierarchy=[hierarchy]&format=json
Task | Call | URL | Parameters | Response |
---|---|---|---|---|
Get a selected [export_format] of the schema and a single instance with [pkid] of relation/ValidationRules; optionally with tag_version at [version] and Configuration Template as [configtemplate]. | GET | /api/relation/ValidationRules/[pkid]/export/ |
|
The response is an attachment. Refer to the list below. |
For export_format=raw_xlsx, the response is a "raw" MS Excel spreadsheet with columns corresponding to the JSON format export and a response format:
Content-Disposition: attachment; filename=<resource_type>_<resource_name>_exportedsheet_CCYY-MM-DD_HH-MM-SS.xlsx Content-Language:en Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
For export_format=xlsx, the response is a MS Excel spreadsheet, formatted to show all columns and a response format:
Content-Disposition: attachment; filename=<resource_type>_<resource_name>_exportedsheet_formatted_CCYY-MM-DD_HH-MM-SS.xlsx Content-Language:en Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
For export_format=json, the response is a time stamped zip file of data in JSON and a response format:
Content-Disposition: attachment; filename=export_2013-05-17_14:20:19.186444.json.zip Content-Language:en Content-Type:application/x-zip
The XLSX format can be used to bulk load instances of relation/ValidationRules and the JSON format can be used to import instances of relation/ValidationRules.
For Bulk Export, refer to the Bulk Export section.
Task | Call | URL | Parameters | Response |
---|---|---|---|---|
Get | GET | /api/relation/ValidationRules/[pkid]/ | hierarchy=[hierarchy] | The relation/ValidationRules instance with [pkid]. |