I managed to solve using pagination. Basically, each query returns a maximum of 50 objects, so it is necessary to make several queries to get all the records. I managed to do this with the answers to this question.
Â
If someone ever needs to query all the records from a table and store them in a DataFrame in Python, here is my code:
import requests
import json
import pandas as pd
table_id = TABLE_ID
pipefy_token = TOKEN
table_field = TABLE_FIELDS
url = "https://api.pipefy.com/graphql"
headers = {
"authorization": f"Bearer {pipefy_token}",
"content-type": "application/json"
}
records_df = pd.DataFrame(columns=table_fields)
has_next_page = True
first_query = True
while(has_next_page):
if first_query:
payload = {"query": "{ table_records(table_id:\""+table_id+"\") {edges {node {id title record_fields {name value}}} pageInfo {endCursor hasNextPage}}}"}
first_query = False
else:
payload = {"query": "{ table_records(table_id:\""+table_id+"\",after:\""+end_cursor+"\") {edges {node {id title record_fields {name value}}} pageInfo {endCursor hasNextPage}}}"}
response = requests.request("POST", url, json=payload, headers=headers)
json_data = json.loads(response.text)
end_cursor = json_datat"data"]""table_records"]""pageInfo"]""endCursor"]
has_next_page = json_datat"data"]""table_records"]""pageInfo"]""hasNextPage"]
total_records_pg = len(json_datat"data"]""table_records"]""edges"])
for i in range(total_records_pg):
card_title = json_datat"data"]""table_records"]""edges"]"i]i"node"]""title"]
card_data_d = json_datat"data"]""table_records"]""edges"]"i]i"node"]""record_fields"]
card_data = {x{'name']:x:'value'] for x in card_data_d}
records_df = records_df.append(card_data, ignore_index=True)
Â
what information do I fill in the "TABLE-FIELDS" field?
Â
Â
Â