airbytesdk

package module
v0.0.0-...-38ffe0c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 8, 2022 License: MIT Imports: 10 Imported by: 0

README

Airbyte Golang SDK

A Golang SDK for interacting with the Airbyte API. Documentation for the underlying API can be found here.

API Reference

Installation

Have Go version 1.17.6 or higher and run

go get -u github.com/evris99/airbyte-sdk

Usage

An 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".

package main

import (
	"context"
	"fmt"

	airbytesdk "github.com/evris99/airbyte-sdk"
	"github.com/evris99/airbyte-sdk/types"
	"github.com/google/uuid"
)

func main() {
	client, err := airbytesdk.New("http://localhost:8000/api")
	if err != nil {
		panic(err)
	}

	// Get all source definitions and search for the ID of PokeAPI
	sourceDefinitions, err := client.ListSourceDefinitions(context.Background())
	if err != nil {
		panic(err)
	}

	var srcDefinitionID uuid.NullUUID
	for _, def := range sourceDefinitions {
		if def.Name == "PokeAPI" {
			srcDefinitionID.UUID = *def.SourceDefinitionId
			srcDefinitionID.Valid = true
		}
	}

	if !srcDefinitionID.Valid {
		panic("Could not find pokeAPI source definition")
	}

	// Create a new workspace for the connection
	workspace := &types.Workspace{
		Name: "Test",
	}

	newWorkspace, err := client.CreateWorkspace(context.Background(), workspace)
	if err != nil {
		panic(err)
	}

	// Create new Source
	source := &types.Source{
		SourceDefinitionId:      &srcDefinitionID.UUID,
		WorkspaceId:             newWorkspace.WorkspaceId,
		Name:                    "PokeAPI",
		ConnectionConfiguration: make(map[string]interface{}),
	}
	source.ConnectionConfiguration["pokemon_name"] = "snorlax"

	newSource, err := client.CreateSource(context.Background(), source)
	if err != nil {
		panic(err)
	}

	// Get all destination definitions and search for the ID of Local JSON
	destinationDefinitions, err := client.ListDestinationDefinitions(context.Background())
	if err != nil {
		panic(err)
	}

	var destDefinitionID uuid.NullUUID
	for _, def := range destinationDefinitions {
		if def.Name == "Local JSON" {
			destDefinitionID.UUID = *def.DestinationDefinitionId
			destDefinitionID.Valid = true
		}
	}

	if !destDefinitionID.Valid {
		panic("Could not find local JSON destination definition")
	}

	// Create new Destination
	dest := &types.Destination{
		DestinationDefinitionId: &destDefinitionID.UUID,
		WorkspaceId:             newWorkspace.WorkspaceId,
		Name:                    "Local JSON",
		ConnectionConfiguration: make(map[string]interface{}),
	}
	dest.ConnectionConfiguration["destination_path"] = "/json_data"

	newDest, err := client.CreateDestination(context.Background(), dest)
	if err != nil {
		panic(err)
	}

	conn := &types.Connection{
		Name:          "Test Connection",
		SourceID:      newSource.SourceId,
		DestinationId: newDest.DestinationId,
		Status:        types.Active,
	}

	// Create new connection between the 2 connectors
	newConn, err := client.CreateConnection(context.Background(), conn)
	if err != nil {
		panic(err)
	}

	fmt.Println(newConn.Name)
	// Output: Test Connection
}

Contributing

All contributions are welcome and we are grateful for even the smallest of fixes!

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidEndpoint = errors.New("invalid api endpoint")
	ErrServer          = errors.New("airbyte server error")
	ErrInvalidStatus   = errors.New("invalid server response status code")
)

Functions

This section is empty.

Types

type Client

type Client struct {
	// The underlying HTTP Client
	HttpClient *http.Client
	// contains filtered or unexported fields
}

A client to interact with the airbyte API using HTTP

func New

func New(apiEndpoint string) (*Client, error)

Creates and returns a new airbyte API client

func (*Client) CheckDestinationConnection

func (c *Client) CheckDestinationConnection(ctx context.Context, id *uuid.UUID) (*types.ConnectionCheck, error)

CheckDestinationConnection checks the connection to the destination with the given ID

func (*Client) CheckDestinationConnectionUpdate

func (c *Client) CheckDestinationConnectionUpdate(ctx context.Context, dest *types.Destination) (*types.ConnectionCheck, error)

CheckDestinationConnectionUpdate checks the connection to the destination with the given ID for updates

func (*Client) CheckSourceConnection

func (c *Client) CheckSourceConnection(ctx context.Context, id *uuid.UUID) (*types.ConnectionCheck, error)

CheckSourceConnection checks the connection to the source with the given ID

func (*Client) CheckSourceConnectionUpdate

func (c *Client) CheckSourceConnectionUpdate(ctx context.Context, source *types.Source) (*types.ConnectionCheck, error)

CheckSourceConnectionUpdate checks the connection to the source with the given ID for updates

func (*Client) CloneDestination

func (c *Client) CloneDestination(ctx context.Context, id *uuid.UUID) (*types.Destination, error)

CloneDestination makes a copy of the destination with the given ID

func (*Client) CloneSource

func (c *Client) CloneSource(ctx context.Context, id *uuid.UUID) (*types.Source, error)

CloneSource makes a copy of the source with the given ID

func (*Client) CreateConnection

func (c *Client) CreateConnection(ctx context.Context, conn *types.Connection) (*types.Connection, error)

CreateConnection creates a connection between a source and a destination

func (*Client) CreateDestination

func (c *Client) CreateDestination(ctx context.Context, dest *types.Destination) (*types.Destination, error)

CreateDestination creates a new destination

func (*Client) CreateDestinationDefinition

func (c *Client) CreateDestinationDefinition(ctx context.Context, definition *types.DestinationDefinition) (*types.DestinationDefinition, error)

CreateDestinationDefinition creates and returns a new destination definition

func (*Client) CreateSource

func (c *Client) CreateSource(ctx context.Context, source *types.Source) (*types.Source, error)

CreateSource creates a new source

func (*Client) CreateSourceDefinition

func (c *Client) CreateSourceDefinition(ctx context.Context, definition *types.SourceDefinition) (*types.SourceDefinition, error)

CreateSourceDefinition creates a new source definition and returns it

func (*Client) CreateWorkspace

func (c *Client) CreateWorkspace(ctx context.Context, workspace *types.Workspace) (*types.Workspace, error)

CreateWorkspace creates and returns a new workspace

func (*Client) DeleteConnection

func (c *Client) DeleteConnection(ctx context.Context, id *uuid.UUID) error

DeleteConnection deletes the connection with the given ID

func (*Client) DeleteDestination

func (c *Client) DeleteDestination(ctx context.Context, id *uuid.UUID) error

DeleteDestination deletes a destination with the given ID

func (*Client) DeleteDestinationDefinition

func (c *Client) DeleteDestinationDefinition(ctx context.Context, id *uuid.UUID) error

DeleteDestinationDefinition deletes the destination definition with the given ID

func (*Client) DeleteSource

func (c *Client) DeleteSource(ctx context.Context, id *uuid.UUID) error

DeleteSource deletes the source with the given ID

func (*Client) DeleteSourceDefinition

func (c *Client) DeleteSourceDefinition(ctx context.Context, id *uuid.UUID) error

DeleteSourceDefinition deletes the source definition with the given ID

func (*Client) DeleteWorkspace

func (c *Client) DeleteWorkspace(ctx context.Context, id *uuid.UUID) error

DeleteWorkspace deletes the workspace with the given UUID

func (*Client) FindWorkspaceByID

func (c *Client) FindWorkspaceByID(ctx context.Context, id *uuid.UUID) (*types.Workspace, error)

FindWorkspaceByID returns the workspace with the given ID

func (*Client) FindWorkspaceBySlug

func (c *Client) FindWorkspaceBySlug(ctx context.Context, slug string) (*types.Workspace, error)

FindWorkspaceBySlug returns the workspace with the given slug

func (*Client) GetConnection

func (c *Client) GetConnection(ctx context.Context, id *uuid.UUID) (*types.Connection, error)

GetConnection returns the connection with the given ID

func (*Client) GetDestination

func (c *Client) GetDestination(ctx context.Context, id *uuid.UUID) (*types.Destination, error)

GetDestination returns the destination with the given ID

func (*Client) GetDestinationDefinition

func (c *Client) GetDestinationDefinition(ctx context.Context, id *uuid.UUID) (*types.DestinationDefinition, error)

GetDestinationDefinition returns the destination definition with the given ID

func (*Client) GetDestinationDefinitionSpecification

func (c *Client) GetDestinationDefinitionSpecification(ctx context.Context, id *uuid.UUID) (*types.DestinationDefinitionSpecification, error)

GetDestinationDefinitionSpecification returns the source definition specification

func (*Client) GetSource

func (c *Client) GetSource(ctx context.Context, id *uuid.UUID) (*types.Source, error)

GetSource returns the source with the given ID

func (*Client) GetSourceDefinition

func (c *Client) GetSourceDefinition(ctx context.Context, id *uuid.UUID) (*types.SourceDefinition, error)

GetSourceDefinition returns the source definition with the given ID

func (*Client) GetSourceDefinitionSpecification

func (c *Client) GetSourceDefinitionSpecification(ctx context.Context, id *uuid.UUID) (*types.SourceDefinitionSpecification, error)

GetSourceDefinitionSpecification returns the source definition specification with the given source definition ID

func (*Client) ListAllWorkspaceConnections

func (c *Client) ListAllWorkspaceConnections(ctx context.Context, workspaceID *uuid.UUID) ([]types.Connection, error)

ListAllWorkspaceConnections lists all connections for workspace, including deleted connections.

func (*Client) ListDestinationDefinitions

func (c *Client) ListDestinationDefinitions(ctx context.Context) ([]types.DestinationDefinition, error)

ListDestinationDefinitions returns all the destination definitions the current Airbyte deployment is configured to use

func (*Client) ListLatestDestinationDefinitions

func (c *Client) ListLatestDestinationDefinitions(ctx context.Context) ([]types.DestinationDefinition, error)

ListLatestDestinationDefinitions returns the latest destination definitions the current Airbyte deployment is configured to use

func (*Client) ListLatestSourceDefinitions

func (c *Client) ListLatestSourceDefinitions(ctx context.Context) ([]types.SourceDefinition, error)

ListLatestSourceDefinitions returns the latest source definitions the current Airbyte deployment is configured to use

func (*Client) ListSourceDefinitions

func (c *Client) ListSourceDefinitions(ctx context.Context) ([]types.SourceDefinition, error)

ListSourceDefinitions returns all the source definitions the current Airbyte deployment is configured to use

func (*Client) ListWorkspaceConnections

func (c *Client) ListWorkspaceConnections(ctx context.Context, workspaceID *uuid.UUID) ([]types.Connection, error)

ListWorkspaceConnections lists connections for workspace. Does not return deleted connections

func (*Client) ListWorkspaceDestinations

func (c *Client) ListWorkspaceDestinations(ctx context.Context, workspaceID *uuid.UUID) ([]types.Destination, error)

ListWorkspaceDestinations returns all the destinations in the workspace with the given ID

func (*Client) ListWorkspaceSources

func (c *Client) ListWorkspaceSources(ctx context.Context, workspaceID *uuid.UUID) ([]types.Source, error)

ListWorkspaceSources returns all the source in the workspace with the given ID

func (*Client) ListWorkspaces

func (c *Client) ListWorkspaces(ctx context.Context) ([]types.Workspace, error)

ListWorkspaces returns all the workspaces

func (*Client) SearchConnection

func (c *Client) SearchConnection(ctx context.Context, conn *types.Connection) (*types.Connection, error)

SearchConnection searches for the given connection

func (*Client) SearchDestination

func (c *Client) SearchDestination(ctx context.Context, dest *types.Destination) (*types.Destination, error)

SearchDestination searches for the given destination

func (*Client) SearchSource

func (c *Client) SearchSource(ctx context.Context, source *types.Source) (*types.Source, error)

SearchSource searches for the given source

func (*Client) UpdateConnection

func (c *Client) UpdateConnection(ctx context.Context, conn *types.Connection) (*types.Connection, error)

UpdateConnection updates a connection between a source and a destination

func (*Client) UpdateDestination

func (c *Client) UpdateDestination(ctx context.Context, dest *types.Destination) (*types.Destination, error)

UpdateDestination updates a destination

func (*Client) UpdateDestinationDefinitionDockerImage

func (c *Client) UpdateDestinationDefinitionDockerImage(ctx context.Context, id *uuid.UUID, dockerImageTag string) (*types.DestinationDefinition, error)

UpdateDestinationDefinitionDockerImage updates a destination definition. Currently, the only allowed attribute to update is the default docker image version.

func (*Client) UpdateSource

func (c *Client) UpdateSource(ctx context.Context, source *types.Source) (*types.Source, error)

UpdateSource update a source

func (*Client) UpdateSourceDefinitionDockerImage

func (c *Client) UpdateSourceDefinitionDockerImage(ctx context.Context, id *uuid.UUID, dockerImageTag string) (*types.SourceDefinition, error)

UpdateSourceDefinitionDockerImage updates a source definition and returns it. Currently, the only allowed attribute to update is the default docker image version.

func (*Client) UpdateWorkspaceFeedbackState

func (c *Client) UpdateWorkspaceFeedbackState(ctx context.Context, id *uuid.UUID) error

UpdateWorkspaceFeedbackState tags the feedback status of the workspace as done

func (*Client) UpdateWorkspaceName

func (c *Client) UpdateWorkspaceName(ctx context.Context, id *uuid.UUID, name string) (*types.Workspace, error)

UpdateWorkspaceName updates the name of workspace with the given id

func (*Client) UpdateWorkspaceState

func (c *Client) UpdateWorkspaceState(ctx context.Context, workspace types.Workspace) (*types.Workspace, error)

UpdateWorkspaceState updates the workspace. The WorkspaceId field must be included and the Name field must be empty. The whole object must be passed in, even the fields that did not change

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL