Assuming your root name is node newList , as you have in the question newList , to get the id and the created date, you can do string interpolation with jq
api-producing-json | jq --raw-output '.newList[] | "\(.id) \(.create.date)"'
Thus, the filter does not depend on dynamic numbers in nodes ( 243 , 244 ). Leave the --raw-output flag if you need output with quotes.
To continue the process in a loop, you can iterate over the bash loop,
while read -r id name date; do echo "Do whatever with ${id} ${name} ${date}" done< <(api-producing-json | jq --raw-output '.newList[] | "\(.id) \(.name) \(.create.date)"')
or even more carefully distinguish between words, if you are worried about spaces in any of the fields, use a separator like | in the filter as "\(.id)|\(.name)|\(.create.date)" and use the read command in the while loop set IFS=| so that the variables are saved accordingly.
Always use official jq - documentation for reference and use this pretty site to test filters, jq - online
Inian source share