Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mehanizm/airtable
Simple golang airtable API wrapper
https://github.com/mehanizm/airtable
airtable api go golang
Last synced: about 2 months ago
JSON representation
Simple golang airtable API wrapper
- Host: GitHub
- URL: https://github.com/mehanizm/airtable
- Owner: mehanizm
- License: mit
- Created: 2020-04-12T10:05:07.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-03-23T04:36:08.000Z (9 months ago)
- Last Synced: 2024-07-31T20:53:13.884Z (5 months ago)
- Topics: airtable, api, go, golang
- Language: Go
- Size: 46.9 KB
- Stars: 73
- Watchers: 4
- Forks: 17
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-go - airtable - Go client library for the [Airtable API](https://airtable.com/api). (Third-party APIs / Utility/Miscellaneous)
- awesome-go-extra - airtable - 04-12T10:05:07Z|2022-03-25T09:56:24Z| (Third-party APIs / Fail injection)
README
Golang Airtable API
================[![GoDoc](https://godoc.org/github.com/mehanizm/airtable?status.svg)](https://pkg.go.dev/github.com/mehanizm/airtable)
![Go](https://github.com/mehanizm/airtable/workflows/Go/badge.svg)
[![codecov](https://codecov.io/gh/mehanizm/airtable/branch/master/graph/badge.svg)](https://codecov.io/gh/mehanizm/airtable)
[![Go Report](https://goreportcard.com/badge/github.com/mehanizm/airtable)](https://goreportcard.com/badge/github.com/mehanizm/airtable)
[![Mentioned in Awesome Go](https://awesome.re/mentioned-badge-flat.svg)](https://github.com/avelino/awesome-go)A simple #golang package to access the [Airtable API](https://airtable.com/api).
Table of contents
===
- [Golang Airtable API](#golang-airtable-api)
- [Table of contents](#table-of-contents)
- [Installation](#installation)
- [Basic usage](#basic-usage)
- [Initialize client](#initialize-client)
- [Get table](#get-table)
- [List records](#list-records)
- [Add records](#add-records)
- [Get record by ID](#get-record-by-id)
- [Update records](#update-records)
- [Delete record](#delete-record)
- [Bulk delete records](#bulk-delete-records)
- [Special thanks](#special-thanks)
## Installation
The Golang Airtable API has been tested compatible with Go 1.13 on up.
```
go get github.com/mehanizm/airtable
```## Basic usage
### Initialize client
You should get `your_api_token` in the airtable [account page](https://airtable.com/account)
```Go
client := airtable.NewClient("your_api_token")
```You can use custom http client here
```Go
client.SetCustomClient(http.DefaultClient)
```### Custom context
Each method below can be used with custom context. Simply use `MethodNameContext` call and provide context as first argument.### List bases
```Go
bases, err := client.GetBases().WithOffset("").Do()
```### Get base schema
```Go
schema, err := client.GetBaseSchema("your_database_ID").Do()
```### Get table
To get the `your_database_ID` you should go to [main API page](https://airtable.com/api) and select the database.
```Go
table := client.GetTable("your_database_ID", "your_table_name")
```### List records
To get records from the table you can use something like this
```Go
records, err := table.GetRecords().
FromView("view_1").
WithFilterFormula("AND({Field1}='value_1',NOT({Field2}='value_2'))").
WithSort(sortQuery1, sortQuery2).
ReturnFields("Field1", "Field2").
InStringFormat("Europe/Moscow", "ru").
Do()
if err != nil {
// Handle error
}
```### Add records
```Go
recordsToSend := &airtable.Records{
Records: []*airtable.Record{
{
Fields: map[string]any{
"Field1": "value1",
"Field2": true,
},
},
},
}
receivedRecords, err := table.AddRecords(recordsToSend)
if err != nil {
// Handle error
}
```### Get record by ID
```Go
record, err := table.GetRecord("recordID")
if err != nil {
// Handle error
}
```### Update records
To partial update one record
```Go
res, err := record.UpdateRecordPartial(map[string]any{"Field_2": false})
if err != nil {
// Handle error
}
```To full update records
```Go
toUpdateRecords := &airtable.Records{
Records: []*airtable.Record{
{
Fields: map[string]any{
"Field1": "value1",
"Field2": true,
},
},
{
Fields: map[string]any{
"Field1": "value1",
"Field2": true,
},
},
},
}
updatedRecords, err := table.UpdateRecords(toUpdateRecords)
if err != nil {
// Handle error
}
```### Delete record
```Go
res, err := record.DeleteRecord()
if err != nil {
// Handle error
}
```### Bulk delete records
To delete up to 10 records
```Go
records, err := table.DeleteRecords([]string{"recordID1", "recordsID2"})
if err != nil {
// Handle error
}
```## Special thanks
Inspired by [Go Trello API](github.com/adlio/trello)