Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]

Community Articles

Find and share helpful community-sourced technical articles.
Announcements
Share your experience with Cloudera on G2 and get a $25 Amazon Gift card.
Hi, I'm CLEO! Something exciting is coming to the Community. Stay Tuned!
Labels (2)
avatar

Introduction

Recently a customer asked me how to change destination of a connection which still contains data, but the destination is stopped. Using NiFi REST Api we can change the flow, here in this article I am trying to capture steps to update destination of a connection using REST API. The requirement around this was to push incoming data to different flows on a timely manner.

Prerequisites

1) To test this, Make sure HDF-2.x version of NiFi is up an running

2) Minimum 3 processors are on the canvas with connection like below:

12507-data-flow-before.jpg

3) Note the destination's uuid [In my case 'PutNext' processor's uuid]

12506-putnext-uuid.jpg

4) Note the uuid of the connection that has to be made to the 'PutNext' processor

12505-connection.jpg

'GET'ing the details of connection

1) Execute the below command on your terminal with uuid of the connection:

curl -i -X GET http://localhost:8080/nifi-api/connections/dcbee9dd-0159-1000-45a7-8306c28f2786 

2) Now Copy the result of the GET curl command and update the below section with uuid of the 'PutNext' processor.

"destination":{"id":
"destinationId":"
"destinationId":

12504-changes-required.jpg

3) Remove the below json element from the copied result:

"permissions":{"canRead":true,"canWrite":true},

12503-remove-this-element.jpg

Updating Destination with PUT REST calls

1) Once updated, run the PUT REST API call from command line using curl as below:

curl -i -X PUT -H 'Content-Type: application/json'  -d  '{ **MY UPDATED JSON**}' http://localhost:8080/nifi-api/connections/dcbee9dd-0159-1000-45a7-8306c28f2786

My Sample command is as below:

curl -i -X PUT -H 'Content-Type: application/json'  -d  '{
    "revision": {
        "clientId": "dd1c2f03-0159-1000-845b-d5c732a49869",
        "version": 15
    },
    "id": "dcbee9dd-0159-1000-45a7-8306c28f2786",
    "uri": "http://localhost:8080/nifi-api/connections/dcbee9dd-0159-1000-45a7-8306c28f2786",
    "component": {
        "id": "dcbee9dd-0159-1000-45a7-8306c28f2786",
        "parentGroupId": "cbe6e53b-0158-1000-e36a-f9d26bb1b510",
        "source": {
            "id": "dcbea89f-0159-1000-278c-cc38bab689bf",
            "type": "PROCESSOR",
            "groupId": "cbe6e53b-0158-1000-e36a-f9d26bb1b510",
            "name": "GenerateFlowFile",
            "running": false,
            "comments": ""
        },
        "destination": {
            "id": "dcbebd86-0159-1000-7559-d77d1e05c910",
            "type": "PROCESSOR",
            "groupId": "cbe6e53b-0158-1000-e36a-f9d26bb1b510",
            "name": "PutFile",
            "running": false,
            "comments": ""
        },
        "name": "",
        "labelIndex": 1,
        "zIndex": 0,
        "selectedRelationships": ["success"],
        "availableRelationships": ["success"],
        "backPressureObjectThreshold": 10000,
        "backPressureDataSizeThreshold": "1 GB",
        "flowFileExpiration": "0 sec",
        "prioritizers": [],
        "bends": []
    },
    "status": {
        "id": "dcbee9dd-0159-1000-45a7-8306c28f2786",
        "groupId": "cbe6e53b-0158-1000-e36a-f9d26bb1b510",
        "name": "success",
        "statsLastRefreshed": "09:02:22 EST",
        "sourceId": "dcbea89f-0159-1000-278c-cc38bab689bf",
        "sourceName": "GenerateFlowFile",
        "destinationId": "dcbebd86-0159-1000-7559-d77d1e05c910",
        "destinationName": "PutFile",
        "aggregateSnapshot": {
            "id": "dcbee9dd-0159-1000-45a7-8306c28f2786",
            "groupId": "cbe6e53b-0158-1000-e36a-f9d26bb1b510",
            "name": "success",
            "sourceName": "GenerateFlowFile",
            "destinationName": "PutFile",
            "flowFilesIn": 0,
            "bytesIn": 0,
            "input": "0 (0 bytes)",
            "flowFilesOut": 0,
            "bytesOut": 0,
            "output": "0 (0 bytes)",
            "flowFilesQueued": 18,
            "bytesQueued": 18,
            "queued": "18 (18 bytes)",
            "queuedSize": "18 bytes",
            "queuedCount": "18"
        }
    },
    "bends": [],
    "labelIndex": 1,
    "zIndex": 0,
    "sourceId": "dcbea89f-0159-1000-278c-cc38bab689bf",
    "sourceGroupId": "cbe6e53b-0158-1000-e36a-f9d26bb1b510",
    "sourceType": "PROCESSOR",
    "destinationId": "dcbebd86-0159-1000-7559-d77d1e05c910",
    "destinationGroupId": "cbe6e53b-0158-1000-e36a-f9d26bb1b510",
    "destinationType": "PROCESSOR"
}' http://localhost:8080/nifi-api/connections/dcbee9dd-0159-1000-45a7-8306c28f2786

2) Once you execute the above, if the update is successful, you will get below result:

HTTP/1.1 200 OK
Date: Fri, 27 Jan 2017 14:59:37 GMT
Cache-Control: private, no-cache, no-store, no-transform
Content-Type: application/json
Transfer-Encoding: chunked
Server: Jetty(9.3.9.v20160517)

Result will be similar as below:

12502-curl-result.jpg

3) Now login Back to the NiFi UI and make sure the change is done:

12501-data-flow-after.jpg

References:

Thanks,

Jobin George

6,819 Views
Comments
avatar

Hi Jobin,


Thanks for the post.I am doing same exactly what you did but i am getting error

NIFI flows
108702-nifi-processors.png


Curl Command

108712-curl-command.png

*****Proccessors UUID*****

putNext UUID---->

b0971f42-016a-1000-ea25-30e14e18c4ea

generateflow UUID------>

b094e512-016a-1000-7e53-e5b4570d3a52


connection UUID---->

b096684f-016a-1000-fe11-3d8b80583b38


Note: I am doing this in windows PC locally.


Please help here

avatar
New Member

Thank you for the article. 

 

In my case, we need to create a new connection between two process groups. Is the same curl changing parameters?

 

Thank you advanced.

Version history
Last update:
‎04-21-2026 05:25 AM
Updated by: