{"id":24991340,"url":"https://github.com/evris99/airbyte-sdk","last_synced_at":"2025-07-09T04:34:34.643Z","repository":{"id":144345439,"uuid":"461984640","full_name":"evris99/airbyte-sdk","owner":"evris99","description":"A golang SDK for Airbyte","archived":false,"fork":false,"pushed_at":"2022-03-08T15:22:42.000Z","size":58,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-29T13:14:31.310Z","etag":null,"topics":["airbyte","airbyte-api","golang","golang-airbyte-api","golang-library"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/evris99.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"liberapay":"evris"}},"created_at":"2022-02-21T18:29:34.000Z","updated_at":"2022-03-02T13:17:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"ca7d01cb-31d3-4cbe-ba87-3858f2c06d12","html_url":"https://github.com/evris99/airbyte-sdk","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/evris99/airbyte-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evris99%2Fairbyte-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evris99%2Fairbyte-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evris99%2Fairbyte-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evris99%2Fairbyte-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/evris99","download_url":"https://codeload.github.com/evris99/airbyte-sdk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evris99%2Fairbyte-sdk/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264394675,"owners_count":23601345,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["airbyte","airbyte-api","golang","golang-airbyte-api","golang-library"],"created_at":"2025-02-04T13:48:30.586Z","updated_at":"2025-07-09T04:34:34.634Z","avatar_url":"https://github.com/evris99.png","language":"Go","funding_links":["https://liberapay.com/evris"],"categories":[],"sub_categories":[],"readme":"# Airbyte Golang SDK\n\nA Golang SDK for interacting with the [Airbyte](https://github.com/airbytehq/airbyte) API. Documentation for the underlying API can be found [here](https://airbyte-public-api-docs.s3.us-east-2.amazonaws.com/rapidoc-api-docs.html).\n\n[![API Reference](\nhttps://camo.githubusercontent.com/915b7be44ada53c290eb157634330494ebe3e30a/68747470733a2f2f676f646f632e6f72672f6769746875622e636f6d2f676f6c616e672f6764646f3f7374617475732e737667\n)](https://pkg.go.dev/github.com/evris99/airbyte-sdk)\n\n## Installation\n\nHave Go version 1.17.6 or higher and run \n```\ngo get -u github.com/evris99/airbyte-sdk\n```\n\n## Usage\n\nAn example that creates a new workspace, destination and source. The source uses the OpenAPI connector and the destination uses the local JSON file connector. Then it creates a connection between them with the name \"Test Connection\".\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\tairbytesdk \"github.com/evris99/airbyte-sdk\"\n\t\"github.com/evris99/airbyte-sdk/types\"\n\t\"github.com/google/uuid\"\n)\n\nfunc main() {\n\tclient, err := airbytesdk.New(\"http://localhost:8000/api\")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\t// Get all source definitions and search for the ID of PokeAPI\n\tsourceDefinitions, err := client.ListSourceDefinitions(context.Background())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tvar srcDefinitionID uuid.NullUUID\n\tfor _, def := range sourceDefinitions {\n\t\tif def.Name == \"PokeAPI\" {\n\t\t\tsrcDefinitionID.UUID = *def.SourceDefinitionId\n\t\t\tsrcDefinitionID.Valid = true\n\t\t}\n\t}\n\n\tif !srcDefinitionID.Valid {\n\t\tpanic(\"Could not find pokeAPI source definition\")\n\t}\n\n\t// Create a new workspace for the connection\n\tworkspace := \u0026types.Workspace{\n\t\tName: \"Test\",\n\t}\n\n\tnewWorkspace, err := client.CreateWorkspace(context.Background(), workspace)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\t// Create new Source\n\tsource := \u0026types.Source{\n\t\tSourceDefinitionId:      \u0026srcDefinitionID.UUID,\n\t\tWorkspaceId:             newWorkspace.WorkspaceId,\n\t\tName:                    \"PokeAPI\",\n\t\tConnectionConfiguration: make(map[string]interface{}),\n\t}\n\tsource.ConnectionConfiguration[\"pokemon_name\"] = \"snorlax\"\n\n\tnewSource, err := client.CreateSource(context.Background(), source)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\t// Get all destination definitions and search for the ID of Local JSON\n\tdestinationDefinitions, err := client.ListDestinationDefinitions(context.Background())\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tvar destDefinitionID uuid.NullUUID\n\tfor _, def := range destinationDefinitions {\n\t\tif def.Name == \"Local JSON\" {\n\t\t\tdestDefinitionID.UUID = *def.DestinationDefinitionId\n\t\t\tdestDefinitionID.Valid = true\n\t\t}\n\t}\n\n\tif !destDefinitionID.Valid {\n\t\tpanic(\"Could not find local JSON destination definition\")\n\t}\n\n\t// Create new Destination\n\tdest := \u0026types.Destination{\n\t\tDestinationDefinitionId: \u0026destDefinitionID.UUID,\n\t\tWorkspaceId:             newWorkspace.WorkspaceId,\n\t\tName:                    \"Local JSON\",\n\t\tConnectionConfiguration: make(map[string]interface{}),\n\t}\n\tdest.ConnectionConfiguration[\"destination_path\"] = \"/json_data\"\n\n\tnewDest, err := client.CreateDestination(context.Background(), dest)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tconn := \u0026types.Connection{\n\t\tName:          \"Test Connection\",\n\t\tSourceID:      newSource.SourceId,\n\t\tDestinationId: newDest.DestinationId,\n\t\tStatus:        types.Active,\n\t}\n\n\t// Create new connection between the 2 connectors\n\tnewConn, err := client.CreateConnection(context.Background(), conn)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tfmt.Println(newConn.Name)\n\t// Output: Test Connection\n}\n\n```\n\n## Contributing\n\nAll contributions are welcome and we are grateful for even the smallest of fixes! ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevris99%2Fairbyte-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fevris99%2Fairbyte-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevris99%2Fairbyte-sdk/lists"}