Yes, please! I was quite surprised by how much unnecessary data was returned by the API - seems like that’s very much the point of having the views in the first place!
Is this why I am getting a super-set of the expected output when doing a Node retrieval request? I was expecting Output 1 but am getting Output 2:
Output 1:
{
“id”: “recoubblcbUlQ4dkv”,
“fields”: {
“Name”: “Embraer E190”,
“Type”: “Embraer E190”,
“Airplanes”:
“recoBQnUDUlFWjq59”,
“recbwDn7RswDy6TwW”
],
“RecID”: “recoubblcbUlQ4dkv”
},
“createdTime”: “2016-01-08T00:33:47.000Z”
}
Output 2
{"_table":{"_base":{"_airtable":{"_apiKey":"","_endpointUrl":“https://api.airtable.com”,"_apiVersion":“0.1.0”,"_apiVersionMajor":“0”,"_allowUnauthorizedSsl":false,"_noRetryIfRateLimited":false},"_id":""},“id”:null,“name”:“Types”},“id”:“recoubblcbUlQ4dkv”,"_rawJson":{
“id”:“recoubblcbUlQ4dkv”,
“fields”:{
“Name”:“Embraer E190”,
“Notes”:“Note\n\n”,
“Type”:“Embraer E190”,
“Airplanes”:
“recoBQnUDUlFWjq59”,
“recbwDn7RswDy6TwW”
],
“RecID”:“recoubblcbUlQ4dkv”
},“createdTime”:“2016-01-08T00:33:47.000Z”
}
,“fields”:{“Name”:“Embraer E190”,“Notes”:“Note\n\n”,“Type”:“Embraer E190”,“Airplanes”:e“recoBQnUDUlFWjq59”,“recbwDn7RswDy6TwW”],“RecID”:“recoubblcbUlQ4dkv”}}
Hi!
We just released an API update that lets you limit which fields are returned in results, as well as filtering which records are returned.
You can read more about it on our blog or in the API documentation.
Is this why I am getting a super-set of the expected output when doing a Node retrieval request? I was expecting Output 1 but am getting Output 2:
Output 1:
{
“id”: “recoubblcbUlQ4dkv”,
“fields”: {
“Name”: “Embraer E190”,
“Type”: “Embraer E190”,
“Airplanes”:
“recoBQnUDUlFWjq59”,
“recbwDn7RswDy6TwW”
],
“RecID”: “recoubblcbUlQ4dkv”
},
“createdTime”: “2016-01-08T00:33:47.000Z”
}
Output 2
{"_table":{"_base":{"_airtable":{"_apiKey":"","_endpointUrl":“https://api.airtable.com”,"_apiVersion":“0.1.0”,"_apiVersionMajor":“0”,"_allowUnauthorizedSsl":false,"_noRetryIfRateLimited":false},"_id":""},“id”:null,“name”:“Types”},“id”:“recoubblcbUlQ4dkv”,"_rawJson":{
“id”:“recoubblcbUlQ4dkv”,
“fields”:{
“Name”:“Embraer E190”,
“Notes”:“Note\n\n”,
“Type”:“Embraer E190”,
“Airplanes”:
“recoBQnUDUlFWjq59”,
“recbwDn7RswDy6TwW”
],
“RecID”:“recoubblcbUlQ4dkv”
},“createdTime”:“2016-01-08T00:33:47.000Z”
}
,“fields”:{“Name”:“Embraer E190”,“Notes”:“Note\n\n”,“Type”:“Embraer E190”,“Airplanes”:e“recoBQnUDUlFWjq59”,“recbwDn7RswDy6TwW”],“RecID”:“recoubblcbUlQ4dkv”}}
It looks like you’re printing the record object directly. To get the field values use the get
method on the record object. e.g. to get the notes for a record: record.get('Notes')
.
We don’t currently have a way of automatically getting all the field values as an object, but will consider adding it in the future.
Having the API parameters is a great way to restrict information in the consumer side, but I think Tim’s suggestion is more focused on the creator side, so only one view (and the columns/rows we decide) are exposed to the API queries keeping other information private
I also agree with Tim’s suggestion. Limiting fields via the API is a nice addition. However, it seems it would be easier to allow users to create (simplified) views containing hidden fields, and by default returning only those fields that are visible.
Perhaps an ‘includeHidden’ boolean parameter can be provided that allows a developer to choose their desired behavior.
Totally agree with this - would be great and it should be driven from the user end - particularly since there doesn’t seem to be a way to get a list of hidden fields via API either, so you can’t just query the view for visible fields and ask to only return those.