{"type":"api","title":"Update Template Collection Job","meta":{"id":"/apps/pubhub/media/crosswork-network-controller-7-1/f445c17e25a1120e8fbde4bd413083d0fd88b2b3/b44e8ba1-6566-34bf-b4f1-d28c15d76254","info":{"title":"Crosswork Collection Service APIs","description":"Crosswork Collector Services APIs manage application intents for collection jobs across multiple devices and different collection types, including SNMP, CLI, TRAP, MDT, GNMI, and SYSLOG.","version":"1.0.0","contact":{"name":"Crosswork Team, Cisco","email":"support@cisco.com"},"license":{"name":"Cisco Software License Agreement","url":"http://www.cisco.com/public/sw-license-agreement.html"}},"x-parser-conf":{"overview":{"markdownPath":"reference/INFRA/COLLECTIONS/collection-service-overview.md"}},"swagger":"2.0","basePath":"/crosswork/collection/v1","schemes":["https","http"],"securityDefinitions":{"bearerAuth":{"type":"apiKey","description":"bearer auth","name":"Authorization","in":"header"}}},"spec":{"summary":"Update Template Collection Job","description":"Use PatchTemplateCollectionJob to update existing template collection job on a device using the same app_context = \u003cdeviceuuid\u003e_\u003ccollect_type\u003e used previously to create the template collection job on device.\nThe ApplicationContext is expected to be globally unique.\nYou can associate an application context with only one CollectType at a time.\nSubmitting multiple patch requests when the application context is in the NOT_READY, TERMINATING, or TERMINATION_FAILED phase will result in rejection.\nApplications use the BulkTemplateCollectionOperations call to patch current template Collection jobs already enabled on a device (this call is for internal use only).\nIn this request, applications must also pass any sensor templates that need to be deleted, and/or any sensor templates that need to be added on the device, and/or any template where the current parameters or cadence need to be replaced on the device with new values.\nYou can batch all such requests to patch a device together as a single request here.\nYou are responsible for specifying a valid template_id and corresponding parameter combination as applicable to the device.\nNot following this will result in failure on the device.\nThe DeviceId is the UUID of the device as specified in the Crosswork Device Lifecycle Manager (DLM).","operationId":"CollectionService_PatchTemplateCollectionJob","responses":{"200":{"description":"OK. The request was successful. The result is contained in the response body","schema":{"type":"object","properties":{"result":{"type":"object","properties":{"request_result":{"description":"The result values indicates whether the request was accepted or rejected, not the outcome of the work itself.","type":"string","enum":["UNKNOWN_RESULT","REJECTED","ACCEPTED"],"default":"UNKNOWN_RESULT","$$ref":"#/definitions/collection_serviceRequestResult"},"error":{"description":"A text message describing the reason for rejection. It can be safely passed on to the operator through logs or the UI.","type":"object","properties":{"error":{"type":"string","description":"Message is a textual description of the reason for rejection. You can safely pass it on to the operator through logs or the UI."}},"title":"Error associated with an object","$$ref":"#/definitions/collection_serviceError"}},"description":"Result is used to convey whether an operation (individual or in a batch) has been accepted or rejected.\nFor sync APIs, an error or rejection indicates failure of the operation.\nA string error message accompanies rejection to support troubleshooting.\nFor notification objects, rejection represents failure to do intended operation.","$$ref":"#/definitions/collection_serviceResult"}},"example":{"result":{"request_result":"ACCEPTED","error":{"error":""}}},"$$ref":"#/definitions/collection_serviceBulkTemplateCollectionOperationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"type":"object","properties":{"result":{"type":"object","properties":{"request_result":{"description":"The result values indicates whether the request was accepted or rejected, not the outcome of the work itself.","type":"string","enum":["UNKNOWN_RESULT","REJECTED","ACCEPTED"],"default":"UNKNOWN_RESULT","$$ref":"#/definitions/collection_serviceRequestResult"},"error":{"description":"A text message describing the reason for rejection. It can be safely passed on to the operator through logs or the UI.","type":"object","properties":{"error":{"type":"string","description":"Message is a textual description of the reason for rejection. You can safely pass it on to the operator through logs or the UI."}},"title":"Error associated with an object","$$ref":"#/definitions/collection_serviceError"}},"description":"Result is used to convey whether an operation (individual or in a batch) has been accepted or rejected.\nFor sync APIs, an error or rejection indicates failure of the operation.\nA string error message accompanies rejection to support troubleshooting.\nFor notification objects, rejection represents failure to do intended operation.","$$ref":"#/definitions/collection_serviceResult"}},"example":{"result":{"request_result":"REJECTED","error":{"error":"Delete Template Subscription: template id - template_2 does not exist in job"}}},"$$ref":"#/definitions/patchtemplatecollectionjobErrorResponse"}}},"parameters":[{"name":"body","in":"body","description":"Patch Template Collection Job.","required":true,"schema":{"type":"object","properties":{"patch_collection_template_operations":{"title":"BulkTemplateCollectionOperations contains templates to be added/deleted/updated(parameters,cadence,destinations) on device","type":"object","properties":{"application_context":{"description":"The application_context is a handle that uniquely identifies your application's collection job. It serves as the key to the object on which CRUD operations are performed.\nThe combination of application_id and context_id should be unique globally.","type":"object","properties":{"application_id":{"type":"string","description":"The application_id is a unique ID that identifies your application. Crosswork applications always prefix the application_id with “cw“."},"context_id":{"type":"string","description":"The context_id is a unique ID that identifies your application subscription across all collection jobs. We recommend that you use the device UUID for the context_id."}},"$$ref":"#/definitions/collection_serviceApplicationContext"},"collection_mode":{"description":"The style of collection: persistent or non-persistent.\nNote that Recurrent and Transient jobs are not applicable to any collection that involves a device configuration change.","type":"object","properties":{"lifetime_type":{"title":"The lifetime of the job","type":"string","enum":["UNKNOWN_TEMPORAL_TYPE","APPLICATION_MANAGED","CALENDAR_MANAGED","AUTO_DELETE_AFTER_N_SAMPLES","APPLICATION_MANAGED_WITH_AUTO_DELETE_ON_DEVICE_DELETE"],"default":"UNKNOWN_TEMPORAL_TYPE","description":"- UNKNOWN_TEMPORAL_TYPE: Invalid Lifetime\n - APPLICATION_MANAGED: The application manages the creation and deletion of the collection job.\n - CALENDAR_MANAGED: A calendaring service tied to a calendar schedule manages the creation and deletion of the collection job.\nThis JobLifetimeType is currently not supported.\n - AUTO_DELETE_AFTER_N_SAMPLES: The collection job is automatically deleted after N collections.\n - APPLICATION_MANAGED_WITH_AUTO_DELETE_ON_DEVICE_DELETE: The application manages the creation and deletion of the collection job, but the job is deleted and cleaned up automatically if the associated device is deleted.","$$ref":"#/definitions/collection_serviceJobLifetimeType"},"collector_type":{"title":"Collection Type","type":"string","enum":["UNKNOWN_COLLECTOR","MDT_COLLECTOR","SNMP_COLLECTOR","CLI_COLLECTOR","TRAP_COLLECTOR","GNMI_COLLECTOR","SYSLOG_COLLECTOR"],"default":"UNKNOWN_COLLECTOR","$$ref":"#/definitions/common_collection_dataCollectionType"},"schedule_id":{"type":"string","description":"Calendar-ID: Calendar schedule to follow for CALENDAR_DRIVEN jobs. Currently NOT supported."},"n_collections":{"type":"integer","format":"int64","description":"The number of collections to run before auto-deletion.\nUsed only when lifetime_type is AUTO_DELETE_AFTER_N_SAMPLES.\nThe number of collections represents the cadence cycle of each collection, irrespective of the outcome (SUCCESS, FAILED).\nSupported only for collections where the collector intiates the connection to the device (that is, SNMP or CLI)."},"track_collect_n_job":{"type":"boolean","description":"Job response tracking flag, sets the tracking option to true or false. The default is false.\nThis flag is relevant only to transient collection jobs."}},"$$ref":"#/definitions/collection_serviceCollectionMode"},"device_id":{"type":"string","description":"The device_id identifies a device for which collection needs to be set up."},"delete_template_subscriptions":{"type":"array","items":{"type":"object","properties":{"template_id":{"type":"string","description":"Specify Sensor Template whose input and output configurations need to be deleted from the device."}},"$$ref":"#/definitions/collection_serviceDeleteSensorTemplateInputOutputConfig"},"title":"Specify all Sensor Templates that need to be deleted from device"},"create_template_subscriptions":{"type":"array","items":{"type":"object","properties":{"sensor_template_input_config":{"type":"object","properties":{"sensor_template_id":{"type":"string","title":"Specify the sensor template ID to be used for collection"},"cadence_in_millisec":{"type":"string","format":"uint64","title":"Input Cadence"},"parameter_values":{"title":"Sensor template parameter combination values","type":"object","properties":{"template_param_values":{"type":"array","items":{"type":"object","properties":{"template_param_value":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"bytes_value":{"type":"string","format":"byte"},"string_value":{"type":"string"},"bool_value":{"type":"boolean"},"uint32_value":{"type":"integer","format":"int64"},"uint64_value":{"type":"string","format":"uint64"},"sint32_value":{"type":"integer","format":"int32"},"sint64_value":{"type":"string","format":"int64"},"double_value":{"type":"number","format":"double"},"float_value":{"type":"number","format":"float"},"null_value":{"type":"boolean"},"list_value":{"type":"object","properties":{"value":{"type":"array","items":{"type":"object","properties":{"bytes_value":{"type":"string","format":"byte"},"string_value":{"type":"string"},"bool_value":{"type":"boolean"},"uint32_value":{"type":"integer","format":"int64"},"uint64_value":{"type":"string","format":"uint64"},"sint32_value":{"type":"integer","format":"int32"},"sint64_value":{"type":"string","format":"int64"},"double_value":{"type":"number","format":"double"},"float_value":{"type":"number","format":"float"},"null_value":{"type":"boolean"}},"$$ref":"#/definitions/common_collection_dataValue"},"title":"list items must be of same type"}},"$$ref":"#/definitions/common_collection_datalist"}},"title":"Generic Key value message","$$ref":"#/definitions/common_collection_dataKeyValue"},"title":"Parameters values for sensor template variables"}},"title":"Specify parameter values for template parameters","$$ref":"#/definitions/common_collection_dataParameterValue"},"title":"Parameters value combinations set for sensor template variables\nfor ex: \n\"template_param_values\": [\n {{\"vrf\":\"vrf1\"}, {\"neighbor-ip\":\"ip1\"}},\n {{\"vrf\":\"vrf1\"}, {\"neighbor-ip\":\"ip2\"}},\n {{\"vrf\":\"vrf1\"}, {\"neighbor-ip\":\"ip3\"}}\n ]"}},"$$ref":"#/definitions/common_collection_dataParameterValues"}},"title":"SensorTemplateInputConfig contains a sensor template, cadence and parameter values","$$ref":"#/definitions/collection_serviceSensorTemplateInputConfig","description":"Specify a sensor template, with corresponding collection parameters and cadence, applicable to the device."},"sensor_template_output_config":{"type":"object","properties":{"sensor_template_id":{"type":"string","title":"Specify Sensor template"},"destination":{"type":"array","items":{"type":"object","properties":{"destination_id":{"type":"string","title":"Unique identifier for a Destination Provider in Inventory"},"context_id":{"type":"string","description":"Destination context identifier.\nIt could be topic name if the destination is message bus.\nThe combination of destination_id and context_id needs to be unique for a Destination.\nWhat context id means depends on the destination type of the destination provider.\nIf \"GRPC\" is the destination type, context_id is not used and will be ignored."},"destination_name":{"type":"string","description":"The name of the destination. Not used during write operations, but optionally filled when using GET APIs.\nIt maps to the destination provider name in Crosswork Device Lifecycle Manager (DLM)."}},"description":"Use the destination identifier to uniquely identify a destination.\nThe output encoding format for the destination is derived from the Inventory destination_id.","$$ref":"#/definitions/collection_serviceDestination"},"description":"The destinations to which sensor data is written."}},"title":"SensorTemplateOutputConfig contains a sensor template and its destination details","$$ref":"#/definitions/collection_serviceSensorTemplateOutputConfig","description":"Specify a sensor template and its destination."}},"title":"Captures template input and output configs for a template sensor to be subscribed on the device","$$ref":"#/definitions/collection_serviceCreateSensorTemplateInputOutputConfig"},"title":"Specify Sensor Template configs that need to be added on device"},"put_sensor_template_input_configs":{"title":"Specify a set of templates whose parameters and/or cadence need to be replaced with new values on device\nkey is device_id, application_context, template_id","type":"object","properties":{"put_sensor_template_input_config":{"type":"array","items":{"type":"object","properties":{"sensor_template_id":{"type":"string","title":"Specify the sensor template ID to be used for collection"},"cadence_in_millisec":{"type":"string","format":"uint64","title":"Input Cadence"},"parameter_values":{"title":"Sensor template parameter combination values","type":"object","properties":{"template_param_values":{"type":"array","items":{"type":"object","properties":{"template_param_value":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"bytes_value":{"type":"string","format":"byte"},"string_value":{"type":"string"},"bool_value":{"type":"boolean"},"uint32_value":{"type":"integer","format":"int64"},"uint64_value":{"type":"string","format":"uint64"},"sint32_value":{"type":"integer","format":"int32"},"sint64_value":{"type":"string","format":"int64"},"double_value":{"type":"number","format":"double"},"float_value":{"type":"number","format":"float"},"null_value":{"type":"boolean"},"list_value":{"type":"object","properties":{"value":{"type":"array","items":{"type":"object","properties":{"bytes_value":{"type":"string","format":"byte"},"string_value":{"type":"string"},"bool_value":{"type":"boolean"},"uint32_value":{"type":"integer","format":"int64"},"uint64_value":{"type":"string","format":"uint64"},"sint32_value":{"type":"integer","format":"int32"},"sint64_value":{"type":"string","format":"int64"},"double_value":{"type":"number","format":"double"},"float_value":{"type":"number","format":"float"},"null_value":{"type":"boolean"}},"$$ref":"#/definitions/common_collection_dataValue"},"title":"list items must be of same type"}},"$$ref":"#/definitions/common_collection_datalist"}},"title":"Generic Key value message","$$ref":"#/definitions/common_collection_dataKeyValue"},"title":"Parameters values for sensor template variables"}},"title":"Specify parameter values for template parameters","$$ref":"#/definitions/common_collection_dataParameterValue"},"title":"Parameters value combinations set for sensor template variables\nfor ex: \n\"template_param_values\": [\n {{\"vrf\":\"vrf1\"}, {\"neighbor-ip\":\"ip1\"}},\n {{\"vrf\":\"vrf1\"}, {\"neighbor-ip\":\"ip2\"}},\n {{\"vrf\":\"vrf1\"}, {\"neighbor-ip\":\"ip3\"}}\n ]"}},"$$ref":"#/definitions/common_collection_dataParameterValues"}},"title":"SensorTemplateInputConfig contains a sensor template, cadence and parameter values","$$ref":"#/definitions/collection_serviceSensorTemplateInputConfig"},"title":"Specify Sensor templates with parameters and/or cadence to be updated on the device"}},"$$ref":"#/definitions/collection_servicePutSensorTemplateInputConfigs"},"put_sensor_template_output_configs":{"title":"Specify currently enabled templates whose destination needs to be updated to a new destination","type":"object","properties":{"put_sensor_template_output_config":{"type":"array","items":{"type":"object","properties":{"sensor_template_id":{"type":"string","title":"Specify Sensor template"},"destination":{"type":"array","items":{"type":"object","properties":{"destination_id":{"type":"string","title":"Unique identifier for a Destination Provider in Inventory"},"context_id":{"type":"string","description":"Destination context identifier.\nIt could be topic name if the destination is message bus.\nThe combination of destination_id and context_id needs to be unique for a Destination.\nWhat context id means depends on the destination type of the destination provider.\nIf \"GRPC\" is the destination type, context_id is not used and will be ignored."},"destination_name":{"type":"string","description":"The name of the destination. Not used during write operations, but optionally filled when using GET APIs.\nIt maps to the destination provider name in Crosswork Device Lifecycle Manager (DLM)."}},"description":"Use the destination identifier to uniquely identify a destination.\nThe output encoding format for the destination is derived from the Inventory destination_id.","$$ref":"#/definitions/collection_serviceDestination"},"description":"The destinations to which sensor data is written."}},"title":"SensorTemplateOutputConfig contains a sensor template and its destination details","$$ref":"#/definitions/collection_serviceSensorTemplateOutputConfig"},"description":"Specify all Sensor Templates whose destination needs to be updated on the device.\nIt represents a set of Sensor Templates with updated destinations (template should already have been enabled on device in an earlier CREATE job request)."}},"$$ref":"#/definitions/collection_servicePutSensorTemplateOutputConfigs"}},"$$ref":"#/definitions/collection_serviceBulkTemplateCollectionOperations"}},"example":{"patch_collection_template_operations":{"application_context":{"application_id":"proto_template_test_app","context_id":"proto_template_test_context"},"collection_mode":{"lifetime_type":"APPLICATION_MANAGED_WITH_AUTO_DELETE_ON_DEVICE_DELETE","collector_type":"CLI_COLLECTOR"},"device_id":"8e326ec1-5562-40e5-92d6-eefd0d646603","put_sensor_template_input_configs":{"put_sensor_template_input_config":[{"sensor_template_id":"template-test-version-template","cadence_in_millisec":"80000","parameter_values":{"template_param_values":[{"template_param_value":[{"key":"vrf","string_value":"vrf1"},{"key":"neighbor-ip","string_value":"ip1"}]},{"template_param_value":[{"key":"vrf","string_value":"vrf2"},{"key":"neighbor-ip","string_value":"ip2"}]}]}}]},"put_sensor_template_output_configs":{"put_sensor_template_output_config":[{"sensor_template_id":"template-test-version-template","destination":[{"destination_id":"c2a8fba8-8363-3d22-b0c2-a9e449693fae","context_id":"dest_context1"}]}]}}},"title":"BulkTemplateCollectionOperationsRequest","$$ref":"#/definitions/collection_serviceBulkTemplateCollectionOperationsRequest"}}],"tags":["CollectionService"],"__originalOperationId":"CollectionService_PatchTemplateCollectionJob","consumes":["application/json"],"produces":["application/json"],"method":"patch","path":"/templatecollectionjob"}}