In Microsoft PowerBI have written the below M code to fetch records via a web API. The query works, but it fetches only the first 50 records. I would like for the query to repeat itself, until it has fetched all the records from the source. Can anybody put me on the right track?
let
postData = Json.FromValue([fStartIndex=1]),
Source = Web.Contents("https://XXX.appiancloud.com/suite/webapi/XXX",[Content = postData,Headers=[#"Content-Type"="application/json", #"Appian-API-Key"="xxxxxxxxxxxxyyyyyyyyyyyyyyyzzzzzzzzzzzzzzz"]]),
#"Imported JSON" = Json.Document(Source),
#"Converted to Table" = Table.FromRecords({#"Imported JSON"}),
#"Parsed JSON" = Table.TransformColumns(#"Converted to Table",{{"recommendations", Json.Document}}),
#"Expanded recommendations" = Table.ExpandListColumn(#"Parsed JSON", "recommendations"),
#"Changed Type" = Table.TransformColumnTypes(#"Expanded recommendations",{{"totalCount", Int64.Type}, {"nextBatchStartIndex", Int64.Type}, {"recommendations", type any}}),
#"Expanded recommendations1" = Table.ExpandRecordColumn(#"Changed Type", "recommendations", {"updatedDateFormatDate", "createdDateFormatDate", "recommendationSource", "iosRecommendationId", "secondaryDepartmentEmail", "sourceLink", "meetingDate", "delegateToDate", "delegateFromDate", "delegatee", "dateOfissuanceText", "updatedDate", "updatedBy", "createdDate", "createdBy", "gbReport", "status", "customField5", "customField4", "customField3", "customField2", "customField1", "generalComment", "recommendationBODeadline", "flmComment", "flmApprovalDecision", "flmName", "initialManagementResponse", "crossReferencing", "riskLevel", "priorityLevel", "recommendationDeadline", "externaltargetAudience", "secondaryDepartments", "associateBusinessOwner", "businessOwnerName", "businessOwnerDepartment", "division", "acceptanceComment", "whoAcceptance", "openEndedProcess", "theme3", "theme2", "theme1", "category", "recommendation", "agendaItemName", "agendaItem", "sourceReportNo", "dateOfissuance", "meeting", "portal", "indexNo", "recommendationId"}, {"Column3.updatedDateFormatDate", "Column3.createdDateFormatDate", "Column3.recommendationSource", "Column3.iosRecommendationId", "Column3.secondaryDepartmentEmail", "Column3.sourceLink", "Column3.meetingDate", "Column3.delegateToDate", "Column3.delegateFromDate", "Column3.delegatee", "Column3.dateOfissuanceText", "Column3.updatedDate", "Column3.updatedBy", "Column3.createdDate", "Column3.createdBy", "Column3.gbReport", "Column3.status", "Column3.customField5", "Column3.customField4", "Column3.customField3", "Column3.customField2", "Column3.customField1", "Column3.generalComment", "Column3.recommendationBODeadline", "Column3.flmComment", "Column3.flmApprovalDecision", "Column3.flmName", "Column3.initialManagementResponse", "Column3.crossReferencing", "Column3.riskLevel", "Column3.priorityLevel", "Column3.recommendationDeadline", "Column3.externaltargetAudience", "Column3.secondaryDepartments", "Column3.associateBusinessOwner", "Column3.businessOwnerName", "Column3.businessOwnerDepartment", "Column3.division", "Column3.acceptanceComment", "Column3.whoAcceptance", "Column3.openEndedProcess", "Column3.theme3", "Column3.theme2", "Column3.theme1", "Column3.category", "Column3.recommendation", "Column3.agendaItemName", "Column3.agendaItem", "Column3.sourceReportNo", "Column3.dateOfissuance", "Column3.meeting", "Column3.portal", "Column3.indexNo", "Column3.recommendationId"}),
#"Removed Columns" = Table.RemoveColumns(#"Expanded recommendations1",{"totalCount", "nextBatchStartIndex"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Column3.updatedDateFormatDate", "updatedDateFormatDate"}, {"Column3.createdDateFormatDate", "createdDateFormatDate"}, {"Column3.recommendationSource", "recommendationSource"}, {"Column3.iosRecommendationId", "iosRecommendationId"}, {"Column3.secondaryDepartmentEmail", "secondaryDepartmentEmail"}, {"Column3.sourceLink", "sourceLink"}, {"Column3.meetingDate", "meetingDate"}, {"Column3.delegateToDate", "delegateToDate"}, {"Column3.delegateFromDate", "delegateFromDate"}, {"Column3.delegatee", "delegatee"}, {"Column3.dateOfissuanceText", "dateOfissuanceText"}, {"Column3.updatedDate", "updatedDate"}, {"Column3.updatedBy", "updatedBy"}, {"Column3.createdDate", "createdDate"}, {"Column3.createdBy", "createdBy"}, {"Column3.gbReport", "gbReport"}, {"Column3.status", "status"}, {"Column3.customField5", "customField5"}, {"Column3.customField4", "customField4"}, {"Column3.customField3", "customField3"}, {"Column3.customField2", "customField2"}, {"Column3.customField1", "customField1"}, {"Column3.generalComment", "generalComment"}, {"Column3.recommendationBODeadline", "recommendationBODeadline"}, {"Column3.flmComment", "flmComment"}, {"Column3.flmApprovalDecision", "flmApprovalDecision"}, {"Column3.flmName", "flmName"}, {"Column3.initialManagementResponse", "initialManagementResponse"}, {"Column3.crossReferencing", "crossReferencing"}, {"Column3.riskLevel", "riskLevel"}, {"Column3.priorityLevel", "priorityLevel"}, {"Column3.recommendationDeadline", "recommendationDeadline"}, {"Column3.externaltargetAudience", "externaltargetAudience"}, {"Column3.secondaryDepartments", "secondaryDepartments"}, {"Column3.associateBusinessOwner", "associateBusinessOwner"}, {"Column3.businessOwnerName", "businessOwnerName"}, {"Column3.businessOwnerDepartment", "businessOwnerDepartment"}, {"Column3.division", "division"},{"Column3.acceptanceComment", "acceptanceComment"}, {"Column3.whoAcceptance", "whoAcceptance"}, {"Column3.openEndedProcess", "openEndedProcess"}, {"Column3.theme3", "theme3"}, {"Column3.theme2", "theme2"}, {"Column3.theme1", "theme1"}, {"Column3.category", "category"}, {"Column3.recommendation", "recommendation"}, {"Column3.agendaItemName", "agendaItemName"}, {"Column3.agendaItem", "agendaItem"}, {"Column3.sourceReportNo", "sourceReportNo"}, {"Column3.dateOfissuance", "dateOfissuance"}, {"Column3.meeting", "meeting"}, {"Column3.portal", "portal"}, {"Column3.indexNo", "indexNo"}, {"Column3.recommendationId", "recommendationId"}})
in
#"Renamed Columns"