From e9aeb3ba01c49ce500879153d7b4d7bdc7fc69d1 Mon Sep 17 00:00:00 2001 From: Michael Street <5597260+MStreet3@users.noreply.github.com> Date: Wed, 14 Aug 2024 12:02:15 -0400 Subject: [PATCH] feat(integration-tests): adds go client for interacting with web GQL --- integration-tests/web/sdk/client/client.go | 119 + .../web/sdk/client/internal/doer/doer.go | 20 + integration-tests/web/sdk/genqlient.yaml | 15 + integration-tests/web/sdk/go.mod | 19 + integration-tests/web/sdk/go.sum | 43 + .../web/sdk/internal/generated/generated.go | 3301 +++++++++++++++++ .../web/sdk/internal/genqlient.graphql | 208 ++ .../web/sdk/internal/schema.graphql | 1186 ++++++ integration-tests/web/sdk/main.go | 21 + 9 files changed, 4932 insertions(+) create mode 100644 integration-tests/web/sdk/client/client.go create mode 100644 integration-tests/web/sdk/client/internal/doer/doer.go create mode 100644 integration-tests/web/sdk/genqlient.yaml create mode 100644 integration-tests/web/sdk/go.mod create mode 100644 integration-tests/web/sdk/go.sum create mode 100644 integration-tests/web/sdk/internal/generated/generated.go create mode 100644 integration-tests/web/sdk/internal/genqlient.graphql create mode 100644 integration-tests/web/sdk/internal/schema.graphql create mode 100644 integration-tests/web/sdk/main.go diff --git a/integration-tests/web/sdk/client/client.go b/integration-tests/web/sdk/client/client.go new file mode 100644 index 00000000000..67526672125 --- /dev/null +++ b/integration-tests/web/sdk/client/client.go @@ -0,0 +1,119 @@ +package client + +import ( + "context" + "encoding/json" + "fmt" + "net/http" + "strings" + + "github.com/Khan/genqlient/graphql" + + "github.com/smartcontractkit/chainlink/integration-tests/web/sdk/client/internal/doer" + "github.com/smartcontractkit/chainlink/integration-tests/web/sdk/internal/generated" +) + +type client struct { + gqlClient graphql.Client + credentials Credentials + endpoints endpoints + cookie string +} + +type endpoints struct { + Sessions string + Query string +} + +type Credentials struct { + Email string `json:"email"` + Password string `json:"password"` +} + +func New(baseURI string, creds Credentials) (*client, error) { //nolint:revive + endpoints := endpoints{ + Sessions: baseURI + "/sessions", + Query: baseURI + "/query", + } + c := &client{ + endpoints: endpoints, + credentials: creds, + } + + if err := c.login(); err != nil { + return nil, fmt.Errorf("failed to login to node: %w", err) + } + + c.gqlClient = graphql.NewClient( + c.endpoints.Query, + doer.NewAuthed(c.cookie), + ) + + return c, nil +} + +func (c *client) GetCSAKeys(ctx context.Context) (*generated.GetCSAKeysResponse, error) { + return generated.GetCSAKeys(ctx, c.gqlClient) +} + +func (c *client) GetJob(ctx context.Context, id string) (*generated.GetJobResponse, error) { + return generated.GetJob(ctx, c.gqlClient, id) +} + +func (c *client) ListJobs(ctx context.Context, offset, limit int) (*generated.ListJobsResponse, error) { + return generated.ListJobs(ctx, c.gqlClient, offset, limit) +} + +func (c *client) GetJobProposal(ctx context.Context, id string) (*generated.GetJobProposalResponse, error) { + return generated.GetJobProposal(ctx, c.gqlClient, id) +} + +func (c *client) GetBridge(ctx context.Context, id string) (*generated.GetBridgeResponse, error) { + return generated.GetBridge(ctx, c.gqlClient, id) +} + +func (c *client) ListBridges(ctx context.Context, offset, limit int) (*generated.ListBridgesResponse, error) { + return generated.ListBridges(ctx, c.gqlClient, offset, limit) +} + +func (c *client) GetFeedsManager(ctx context.Context, id string) (*generated.GetFeedsManagerResponse, error) { + return generated.GetFeedsManager(ctx, c.gqlClient, id) +} + +func (c *client) ListFeedsManagers(ctx context.Context) (*generated.ListFeedsManagersResponse, error) { + return generated.ListFeedsManagers(ctx, c.gqlClient) +} + +func (c *client) CreateFeedsManager(ctx context.Context, cmd generated.CreateFeedsManagerInput) (*generated.CreateFeedsManagerResponse, error) { + return generated.CreateFeedsManager(ctx, c.gqlClient, cmd) +} + +func (c *client) login() error { + b, err := json.Marshal(c.credentials) + if err != nil { + return fmt.Errorf("failed to marshal credentials: %w", err) + } + + payload := strings.NewReader(string(b)) + + req, err := http.NewRequest("POST", c.endpoints.Sessions, payload) + if err != nil { + return err + } + + req.Header.Add("Content-Type", "application/json") + + res, err := http.DefaultClient.Do(req) + if err != nil { + return err + } + defer res.Body.Close() + + cookieHeader := res.Header.Get("Set-Cookie") + if cookieHeader == "" { + return fmt.Errorf("no cookie found in header") + } + + c.cookie = strings.Split(cookieHeader, ";")[0] + return nil +} diff --git a/integration-tests/web/sdk/client/internal/doer/doer.go b/integration-tests/web/sdk/client/internal/doer/doer.go new file mode 100644 index 00000000000..5263d9dcd5f --- /dev/null +++ b/integration-tests/web/sdk/client/internal/doer/doer.go @@ -0,0 +1,20 @@ +package doer + +import "net/http" + +type authed struct { + cookie string + wrapped *http.Client +} + +func NewAuthed(cookie string) *authed { + return &authed{ + cookie: cookie, + wrapped: http.DefaultClient, + } +} + +func (a *authed) Do(req *http.Request) (*http.Response, error) { + req.Header.Set("cookie", a.cookie) + return a.wrapped.Do(req) +} diff --git a/integration-tests/web/sdk/genqlient.yaml b/integration-tests/web/sdk/genqlient.yaml new file mode 100644 index 00000000000..263cf43f6bb --- /dev/null +++ b/integration-tests/web/sdk/genqlient.yaml @@ -0,0 +1,15 @@ +# Default genqlient config; for full documentation see: +# https://github.com/Khan/genqlient/blob/main/docs/genqlient.yaml +schema: ./internal/schema.graphql + +operations: +- ./internal/genqlient.graphql + +generated: ./internal/generated/generated.go + +bindings: + Time: + type: string + +package_bindings: +- package: github.com/smartcontractkit/chainlink/core/web/gqlscalar diff --git a/integration-tests/web/sdk/go.mod b/integration-tests/web/sdk/go.mod new file mode 100644 index 00000000000..c07426b71fd --- /dev/null +++ b/integration-tests/web/sdk/go.mod @@ -0,0 +1,19 @@ +module github.com/smartcontractkit/chainlink/integration-tests/web/sdk + +go 1.21.7 + +require ( + github.com/Khan/genqlient v0.7.0 + github.com/smartcontractkit/chainlink v1.13.3 +) + +require ( + github.com/agnivade/levenshtein v1.1.1 // indirect + github.com/alexflint/go-arg v1.4.2 // indirect + github.com/alexflint/go-scalar v1.0.0 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/vektah/gqlparser/v2 v2.5.11 // indirect + golang.org/x/mod v0.15.0 // indirect + golang.org/x/tools v0.18.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect +) diff --git a/integration-tests/web/sdk/go.sum b/integration-tests/web/sdk/go.sum new file mode 100644 index 00000000000..89579de3d4a --- /dev/null +++ b/integration-tests/web/sdk/go.sum @@ -0,0 +1,43 @@ +github.com/Khan/genqlient v0.7.0 h1:GZ1meyRnzcDTK48EjqB8t3bcfYvHArCUUvgOwpz1D4w= +github.com/Khan/genqlient v0.7.0/go.mod h1:HNyy3wZvuYwmW3Y7mkoQLZsa/R5n5yIRajS1kPBvSFM= +github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= +github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo= +github.com/alexflint/go-arg v1.4.2 h1:lDWZAXxpAnZUq4qwb86p/3rIJJ2Li81EoMbTMujhVa0= +github.com/alexflint/go-arg v1.4.2/go.mod h1:9iRbDxne7LcR/GSvEr7ma++GLpdIU1zrghf2y2768kM= +github.com/alexflint/go-scalar v1.0.0 h1:NGupf1XV/Xb04wXskDFzS0KWOLH632W/EO4fAFi+A70= +github.com/alexflint/go-scalar v1.0.0/go.mod h1:GpHzbCOZXEKMEcygYQ5n/aa4Aq84zbxjy3MxYW0gjYw= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= +github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE= +github.com/bradleyjkemp/cupaloy/v2 v2.6.0 h1:knToPYa2xtfg42U3I6punFEjaGFKWQRXJwj0JTv4mTs= +github.com/bradleyjkemp/cupaloy/v2 v2.6.0/go.mod h1:bm7JXdkRd4BHJk9HpwqAI8BoAY1lps46Enkdqw6aRX0= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48 h1:fRzb/w+pyskVMQ+UbP35JkH8yB7MYb4q/qhBarqZE6g= +github.com/dgryski/trifles v0.0.0-20200323201526-dd97f9abfb48/go.mod h1:if7Fbed8SFyPtHLHbg49SI7NAdJiC5WIA09pe59rfAA= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= +github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= +github.com/smartcontractkit/chainlink v1.13.3 h1:jMu/eyEUZvoYG+VhA20AI3TvQwiWisThg8ivYZRj2jk= +github.com/smartcontractkit/chainlink v1.13.3/go.mod h1:crv7u9WKBmwmTNXrof0grHA+tYwvVk7X3JQuaRyet/o= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/vektah/gqlparser/v2 v2.5.11 h1:JJxLtXIoN7+3x6MBdtIP59TP1RANnY7pXOaDnADQSf8= +github.com/vektah/gqlparser/v2 v2.5.11/go.mod h1:1rCcfwB2ekJofmluGWXMSEnPMZgbxzwj6FaZ/4OT8Cc= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/integration-tests/web/sdk/internal/generated/generated.go b/integration-tests/web/sdk/internal/generated/generated.go new file mode 100644 index 00000000000..8f0303086d2 --- /dev/null +++ b/integration-tests/web/sdk/internal/generated/generated.go @@ -0,0 +1,3301 @@ +// Code generated by github.com/Khan/genqlient, DO NOT EDIT. + +package generated + +import ( + "context" + "encoding/json" + "fmt" + + "github.com/Khan/genqlient/graphql" + "github.com/smartcontractkit/chainlink/core/web/gqlscalar" +) + +// BridgeParts includes the GraphQL fields of Bridge requested by the fragment BridgeParts. +type BridgeParts struct { + Id string `json:"id"` + Name string `json:"name"` + Url string `json:"url"` + Confirmations int `json:"confirmations"` + OutgoingToken string `json:"outgoingToken"` + MinimumContractPayment string `json:"minimumContractPayment"` + CreatedAt string `json:"createdAt"` +} + +// GetId returns BridgeParts.Id, and is useful for accessing the field via an interface. +func (v *BridgeParts) GetId() string { return v.Id } + +// GetName returns BridgeParts.Name, and is useful for accessing the field via an interface. +func (v *BridgeParts) GetName() string { return v.Name } + +// GetUrl returns BridgeParts.Url, and is useful for accessing the field via an interface. +func (v *BridgeParts) GetUrl() string { return v.Url } + +// GetConfirmations returns BridgeParts.Confirmations, and is useful for accessing the field via an interface. +func (v *BridgeParts) GetConfirmations() int { return v.Confirmations } + +// GetOutgoingToken returns BridgeParts.OutgoingToken, and is useful for accessing the field via an interface. +func (v *BridgeParts) GetOutgoingToken() string { return v.OutgoingToken } + +// GetMinimumContractPayment returns BridgeParts.MinimumContractPayment, and is useful for accessing the field via an interface. +func (v *BridgeParts) GetMinimumContractPayment() string { return v.MinimumContractPayment } + +// GetCreatedAt returns BridgeParts.CreatedAt, and is useful for accessing the field via an interface. +func (v *BridgeParts) GetCreatedAt() string { return v.CreatedAt } + +// CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerPayload includes the requested fields of the GraphQL interface CreateFeedsManagerPayload. +// +// CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerPayload is implemented by the following types: +// CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccess +// CreateFeedsManagerCreateFeedsManagerInputErrors +// CreateFeedsManagerCreateFeedsManagerNotFoundError +// CreateFeedsManagerCreateFeedsManagerSingleFeedsManagerError +type CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerPayload interface { + implementsGraphQLInterfaceCreateFeedsManagerCreateFeedsManagerCreateFeedsManagerPayload() + // GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values). + GetTypename() string +} + +func (v *CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccess) implementsGraphQLInterfaceCreateFeedsManagerCreateFeedsManagerCreateFeedsManagerPayload() { +} +func (v *CreateFeedsManagerCreateFeedsManagerInputErrors) implementsGraphQLInterfaceCreateFeedsManagerCreateFeedsManagerCreateFeedsManagerPayload() { +} +func (v *CreateFeedsManagerCreateFeedsManagerNotFoundError) implementsGraphQLInterfaceCreateFeedsManagerCreateFeedsManagerCreateFeedsManagerPayload() { +} +func (v *CreateFeedsManagerCreateFeedsManagerSingleFeedsManagerError) implementsGraphQLInterfaceCreateFeedsManagerCreateFeedsManagerCreateFeedsManagerPayload() { +} + +func __unmarshalCreateFeedsManagerCreateFeedsManagerCreateFeedsManagerPayload(b []byte, v *CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerPayload) error { + if string(b) == "null" { + return nil + } + + var tn struct { + TypeName string `json:"__typename"` + } + err := json.Unmarshal(b, &tn) + if err != nil { + return err + } + + switch tn.TypeName { + case "CreateFeedsManagerSuccess": + *v = new(CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccess) + return json.Unmarshal(b, *v) + case "InputErrors": + *v = new(CreateFeedsManagerCreateFeedsManagerInputErrors) + return json.Unmarshal(b, *v) + case "NotFoundError": + *v = new(CreateFeedsManagerCreateFeedsManagerNotFoundError) + return json.Unmarshal(b, *v) + case "SingleFeedsManagerError": + *v = new(CreateFeedsManagerCreateFeedsManagerSingleFeedsManagerError) + return json.Unmarshal(b, *v) + case "": + return fmt.Errorf( + "response was missing CreateFeedsManagerPayload.__typename") + default: + return fmt.Errorf( + `unexpected concrete type for CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerPayload: "%v"`, tn.TypeName) + } +} + +func __marshalCreateFeedsManagerCreateFeedsManagerCreateFeedsManagerPayload(v *CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerPayload) ([]byte, error) { + + var typename string + switch v := (*v).(type) { + case *CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccess: + typename = "CreateFeedsManagerSuccess" + + result := struct { + TypeName string `json:"__typename"` + *CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccess + }{typename, v} + return json.Marshal(result) + case *CreateFeedsManagerCreateFeedsManagerInputErrors: + typename = "InputErrors" + + result := struct { + TypeName string `json:"__typename"` + *CreateFeedsManagerCreateFeedsManagerInputErrors + }{typename, v} + return json.Marshal(result) + case *CreateFeedsManagerCreateFeedsManagerNotFoundError: + typename = "NotFoundError" + + result := struct { + TypeName string `json:"__typename"` + *CreateFeedsManagerCreateFeedsManagerNotFoundError + }{typename, v} + return json.Marshal(result) + case *CreateFeedsManagerCreateFeedsManagerSingleFeedsManagerError: + typename = "SingleFeedsManagerError" + + result := struct { + TypeName string `json:"__typename"` + *CreateFeedsManagerCreateFeedsManagerSingleFeedsManagerError + }{typename, v} + return json.Marshal(result) + case nil: + return []byte("null"), nil + default: + return nil, fmt.Errorf( + `unexpected concrete type for CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerPayload: "%T"`, v) + } +} + +// CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccess includes the requested fields of the GraphQL type CreateFeedsManagerSuccess. +type CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccess struct { + Typename string `json:"__typename"` + FeedsManager CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager `json:"feedsManager"` +} + +// GetTypename returns CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccess.Typename, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccess) GetTypename() string { + return v.Typename +} + +// GetFeedsManager returns CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccess.FeedsManager, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccess) GetFeedsManager() CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager { + return v.FeedsManager +} + +// CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager includes the requested fields of the GraphQL type FeedsManager. +type CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager struct { + FeedsManagerParts `json:"-"` +} + +// GetId returns CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager.Id, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager) GetId() string { + return v.FeedsManagerParts.Id +} + +// GetName returns CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager.Name, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager) GetName() string { + return v.FeedsManagerParts.Name +} + +// GetUri returns CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager.Uri, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager) GetUri() string { + return v.FeedsManagerParts.Uri +} + +// GetPublicKey returns CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager.PublicKey, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager) GetPublicKey() string { + return v.FeedsManagerParts.PublicKey +} + +// GetIsConnectionActive returns CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager.IsConnectionActive, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager) GetIsConnectionActive() bool { + return v.FeedsManagerParts.IsConnectionActive +} + +// GetCreatedAt returns CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager.CreatedAt, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager) GetCreatedAt() string { + return v.FeedsManagerParts.CreatedAt +} + +func (v *CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager) UnmarshalJSON(b []byte) error { + + if string(b) == "null" { + return nil + } + + var firstPass struct { + *CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager + graphql.NoUnmarshalJSON + } + firstPass.CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager = v + + err := json.Unmarshal(b, &firstPass) + if err != nil { + return err + } + + err = json.Unmarshal( + b, &v.FeedsManagerParts) + if err != nil { + return err + } + return nil +} + +type __premarshalCreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager struct { + Id string `json:"id"` + + Name string `json:"name"` + + Uri string `json:"uri"` + + PublicKey string `json:"publicKey"` + + IsConnectionActive bool `json:"isConnectionActive"` + + CreatedAt string `json:"createdAt"` +} + +func (v *CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager) MarshalJSON() ([]byte, error) { + premarshaled, err := v.__premarshalJSON() + if err != nil { + return nil, err + } + return json.Marshal(premarshaled) +} + +func (v *CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager) __premarshalJSON() (*__premarshalCreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager, error) { + var retval __premarshalCreateFeedsManagerCreateFeedsManagerCreateFeedsManagerSuccessFeedsManager + + retval.Id = v.FeedsManagerParts.Id + retval.Name = v.FeedsManagerParts.Name + retval.Uri = v.FeedsManagerParts.Uri + retval.PublicKey = v.FeedsManagerParts.PublicKey + retval.IsConnectionActive = v.FeedsManagerParts.IsConnectionActive + retval.CreatedAt = v.FeedsManagerParts.CreatedAt + return &retval, nil +} + +// CreateFeedsManagerCreateFeedsManagerInputErrors includes the requested fields of the GraphQL type InputErrors. +type CreateFeedsManagerCreateFeedsManagerInputErrors struct { + Typename string `json:"__typename"` + Errors []CreateFeedsManagerCreateFeedsManagerInputErrorsErrorsInputError `json:"errors"` +} + +// GetTypename returns CreateFeedsManagerCreateFeedsManagerInputErrors.Typename, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerCreateFeedsManagerInputErrors) GetTypename() string { return v.Typename } + +// GetErrors returns CreateFeedsManagerCreateFeedsManagerInputErrors.Errors, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerCreateFeedsManagerInputErrors) GetErrors() []CreateFeedsManagerCreateFeedsManagerInputErrorsErrorsInputError { + return v.Errors +} + +// CreateFeedsManagerCreateFeedsManagerInputErrorsErrorsInputError includes the requested fields of the GraphQL type InputError. +type CreateFeedsManagerCreateFeedsManagerInputErrorsErrorsInputError struct { + Message string `json:"message"` + Code ErrorCode `json:"code"` + Path string `json:"path"` +} + +// GetMessage returns CreateFeedsManagerCreateFeedsManagerInputErrorsErrorsInputError.Message, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerCreateFeedsManagerInputErrorsErrorsInputError) GetMessage() string { + return v.Message +} + +// GetCode returns CreateFeedsManagerCreateFeedsManagerInputErrorsErrorsInputError.Code, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerCreateFeedsManagerInputErrorsErrorsInputError) GetCode() ErrorCode { + return v.Code +} + +// GetPath returns CreateFeedsManagerCreateFeedsManagerInputErrorsErrorsInputError.Path, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerCreateFeedsManagerInputErrorsErrorsInputError) GetPath() string { + return v.Path +} + +// CreateFeedsManagerCreateFeedsManagerNotFoundError includes the requested fields of the GraphQL type NotFoundError. +type CreateFeedsManagerCreateFeedsManagerNotFoundError struct { + Typename string `json:"__typename"` + Message string `json:"message"` + Code ErrorCode `json:"code"` +} + +// GetTypename returns CreateFeedsManagerCreateFeedsManagerNotFoundError.Typename, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerCreateFeedsManagerNotFoundError) GetTypename() string { return v.Typename } + +// GetMessage returns CreateFeedsManagerCreateFeedsManagerNotFoundError.Message, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerCreateFeedsManagerNotFoundError) GetMessage() string { return v.Message } + +// GetCode returns CreateFeedsManagerCreateFeedsManagerNotFoundError.Code, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerCreateFeedsManagerNotFoundError) GetCode() ErrorCode { return v.Code } + +// CreateFeedsManagerCreateFeedsManagerSingleFeedsManagerError includes the requested fields of the GraphQL type SingleFeedsManagerError. +type CreateFeedsManagerCreateFeedsManagerSingleFeedsManagerError struct { + Typename string `json:"__typename"` + Message string `json:"message"` + Code ErrorCode `json:"code"` +} + +// GetTypename returns CreateFeedsManagerCreateFeedsManagerSingleFeedsManagerError.Typename, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerCreateFeedsManagerSingleFeedsManagerError) GetTypename() string { + return v.Typename +} + +// GetMessage returns CreateFeedsManagerCreateFeedsManagerSingleFeedsManagerError.Message, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerCreateFeedsManagerSingleFeedsManagerError) GetMessage() string { + return v.Message +} + +// GetCode returns CreateFeedsManagerCreateFeedsManagerSingleFeedsManagerError.Code, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerCreateFeedsManagerSingleFeedsManagerError) GetCode() ErrorCode { + return v.Code +} + +type CreateFeedsManagerInput struct { + Name string `json:"name"` + Uri string `json:"uri"` + PublicKey string `json:"publicKey"` +} + +// GetName returns CreateFeedsManagerInput.Name, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerInput) GetName() string { return v.Name } + +// GetUri returns CreateFeedsManagerInput.Uri, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerInput) GetUri() string { return v.Uri } + +// GetPublicKey returns CreateFeedsManagerInput.PublicKey, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerInput) GetPublicKey() string { return v.PublicKey } + +// CreateFeedsManagerResponse is returned by CreateFeedsManager on success. +type CreateFeedsManagerResponse struct { + CreateFeedsManager CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerPayload `json:"-"` +} + +// GetCreateFeedsManager returns CreateFeedsManagerResponse.CreateFeedsManager, and is useful for accessing the field via an interface. +func (v *CreateFeedsManagerResponse) GetCreateFeedsManager() CreateFeedsManagerCreateFeedsManagerCreateFeedsManagerPayload { + return v.CreateFeedsManager +} + +func (v *CreateFeedsManagerResponse) UnmarshalJSON(b []byte) error { + + if string(b) == "null" { + return nil + } + + var firstPass struct { + *CreateFeedsManagerResponse + CreateFeedsManager json.RawMessage `json:"createFeedsManager"` + graphql.NoUnmarshalJSON + } + firstPass.CreateFeedsManagerResponse = v + + err := json.Unmarshal(b, &firstPass) + if err != nil { + return err + } + + { + dst := &v.CreateFeedsManager + src := firstPass.CreateFeedsManager + if len(src) != 0 && string(src) != "null" { + err = __unmarshalCreateFeedsManagerCreateFeedsManagerCreateFeedsManagerPayload( + src, dst) + if err != nil { + return fmt.Errorf( + "unable to unmarshal CreateFeedsManagerResponse.CreateFeedsManager: %w", err) + } + } + } + return nil +} + +type __premarshalCreateFeedsManagerResponse struct { + CreateFeedsManager json.RawMessage `json:"createFeedsManager"` +} + +func (v *CreateFeedsManagerResponse) MarshalJSON() ([]byte, error) { + premarshaled, err := v.__premarshalJSON() + if err != nil { + return nil, err + } + return json.Marshal(premarshaled) +} + +func (v *CreateFeedsManagerResponse) __premarshalJSON() (*__premarshalCreateFeedsManagerResponse, error) { + var retval __premarshalCreateFeedsManagerResponse + + { + + dst := &retval.CreateFeedsManager + src := v.CreateFeedsManager + var err error + *dst, err = __marshalCreateFeedsManagerCreateFeedsManagerCreateFeedsManagerPayload( + &src) + if err != nil { + return nil, fmt.Errorf( + "unable to marshal CreateFeedsManagerResponse.CreateFeedsManager: %w", err) + } + } + return &retval, nil +} + +type ErrorCode string + +const ( + ErrorCodeNotFound ErrorCode = "NOT_FOUND" + ErrorCodeInvalidInput ErrorCode = "INVALID_INPUT" + ErrorCodeUnprocessable ErrorCode = "UNPROCESSABLE" +) + +// FeedsManagerParts includes the GraphQL fields of FeedsManager requested by the fragment FeedsManagerParts. +type FeedsManagerParts struct { + Id string `json:"id"` + Name string `json:"name"` + Uri string `json:"uri"` + PublicKey string `json:"publicKey"` + IsConnectionActive bool `json:"isConnectionActive"` + CreatedAt string `json:"createdAt"` +} + +// GetId returns FeedsManagerParts.Id, and is useful for accessing the field via an interface. +func (v *FeedsManagerParts) GetId() string { return v.Id } + +// GetName returns FeedsManagerParts.Name, and is useful for accessing the field via an interface. +func (v *FeedsManagerParts) GetName() string { return v.Name } + +// GetUri returns FeedsManagerParts.Uri, and is useful for accessing the field via an interface. +func (v *FeedsManagerParts) GetUri() string { return v.Uri } + +// GetPublicKey returns FeedsManagerParts.PublicKey, and is useful for accessing the field via an interface. +func (v *FeedsManagerParts) GetPublicKey() string { return v.PublicKey } + +// GetIsConnectionActive returns FeedsManagerParts.IsConnectionActive, and is useful for accessing the field via an interface. +func (v *FeedsManagerParts) GetIsConnectionActive() bool { return v.IsConnectionActive } + +// GetCreatedAt returns FeedsManagerParts.CreatedAt, and is useful for accessing the field via an interface. +func (v *FeedsManagerParts) GetCreatedAt() string { return v.CreatedAt } + +// GetBridgeBridge includes the requested fields of the GraphQL type Bridge. +type GetBridgeBridge struct { + Typename string `json:"__typename"` + BridgeParts `json:"-"` +} + +// GetTypename returns GetBridgeBridge.Typename, and is useful for accessing the field via an interface. +func (v *GetBridgeBridge) GetTypename() string { return v.Typename } + +// GetId returns GetBridgeBridge.Id, and is useful for accessing the field via an interface. +func (v *GetBridgeBridge) GetId() string { return v.BridgeParts.Id } + +// GetName returns GetBridgeBridge.Name, and is useful for accessing the field via an interface. +func (v *GetBridgeBridge) GetName() string { return v.BridgeParts.Name } + +// GetUrl returns GetBridgeBridge.Url, and is useful for accessing the field via an interface. +func (v *GetBridgeBridge) GetUrl() string { return v.BridgeParts.Url } + +// GetConfirmations returns GetBridgeBridge.Confirmations, and is useful for accessing the field via an interface. +func (v *GetBridgeBridge) GetConfirmations() int { return v.BridgeParts.Confirmations } + +// GetOutgoingToken returns GetBridgeBridge.OutgoingToken, and is useful for accessing the field via an interface. +func (v *GetBridgeBridge) GetOutgoingToken() string { return v.BridgeParts.OutgoingToken } + +// GetMinimumContractPayment returns GetBridgeBridge.MinimumContractPayment, and is useful for accessing the field via an interface. +func (v *GetBridgeBridge) GetMinimumContractPayment() string { + return v.BridgeParts.MinimumContractPayment +} + +// GetCreatedAt returns GetBridgeBridge.CreatedAt, and is useful for accessing the field via an interface. +func (v *GetBridgeBridge) GetCreatedAt() string { return v.BridgeParts.CreatedAt } + +func (v *GetBridgeBridge) UnmarshalJSON(b []byte) error { + + if string(b) == "null" { + return nil + } + + var firstPass struct { + *GetBridgeBridge + graphql.NoUnmarshalJSON + } + firstPass.GetBridgeBridge = v + + err := json.Unmarshal(b, &firstPass) + if err != nil { + return err + } + + err = json.Unmarshal( + b, &v.BridgeParts) + if err != nil { + return err + } + return nil +} + +type __premarshalGetBridgeBridge struct { + Typename string `json:"__typename"` + + Id string `json:"id"` + + Name string `json:"name"` + + Url string `json:"url"` + + Confirmations int `json:"confirmations"` + + OutgoingToken string `json:"outgoingToken"` + + MinimumContractPayment string `json:"minimumContractPayment"` + + CreatedAt string `json:"createdAt"` +} + +func (v *GetBridgeBridge) MarshalJSON() ([]byte, error) { + premarshaled, err := v.__premarshalJSON() + if err != nil { + return nil, err + } + return json.Marshal(premarshaled) +} + +func (v *GetBridgeBridge) __premarshalJSON() (*__premarshalGetBridgeBridge, error) { + var retval __premarshalGetBridgeBridge + + retval.Typename = v.Typename + retval.Id = v.BridgeParts.Id + retval.Name = v.BridgeParts.Name + retval.Url = v.BridgeParts.Url + retval.Confirmations = v.BridgeParts.Confirmations + retval.OutgoingToken = v.BridgeParts.OutgoingToken + retval.MinimumContractPayment = v.BridgeParts.MinimumContractPayment + retval.CreatedAt = v.BridgeParts.CreatedAt + return &retval, nil +} + +// GetBridgeBridgeBridgePayload includes the requested fields of the GraphQL interface BridgePayload. +// +// GetBridgeBridgeBridgePayload is implemented by the following types: +// GetBridgeBridge +// GetBridgeBridgeNotFoundError +type GetBridgeBridgeBridgePayload interface { + implementsGraphQLInterfaceGetBridgeBridgeBridgePayload() + // GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values). + GetTypename() string +} + +func (v *GetBridgeBridge) implementsGraphQLInterfaceGetBridgeBridgeBridgePayload() {} +func (v *GetBridgeBridgeNotFoundError) implementsGraphQLInterfaceGetBridgeBridgeBridgePayload() {} + +func __unmarshalGetBridgeBridgeBridgePayload(b []byte, v *GetBridgeBridgeBridgePayload) error { + if string(b) == "null" { + return nil + } + + var tn struct { + TypeName string `json:"__typename"` + } + err := json.Unmarshal(b, &tn) + if err != nil { + return err + } + + switch tn.TypeName { + case "Bridge": + *v = new(GetBridgeBridge) + return json.Unmarshal(b, *v) + case "NotFoundError": + *v = new(GetBridgeBridgeNotFoundError) + return json.Unmarshal(b, *v) + case "": + return fmt.Errorf( + "response was missing BridgePayload.__typename") + default: + return fmt.Errorf( + `unexpected concrete type for GetBridgeBridgeBridgePayload: "%v"`, tn.TypeName) + } +} + +func __marshalGetBridgeBridgeBridgePayload(v *GetBridgeBridgeBridgePayload) ([]byte, error) { + + var typename string + switch v := (*v).(type) { + case *GetBridgeBridge: + typename = "Bridge" + + premarshaled, err := v.__premarshalJSON() + if err != nil { + return nil, err + } + result := struct { + TypeName string `json:"__typename"` + *__premarshalGetBridgeBridge + }{typename, premarshaled} + return json.Marshal(result) + case *GetBridgeBridgeNotFoundError: + typename = "NotFoundError" + + result := struct { + TypeName string `json:"__typename"` + *GetBridgeBridgeNotFoundError + }{typename, v} + return json.Marshal(result) + case nil: + return []byte("null"), nil + default: + return nil, fmt.Errorf( + `unexpected concrete type for GetBridgeBridgeBridgePayload: "%T"`, v) + } +} + +// GetBridgeBridgeNotFoundError includes the requested fields of the GraphQL type NotFoundError. +type GetBridgeBridgeNotFoundError struct { + Typename string `json:"__typename"` + Message string `json:"message"` + Code ErrorCode `json:"code"` +} + +// GetTypename returns GetBridgeBridgeNotFoundError.Typename, and is useful for accessing the field via an interface. +func (v *GetBridgeBridgeNotFoundError) GetTypename() string { return v.Typename } + +// GetMessage returns GetBridgeBridgeNotFoundError.Message, and is useful for accessing the field via an interface. +func (v *GetBridgeBridgeNotFoundError) GetMessage() string { return v.Message } + +// GetCode returns GetBridgeBridgeNotFoundError.Code, and is useful for accessing the field via an interface. +func (v *GetBridgeBridgeNotFoundError) GetCode() ErrorCode { return v.Code } + +// GetBridgeResponse is returned by GetBridge on success. +type GetBridgeResponse struct { + Bridge GetBridgeBridgeBridgePayload `json:"-"` +} + +// GetBridge returns GetBridgeResponse.Bridge, and is useful for accessing the field via an interface. +func (v *GetBridgeResponse) GetBridge() GetBridgeBridgeBridgePayload { return v.Bridge } + +func (v *GetBridgeResponse) UnmarshalJSON(b []byte) error { + + if string(b) == "null" { + return nil + } + + var firstPass struct { + *GetBridgeResponse + Bridge json.RawMessage `json:"bridge"` + graphql.NoUnmarshalJSON + } + firstPass.GetBridgeResponse = v + + err := json.Unmarshal(b, &firstPass) + if err != nil { + return err + } + + { + dst := &v.Bridge + src := firstPass.Bridge + if len(src) != 0 && string(src) != "null" { + err = __unmarshalGetBridgeBridgeBridgePayload( + src, dst) + if err != nil { + return fmt.Errorf( + "unable to unmarshal GetBridgeResponse.Bridge: %w", err) + } + } + } + return nil +} + +type __premarshalGetBridgeResponse struct { + Bridge json.RawMessage `json:"bridge"` +} + +func (v *GetBridgeResponse) MarshalJSON() ([]byte, error) { + premarshaled, err := v.__premarshalJSON() + if err != nil { + return nil, err + } + return json.Marshal(premarshaled) +} + +func (v *GetBridgeResponse) __premarshalJSON() (*__premarshalGetBridgeResponse, error) { + var retval __premarshalGetBridgeResponse + + { + + dst := &retval.Bridge + src := v.Bridge + var err error + *dst, err = __marshalGetBridgeBridgeBridgePayload( + &src) + if err != nil { + return nil, fmt.Errorf( + "unable to marshal GetBridgeResponse.Bridge: %w", err) + } + } + return &retval, nil +} + +// GetCSAKeysCsaKeysCSAKeysPayload includes the requested fields of the GraphQL type CSAKeysPayload. +type GetCSAKeysCsaKeysCSAKeysPayload struct { + Results []GetCSAKeysCsaKeysCSAKeysPayloadResultsCSAKey `json:"results"` +} + +// GetResults returns GetCSAKeysCsaKeysCSAKeysPayload.Results, and is useful for accessing the field via an interface. +func (v *GetCSAKeysCsaKeysCSAKeysPayload) GetResults() []GetCSAKeysCsaKeysCSAKeysPayloadResultsCSAKey { + return v.Results +} + +// GetCSAKeysCsaKeysCSAKeysPayloadResultsCSAKey includes the requested fields of the GraphQL type CSAKey. +type GetCSAKeysCsaKeysCSAKeysPayloadResultsCSAKey struct { + Id string `json:"id"` + PublicKey string `json:"publicKey"` + Version int `json:"version"` +} + +// GetId returns GetCSAKeysCsaKeysCSAKeysPayloadResultsCSAKey.Id, and is useful for accessing the field via an interface. +func (v *GetCSAKeysCsaKeysCSAKeysPayloadResultsCSAKey) GetId() string { return v.Id } + +// GetPublicKey returns GetCSAKeysCsaKeysCSAKeysPayloadResultsCSAKey.PublicKey, and is useful for accessing the field via an interface. +func (v *GetCSAKeysCsaKeysCSAKeysPayloadResultsCSAKey) GetPublicKey() string { return v.PublicKey } + +// GetVersion returns GetCSAKeysCsaKeysCSAKeysPayloadResultsCSAKey.Version, and is useful for accessing the field via an interface. +func (v *GetCSAKeysCsaKeysCSAKeysPayloadResultsCSAKey) GetVersion() int { return v.Version } + +// GetCSAKeysResponse is returned by GetCSAKeys on success. +type GetCSAKeysResponse struct { + CsaKeys GetCSAKeysCsaKeysCSAKeysPayload `json:"csaKeys"` +} + +// GetCsaKeys returns GetCSAKeysResponse.CsaKeys, and is useful for accessing the field via an interface. +func (v *GetCSAKeysResponse) GetCsaKeys() GetCSAKeysCsaKeysCSAKeysPayload { return v.CsaKeys } + +// GetFeedsManagerFeedsManager includes the requested fields of the GraphQL type FeedsManager. +type GetFeedsManagerFeedsManager struct { + Typename string `json:"__typename"` + FeedsManagerParts `json:"-"` +} + +// GetTypename returns GetFeedsManagerFeedsManager.Typename, and is useful for accessing the field via an interface. +func (v *GetFeedsManagerFeedsManager) GetTypename() string { return v.Typename } + +// GetId returns GetFeedsManagerFeedsManager.Id, and is useful for accessing the field via an interface. +func (v *GetFeedsManagerFeedsManager) GetId() string { return v.FeedsManagerParts.Id } + +// GetName returns GetFeedsManagerFeedsManager.Name, and is useful for accessing the field via an interface. +func (v *GetFeedsManagerFeedsManager) GetName() string { return v.FeedsManagerParts.Name } + +// GetUri returns GetFeedsManagerFeedsManager.Uri, and is useful for accessing the field via an interface. +func (v *GetFeedsManagerFeedsManager) GetUri() string { return v.FeedsManagerParts.Uri } + +// GetPublicKey returns GetFeedsManagerFeedsManager.PublicKey, and is useful for accessing the field via an interface. +func (v *GetFeedsManagerFeedsManager) GetPublicKey() string { return v.FeedsManagerParts.PublicKey } + +// GetIsConnectionActive returns GetFeedsManagerFeedsManager.IsConnectionActive, and is useful for accessing the field via an interface. +func (v *GetFeedsManagerFeedsManager) GetIsConnectionActive() bool { + return v.FeedsManagerParts.IsConnectionActive +} + +// GetCreatedAt returns GetFeedsManagerFeedsManager.CreatedAt, and is useful for accessing the field via an interface. +func (v *GetFeedsManagerFeedsManager) GetCreatedAt() string { return v.FeedsManagerParts.CreatedAt } + +func (v *GetFeedsManagerFeedsManager) UnmarshalJSON(b []byte) error { + + if string(b) == "null" { + return nil + } + + var firstPass struct { + *GetFeedsManagerFeedsManager + graphql.NoUnmarshalJSON + } + firstPass.GetFeedsManagerFeedsManager = v + + err := json.Unmarshal(b, &firstPass) + if err != nil { + return err + } + + err = json.Unmarshal( + b, &v.FeedsManagerParts) + if err != nil { + return err + } + return nil +} + +type __premarshalGetFeedsManagerFeedsManager struct { + Typename string `json:"__typename"` + + Id string `json:"id"` + + Name string `json:"name"` + + Uri string `json:"uri"` + + PublicKey string `json:"publicKey"` + + IsConnectionActive bool `json:"isConnectionActive"` + + CreatedAt string `json:"createdAt"` +} + +func (v *GetFeedsManagerFeedsManager) MarshalJSON() ([]byte, error) { + premarshaled, err := v.__premarshalJSON() + if err != nil { + return nil, err + } + return json.Marshal(premarshaled) +} + +func (v *GetFeedsManagerFeedsManager) __premarshalJSON() (*__premarshalGetFeedsManagerFeedsManager, error) { + var retval __premarshalGetFeedsManagerFeedsManager + + retval.Typename = v.Typename + retval.Id = v.FeedsManagerParts.Id + retval.Name = v.FeedsManagerParts.Name + retval.Uri = v.FeedsManagerParts.Uri + retval.PublicKey = v.FeedsManagerParts.PublicKey + retval.IsConnectionActive = v.FeedsManagerParts.IsConnectionActive + retval.CreatedAt = v.FeedsManagerParts.CreatedAt + return &retval, nil +} + +// GetFeedsManagerFeedsManagerFeedsManagerPayload includes the requested fields of the GraphQL interface FeedsManagerPayload. +// +// GetFeedsManagerFeedsManagerFeedsManagerPayload is implemented by the following types: +// GetFeedsManagerFeedsManager +// GetFeedsManagerFeedsManagerNotFoundError +type GetFeedsManagerFeedsManagerFeedsManagerPayload interface { + implementsGraphQLInterfaceGetFeedsManagerFeedsManagerFeedsManagerPayload() + // GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values). + GetTypename() string +} + +func (v *GetFeedsManagerFeedsManager) implementsGraphQLInterfaceGetFeedsManagerFeedsManagerFeedsManagerPayload() { +} +func (v *GetFeedsManagerFeedsManagerNotFoundError) implementsGraphQLInterfaceGetFeedsManagerFeedsManagerFeedsManagerPayload() { +} + +func __unmarshalGetFeedsManagerFeedsManagerFeedsManagerPayload(b []byte, v *GetFeedsManagerFeedsManagerFeedsManagerPayload) error { + if string(b) == "null" { + return nil + } + + var tn struct { + TypeName string `json:"__typename"` + } + err := json.Unmarshal(b, &tn) + if err != nil { + return err + } + + switch tn.TypeName { + case "FeedsManager": + *v = new(GetFeedsManagerFeedsManager) + return json.Unmarshal(b, *v) + case "NotFoundError": + *v = new(GetFeedsManagerFeedsManagerNotFoundError) + return json.Unmarshal(b, *v) + case "": + return fmt.Errorf( + "response was missing FeedsManagerPayload.__typename") + default: + return fmt.Errorf( + `unexpected concrete type for GetFeedsManagerFeedsManagerFeedsManagerPayload: "%v"`, tn.TypeName) + } +} + +func __marshalGetFeedsManagerFeedsManagerFeedsManagerPayload(v *GetFeedsManagerFeedsManagerFeedsManagerPayload) ([]byte, error) { + + var typename string + switch v := (*v).(type) { + case *GetFeedsManagerFeedsManager: + typename = "FeedsManager" + + premarshaled, err := v.__premarshalJSON() + if err != nil { + return nil, err + } + result := struct { + TypeName string `json:"__typename"` + *__premarshalGetFeedsManagerFeedsManager + }{typename, premarshaled} + return json.Marshal(result) + case *GetFeedsManagerFeedsManagerNotFoundError: + typename = "NotFoundError" + + result := struct { + TypeName string `json:"__typename"` + *GetFeedsManagerFeedsManagerNotFoundError + }{typename, v} + return json.Marshal(result) + case nil: + return []byte("null"), nil + default: + return nil, fmt.Errorf( + `unexpected concrete type for GetFeedsManagerFeedsManagerFeedsManagerPayload: "%T"`, v) + } +} + +// GetFeedsManagerFeedsManagerNotFoundError includes the requested fields of the GraphQL type NotFoundError. +type GetFeedsManagerFeedsManagerNotFoundError struct { + Typename string `json:"__typename"` + Message string `json:"message"` + Code ErrorCode `json:"code"` +} + +// GetTypename returns GetFeedsManagerFeedsManagerNotFoundError.Typename, and is useful for accessing the field via an interface. +func (v *GetFeedsManagerFeedsManagerNotFoundError) GetTypename() string { return v.Typename } + +// GetMessage returns GetFeedsManagerFeedsManagerNotFoundError.Message, and is useful for accessing the field via an interface. +func (v *GetFeedsManagerFeedsManagerNotFoundError) GetMessage() string { return v.Message } + +// GetCode returns GetFeedsManagerFeedsManagerNotFoundError.Code, and is useful for accessing the field via an interface. +func (v *GetFeedsManagerFeedsManagerNotFoundError) GetCode() ErrorCode { return v.Code } + +// GetFeedsManagerResponse is returned by GetFeedsManager on success. +type GetFeedsManagerResponse struct { + FeedsManager GetFeedsManagerFeedsManagerFeedsManagerPayload `json:"-"` +} + +// GetFeedsManager returns GetFeedsManagerResponse.FeedsManager, and is useful for accessing the field via an interface. +func (v *GetFeedsManagerResponse) GetFeedsManager() GetFeedsManagerFeedsManagerFeedsManagerPayload { + return v.FeedsManager +} + +func (v *GetFeedsManagerResponse) UnmarshalJSON(b []byte) error { + + if string(b) == "null" { + return nil + } + + var firstPass struct { + *GetFeedsManagerResponse + FeedsManager json.RawMessage `json:"feedsManager"` + graphql.NoUnmarshalJSON + } + firstPass.GetFeedsManagerResponse = v + + err := json.Unmarshal(b, &firstPass) + if err != nil { + return err + } + + { + dst := &v.FeedsManager + src := firstPass.FeedsManager + if len(src) != 0 && string(src) != "null" { + err = __unmarshalGetFeedsManagerFeedsManagerFeedsManagerPayload( + src, dst) + if err != nil { + return fmt.Errorf( + "unable to unmarshal GetFeedsManagerResponse.FeedsManager: %w", err) + } + } + } + return nil +} + +type __premarshalGetFeedsManagerResponse struct { + FeedsManager json.RawMessage `json:"feedsManager"` +} + +func (v *GetFeedsManagerResponse) MarshalJSON() ([]byte, error) { + premarshaled, err := v.__premarshalJSON() + if err != nil { + return nil, err + } + return json.Marshal(premarshaled) +} + +func (v *GetFeedsManagerResponse) __premarshalJSON() (*__premarshalGetFeedsManagerResponse, error) { + var retval __premarshalGetFeedsManagerResponse + + { + + dst := &retval.FeedsManager + src := v.FeedsManager + var err error + *dst, err = __marshalGetFeedsManagerFeedsManagerFeedsManagerPayload( + &src) + if err != nil { + return nil, fmt.Errorf( + "unable to marshal GetFeedsManagerResponse.FeedsManager: %w", err) + } + } + return &retval, nil +} + +// GetJobJob includes the requested fields of the GraphQL type Job. +type GetJobJob struct { + Typename string `json:"__typename"` + JobParts `json:"-"` +} + +// GetTypename returns GetJobJob.Typename, and is useful for accessing the field via an interface. +func (v *GetJobJob) GetTypename() string { return v.Typename } + +// GetId returns GetJobJob.Id, and is useful for accessing the field via an interface. +func (v *GetJobJob) GetId() string { return v.JobParts.Id } + +// GetName returns GetJobJob.Name, and is useful for accessing the field via an interface. +func (v *GetJobJob) GetName() string { return v.JobParts.Name } + +// GetSchemaVersion returns GetJobJob.SchemaVersion, and is useful for accessing the field via an interface. +func (v *GetJobJob) GetSchemaVersion() int { return v.JobParts.SchemaVersion } + +// GetGasLimit returns GetJobJob.GasLimit, and is useful for accessing the field via an interface. +func (v *GetJobJob) GetGasLimit() int { return v.JobParts.GasLimit } + +// GetForwardingAllowed returns GetJobJob.ForwardingAllowed, and is useful for accessing the field via an interface. +func (v *GetJobJob) GetForwardingAllowed() bool { return v.JobParts.ForwardingAllowed } + +// GetMaxTaskDuration returns GetJobJob.MaxTaskDuration, and is useful for accessing the field via an interface. +func (v *GetJobJob) GetMaxTaskDuration() string { return v.JobParts.MaxTaskDuration } + +// GetExternalJobID returns GetJobJob.ExternalJobID, and is useful for accessing the field via an interface. +func (v *GetJobJob) GetExternalJobID() string { return v.JobParts.ExternalJobID } + +// GetType returns GetJobJob.Type, and is useful for accessing the field via an interface. +func (v *GetJobJob) GetType() string { return v.JobParts.Type } + +// GetSpec returns GetJobJob.Spec, and is useful for accessing the field via an interface. +func (v *GetJobJob) GetSpec() JobPartsSpecJobSpec { return v.JobParts.Spec } + +// GetObservationSource returns GetJobJob.ObservationSource, and is useful for accessing the field via an interface. +func (v *GetJobJob) GetObservationSource() string { return v.JobParts.ObservationSource } + +// GetErrors returns GetJobJob.Errors, and is useful for accessing the field via an interface. +func (v *GetJobJob) GetErrors() []JobPartsErrorsJobError { return v.JobParts.Errors } + +func (v *GetJobJob) UnmarshalJSON(b []byte) error { + + if string(b) == "null" { + return nil + } + + var firstPass struct { + *GetJobJob + graphql.NoUnmarshalJSON + } + firstPass.GetJobJob = v + + err := json.Unmarshal(b, &firstPass) + if err != nil { + return err + } + + err = json.Unmarshal( + b, &v.JobParts) + if err != nil { + return err + } + return nil +} + +type __premarshalGetJobJob struct { + Typename string `json:"__typename"` + + Id string `json:"id"` + + Name string `json:"name"` + + SchemaVersion int `json:"schemaVersion"` + + GasLimit int `json:"gasLimit"` + + ForwardingAllowed bool `json:"forwardingAllowed"` + + MaxTaskDuration string `json:"maxTaskDuration"` + + ExternalJobID string `json:"externalJobID"` + + Type string `json:"type"` + + Spec json.RawMessage `json:"spec"` + + ObservationSource string `json:"observationSource"` + + Errors []JobPartsErrorsJobError `json:"errors"` +} + +func (v *GetJobJob) MarshalJSON() ([]byte, error) { + premarshaled, err := v.__premarshalJSON() + if err != nil { + return nil, err + } + return json.Marshal(premarshaled) +} + +func (v *GetJobJob) __premarshalJSON() (*__premarshalGetJobJob, error) { + var retval __premarshalGetJobJob + + retval.Typename = v.Typename + retval.Id = v.JobParts.Id + retval.Name = v.JobParts.Name + retval.SchemaVersion = v.JobParts.SchemaVersion + retval.GasLimit = v.JobParts.GasLimit + retval.ForwardingAllowed = v.JobParts.ForwardingAllowed + retval.MaxTaskDuration = v.JobParts.MaxTaskDuration + retval.ExternalJobID = v.JobParts.ExternalJobID + retval.Type = v.JobParts.Type + { + + dst := &retval.Spec + src := v.JobParts.Spec + var err error + *dst, err = __marshalJobPartsSpecJobSpec( + &src) + if err != nil { + return nil, fmt.Errorf( + "unable to marshal GetJobJob.JobParts.Spec: %w", err) + } + } + retval.ObservationSource = v.JobParts.ObservationSource + retval.Errors = v.JobParts.Errors + return &retval, nil +} + +// GetJobJobJobPayload includes the requested fields of the GraphQL interface JobPayload. +// +// GetJobJobJobPayload is implemented by the following types: +// GetJobJob +// GetJobJobNotFoundError +type GetJobJobJobPayload interface { + implementsGraphQLInterfaceGetJobJobJobPayload() + // GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values). + GetTypename() string +} + +func (v *GetJobJob) implementsGraphQLInterfaceGetJobJobJobPayload() {} +func (v *GetJobJobNotFoundError) implementsGraphQLInterfaceGetJobJobJobPayload() {} + +func __unmarshalGetJobJobJobPayload(b []byte, v *GetJobJobJobPayload) error { + if string(b) == "null" { + return nil + } + + var tn struct { + TypeName string `json:"__typename"` + } + err := json.Unmarshal(b, &tn) + if err != nil { + return err + } + + switch tn.TypeName { + case "Job": + *v = new(GetJobJob) + return json.Unmarshal(b, *v) + case "NotFoundError": + *v = new(GetJobJobNotFoundError) + return json.Unmarshal(b, *v) + case "": + return fmt.Errorf( + "response was missing JobPayload.__typename") + default: + return fmt.Errorf( + `unexpected concrete type for GetJobJobJobPayload: "%v"`, tn.TypeName) + } +} + +func __marshalGetJobJobJobPayload(v *GetJobJobJobPayload) ([]byte, error) { + + var typename string + switch v := (*v).(type) { + case *GetJobJob: + typename = "Job" + + premarshaled, err := v.__premarshalJSON() + if err != nil { + return nil, err + } + result := struct { + TypeName string `json:"__typename"` + *__premarshalGetJobJob + }{typename, premarshaled} + return json.Marshal(result) + case *GetJobJobNotFoundError: + typename = "NotFoundError" + + result := struct { + TypeName string `json:"__typename"` + *GetJobJobNotFoundError + }{typename, v} + return json.Marshal(result) + case nil: + return []byte("null"), nil + default: + return nil, fmt.Errorf( + `unexpected concrete type for GetJobJobJobPayload: "%T"`, v) + } +} + +// GetJobJobNotFoundError includes the requested fields of the GraphQL type NotFoundError. +type GetJobJobNotFoundError struct { + Typename string `json:"__typename"` + Message string `json:"message"` + Code ErrorCode `json:"code"` +} + +// GetTypename returns GetJobJobNotFoundError.Typename, and is useful for accessing the field via an interface. +func (v *GetJobJobNotFoundError) GetTypename() string { return v.Typename } + +// GetMessage returns GetJobJobNotFoundError.Message, and is useful for accessing the field via an interface. +func (v *GetJobJobNotFoundError) GetMessage() string { return v.Message } + +// GetCode returns GetJobJobNotFoundError.Code, and is useful for accessing the field via an interface. +func (v *GetJobJobNotFoundError) GetCode() ErrorCode { return v.Code } + +// GetJobProposalJobProposal includes the requested fields of the GraphQL type JobProposal. +type GetJobProposalJobProposal struct { + Typename string `json:"__typename"` + Id string `json:"id"` + Name string `json:"name"` + Status JobProposalStatus `json:"status"` + RemoteUUID string `json:"remoteUUID"` + ExternalJobID string `json:"externalJobID"` + JobID string `json:"jobID"` + FeedsManager GetJobProposalJobProposalFeedsManager `json:"feedsManager"` + MultiAddrs []string `json:"multiAddrs"` + PendingUpdate bool `json:"pendingUpdate"` + Specs []GetJobProposalJobProposalSpecsJobProposalSpec `json:"specs"` + LatestSpec GetJobProposalJobProposalLatestSpecJobProposalSpec `json:"latestSpec"` +} + +// GetTypename returns GetJobProposalJobProposal.Typename, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposal) GetTypename() string { return v.Typename } + +// GetId returns GetJobProposalJobProposal.Id, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposal) GetId() string { return v.Id } + +// GetName returns GetJobProposalJobProposal.Name, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposal) GetName() string { return v.Name } + +// GetStatus returns GetJobProposalJobProposal.Status, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposal) GetStatus() JobProposalStatus { return v.Status } + +// GetRemoteUUID returns GetJobProposalJobProposal.RemoteUUID, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposal) GetRemoteUUID() string { return v.RemoteUUID } + +// GetExternalJobID returns GetJobProposalJobProposal.ExternalJobID, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposal) GetExternalJobID() string { return v.ExternalJobID } + +// GetJobID returns GetJobProposalJobProposal.JobID, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposal) GetJobID() string { return v.JobID } + +// GetFeedsManager returns GetJobProposalJobProposal.FeedsManager, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposal) GetFeedsManager() GetJobProposalJobProposalFeedsManager { + return v.FeedsManager +} + +// GetMultiAddrs returns GetJobProposalJobProposal.MultiAddrs, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposal) GetMultiAddrs() []string { return v.MultiAddrs } + +// GetPendingUpdate returns GetJobProposalJobProposal.PendingUpdate, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposal) GetPendingUpdate() bool { return v.PendingUpdate } + +// GetSpecs returns GetJobProposalJobProposal.Specs, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposal) GetSpecs() []GetJobProposalJobProposalSpecsJobProposalSpec { + return v.Specs +} + +// GetLatestSpec returns GetJobProposalJobProposal.LatestSpec, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposal) GetLatestSpec() GetJobProposalJobProposalLatestSpecJobProposalSpec { + return v.LatestSpec +} + +// GetJobProposalJobProposalFeedsManager includes the requested fields of the GraphQL type FeedsManager. +type GetJobProposalJobProposalFeedsManager struct { + FeedsManagerParts `json:"-"` +} + +// GetId returns GetJobProposalJobProposalFeedsManager.Id, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalFeedsManager) GetId() string { return v.FeedsManagerParts.Id } + +// GetName returns GetJobProposalJobProposalFeedsManager.Name, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalFeedsManager) GetName() string { return v.FeedsManagerParts.Name } + +// GetUri returns GetJobProposalJobProposalFeedsManager.Uri, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalFeedsManager) GetUri() string { return v.FeedsManagerParts.Uri } + +// GetPublicKey returns GetJobProposalJobProposalFeedsManager.PublicKey, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalFeedsManager) GetPublicKey() string { + return v.FeedsManagerParts.PublicKey +} + +// GetIsConnectionActive returns GetJobProposalJobProposalFeedsManager.IsConnectionActive, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalFeedsManager) GetIsConnectionActive() bool { + return v.FeedsManagerParts.IsConnectionActive +} + +// GetCreatedAt returns GetJobProposalJobProposalFeedsManager.CreatedAt, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalFeedsManager) GetCreatedAt() string { + return v.FeedsManagerParts.CreatedAt +} + +func (v *GetJobProposalJobProposalFeedsManager) UnmarshalJSON(b []byte) error { + + if string(b) == "null" { + return nil + } + + var firstPass struct { + *GetJobProposalJobProposalFeedsManager + graphql.NoUnmarshalJSON + } + firstPass.GetJobProposalJobProposalFeedsManager = v + + err := json.Unmarshal(b, &firstPass) + if err != nil { + return err + } + + err = json.Unmarshal( + b, &v.FeedsManagerParts) + if err != nil { + return err + } + return nil +} + +type __premarshalGetJobProposalJobProposalFeedsManager struct { + Id string `json:"id"` + + Name string `json:"name"` + + Uri string `json:"uri"` + + PublicKey string `json:"publicKey"` + + IsConnectionActive bool `json:"isConnectionActive"` + + CreatedAt string `json:"createdAt"` +} + +func (v *GetJobProposalJobProposalFeedsManager) MarshalJSON() ([]byte, error) { + premarshaled, err := v.__premarshalJSON() + if err != nil { + return nil, err + } + return json.Marshal(premarshaled) +} + +func (v *GetJobProposalJobProposalFeedsManager) __premarshalJSON() (*__premarshalGetJobProposalJobProposalFeedsManager, error) { + var retval __premarshalGetJobProposalJobProposalFeedsManager + + retval.Id = v.FeedsManagerParts.Id + retval.Name = v.FeedsManagerParts.Name + retval.Uri = v.FeedsManagerParts.Uri + retval.PublicKey = v.FeedsManagerParts.PublicKey + retval.IsConnectionActive = v.FeedsManagerParts.IsConnectionActive + retval.CreatedAt = v.FeedsManagerParts.CreatedAt + return &retval, nil +} + +// GetJobProposalJobProposalJobProposalPayload includes the requested fields of the GraphQL interface JobProposalPayload. +// +// GetJobProposalJobProposalJobProposalPayload is implemented by the following types: +// GetJobProposalJobProposal +// GetJobProposalJobProposalNotFoundError +type GetJobProposalJobProposalJobProposalPayload interface { + implementsGraphQLInterfaceGetJobProposalJobProposalJobProposalPayload() + // GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values). + GetTypename() string +} + +func (v *GetJobProposalJobProposal) implementsGraphQLInterfaceGetJobProposalJobProposalJobProposalPayload() { +} +func (v *GetJobProposalJobProposalNotFoundError) implementsGraphQLInterfaceGetJobProposalJobProposalJobProposalPayload() { +} + +func __unmarshalGetJobProposalJobProposalJobProposalPayload(b []byte, v *GetJobProposalJobProposalJobProposalPayload) error { + if string(b) == "null" { + return nil + } + + var tn struct { + TypeName string `json:"__typename"` + } + err := json.Unmarshal(b, &tn) + if err != nil { + return err + } + + switch tn.TypeName { + case "JobProposal": + *v = new(GetJobProposalJobProposal) + return json.Unmarshal(b, *v) + case "NotFoundError": + *v = new(GetJobProposalJobProposalNotFoundError) + return json.Unmarshal(b, *v) + case "": + return fmt.Errorf( + "response was missing JobProposalPayload.__typename") + default: + return fmt.Errorf( + `unexpected concrete type for GetJobProposalJobProposalJobProposalPayload: "%v"`, tn.TypeName) + } +} + +func __marshalGetJobProposalJobProposalJobProposalPayload(v *GetJobProposalJobProposalJobProposalPayload) ([]byte, error) { + + var typename string + switch v := (*v).(type) { + case *GetJobProposalJobProposal: + typename = "JobProposal" + + result := struct { + TypeName string `json:"__typename"` + *GetJobProposalJobProposal + }{typename, v} + return json.Marshal(result) + case *GetJobProposalJobProposalNotFoundError: + typename = "NotFoundError" + + result := struct { + TypeName string `json:"__typename"` + *GetJobProposalJobProposalNotFoundError + }{typename, v} + return json.Marshal(result) + case nil: + return []byte("null"), nil + default: + return nil, fmt.Errorf( + `unexpected concrete type for GetJobProposalJobProposalJobProposalPayload: "%T"`, v) + } +} + +// GetJobProposalJobProposalLatestSpecJobProposalSpec includes the requested fields of the GraphQL type JobProposalSpec. +type GetJobProposalJobProposalLatestSpecJobProposalSpec struct { + Id string `json:"id"` + Definition string `json:"definition"` + Version int `json:"version"` + Status SpecStatus `json:"status"` + StatusUpdatedAt string `json:"statusUpdatedAt"` + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` +} + +// GetId returns GetJobProposalJobProposalLatestSpecJobProposalSpec.Id, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalLatestSpecJobProposalSpec) GetId() string { return v.Id } + +// GetDefinition returns GetJobProposalJobProposalLatestSpecJobProposalSpec.Definition, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalLatestSpecJobProposalSpec) GetDefinition() string { + return v.Definition +} + +// GetVersion returns GetJobProposalJobProposalLatestSpecJobProposalSpec.Version, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalLatestSpecJobProposalSpec) GetVersion() int { return v.Version } + +// GetStatus returns GetJobProposalJobProposalLatestSpecJobProposalSpec.Status, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalLatestSpecJobProposalSpec) GetStatus() SpecStatus { return v.Status } + +// GetStatusUpdatedAt returns GetJobProposalJobProposalLatestSpecJobProposalSpec.StatusUpdatedAt, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalLatestSpecJobProposalSpec) GetStatusUpdatedAt() string { + return v.StatusUpdatedAt +} + +// GetCreatedAt returns GetJobProposalJobProposalLatestSpecJobProposalSpec.CreatedAt, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalLatestSpecJobProposalSpec) GetCreatedAt() string { + return v.CreatedAt +} + +// GetUpdatedAt returns GetJobProposalJobProposalLatestSpecJobProposalSpec.UpdatedAt, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalLatestSpecJobProposalSpec) GetUpdatedAt() string { + return v.UpdatedAt +} + +// GetJobProposalJobProposalNotFoundError includes the requested fields of the GraphQL type NotFoundError. +type GetJobProposalJobProposalNotFoundError struct { + Typename string `json:"__typename"` + Message string `json:"message"` + Code ErrorCode `json:"code"` +} + +// GetTypename returns GetJobProposalJobProposalNotFoundError.Typename, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalNotFoundError) GetTypename() string { return v.Typename } + +// GetMessage returns GetJobProposalJobProposalNotFoundError.Message, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalNotFoundError) GetMessage() string { return v.Message } + +// GetCode returns GetJobProposalJobProposalNotFoundError.Code, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalNotFoundError) GetCode() ErrorCode { return v.Code } + +// GetJobProposalJobProposalSpecsJobProposalSpec includes the requested fields of the GraphQL type JobProposalSpec. +type GetJobProposalJobProposalSpecsJobProposalSpec struct { + Id string `json:"id"` + Definition string `json:"definition"` + Version int `json:"version"` + Status SpecStatus `json:"status"` + StatusUpdatedAt string `json:"statusUpdatedAt"` + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` +} + +// GetId returns GetJobProposalJobProposalSpecsJobProposalSpec.Id, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalSpecsJobProposalSpec) GetId() string { return v.Id } + +// GetDefinition returns GetJobProposalJobProposalSpecsJobProposalSpec.Definition, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalSpecsJobProposalSpec) GetDefinition() string { return v.Definition } + +// GetVersion returns GetJobProposalJobProposalSpecsJobProposalSpec.Version, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalSpecsJobProposalSpec) GetVersion() int { return v.Version } + +// GetStatus returns GetJobProposalJobProposalSpecsJobProposalSpec.Status, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalSpecsJobProposalSpec) GetStatus() SpecStatus { return v.Status } + +// GetStatusUpdatedAt returns GetJobProposalJobProposalSpecsJobProposalSpec.StatusUpdatedAt, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalSpecsJobProposalSpec) GetStatusUpdatedAt() string { + return v.StatusUpdatedAt +} + +// GetCreatedAt returns GetJobProposalJobProposalSpecsJobProposalSpec.CreatedAt, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalSpecsJobProposalSpec) GetCreatedAt() string { return v.CreatedAt } + +// GetUpdatedAt returns GetJobProposalJobProposalSpecsJobProposalSpec.UpdatedAt, and is useful for accessing the field via an interface. +func (v *GetJobProposalJobProposalSpecsJobProposalSpec) GetUpdatedAt() string { return v.UpdatedAt } + +// GetJobProposalResponse is returned by GetJobProposal on success. +type GetJobProposalResponse struct { + JobProposal GetJobProposalJobProposalJobProposalPayload `json:"-"` +} + +// GetJobProposal returns GetJobProposalResponse.JobProposal, and is useful for accessing the field via an interface. +func (v *GetJobProposalResponse) GetJobProposal() GetJobProposalJobProposalJobProposalPayload { + return v.JobProposal +} + +func (v *GetJobProposalResponse) UnmarshalJSON(b []byte) error { + + if string(b) == "null" { + return nil + } + + var firstPass struct { + *GetJobProposalResponse + JobProposal json.RawMessage `json:"jobProposal"` + graphql.NoUnmarshalJSON + } + firstPass.GetJobProposalResponse = v + + err := json.Unmarshal(b, &firstPass) + if err != nil { + return err + } + + { + dst := &v.JobProposal + src := firstPass.JobProposal + if len(src) != 0 && string(src) != "null" { + err = __unmarshalGetJobProposalJobProposalJobProposalPayload( + src, dst) + if err != nil { + return fmt.Errorf( + "unable to unmarshal GetJobProposalResponse.JobProposal: %w", err) + } + } + } + return nil +} + +type __premarshalGetJobProposalResponse struct { + JobProposal json.RawMessage `json:"jobProposal"` +} + +func (v *GetJobProposalResponse) MarshalJSON() ([]byte, error) { + premarshaled, err := v.__premarshalJSON() + if err != nil { + return nil, err + } + return json.Marshal(premarshaled) +} + +func (v *GetJobProposalResponse) __premarshalJSON() (*__premarshalGetJobProposalResponse, error) { + var retval __premarshalGetJobProposalResponse + + { + + dst := &retval.JobProposal + src := v.JobProposal + var err error + *dst, err = __marshalGetJobProposalJobProposalJobProposalPayload( + &src) + if err != nil { + return nil, fmt.Errorf( + "unable to marshal GetJobProposalResponse.JobProposal: %w", err) + } + } + return &retval, nil +} + +// GetJobResponse is returned by GetJob on success. +type GetJobResponse struct { + Job GetJobJobJobPayload `json:"-"` +} + +// GetJob returns GetJobResponse.Job, and is useful for accessing the field via an interface. +func (v *GetJobResponse) GetJob() GetJobJobJobPayload { return v.Job } + +func (v *GetJobResponse) UnmarshalJSON(b []byte) error { + + if string(b) == "null" { + return nil + } + + var firstPass struct { + *GetJobResponse + Job json.RawMessage `json:"job"` + graphql.NoUnmarshalJSON + } + firstPass.GetJobResponse = v + + err := json.Unmarshal(b, &firstPass) + if err != nil { + return err + } + + { + dst := &v.Job + src := firstPass.Job + if len(src) != 0 && string(src) != "null" { + err = __unmarshalGetJobJobJobPayload( + src, dst) + if err != nil { + return fmt.Errorf( + "unable to unmarshal GetJobResponse.Job: %w", err) + } + } + } + return nil +} + +type __premarshalGetJobResponse struct { + Job json.RawMessage `json:"job"` +} + +func (v *GetJobResponse) MarshalJSON() ([]byte, error) { + premarshaled, err := v.__premarshalJSON() + if err != nil { + return nil, err + } + return json.Marshal(premarshaled) +} + +func (v *GetJobResponse) __premarshalJSON() (*__premarshalGetJobResponse, error) { + var retval __premarshalGetJobResponse + + { + + dst := &retval.Job + src := v.Job + var err error + *dst, err = __marshalGetJobJobJobPayload( + &src) + if err != nil { + return nil, fmt.Errorf( + "unable to marshal GetJobResponse.Job: %w", err) + } + } + return &retval, nil +} + +// JobParts includes the GraphQL fields of Job requested by the fragment JobParts. +type JobParts struct { + Id string `json:"id"` + Name string `json:"name"` + SchemaVersion int `json:"schemaVersion"` + GasLimit int `json:"gasLimit"` + ForwardingAllowed bool `json:"forwardingAllowed"` + MaxTaskDuration string `json:"maxTaskDuration"` + ExternalJobID string `json:"externalJobID"` + Type string `json:"type"` + Spec JobPartsSpecJobSpec `json:"-"` + ObservationSource string `json:"observationSource"` + Errors []JobPartsErrorsJobError `json:"errors"` +} + +// GetId returns JobParts.Id, and is useful for accessing the field via an interface. +func (v *JobParts) GetId() string { return v.Id } + +// GetName returns JobParts.Name, and is useful for accessing the field via an interface. +func (v *JobParts) GetName() string { return v.Name } + +// GetSchemaVersion returns JobParts.SchemaVersion, and is useful for accessing the field via an interface. +func (v *JobParts) GetSchemaVersion() int { return v.SchemaVersion } + +// GetGasLimit returns JobParts.GasLimit, and is useful for accessing the field via an interface. +func (v *JobParts) GetGasLimit() int { return v.GasLimit } + +// GetForwardingAllowed returns JobParts.ForwardingAllowed, and is useful for accessing the field via an interface. +func (v *JobParts) GetForwardingAllowed() bool { return v.ForwardingAllowed } + +// GetMaxTaskDuration returns JobParts.MaxTaskDuration, and is useful for accessing the field via an interface. +func (v *JobParts) GetMaxTaskDuration() string { return v.MaxTaskDuration } + +// GetExternalJobID returns JobParts.ExternalJobID, and is useful for accessing the field via an interface. +func (v *JobParts) GetExternalJobID() string { return v.ExternalJobID } + +// GetType returns JobParts.Type, and is useful for accessing the field via an interface. +func (v *JobParts) GetType() string { return v.Type } + +// GetSpec returns JobParts.Spec, and is useful for accessing the field via an interface. +func (v *JobParts) GetSpec() JobPartsSpecJobSpec { return v.Spec } + +// GetObservationSource returns JobParts.ObservationSource, and is useful for accessing the field via an interface. +func (v *JobParts) GetObservationSource() string { return v.ObservationSource } + +// GetErrors returns JobParts.Errors, and is useful for accessing the field via an interface. +func (v *JobParts) GetErrors() []JobPartsErrorsJobError { return v.Errors } + +func (v *JobParts) UnmarshalJSON(b []byte) error { + + if string(b) == "null" { + return nil + } + + var firstPass struct { + *JobParts + Spec json.RawMessage `json:"spec"` + graphql.NoUnmarshalJSON + } + firstPass.JobParts = v + + err := json.Unmarshal(b, &firstPass) + if err != nil { + return err + } + + { + dst := &v.Spec + src := firstPass.Spec + if len(src) != 0 && string(src) != "null" { + err = __unmarshalJobPartsSpecJobSpec( + src, dst) + if err != nil { + return fmt.Errorf( + "unable to unmarshal JobParts.Spec: %w", err) + } + } + } + return nil +} + +type __premarshalJobParts struct { + Id string `json:"id"` + + Name string `json:"name"` + + SchemaVersion int `json:"schemaVersion"` + + GasLimit int `json:"gasLimit"` + + ForwardingAllowed bool `json:"forwardingAllowed"` + + MaxTaskDuration string `json:"maxTaskDuration"` + + ExternalJobID string `json:"externalJobID"` + + Type string `json:"type"` + + Spec json.RawMessage `json:"spec"` + + ObservationSource string `json:"observationSource"` + + Errors []JobPartsErrorsJobError `json:"errors"` +} + +func (v *JobParts) MarshalJSON() ([]byte, error) { + premarshaled, err := v.__premarshalJSON() + if err != nil { + return nil, err + } + return json.Marshal(premarshaled) +} + +func (v *JobParts) __premarshalJSON() (*__premarshalJobParts, error) { + var retval __premarshalJobParts + + retval.Id = v.Id + retval.Name = v.Name + retval.SchemaVersion = v.SchemaVersion + retval.GasLimit = v.GasLimit + retval.ForwardingAllowed = v.ForwardingAllowed + retval.MaxTaskDuration = v.MaxTaskDuration + retval.ExternalJobID = v.ExternalJobID + retval.Type = v.Type + { + + dst := &retval.Spec + src := v.Spec + var err error + *dst, err = __marshalJobPartsSpecJobSpec( + &src) + if err != nil { + return nil, fmt.Errorf( + "unable to marshal JobParts.Spec: %w", err) + } + } + retval.ObservationSource = v.ObservationSource + retval.Errors = v.Errors + return &retval, nil +} + +// JobPartsErrorsJobError includes the requested fields of the GraphQL type JobError. +type JobPartsErrorsJobError struct { + Id string `json:"id"` + Description string `json:"description"` + Occurrences int `json:"occurrences"` + CreatedAt string `json:"createdAt"` + UpdatedAt string `json:"updatedAt"` +} + +// GetId returns JobPartsErrorsJobError.Id, and is useful for accessing the field via an interface. +func (v *JobPartsErrorsJobError) GetId() string { return v.Id } + +// GetDescription returns JobPartsErrorsJobError.Description, and is useful for accessing the field via an interface. +func (v *JobPartsErrorsJobError) GetDescription() string { return v.Description } + +// GetOccurrences returns JobPartsErrorsJobError.Occurrences, and is useful for accessing the field via an interface. +func (v *JobPartsErrorsJobError) GetOccurrences() int { return v.Occurrences } + +// GetCreatedAt returns JobPartsErrorsJobError.CreatedAt, and is useful for accessing the field via an interface. +func (v *JobPartsErrorsJobError) GetCreatedAt() string { return v.CreatedAt } + +// GetUpdatedAt returns JobPartsErrorsJobError.UpdatedAt, and is useful for accessing the field via an interface. +func (v *JobPartsErrorsJobError) GetUpdatedAt() string { return v.UpdatedAt } + +// JobPartsSpecBlockhashStoreSpec includes the requested fields of the GraphQL type BlockhashStoreSpec. +type JobPartsSpecBlockhashStoreSpec struct { + Typename string `json:"__typename"` +} + +// GetTypename returns JobPartsSpecBlockhashStoreSpec.Typename, and is useful for accessing the field via an interface. +func (v *JobPartsSpecBlockhashStoreSpec) GetTypename() string { return v.Typename } + +// JobPartsSpecBootstrapSpec includes the requested fields of the GraphQL type BootstrapSpec. +type JobPartsSpecBootstrapSpec struct { + Typename string `json:"__typename"` +} + +// GetTypename returns JobPartsSpecBootstrapSpec.Typename, and is useful for accessing the field via an interface. +func (v *JobPartsSpecBootstrapSpec) GetTypename() string { return v.Typename } + +// JobPartsSpecCronSpec includes the requested fields of the GraphQL type CronSpec. +type JobPartsSpecCronSpec struct { + Typename string `json:"__typename"` +} + +// GetTypename returns JobPartsSpecCronSpec.Typename, and is useful for accessing the field via an interface. +func (v *JobPartsSpecCronSpec) GetTypename() string { return v.Typename } + +// JobPartsSpecDirectRequestSpec includes the requested fields of the GraphQL type DirectRequestSpec. +type JobPartsSpecDirectRequestSpec struct { + Typename string `json:"__typename"` +} + +// GetTypename returns JobPartsSpecDirectRequestSpec.Typename, and is useful for accessing the field via an interface. +func (v *JobPartsSpecDirectRequestSpec) GetTypename() string { return v.Typename } + +// JobPartsSpecFluxMonitorSpec includes the requested fields of the GraphQL type FluxMonitorSpec. +type JobPartsSpecFluxMonitorSpec struct { + Typename string `json:"__typename"` +} + +// GetTypename returns JobPartsSpecFluxMonitorSpec.Typename, and is useful for accessing the field via an interface. +func (v *JobPartsSpecFluxMonitorSpec) GetTypename() string { return v.Typename } + +// JobPartsSpecJobSpec includes the requested fields of the GraphQL interface JobSpec. +// +// JobPartsSpecJobSpec is implemented by the following types: +// JobPartsSpecBlockhashStoreSpec +// JobPartsSpecBootstrapSpec +// JobPartsSpecCronSpec +// JobPartsSpecDirectRequestSpec +// JobPartsSpecFluxMonitorSpec +// JobPartsSpecKeeperSpec +// JobPartsSpecOCR2Spec +// JobPartsSpecOCRSpec +// JobPartsSpecVRFSpec +// JobPartsSpecWebhookSpec +type JobPartsSpecJobSpec interface { + implementsGraphQLInterfaceJobPartsSpecJobSpec() + // GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values). + GetTypename() string +} + +func (v *JobPartsSpecBlockhashStoreSpec) implementsGraphQLInterfaceJobPartsSpecJobSpec() {} +func (v *JobPartsSpecBootstrapSpec) implementsGraphQLInterfaceJobPartsSpecJobSpec() {} +func (v *JobPartsSpecCronSpec) implementsGraphQLInterfaceJobPartsSpecJobSpec() {} +func (v *JobPartsSpecDirectRequestSpec) implementsGraphQLInterfaceJobPartsSpecJobSpec() {} +func (v *JobPartsSpecFluxMonitorSpec) implementsGraphQLInterfaceJobPartsSpecJobSpec() {} +func (v *JobPartsSpecKeeperSpec) implementsGraphQLInterfaceJobPartsSpecJobSpec() {} +func (v *JobPartsSpecOCR2Spec) implementsGraphQLInterfaceJobPartsSpecJobSpec() {} +func (v *JobPartsSpecOCRSpec) implementsGraphQLInterfaceJobPartsSpecJobSpec() {} +func (v *JobPartsSpecVRFSpec) implementsGraphQLInterfaceJobPartsSpecJobSpec() {} +func (v *JobPartsSpecWebhookSpec) implementsGraphQLInterfaceJobPartsSpecJobSpec() {} + +func __unmarshalJobPartsSpecJobSpec(b []byte, v *JobPartsSpecJobSpec) error { + if string(b) == "null" { + return nil + } + + var tn struct { + TypeName string `json:"__typename"` + } + err := json.Unmarshal(b, &tn) + if err != nil { + return err + } + + switch tn.TypeName { + case "BlockhashStoreSpec": + *v = new(JobPartsSpecBlockhashStoreSpec) + return json.Unmarshal(b, *v) + case "BootstrapSpec": + *v = new(JobPartsSpecBootstrapSpec) + return json.Unmarshal(b, *v) + case "CronSpec": + *v = new(JobPartsSpecCronSpec) + return json.Unmarshal(b, *v) + case "DirectRequestSpec": + *v = new(JobPartsSpecDirectRequestSpec) + return json.Unmarshal(b, *v) + case "FluxMonitorSpec": + *v = new(JobPartsSpecFluxMonitorSpec) + return json.Unmarshal(b, *v) + case "KeeperSpec": + *v = new(JobPartsSpecKeeperSpec) + return json.Unmarshal(b, *v) + case "OCR2Spec": + *v = new(JobPartsSpecOCR2Spec) + return json.Unmarshal(b, *v) + case "OCRSpec": + *v = new(JobPartsSpecOCRSpec) + return json.Unmarshal(b, *v) + case "VRFSpec": + *v = new(JobPartsSpecVRFSpec) + return json.Unmarshal(b, *v) + case "WebhookSpec": + *v = new(JobPartsSpecWebhookSpec) + return json.Unmarshal(b, *v) + case "": + return fmt.Errorf( + "response was missing JobSpec.__typename") + default: + return fmt.Errorf( + `unexpected concrete type for JobPartsSpecJobSpec: "%v"`, tn.TypeName) + } +} + +func __marshalJobPartsSpecJobSpec(v *JobPartsSpecJobSpec) ([]byte, error) { + + var typename string + switch v := (*v).(type) { + case *JobPartsSpecBlockhashStoreSpec: + typename = "BlockhashStoreSpec" + + result := struct { + TypeName string `json:"__typename"` + *JobPartsSpecBlockhashStoreSpec + }{typename, v} + return json.Marshal(result) + case *JobPartsSpecBootstrapSpec: + typename = "BootstrapSpec" + + result := struct { + TypeName string `json:"__typename"` + *JobPartsSpecBootstrapSpec + }{typename, v} + return json.Marshal(result) + case *JobPartsSpecCronSpec: + typename = "CronSpec" + + result := struct { + TypeName string `json:"__typename"` + *JobPartsSpecCronSpec + }{typename, v} + return json.Marshal(result) + case *JobPartsSpecDirectRequestSpec: + typename = "DirectRequestSpec" + + result := struct { + TypeName string `json:"__typename"` + *JobPartsSpecDirectRequestSpec + }{typename, v} + return json.Marshal(result) + case *JobPartsSpecFluxMonitorSpec: + typename = "FluxMonitorSpec" + + result := struct { + TypeName string `json:"__typename"` + *JobPartsSpecFluxMonitorSpec + }{typename, v} + return json.Marshal(result) + case *JobPartsSpecKeeperSpec: + typename = "KeeperSpec" + + result := struct { + TypeName string `json:"__typename"` + *JobPartsSpecKeeperSpec + }{typename, v} + return json.Marshal(result) + case *JobPartsSpecOCR2Spec: + typename = "OCR2Spec" + + premarshaled, err := v.__premarshalJSON() + if err != nil { + return nil, err + } + result := struct { + TypeName string `json:"__typename"` + *__premarshalJobPartsSpecOCR2Spec + }{typename, premarshaled} + return json.Marshal(result) + case *JobPartsSpecOCRSpec: + typename = "OCRSpec" + + result := struct { + TypeName string `json:"__typename"` + *JobPartsSpecOCRSpec + }{typename, v} + return json.Marshal(result) + case *JobPartsSpecVRFSpec: + typename = "VRFSpec" + + result := struct { + TypeName string `json:"__typename"` + *JobPartsSpecVRFSpec + }{typename, v} + return json.Marshal(result) + case *JobPartsSpecWebhookSpec: + typename = "WebhookSpec" + + result := struct { + TypeName string `json:"__typename"` + *JobPartsSpecWebhookSpec + }{typename, v} + return json.Marshal(result) + case nil: + return []byte("null"), nil + default: + return nil, fmt.Errorf( + `unexpected concrete type for JobPartsSpecJobSpec: "%T"`, v) + } +} + +// JobPartsSpecKeeperSpec includes the requested fields of the GraphQL type KeeperSpec. +type JobPartsSpecKeeperSpec struct { + Typename string `json:"__typename"` +} + +// GetTypename returns JobPartsSpecKeeperSpec.Typename, and is useful for accessing the field via an interface. +func (v *JobPartsSpecKeeperSpec) GetTypename() string { return v.Typename } + +// JobPartsSpecOCR2Spec includes the requested fields of the GraphQL type OCR2Spec. +type JobPartsSpecOCR2Spec struct { + Typename string `json:"__typename"` + OCR2Spec `json:"-"` +} + +// GetTypename returns JobPartsSpecOCR2Spec.Typename, and is useful for accessing the field via an interface. +func (v *JobPartsSpecOCR2Spec) GetTypename() string { return v.Typename } + +// GetBlockchainTimeout returns JobPartsSpecOCR2Spec.BlockchainTimeout, and is useful for accessing the field via an interface. +func (v *JobPartsSpecOCR2Spec) GetBlockchainTimeout() string { return v.OCR2Spec.BlockchainTimeout } + +// GetContractID returns JobPartsSpecOCR2Spec.ContractID, and is useful for accessing the field via an interface. +func (v *JobPartsSpecOCR2Spec) GetContractID() string { return v.OCR2Spec.ContractID } + +// GetContractConfigConfirmations returns JobPartsSpecOCR2Spec.ContractConfigConfirmations, and is useful for accessing the field via an interface. +func (v *JobPartsSpecOCR2Spec) GetContractConfigConfirmations() int { + return v.OCR2Spec.ContractConfigConfirmations +} + +// GetContractConfigTrackerPollInterval returns JobPartsSpecOCR2Spec.ContractConfigTrackerPollInterval, and is useful for accessing the field via an interface. +func (v *JobPartsSpecOCR2Spec) GetContractConfigTrackerPollInterval() string { + return v.OCR2Spec.ContractConfigTrackerPollInterval +} + +// GetCreatedAt returns JobPartsSpecOCR2Spec.CreatedAt, and is useful for accessing the field via an interface. +func (v *JobPartsSpecOCR2Spec) GetCreatedAt() string { return v.OCR2Spec.CreatedAt } + +// GetOcrKeyBundleID returns JobPartsSpecOCR2Spec.OcrKeyBundleID, and is useful for accessing the field via an interface. +func (v *JobPartsSpecOCR2Spec) GetOcrKeyBundleID() string { return v.OCR2Spec.OcrKeyBundleID } + +// GetMonitoringEndpoint returns JobPartsSpecOCR2Spec.MonitoringEndpoint, and is useful for accessing the field via an interface. +func (v *JobPartsSpecOCR2Spec) GetMonitoringEndpoint() string { return v.OCR2Spec.MonitoringEndpoint } + +// GetP2pv2Bootstrappers returns JobPartsSpecOCR2Spec.P2pv2Bootstrappers, and is useful for accessing the field via an interface. +func (v *JobPartsSpecOCR2Spec) GetP2pv2Bootstrappers() []string { return v.OCR2Spec.P2pv2Bootstrappers } + +// GetRelay returns JobPartsSpecOCR2Spec.Relay, and is useful for accessing the field via an interface. +func (v *JobPartsSpecOCR2Spec) GetRelay() string { return v.OCR2Spec.Relay } + +// GetRelayConfig returns JobPartsSpecOCR2Spec.RelayConfig, and is useful for accessing the field via an interface. +func (v *JobPartsSpecOCR2Spec) GetRelayConfig() gqlscalar.Map { return v.OCR2Spec.RelayConfig } + +// GetTransmitterID returns JobPartsSpecOCR2Spec.TransmitterID, and is useful for accessing the field via an interface. +func (v *JobPartsSpecOCR2Spec) GetTransmitterID() string { return v.OCR2Spec.TransmitterID } + +// GetPluginType returns JobPartsSpecOCR2Spec.PluginType, and is useful for accessing the field via an interface. +func (v *JobPartsSpecOCR2Spec) GetPluginType() string { return v.OCR2Spec.PluginType } + +// GetPluginConfig returns JobPartsSpecOCR2Spec.PluginConfig, and is useful for accessing the field via an interface. +func (v *JobPartsSpecOCR2Spec) GetPluginConfig() gqlscalar.Map { return v.OCR2Spec.PluginConfig } + +func (v *JobPartsSpecOCR2Spec) UnmarshalJSON(b []byte) error { + + if string(b) == "null" { + return nil + } + + var firstPass struct { + *JobPartsSpecOCR2Spec + graphql.NoUnmarshalJSON + } + firstPass.JobPartsSpecOCR2Spec = v + + err := json.Unmarshal(b, &firstPass) + if err != nil { + return err + } + + err = json.Unmarshal( + b, &v.OCR2Spec) + if err != nil { + return err + } + return nil +} + +type __premarshalJobPartsSpecOCR2Spec struct { + Typename string `json:"__typename"` + + BlockchainTimeout string `json:"blockchainTimeout"` + + ContractID string `json:"contractID"` + + ContractConfigConfirmations int `json:"contractConfigConfirmations"` + + ContractConfigTrackerPollInterval string `json:"contractConfigTrackerPollInterval"` + + CreatedAt string `json:"createdAt"` + + OcrKeyBundleID string `json:"ocrKeyBundleID"` + + MonitoringEndpoint string `json:"monitoringEndpoint"` + + P2pv2Bootstrappers []string `json:"p2pv2Bootstrappers"` + + Relay string `json:"relay"` + + RelayConfig gqlscalar.Map `json:"relayConfig"` + + TransmitterID string `json:"transmitterID"` + + PluginType string `json:"pluginType"` + + PluginConfig gqlscalar.Map `json:"pluginConfig"` +} + +func (v *JobPartsSpecOCR2Spec) MarshalJSON() ([]byte, error) { + premarshaled, err := v.__premarshalJSON() + if err != nil { + return nil, err + } + return json.Marshal(premarshaled) +} + +func (v *JobPartsSpecOCR2Spec) __premarshalJSON() (*__premarshalJobPartsSpecOCR2Spec, error) { + var retval __premarshalJobPartsSpecOCR2Spec + + retval.Typename = v.Typename + retval.BlockchainTimeout = v.OCR2Spec.BlockchainTimeout + retval.ContractID = v.OCR2Spec.ContractID + retval.ContractConfigConfirmations = v.OCR2Spec.ContractConfigConfirmations + retval.ContractConfigTrackerPollInterval = v.OCR2Spec.ContractConfigTrackerPollInterval + retval.CreatedAt = v.OCR2Spec.CreatedAt + retval.OcrKeyBundleID = v.OCR2Spec.OcrKeyBundleID + retval.MonitoringEndpoint = v.OCR2Spec.MonitoringEndpoint + retval.P2pv2Bootstrappers = v.OCR2Spec.P2pv2Bootstrappers + retval.Relay = v.OCR2Spec.Relay + retval.RelayConfig = v.OCR2Spec.RelayConfig + retval.TransmitterID = v.OCR2Spec.TransmitterID + retval.PluginType = v.OCR2Spec.PluginType + retval.PluginConfig = v.OCR2Spec.PluginConfig + return &retval, nil +} + +// JobPartsSpecOCRSpec includes the requested fields of the GraphQL type OCRSpec. +type JobPartsSpecOCRSpec struct { + Typename string `json:"__typename"` +} + +// GetTypename returns JobPartsSpecOCRSpec.Typename, and is useful for accessing the field via an interface. +func (v *JobPartsSpecOCRSpec) GetTypename() string { return v.Typename } + +// JobPartsSpecVRFSpec includes the requested fields of the GraphQL type VRFSpec. +type JobPartsSpecVRFSpec struct { + Typename string `json:"__typename"` +} + +// GetTypename returns JobPartsSpecVRFSpec.Typename, and is useful for accessing the field via an interface. +func (v *JobPartsSpecVRFSpec) GetTypename() string { return v.Typename } + +// JobPartsSpecWebhookSpec includes the requested fields of the GraphQL type WebhookSpec. +type JobPartsSpecWebhookSpec struct { + Typename string `json:"__typename"` +} + +// GetTypename returns JobPartsSpecWebhookSpec.Typename, and is useful for accessing the field via an interface. +func (v *JobPartsSpecWebhookSpec) GetTypename() string { return v.Typename } + +type JobProposalStatus string + +const ( + JobProposalStatusPending JobProposalStatus = "PENDING" + JobProposalStatusApproved JobProposalStatus = "APPROVED" + JobProposalStatusRejected JobProposalStatus = "REJECTED" + JobProposalStatusCancelled JobProposalStatus = "CANCELLED" +) + +// ListBridgesBridgesBridgesPayload includes the requested fields of the GraphQL type BridgesPayload. +type ListBridgesBridgesBridgesPayload struct { + Results []ListBridgesBridgesBridgesPayloadResultsBridge `json:"results"` + Metadata ListBridgesBridgesBridgesPayloadMetadataPaginationMetadata `json:"metadata"` +} + +// GetResults returns ListBridgesBridgesBridgesPayload.Results, and is useful for accessing the field via an interface. +func (v *ListBridgesBridgesBridgesPayload) GetResults() []ListBridgesBridgesBridgesPayloadResultsBridge { + return v.Results +} + +// GetMetadata returns ListBridgesBridgesBridgesPayload.Metadata, and is useful for accessing the field via an interface. +func (v *ListBridgesBridgesBridgesPayload) GetMetadata() ListBridgesBridgesBridgesPayloadMetadataPaginationMetadata { + return v.Metadata +} + +// ListBridgesBridgesBridgesPayloadMetadataPaginationMetadata includes the requested fields of the GraphQL type PaginationMetadata. +type ListBridgesBridgesBridgesPayloadMetadataPaginationMetadata struct { + Total int `json:"total"` +} + +// GetTotal returns ListBridgesBridgesBridgesPayloadMetadataPaginationMetadata.Total, and is useful for accessing the field via an interface. +func (v *ListBridgesBridgesBridgesPayloadMetadataPaginationMetadata) GetTotal() int { return v.Total } + +// ListBridgesBridgesBridgesPayloadResultsBridge includes the requested fields of the GraphQL type Bridge. +type ListBridgesBridgesBridgesPayloadResultsBridge struct { + BridgeParts `json:"-"` +} + +// GetId returns ListBridgesBridgesBridgesPayloadResultsBridge.Id, and is useful for accessing the field via an interface. +func (v *ListBridgesBridgesBridgesPayloadResultsBridge) GetId() string { return v.BridgeParts.Id } + +// GetName returns ListBridgesBridgesBridgesPayloadResultsBridge.Name, and is useful for accessing the field via an interface. +func (v *ListBridgesBridgesBridgesPayloadResultsBridge) GetName() string { return v.BridgeParts.Name } + +// GetUrl returns ListBridgesBridgesBridgesPayloadResultsBridge.Url, and is useful for accessing the field via an interface. +func (v *ListBridgesBridgesBridgesPayloadResultsBridge) GetUrl() string { return v.BridgeParts.Url } + +// GetConfirmations returns ListBridgesBridgesBridgesPayloadResultsBridge.Confirmations, and is useful for accessing the field via an interface. +func (v *ListBridgesBridgesBridgesPayloadResultsBridge) GetConfirmations() int { + return v.BridgeParts.Confirmations +} + +// GetOutgoingToken returns ListBridgesBridgesBridgesPayloadResultsBridge.OutgoingToken, and is useful for accessing the field via an interface. +func (v *ListBridgesBridgesBridgesPayloadResultsBridge) GetOutgoingToken() string { + return v.BridgeParts.OutgoingToken +} + +// GetMinimumContractPayment returns ListBridgesBridgesBridgesPayloadResultsBridge.MinimumContractPayment, and is useful for accessing the field via an interface. +func (v *ListBridgesBridgesBridgesPayloadResultsBridge) GetMinimumContractPayment() string { + return v.BridgeParts.MinimumContractPayment +} + +// GetCreatedAt returns ListBridgesBridgesBridgesPayloadResultsBridge.CreatedAt, and is useful for accessing the field via an interface. +func (v *ListBridgesBridgesBridgesPayloadResultsBridge) GetCreatedAt() string { + return v.BridgeParts.CreatedAt +} + +func (v *ListBridgesBridgesBridgesPayloadResultsBridge) UnmarshalJSON(b []byte) error { + + if string(b) == "null" { + return nil + } + + var firstPass struct { + *ListBridgesBridgesBridgesPayloadResultsBridge + graphql.NoUnmarshalJSON + } + firstPass.ListBridgesBridgesBridgesPayloadResultsBridge = v + + err := json.Unmarshal(b, &firstPass) + if err != nil { + return err + } + + err = json.Unmarshal( + b, &v.BridgeParts) + if err != nil { + return err + } + return nil +} + +type __premarshalListBridgesBridgesBridgesPayloadResultsBridge struct { + Id string `json:"id"` + + Name string `json:"name"` + + Url string `json:"url"` + + Confirmations int `json:"confirmations"` + + OutgoingToken string `json:"outgoingToken"` + + MinimumContractPayment string `json:"minimumContractPayment"` + + CreatedAt string `json:"createdAt"` +} + +func (v *ListBridgesBridgesBridgesPayloadResultsBridge) MarshalJSON() ([]byte, error) { + premarshaled, err := v.__premarshalJSON() + if err != nil { + return nil, err + } + return json.Marshal(premarshaled) +} + +func (v *ListBridgesBridgesBridgesPayloadResultsBridge) __premarshalJSON() (*__premarshalListBridgesBridgesBridgesPayloadResultsBridge, error) { + var retval __premarshalListBridgesBridgesBridgesPayloadResultsBridge + + retval.Id = v.BridgeParts.Id + retval.Name = v.BridgeParts.Name + retval.Url = v.BridgeParts.Url + retval.Confirmations = v.BridgeParts.Confirmations + retval.OutgoingToken = v.BridgeParts.OutgoingToken + retval.MinimumContractPayment = v.BridgeParts.MinimumContractPayment + retval.CreatedAt = v.BridgeParts.CreatedAt + return &retval, nil +} + +// ListBridgesResponse is returned by ListBridges on success. +type ListBridgesResponse struct { + Bridges ListBridgesBridgesBridgesPayload `json:"bridges"` +} + +// GetBridges returns ListBridgesResponse.Bridges, and is useful for accessing the field via an interface. +func (v *ListBridgesResponse) GetBridges() ListBridgesBridgesBridgesPayload { return v.Bridges } + +// ListFeedsManagersFeedsManagersFeedsManagersPayload includes the requested fields of the GraphQL type FeedsManagersPayload. +type ListFeedsManagersFeedsManagersFeedsManagersPayload struct { + Results []ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager `json:"results"` +} + +// GetResults returns ListFeedsManagersFeedsManagersFeedsManagersPayload.Results, and is useful for accessing the field via an interface. +func (v *ListFeedsManagersFeedsManagersFeedsManagersPayload) GetResults() []ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager { + return v.Results +} + +// ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager includes the requested fields of the GraphQL type FeedsManager. +type ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager struct { + FeedsManagerParts `json:"-"` +} + +// GetId returns ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager.Id, and is useful for accessing the field via an interface. +func (v *ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager) GetId() string { + return v.FeedsManagerParts.Id +} + +// GetName returns ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager.Name, and is useful for accessing the field via an interface. +func (v *ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager) GetName() string { + return v.FeedsManagerParts.Name +} + +// GetUri returns ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager.Uri, and is useful for accessing the field via an interface. +func (v *ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager) GetUri() string { + return v.FeedsManagerParts.Uri +} + +// GetPublicKey returns ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager.PublicKey, and is useful for accessing the field via an interface. +func (v *ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager) GetPublicKey() string { + return v.FeedsManagerParts.PublicKey +} + +// GetIsConnectionActive returns ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager.IsConnectionActive, and is useful for accessing the field via an interface. +func (v *ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager) GetIsConnectionActive() bool { + return v.FeedsManagerParts.IsConnectionActive +} + +// GetCreatedAt returns ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager.CreatedAt, and is useful for accessing the field via an interface. +func (v *ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager) GetCreatedAt() string { + return v.FeedsManagerParts.CreatedAt +} + +func (v *ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager) UnmarshalJSON(b []byte) error { + + if string(b) == "null" { + return nil + } + + var firstPass struct { + *ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager + graphql.NoUnmarshalJSON + } + firstPass.ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager = v + + err := json.Unmarshal(b, &firstPass) + if err != nil { + return err + } + + err = json.Unmarshal( + b, &v.FeedsManagerParts) + if err != nil { + return err + } + return nil +} + +type __premarshalListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager struct { + Id string `json:"id"` + + Name string `json:"name"` + + Uri string `json:"uri"` + + PublicKey string `json:"publicKey"` + + IsConnectionActive bool `json:"isConnectionActive"` + + CreatedAt string `json:"createdAt"` +} + +func (v *ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager) MarshalJSON() ([]byte, error) { + premarshaled, err := v.__premarshalJSON() + if err != nil { + return nil, err + } + return json.Marshal(premarshaled) +} + +func (v *ListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager) __premarshalJSON() (*__premarshalListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager, error) { + var retval __premarshalListFeedsManagersFeedsManagersFeedsManagersPayloadResultsFeedsManager + + retval.Id = v.FeedsManagerParts.Id + retval.Name = v.FeedsManagerParts.Name + retval.Uri = v.FeedsManagerParts.Uri + retval.PublicKey = v.FeedsManagerParts.PublicKey + retval.IsConnectionActive = v.FeedsManagerParts.IsConnectionActive + retval.CreatedAt = v.FeedsManagerParts.CreatedAt + return &retval, nil +} + +// ListFeedsManagersResponse is returned by ListFeedsManagers on success. +type ListFeedsManagersResponse struct { + FeedsManagers ListFeedsManagersFeedsManagersFeedsManagersPayload `json:"feedsManagers"` +} + +// GetFeedsManagers returns ListFeedsManagersResponse.FeedsManagers, and is useful for accessing the field via an interface. +func (v *ListFeedsManagersResponse) GetFeedsManagers() ListFeedsManagersFeedsManagersFeedsManagersPayload { + return v.FeedsManagers +} + +// ListJobsJobsJobsPayload includes the requested fields of the GraphQL type JobsPayload. +type ListJobsJobsJobsPayload struct { + Results []ListJobsJobsJobsPayloadResultsJob `json:"results"` + Metadata ListJobsJobsJobsPayloadMetadataPaginationMetadata `json:"metadata"` +} + +// GetResults returns ListJobsJobsJobsPayload.Results, and is useful for accessing the field via an interface. +func (v *ListJobsJobsJobsPayload) GetResults() []ListJobsJobsJobsPayloadResultsJob { return v.Results } + +// GetMetadata returns ListJobsJobsJobsPayload.Metadata, and is useful for accessing the field via an interface. +func (v *ListJobsJobsJobsPayload) GetMetadata() ListJobsJobsJobsPayloadMetadataPaginationMetadata { + return v.Metadata +} + +// ListJobsJobsJobsPayloadMetadataPaginationMetadata includes the requested fields of the GraphQL type PaginationMetadata. +type ListJobsJobsJobsPayloadMetadataPaginationMetadata struct { + Total int `json:"total"` +} + +// GetTotal returns ListJobsJobsJobsPayloadMetadataPaginationMetadata.Total, and is useful for accessing the field via an interface. +func (v *ListJobsJobsJobsPayloadMetadataPaginationMetadata) GetTotal() int { return v.Total } + +// ListJobsJobsJobsPayloadResultsJob includes the requested fields of the GraphQL type Job. +type ListJobsJobsJobsPayloadResultsJob struct { + JobParts `json:"-"` +} + +// GetId returns ListJobsJobsJobsPayloadResultsJob.Id, and is useful for accessing the field via an interface. +func (v *ListJobsJobsJobsPayloadResultsJob) GetId() string { return v.JobParts.Id } + +// GetName returns ListJobsJobsJobsPayloadResultsJob.Name, and is useful for accessing the field via an interface. +func (v *ListJobsJobsJobsPayloadResultsJob) GetName() string { return v.JobParts.Name } + +// GetSchemaVersion returns ListJobsJobsJobsPayloadResultsJob.SchemaVersion, and is useful for accessing the field via an interface. +func (v *ListJobsJobsJobsPayloadResultsJob) GetSchemaVersion() int { return v.JobParts.SchemaVersion } + +// GetGasLimit returns ListJobsJobsJobsPayloadResultsJob.GasLimit, and is useful for accessing the field via an interface. +func (v *ListJobsJobsJobsPayloadResultsJob) GetGasLimit() int { return v.JobParts.GasLimit } + +// GetForwardingAllowed returns ListJobsJobsJobsPayloadResultsJob.ForwardingAllowed, and is useful for accessing the field via an interface. +func (v *ListJobsJobsJobsPayloadResultsJob) GetForwardingAllowed() bool { + return v.JobParts.ForwardingAllowed +} + +// GetMaxTaskDuration returns ListJobsJobsJobsPayloadResultsJob.MaxTaskDuration, and is useful for accessing the field via an interface. +func (v *ListJobsJobsJobsPayloadResultsJob) GetMaxTaskDuration() string { + return v.JobParts.MaxTaskDuration +} + +// GetExternalJobID returns ListJobsJobsJobsPayloadResultsJob.ExternalJobID, and is useful for accessing the field via an interface. +func (v *ListJobsJobsJobsPayloadResultsJob) GetExternalJobID() string { + return v.JobParts.ExternalJobID +} + +// GetType returns ListJobsJobsJobsPayloadResultsJob.Type, and is useful for accessing the field via an interface. +func (v *ListJobsJobsJobsPayloadResultsJob) GetType() string { return v.JobParts.Type } + +// GetSpec returns ListJobsJobsJobsPayloadResultsJob.Spec, and is useful for accessing the field via an interface. +func (v *ListJobsJobsJobsPayloadResultsJob) GetSpec() JobPartsSpecJobSpec { return v.JobParts.Spec } + +// GetObservationSource returns ListJobsJobsJobsPayloadResultsJob.ObservationSource, and is useful for accessing the field via an interface. +func (v *ListJobsJobsJobsPayloadResultsJob) GetObservationSource() string { + return v.JobParts.ObservationSource +} + +// GetErrors returns ListJobsJobsJobsPayloadResultsJob.Errors, and is useful for accessing the field via an interface. +func (v *ListJobsJobsJobsPayloadResultsJob) GetErrors() []JobPartsErrorsJobError { + return v.JobParts.Errors +} + +func (v *ListJobsJobsJobsPayloadResultsJob) UnmarshalJSON(b []byte) error { + + if string(b) == "null" { + return nil + } + + var firstPass struct { + *ListJobsJobsJobsPayloadResultsJob + graphql.NoUnmarshalJSON + } + firstPass.ListJobsJobsJobsPayloadResultsJob = v + + err := json.Unmarshal(b, &firstPass) + if err != nil { + return err + } + + err = json.Unmarshal( + b, &v.JobParts) + if err != nil { + return err + } + return nil +} + +type __premarshalListJobsJobsJobsPayloadResultsJob struct { + Id string `json:"id"` + + Name string `json:"name"` + + SchemaVersion int `json:"schemaVersion"` + + GasLimit int `json:"gasLimit"` + + ForwardingAllowed bool `json:"forwardingAllowed"` + + MaxTaskDuration string `json:"maxTaskDuration"` + + ExternalJobID string `json:"externalJobID"` + + Type string `json:"type"` + + Spec json.RawMessage `json:"spec"` + + ObservationSource string `json:"observationSource"` + + Errors []JobPartsErrorsJobError `json:"errors"` +} + +func (v *ListJobsJobsJobsPayloadResultsJob) MarshalJSON() ([]byte, error) { + premarshaled, err := v.__premarshalJSON() + if err != nil { + return nil, err + } + return json.Marshal(premarshaled) +} + +func (v *ListJobsJobsJobsPayloadResultsJob) __premarshalJSON() (*__premarshalListJobsJobsJobsPayloadResultsJob, error) { + var retval __premarshalListJobsJobsJobsPayloadResultsJob + + retval.Id = v.JobParts.Id + retval.Name = v.JobParts.Name + retval.SchemaVersion = v.JobParts.SchemaVersion + retval.GasLimit = v.JobParts.GasLimit + retval.ForwardingAllowed = v.JobParts.ForwardingAllowed + retval.MaxTaskDuration = v.JobParts.MaxTaskDuration + retval.ExternalJobID = v.JobParts.ExternalJobID + retval.Type = v.JobParts.Type + { + + dst := &retval.Spec + src := v.JobParts.Spec + var err error + *dst, err = __marshalJobPartsSpecJobSpec( + &src) + if err != nil { + return nil, fmt.Errorf( + "unable to marshal ListJobsJobsJobsPayloadResultsJob.JobParts.Spec: %w", err) + } + } + retval.ObservationSource = v.JobParts.ObservationSource + retval.Errors = v.JobParts.Errors + return &retval, nil +} + +// ListJobsResponse is returned by ListJobs on success. +type ListJobsResponse struct { + Jobs ListJobsJobsJobsPayload `json:"jobs"` +} + +// GetJobs returns ListJobsResponse.Jobs, and is useful for accessing the field via an interface. +func (v *ListJobsResponse) GetJobs() ListJobsJobsJobsPayload { return v.Jobs } + +// #################### +// Jobs and Job Proposals +// #################### +type OCR2Spec struct { + BlockchainTimeout string `json:"blockchainTimeout"` + ContractID string `json:"contractID"` + ContractConfigConfirmations int `json:"contractConfigConfirmations"` + ContractConfigTrackerPollInterval string `json:"contractConfigTrackerPollInterval"` + CreatedAt string `json:"createdAt"` + OcrKeyBundleID string `json:"ocrKeyBundleID"` + MonitoringEndpoint string `json:"monitoringEndpoint"` + P2pv2Bootstrappers []string `json:"p2pv2Bootstrappers"` + Relay string `json:"relay"` + RelayConfig gqlscalar.Map `json:"relayConfig"` + TransmitterID string `json:"transmitterID"` + PluginType string `json:"pluginType"` + PluginConfig gqlscalar.Map `json:"pluginConfig"` +} + +// GetBlockchainTimeout returns OCR2Spec.BlockchainTimeout, and is useful for accessing the field via an interface. +func (v *OCR2Spec) GetBlockchainTimeout() string { return v.BlockchainTimeout } + +// GetContractID returns OCR2Spec.ContractID, and is useful for accessing the field via an interface. +func (v *OCR2Spec) GetContractID() string { return v.ContractID } + +// GetContractConfigConfirmations returns OCR2Spec.ContractConfigConfirmations, and is useful for accessing the field via an interface. +func (v *OCR2Spec) GetContractConfigConfirmations() int { return v.ContractConfigConfirmations } + +// GetContractConfigTrackerPollInterval returns OCR2Spec.ContractConfigTrackerPollInterval, and is useful for accessing the field via an interface. +func (v *OCR2Spec) GetContractConfigTrackerPollInterval() string { + return v.ContractConfigTrackerPollInterval +} + +// GetCreatedAt returns OCR2Spec.CreatedAt, and is useful for accessing the field via an interface. +func (v *OCR2Spec) GetCreatedAt() string { return v.CreatedAt } + +// GetOcrKeyBundleID returns OCR2Spec.OcrKeyBundleID, and is useful for accessing the field via an interface. +func (v *OCR2Spec) GetOcrKeyBundleID() string { return v.OcrKeyBundleID } + +// GetMonitoringEndpoint returns OCR2Spec.MonitoringEndpoint, and is useful for accessing the field via an interface. +func (v *OCR2Spec) GetMonitoringEndpoint() string { return v.MonitoringEndpoint } + +// GetP2pv2Bootstrappers returns OCR2Spec.P2pv2Bootstrappers, and is useful for accessing the field via an interface. +func (v *OCR2Spec) GetP2pv2Bootstrappers() []string { return v.P2pv2Bootstrappers } + +// GetRelay returns OCR2Spec.Relay, and is useful for accessing the field via an interface. +func (v *OCR2Spec) GetRelay() string { return v.Relay } + +// GetRelayConfig returns OCR2Spec.RelayConfig, and is useful for accessing the field via an interface. +func (v *OCR2Spec) GetRelayConfig() gqlscalar.Map { return v.RelayConfig } + +// GetTransmitterID returns OCR2Spec.TransmitterID, and is useful for accessing the field via an interface. +func (v *OCR2Spec) GetTransmitterID() string { return v.TransmitterID } + +// GetPluginType returns OCR2Spec.PluginType, and is useful for accessing the field via an interface. +func (v *OCR2Spec) GetPluginType() string { return v.PluginType } + +// GetPluginConfig returns OCR2Spec.PluginConfig, and is useful for accessing the field via an interface. +func (v *OCR2Spec) GetPluginConfig() gqlscalar.Map { return v.PluginConfig } + +type SpecStatus string + +const ( + SpecStatusUnknown SpecStatus = "UNKNOWN" + SpecStatusPending SpecStatus = "PENDING" + SpecStatusApproved SpecStatus = "APPROVED" + SpecStatusRejected SpecStatus = "REJECTED" + SpecStatusCancelled SpecStatus = "CANCELLED" +) + +// __CreateFeedsManagerInput is used internally by genqlient +type __CreateFeedsManagerInput struct { + Input CreateFeedsManagerInput `json:"input"` +} + +// GetInput returns __CreateFeedsManagerInput.Input, and is useful for accessing the field via an interface. +func (v *__CreateFeedsManagerInput) GetInput() CreateFeedsManagerInput { return v.Input } + +// __GetBridgeInput is used internally by genqlient +type __GetBridgeInput struct { + Id string `json:"id"` +} + +// GetId returns __GetBridgeInput.Id, and is useful for accessing the field via an interface. +func (v *__GetBridgeInput) GetId() string { return v.Id } + +// __GetFeedsManagerInput is used internally by genqlient +type __GetFeedsManagerInput struct { + Id string `json:"id"` +} + +// GetId returns __GetFeedsManagerInput.Id, and is useful for accessing the field via an interface. +func (v *__GetFeedsManagerInput) GetId() string { return v.Id } + +// __GetJobInput is used internally by genqlient +type __GetJobInput struct { + Id string `json:"id"` +} + +// GetId returns __GetJobInput.Id, and is useful for accessing the field via an interface. +func (v *__GetJobInput) GetId() string { return v.Id } + +// __GetJobProposalInput is used internally by genqlient +type __GetJobProposalInput struct { + Id string `json:"id"` +} + +// GetId returns __GetJobProposalInput.Id, and is useful for accessing the field via an interface. +func (v *__GetJobProposalInput) GetId() string { return v.Id } + +// __ListBridgesInput is used internally by genqlient +type __ListBridgesInput struct { + Offset int `json:"offset"` + Limit int `json:"limit"` +} + +// GetOffset returns __ListBridgesInput.Offset, and is useful for accessing the field via an interface. +func (v *__ListBridgesInput) GetOffset() int { return v.Offset } + +// GetLimit returns __ListBridgesInput.Limit, and is useful for accessing the field via an interface. +func (v *__ListBridgesInput) GetLimit() int { return v.Limit } + +// __ListJobsInput is used internally by genqlient +type __ListJobsInput struct { + Offset int `json:"offset"` + Limit int `json:"limit"` +} + +// GetOffset returns __ListJobsInput.Offset, and is useful for accessing the field via an interface. +func (v *__ListJobsInput) GetOffset() int { return v.Offset } + +// GetLimit returns __ListJobsInput.Limit, and is useful for accessing the field via an interface. +func (v *__ListJobsInput) GetLimit() int { return v.Limit } + +// The query or mutation executed by CreateFeedsManager. +const CreateFeedsManager_Operation = ` +mutation CreateFeedsManager ($input: CreateFeedsManagerInput!) { + createFeedsManager(input: $input) { + __typename + ... on CreateFeedsManagerSuccess { + feedsManager { + ... FeedsManagerParts + } + } + ... on SingleFeedsManagerError { + message + code + } + ... on NotFoundError { + message + code + } + ... on InputErrors { + errors { + message + code + path + } + } + } +} +fragment FeedsManagerParts on FeedsManager { + id + name + uri + publicKey + isConnectionActive + createdAt +} +` + +func CreateFeedsManager( + ctx_ context.Context, + client_ graphql.Client, + input CreateFeedsManagerInput, +) (*CreateFeedsManagerResponse, error) { + req_ := &graphql.Request{ + OpName: "CreateFeedsManager", + Query: CreateFeedsManager_Operation, + Variables: &__CreateFeedsManagerInput{ + Input: input, + }, + } + var err_ error + + var data_ CreateFeedsManagerResponse + resp_ := &graphql.Response{Data: &data_} + + err_ = client_.MakeRequest( + ctx_, + req_, + resp_, + ) + + return &data_, err_ +} + +// The query or mutation executed by GetBridge. +const GetBridge_Operation = ` +query GetBridge ($id: ID!) { + bridge(id: $id) { + __typename + ... BridgeParts + ... on NotFoundError { + message + code + } + } +} +fragment BridgeParts on Bridge { + id + name + url + confirmations + outgoingToken + minimumContractPayment + createdAt +} +` + +func GetBridge( + ctx_ context.Context, + client_ graphql.Client, + id string, +) (*GetBridgeResponse, error) { + req_ := &graphql.Request{ + OpName: "GetBridge", + Query: GetBridge_Operation, + Variables: &__GetBridgeInput{ + Id: id, + }, + } + var err_ error + + var data_ GetBridgeResponse + resp_ := &graphql.Response{Data: &data_} + + err_ = client_.MakeRequest( + ctx_, + req_, + resp_, + ) + + return &data_, err_ +} + +// The query or mutation executed by GetCSAKeys. +const GetCSAKeys_Operation = ` +query GetCSAKeys { + csaKeys { + results { + id + publicKey + version + } + } +} +` + +func GetCSAKeys( + ctx_ context.Context, + client_ graphql.Client, +) (*GetCSAKeysResponse, error) { + req_ := &graphql.Request{ + OpName: "GetCSAKeys", + Query: GetCSAKeys_Operation, + } + var err_ error + + var data_ GetCSAKeysResponse + resp_ := &graphql.Response{Data: &data_} + + err_ = client_.MakeRequest( + ctx_, + req_, + resp_, + ) + + return &data_, err_ +} + +// The query or mutation executed by GetFeedsManager. +const GetFeedsManager_Operation = ` +query GetFeedsManager ($id: ID!) { + feedsManager(id: $id) { + __typename + ... FeedsManagerParts + ... on NotFoundError { + message + code + } + } +} +fragment FeedsManagerParts on FeedsManager { + id + name + uri + publicKey + isConnectionActive + createdAt +} +` + +func GetFeedsManager( + ctx_ context.Context, + client_ graphql.Client, + id string, +) (*GetFeedsManagerResponse, error) { + req_ := &graphql.Request{ + OpName: "GetFeedsManager", + Query: GetFeedsManager_Operation, + Variables: &__GetFeedsManagerInput{ + Id: id, + }, + } + var err_ error + + var data_ GetFeedsManagerResponse + resp_ := &graphql.Response{Data: &data_} + + err_ = client_.MakeRequest( + ctx_, + req_, + resp_, + ) + + return &data_, err_ +} + +// The query or mutation executed by GetJob. +const GetJob_Operation = ` +query GetJob ($id: ID!) { + job(id: $id) { + __typename + ... JobParts + ... on NotFoundError { + message + code + } + } +} +fragment JobParts on Job { + id + name + schemaVersion + gasLimit + forwardingAllowed + maxTaskDuration + externalJobID + type + spec { + __typename + ... on OCR2Spec { + ... OCR2Spec + } + } + observationSource + errors { + id + description + occurrences + createdAt + updatedAt + } +} +fragment OCR2Spec on OCR2Spec { + blockchainTimeout + contractID + contractConfigConfirmations + contractConfigTrackerPollInterval + createdAt + ocrKeyBundleID + monitoringEndpoint + p2pv2Bootstrappers + relay + relayConfig + transmitterID + pluginType + pluginConfig +} +` + +func GetJob( + ctx_ context.Context, + client_ graphql.Client, + id string, +) (*GetJobResponse, error) { + req_ := &graphql.Request{ + OpName: "GetJob", + Query: GetJob_Operation, + Variables: &__GetJobInput{ + Id: id, + }, + } + var err_ error + + var data_ GetJobResponse + resp_ := &graphql.Response{Data: &data_} + + err_ = client_.MakeRequest( + ctx_, + req_, + resp_, + ) + + return &data_, err_ +} + +// The query or mutation executed by GetJobProposal. +const GetJobProposal_Operation = ` +query GetJobProposal ($id: ID!) { + jobProposal(id: $id) { + __typename + ... on JobProposal { + id + name + status + remoteUUID + externalJobID + jobID + feedsManager { + ... FeedsManagerParts + } + multiAddrs + pendingUpdate + specs { + id + definition + version + status + statusUpdatedAt + createdAt + updatedAt + } + latestSpec { + id + definition + version + status + statusUpdatedAt + createdAt + updatedAt + } + } + ... on NotFoundError { + message + code + } + } +} +fragment FeedsManagerParts on FeedsManager { + id + name + uri + publicKey + isConnectionActive + createdAt +} +` + +func GetJobProposal( + ctx_ context.Context, + client_ graphql.Client, + id string, +) (*GetJobProposalResponse, error) { + req_ := &graphql.Request{ + OpName: "GetJobProposal", + Query: GetJobProposal_Operation, + Variables: &__GetJobProposalInput{ + Id: id, + }, + } + var err_ error + + var data_ GetJobProposalResponse + resp_ := &graphql.Response{Data: &data_} + + err_ = client_.MakeRequest( + ctx_, + req_, + resp_, + ) + + return &data_, err_ +} + +// The query or mutation executed by ListBridges. +const ListBridges_Operation = ` +query ListBridges ($offset: Int, $limit: Int) { + bridges(offset: $offset, limit: $limit) { + results { + ... BridgeParts + } + metadata { + total + } + } +} +fragment BridgeParts on Bridge { + id + name + url + confirmations + outgoingToken + minimumContractPayment + createdAt +} +` + +func ListBridges( + ctx_ context.Context, + client_ graphql.Client, + offset int, + limit int, +) (*ListBridgesResponse, error) { + req_ := &graphql.Request{ + OpName: "ListBridges", + Query: ListBridges_Operation, + Variables: &__ListBridgesInput{ + Offset: offset, + Limit: limit, + }, + } + var err_ error + + var data_ ListBridgesResponse + resp_ := &graphql.Response{Data: &data_} + + err_ = client_.MakeRequest( + ctx_, + req_, + resp_, + ) + + return &data_, err_ +} + +// The query or mutation executed by ListFeedsManagers. +const ListFeedsManagers_Operation = ` +query ListFeedsManagers { + feedsManagers { + results { + ... FeedsManagerParts + } + } +} +fragment FeedsManagerParts on FeedsManager { + id + name + uri + publicKey + isConnectionActive + createdAt +} +` + +func ListFeedsManagers( + ctx_ context.Context, + client_ graphql.Client, +) (*ListFeedsManagersResponse, error) { + req_ := &graphql.Request{ + OpName: "ListFeedsManagers", + Query: ListFeedsManagers_Operation, + } + var err_ error + + var data_ ListFeedsManagersResponse + resp_ := &graphql.Response{Data: &data_} + + err_ = client_.MakeRequest( + ctx_, + req_, + resp_, + ) + + return &data_, err_ +} + +// The query or mutation executed by ListJobs. +const ListJobs_Operation = ` +query ListJobs ($offset: Int, $limit: Int) { + jobs(offset: $offset, limit: $limit) { + results { + ... JobParts + } + metadata { + total + } + } +} +fragment JobParts on Job { + id + name + schemaVersion + gasLimit + forwardingAllowed + maxTaskDuration + externalJobID + type + spec { + __typename + ... on OCR2Spec { + ... OCR2Spec + } + } + observationSource + errors { + id + description + occurrences + createdAt + updatedAt + } +} +fragment OCR2Spec on OCR2Spec { + blockchainTimeout + contractID + contractConfigConfirmations + contractConfigTrackerPollInterval + createdAt + ocrKeyBundleID + monitoringEndpoint + p2pv2Bootstrappers + relay + relayConfig + transmitterID + pluginType + pluginConfig +} +` + +func ListJobs( + ctx_ context.Context, + client_ graphql.Client, + offset int, + limit int, +) (*ListJobsResponse, error) { + req_ := &graphql.Request{ + OpName: "ListJobs", + Query: ListJobs_Operation, + Variables: &__ListJobsInput{ + Offset: offset, + Limit: limit, + }, + } + var err_ error + + var data_ ListJobsResponse + resp_ := &graphql.Response{Data: &data_} + + err_ = client_.MakeRequest( + ctx_, + req_, + resp_, + ) + + return &data_, err_ +} diff --git a/integration-tests/web/sdk/internal/genqlient.graphql b/integration-tests/web/sdk/internal/genqlient.graphql new file mode 100644 index 00000000000..1f5ee0e8bb0 --- /dev/null +++ b/integration-tests/web/sdk/internal/genqlient.graphql @@ -0,0 +1,208 @@ +##################### +# CSA Keys +##################### + +query GetCSAKeys { + csaKeys { + results { + id + publicKey + version + } + } +} + +##################### +# Jobs and Job Proposals +##################### +fragment OCR2Spec on OCR2Spec { + blockchainTimeout + contractID + contractConfigConfirmations + contractConfigTrackerPollInterval + createdAt + ocrKeyBundleID + monitoringEndpoint + p2pv2Bootstrappers + relay + relayConfig + transmitterID + pluginType + pluginConfig +} + +fragment JobParts on Job { + id + name + schemaVersion + gasLimit + forwardingAllowed + maxTaskDuration + externalJobID + type + spec { + ... on OCR2Spec { + ...OCR2Spec + } + } + observationSource + errors { + id + description + occurrences + createdAt + updatedAt + } +} + +query GetJob($id: ID!) { + job(id: $id) { + ...JobParts + ... on NotFoundError { + message + code + } + } +} + +query ListJobs($offset: Int, $limit: Int) { + jobs(offset: $offset, limit: $limit) { + results { + ...JobParts + } + metadata { + total + } + } +} + +query GetJobProposal($id: ID!) { + jobProposal(id: $id) { + ... on JobProposal { + id + name + status + remoteUUID + externalJobID + jobID + feedsManager { + ...FeedsManagerParts + } + multiAddrs + pendingUpdate + specs { + id + definition + version + status + statusUpdatedAt + createdAt + updatedAt + } + latestSpec { + id + definition + version + status + statusUpdatedAt + createdAt + updatedAt + } + } + ... on NotFoundError { + message + code + } + } +} + +##################### +# Bridges +##################### + +fragment BridgeParts on Bridge { + id + name + url + confirmations + outgoingToken + minimumContractPayment + createdAt +} + +query ListBridges($offset: Int, $limit: Int) { + bridges(offset: $offset, limit: $limit) { + results { + ...BridgeParts + } + metadata { + total + } + } +} + +query GetBridge($id: ID!) { + bridge(id: $id) { + ...BridgeParts + ... on NotFoundError { + message + code + } + } +} + +##################### +# Feeds Manager +##################### + +fragment FeedsManagerParts on FeedsManager { + id + name + uri + publicKey + isConnectionActive + createdAt +} + +query GetFeedsManager($id: ID!) { + feedsManager(id: $id) { + ...FeedsManagerParts + ... on NotFoundError { + message + code + } + } +} + +query ListFeedsManagers { + feedsManagers { + results { + ...FeedsManagerParts + } + } +} + +mutation CreateFeedsManager($input: CreateFeedsManagerInput!) { + createFeedsManager(input: $input) { + ... on CreateFeedsManagerSuccess { + feedsManager { + ...FeedsManagerParts + } + } + ... on SingleFeedsManagerError { + message + code + } + ... on NotFoundError { + message + code + } + ... on InputErrors { + errors { + message + code + path + } + } + } +} diff --git a/integration-tests/web/sdk/internal/schema.graphql b/integration-tests/web/sdk/internal/schema.graphql new file mode 100644 index 00000000000..b3891838de8 --- /dev/null +++ b/integration-tests/web/sdk/internal/schema.graphql @@ -0,0 +1,1186 @@ +scalar Time +scalar Map +scalar Bytes + +schema { + query: Query + mutation: Mutation +} + +type Query { + bridge(id: ID!): BridgePayload! + bridges(offset: Int, limit: Int): BridgesPayload! + chain(id: ID!): ChainPayload! + chains(offset: Int, limit: Int): ChainsPayload! + config: ConfigPayload! + configv2: ConfigV2Payload! + csaKeys: CSAKeysPayload! + ethKeys: EthKeysPayload! + ethTransaction(hash: ID!): EthTransactionPayload! + ethTransactions(offset: Int, limit: Int): EthTransactionsPayload! + ethTransactionsAttempts(offset: Int, limit: Int): EthTransactionAttemptsPayload! + features: FeaturesPayload! + feedsManager(id: ID!): FeedsManagerPayload! + feedsManagers: FeedsManagersPayload! + globalLogLevel: GlobalLogLevelPayload! + job(id: ID!): JobPayload! + jobs(offset: Int, limit: Int): JobsPayload! + jobProposal(id: ID!): JobProposalPayload! + jobRun(id: ID!): JobRunPayload! + jobRuns(offset: Int, limit: Int): JobRunsPayload! + node(id: ID!): NodePayload! + nodes(offset: Int, limit: Int): NodesPayload! + ocrKeyBundles: OCRKeyBundlesPayload! + ocr2KeyBundles: OCR2KeyBundlesPayload! + p2pKeys: P2PKeysPayload! + solanaKeys: SolanaKeysPayload! + sqlLogging: GetSQLLoggingPayload! + vrfKey(id: ID!): VRFKeyPayload! + vrfKeys: VRFKeysPayload! +} + +type Mutation { + approveJobProposalSpec(id: ID!, force: Boolean): ApproveJobProposalSpecPayload! + cancelJobProposalSpec(id: ID!): CancelJobProposalSpecPayload! + createAPIToken(input: CreateAPITokenInput!): CreateAPITokenPayload! + createBridge(input: CreateBridgeInput!): CreateBridgePayload! + createChain(input: CreateChainInput!): CreateChainPayload! + createCSAKey: CreateCSAKeyPayload! + createFeedsManager(input: CreateFeedsManagerInput!): CreateFeedsManagerPayload! + createFeedsManagerChainConfig(input: CreateFeedsManagerChainConfigInput!): CreateFeedsManagerChainConfigPayload! + createJob(input: CreateJobInput!): CreateJobPayload! + createNode(input: CreateNodeInput!): CreateNodePayload! + createOCRKeyBundle: CreateOCRKeyBundlePayload! + createOCR2KeyBundle(chainType: OCR2ChainType!): CreateOCR2KeyBundlePayload! + createP2PKey: CreateP2PKeyPayload! + deleteAPIToken(input: DeleteAPITokenInput!): DeleteAPITokenPayload! + deleteBridge(id: ID!): DeleteBridgePayload! + deleteChain(id: ID!): DeleteChainPayload! + deleteCSAKey(id: ID!): DeleteCSAKeyPayload! + deleteFeedsManagerChainConfig(id: ID!): DeleteFeedsManagerChainConfigPayload! + deleteJob(id: ID!): DeleteJobPayload! + deleteNode(id: ID!): DeleteNodePayload! + deleteOCRKeyBundle(id: ID!): DeleteOCRKeyBundlePayload! + deleteOCR2KeyBundle(id: ID!): DeleteOCR2KeyBundlePayload! + deleteP2PKey(id: ID!): DeleteP2PKeyPayload! + createVRFKey: CreateVRFKeyPayload! + deleteVRFKey(id: ID!): DeleteVRFKeyPayload! + dismissJobError(id: ID!): DismissJobErrorPayload! + rejectJobProposalSpec(id: ID!): RejectJobProposalSpecPayload! + runJob(id: ID!): RunJobPayload! + setGlobalLogLevel(level: LogLevel!): SetGlobalLogLevelPayload! + setSQLLogging(input: SetSQLLoggingInput!): SetSQLLoggingPayload! + updateBridge(id: ID!, input: UpdateBridgeInput!): UpdateBridgePayload! + updateChain(id: ID!, input: UpdateChainInput!): UpdateChainPayload! + updateFeedsManager(id: ID!, input: UpdateFeedsManagerInput!): UpdateFeedsManagerPayload! + updateFeedsManagerChainConfig(id: ID!, input: UpdateFeedsManagerChainConfigInput!): UpdateFeedsManagerChainConfigPayload! + updateJobProposalSpecDefinition(id: ID!, input: UpdateJobProposalSpecDefinitionInput!): UpdateJobProposalSpecDefinitionPayload! + updateUserPassword(input: UpdatePasswordInput!): UpdatePasswordPayload! +} +type APIToken { + accessKey: String! + secret: String! +} + +input CreateAPITokenInput { + password: String! +} + +type CreateAPITokenSuccess { + token: APIToken! +} + +union CreateAPITokenPayload = CreateAPITokenSuccess | InputErrors + +input DeleteAPITokenInput { + password: String! +} + +type DeleteAPITokenResult { + accessKey: String! +} + +type DeleteAPITokenSuccess { + token: DeleteAPITokenResult! +} + +union DeleteAPITokenPayload = DeleteAPITokenSuccess | InputErrors +type Bridge { + id: ID! + name: String! + url: String! + confirmations: Int! + outgoingToken: String! + minimumContractPayment: String! + createdAt: Time! +} + +# BridgePayload defines the response to fetch a single bridge by name +union BridgePayload = Bridge | NotFoundError + +# BridgesPayload defines the response when fetching a page of bridges +type BridgesPayload implements PaginatedPayload { + results: [Bridge!]! + metadata: PaginationMetadata! +} + +# CreateBridgeInput defines the input to create a bridge +input CreateBridgeInput { + name: String! + url: String! + confirmations: Int! + minimumContractPayment: String! +} + +# CreateBridgeSuccess defines the success response when creating a bridge +type CreateBridgeSuccess { + bridge: Bridge! + incomingToken: String! +} + +# CreateBridgeInput defines the response when creating a bridge +union CreateBridgePayload = CreateBridgeSuccess + +# UpdateBridgeInput defines the input to update a bridge +input UpdateBridgeInput { + name: String! + url: String! + confirmations: Int! + minimumContractPayment: String! +} + +# UpdateBridgeSuccess defines the success response when updating a bridge +type UpdateBridgeSuccess { + bridge: Bridge! +} + +# CreateBridgeInput defines the response when updating a bridge +union UpdateBridgePayload = UpdateBridgeSuccess | NotFoundError + +type DeleteBridgeSuccess { + bridge: Bridge! +} + +type DeleteBridgeInvalidNameError implements Error { + code: ErrorCode! + message: String! +} + +type DeleteBridgeConflictError implements Error { + code: ErrorCode! + message: String! +} + +union DeleteBridgePayload = DeleteBridgeSuccess + | DeleteBridgeInvalidNameError + | DeleteBridgeConflictError + | NotFoundError +type Chain { + id: ID! + enabled: Boolean! + config: ChainConfig! + nodes: [Node!]! + createdAt: Time! + updatedAt: Time! +} + +union ChainPayload = Chain | NotFoundError + +type ChainsPayload implements PaginatedPayload { + results: [Chain!]! + metadata: PaginationMetadata! +} + +input CreateChainInput { + id: ID! + config: ChainConfigInput! + keySpecificConfigs: [KeySpecificChainConfigInput]! +} + +type CreateChainSuccess { + chain: Chain! +} + +union CreateChainPayload = CreateChainSuccess | InputErrors + +input UpdateChainInput { + enabled: Boolean! + config: ChainConfigInput! + keySpecificConfigs: [KeySpecificChainConfigInput]! +} + +type UpdateChainSuccess { + chain: Chain! +} + +union UpdateChainPayload = UpdateChainSuccess | NotFoundError | InputErrors + +type DeleteChainSuccess { + chain: Chain! +} + +union DeleteChainPayload = DeleteChainSuccess | NotFoundError +enum GasEstimatorMode { + BLOCK_HISTORY + FIXED_PRICE + OPTIMISM + OPTIMISM2 +} + +enum ChainType { + ARBITRUM + EXCHAIN + OPTIMISM + XDAI +} + +interface GeneralChainConfig { + blockHistoryEstimatorBlockDelay: Int + blockHistoryEstimatorBlockHistorySize: Int + ethTxReaperThreshold: String + ethTxResendAfterThreshold: String + evmEIP1559DynamicFees: Boolean + evmFinalityDepth: Int + evmGasBumpPercent: Int + evmGasBumpTxDepth: Int + evmGasBumpWei: String + evmGasLimitDefault: Int + evmGasLimitMultiplier: Float + evmGasLimitOCRJobType: Int + evmGasLimitDRJobType: Int + evmGasLimitVRFJobType: Int + evmGasLimitFMJobType: Int + evmGasLimitKeeperJobType: Int + evmGasPriceDefault: String + evmGasTipCapDefault: String + evmGasTipCapMinimum: String + evmHeadTrackerHistoryDepth: Int + evmHeadTrackerMaxBufferSize: Int + evmHeadTrackerSamplingInterval: String + evmLogBackfillBatchSize: Int + evmMaxGasPriceWei: String + evmNonceAutoSync: Boolean + evmRPCDefaultBatchSize: Int + flagsContractAddress: String + gasEstimatorMode: GasEstimatorMode + chainType: ChainType + minIncomingConfirmations: Int + minimumContractPayment: String + ocrObservationTimeout: String + linkContractAddress: String +} + +type ChainConfig implements GeneralChainConfig { + blockHistoryEstimatorBlockDelay: Int + blockHistoryEstimatorBlockHistorySize: Int + ethTxReaperThreshold: String + ethTxResendAfterThreshold: String + evmEIP1559DynamicFees: Boolean + evmFinalityDepth: Int + evmGasBumpPercent: Int + evmGasBumpTxDepth: Int + evmGasBumpWei: String + evmGasLimitDefault: Int + evmGasLimitMultiplier: Float + evmGasLimitOCRJobType: Int + evmGasLimitDRJobType: Int + evmGasLimitVRFJobType: Int + evmGasLimitFMJobType: Int + evmGasLimitKeeperJobType: Int + evmGasPriceDefault: String + evmGasTipCapDefault: String + evmGasTipCapMinimum: String + evmHeadTrackerHistoryDepth: Int + evmHeadTrackerMaxBufferSize: Int + evmHeadTrackerSamplingInterval: String + evmLogBackfillBatchSize: Int + evmMaxGasPriceWei: String + evmNonceAutoSync: Boolean + evmRPCDefaultBatchSize: Int + flagsContractAddress: String + gasEstimatorMode: GasEstimatorMode + chainType: ChainType + minIncomingConfirmations: Int + minimumContractPayment: String + ocrObservationTimeout: String + linkContractAddress: String + keySpecificConfigs: [KeySpecificChainConfig]! +} + +type KeySpecificChainConfig { + address: String! + config: ChainConfig! +} + +input ChainConfigInput { + blockHistoryEstimatorBlockDelay: Int + blockHistoryEstimatorBlockHistorySize: Int + ethTxReaperThreshold: String + ethTxResendAfterThreshold: String + evmEIP1559DynamicFees: Boolean + evmFinalityDepth: Int + evmGasBumpPercent: Int + evmGasBumpTxDepth: Int + evmGasBumpWei: String + evmGasLimitDefault: Int + evmGasLimitMultiplier: Float + evmGasLimitOCRJobType: Int + evmGasLimitDRJobType: Int + evmGasLimitVRFJobType: Int + evmGasLimitFMJobType: Int + evmGasLimitKeeperJobType: Int + evmGasPriceDefault: String + evmGasTipCapDefault: String + evmGasTipCapMinimum: String + evmHeadTrackerHistoryDepth: Int + evmHeadTrackerMaxBufferSize: Int + evmHeadTrackerSamplingInterval: String + evmLogBackfillBatchSize: Int + evmMaxGasPriceWei: String + evmNonceAutoSync: Boolean + evmRPCDefaultBatchSize: Int + flagsContractAddress: String + gasEstimatorMode: GasEstimatorMode + chainType: ChainType + minIncomingConfirmations: Int + minimumContractPayment: String + ocrObservationTimeout: String + linkContractAddress: String +} + +input KeySpecificChainConfigInput { + address: String! + config: ChainConfigInput! +} +scalar ConfigItemValue + +type ConfigItem { + key: String! + value: ConfigItemValue! +} + +type ConfigPayload { + items: [ConfigItem!]! +} +type ConfigV2Payload { + user: String! + effective: String! +} +type CSAKey { + id: ID! + publicKey: String! + version: Int! +} + +type CSAKeysPayload { + results: [CSAKey!]! +} + +type CreateCSAKeySuccess { + csaKey: CSAKey! +} + +type CSAKeyExistsError implements Error { + message: String! + code: ErrorCode! +} + +union CreateCSAKeyPayload = CreateCSAKeySuccess | CSAKeyExistsError + +type DeleteCSAKeySuccess { + csaKey: CSAKey! +} + +union DeleteCSAKeyPayload = DeleteCSAKeySuccess | NotFoundError +enum ErrorCode { + NOT_FOUND + INVALID_INPUT + UNPROCESSABLE +} + +interface Error { + message: String! + code: ErrorCode! +} + +type NotFoundError implements Error { + message: String! + code: ErrorCode! +} + +type InputError implements Error { + message: String! + code: ErrorCode! + path: String! + } + +type InputErrors { + errors: [InputError!]! +} +type EthKey { + address: String! + isDisabled: Boolean! + createdAt: Time! + updatedAt: Time! + chain: Chain! + ethBalance: String + linkBalance: String + maxGasPriceWei: String +} + +type EthKeysPayload { + results: [EthKey!]! +} +type EthTransaction { + state: String! + data: Bytes! + from: String! + to: String! + gasLimit: String! + value: String! + evmChainID: ID! + nonce: String + gasPrice: String! + hash: String! + hex: String! + sentAt: String + chain: Chain! + attempts: [EthTransactionAttempt!]! +} + +union EthTransactionPayload = EthTransaction | NotFoundError + +type EthTransactionsPayload implements PaginatedPayload { + results: [EthTransaction!]! + metadata: PaginationMetadata! +} +type EthTransactionAttempt { + gasPrice: String! + hash: String! + hex: String! + sentAt: String +} + +type EthTransactionAttemptsPayload implements PaginatedPayload { + results: [EthTransactionAttempt!]! + metadata: PaginationMetadata! +} +type Features { + csa: Boolean! + feedsManager: Boolean! +} + +# FeaturesPayload defines the response of fetching the features availability in the UI +union FeaturesPayload = Features +enum JobType { + FLUX_MONITOR + OCR + OCR2 +} + +type FeedsManager { + id: ID! + name: String! + uri: String! + publicKey: String! + jobProposals: [JobProposal!]! + isConnectionActive: Boolean! + createdAt: Time! + chainConfigs: [FeedsManagerChainConfig!]! +} + +type FeedsManagerChainConfig { + id: ID! + chainID: String! + chainType: String! + accountAddr: String! + adminAddr: String! + fluxMonitorJobConfig: FluxMonitorJobConfig! + ocr1JobConfig: OCR1JobConfig! + ocr2JobConfig: OCR2JobConfig! +} + +type FluxMonitorJobConfig { + enabled: Boolean! +} + +type OCR1JobConfig { + enabled: Boolean! + isBootstrap: Boolean! + multiaddr: String + p2pPeerID: String + keyBundleID: String +} + +type OCR2JobConfig { + enabled: Boolean! + isBootstrap: Boolean! + multiaddr: String + p2pPeerID: String + keyBundleID: String +} + +# FeedsManagerPayload defines the response to fetch a single feeds manager by id +union FeedsManagerPayload = FeedsManager | NotFoundError + +# FeedsManagersPayload defines the response when fetching feeds managers +type FeedsManagersPayload { + results: [FeedsManager!]! +} + +input CreateFeedsManagerInput { + name: String! + uri: String! + publicKey: String! +} + +# CreateFeedsManagerSuccess defines the success response when creating a feeds +# manager +type CreateFeedsManagerSuccess { + feedsManager: FeedsManager! +} + +type SingleFeedsManagerError implements Error { + message: String! + code: ErrorCode! +} + +# CreateFeedsManagerPayload defines the response when creating a feeds manager +union CreateFeedsManagerPayload = CreateFeedsManagerSuccess + | SingleFeedsManagerError + | NotFoundError + | InputErrors + +input UpdateFeedsManagerInput { + name: String! + uri: String! + publicKey: String! +} + +# UpdateFeedsManagerSuccess defines the success response when updating a feeds +# manager +type UpdateFeedsManagerSuccess { + feedsManager: FeedsManager! +} + +# UpdateFeedsManagerPayload defines the response when updating a feeds manager +union UpdateFeedsManagerPayload = UpdateFeedsManagerSuccess + | NotFoundError + | InputErrors + +input CreateFeedsManagerChainConfigInput { + feedsManagerID: ID! + chainID: String! + chainType: String! + accountAddr: String! + adminAddr: String! + fluxMonitorEnabled: Boolean! + ocr1Enabled: Boolean! + ocr1IsBootstrap: Boolean + ocr1Multiaddr: String + ocr1P2PPeerID: String + ocr1KeyBundleID: String + ocr2Enabled: Boolean! + ocr2IsBootstrap: Boolean + ocr2Multiaddr: String + ocr2P2PPeerID: String + ocr2KeyBundleID: String +} + +# CreateFeedsManagerChainConfigSuccess defines the success response when +# creating a chain config for a feeds manager. +type CreateFeedsManagerChainConfigSuccess { + chainConfig: FeedsManagerChainConfig! +} + +# CreateFeedsManagerChainConfigPayload defines the response when creating a +# feeds manager chain config. +union CreateFeedsManagerChainConfigPayload = CreateFeedsManagerChainConfigSuccess + | NotFoundError + | InputErrors + +# DeleteFeedsManagerChainConfigSuccess defines the success response when +# deleting a chain config for a feeds manager. +type DeleteFeedsManagerChainConfigSuccess { + chainConfig: FeedsManagerChainConfig! +} + +# DeleteFeedsManagerChainConfigPayload defines the response when creating a +# feeds manager chain config. +union DeleteFeedsManagerChainConfigPayload = DeleteFeedsManagerChainConfigSuccess + | NotFoundError + +input UpdateFeedsManagerChainConfigInput { + accountAddr: String! + adminAddr: String! + fluxMonitorEnabled: Boolean! + ocr1Enabled: Boolean! + ocr1IsBootstrap: Boolean + ocr1Multiaddr: String + ocr1P2PPeerID: String + ocr1KeyBundleID: String + ocr2Enabled: Boolean! + ocr2IsBootstrap: Boolean + ocr2Multiaddr: String + ocr2P2PPeerID: String + ocr2KeyBundleID: String +} + +# UpdateFeedsManagerChainConfigSuccess defines the success response when +# updating a chain config for a feeds manager. +type UpdateFeedsManagerChainConfigSuccess { + chainConfig: FeedsManagerChainConfig! +} + +# UpdateFeedsManagerChainConfigPayload defines the response when updating a +# feeds manager chain config. +union UpdateFeedsManagerChainConfigPayload = UpdateFeedsManagerChainConfigSuccess + | NotFoundError + | InputErrors +type Job { + id: ID! + name: String! + schemaVersion: Int! + gasLimit: Int + forwardingAllowed: Boolean + maxTaskDuration: String! + externalJobID: String! + type: String! + spec: JobSpec! + runs(offset: Int, limit: Int): JobRunsPayload! + observationSource: String! + errors: [JobError!]! + createdAt: Time! +} + +# JobsPayload defines the response when fetching a page of jobs +type JobsPayload implements PaginatedPayload { + results: [Job!]! + metadata: PaginationMetadata! +} + +# JobPayload defines the response when a job +union JobPayload = Job | NotFoundError + +input CreateJobInput { + TOML: String! +} + +type CreateJobSuccess { + job: Job! +} + +union CreateJobPayload = CreateJobSuccess | InputErrors + +type DeleteJobSuccess { + job: Job! +} + +union DeleteJobPayload = DeleteJobSuccess | NotFoundError +type JobError { + id: ID! + description: String! + occurrences: Int! + createdAt: Time! + updatedAt: Time! +} + +type DismissJobErrorSuccess { + jobError: JobError! +} + +union DismissJobErrorPayload = DismissJobErrorSuccess | NotFoundError +enum JobProposalStatus { + PENDING + APPROVED + REJECTED + CANCELLED +} + +type JobProposal { + id: ID! + name: String + status: JobProposalStatus! + remoteUUID: String! + externalJobID: String + jobID: String + feedsManager: FeedsManager! + multiAddrs: [String!]! + pendingUpdate: Boolean! + specs: [JobProposalSpec!]! + latestSpec: JobProposalSpec! +} + +union JobProposalPayload = JobProposal | NotFoundError +enum SpecStatus { + UNKNOWN + PENDING + APPROVED + REJECTED + CANCELLED +} + +type JobProposalSpec { + id: ID! + definition: String! + version: Int! + status: SpecStatus! + statusUpdatedAt: Time! + createdAt: Time! + updatedAt: Time! +} + +type JobAlreadyExistsError implements Error { + message: String! + code: ErrorCode! +} + + +# ApproveJobProposalSpec + +type ApproveJobProposalSpecSuccess { + spec: JobProposalSpec! +} + +union ApproveJobProposalSpecPayload = ApproveJobProposalSpecSuccess | NotFoundError | JobAlreadyExistsError + +# CancelJobProposalSpec + +type CancelJobProposalSpecSuccess { + spec: JobProposalSpec! +} + +union CancelJobProposalSpecPayload = CancelJobProposalSpecSuccess | NotFoundError + + +# RejectJobProposalSpec + +type RejectJobProposalSpecSuccess { + spec: JobProposalSpec! +} + +union RejectJobProposalSpecPayload = RejectJobProposalSpecSuccess | NotFoundError + +# UpdateJobProposalSpec + +input UpdateJobProposalSpecDefinitionInput { + definition: String! +} + +type UpdateJobProposalSpecDefinitionSuccess { + spec: JobProposalSpec! +} + +union UpdateJobProposalSpecDefinitionPayload = UpdateJobProposalSpecDefinitionSuccess | NotFoundError +enum JobRunStatus { + UNKNOWN + RUNNING + SUSPENDED + ERRORED + COMPLETED +} + +type JobRun { + id: ID! + outputs: [String]! + allErrors: [String!]! + fatalErrors: [String!]! + inputs: String! + createdAt: Time! + finishedAt: Time + taskRuns: [TaskRun!]! + status: JobRunStatus! + job: Job! +} + +# JobRunsPayload defines the response when fetching a page of runs +type JobRunsPayload implements PaginatedPayload { + results: [JobRun!]! + metadata: PaginationMetadata! +} + +union JobRunPayload = JobRun | NotFoundError + +type RunJobSuccess { + jobRun: JobRun! +} + +type RunJobCannotRunError implements Error { + message: String! + code: ErrorCode! +} + +union RunJobPayload = RunJobSuccess | NotFoundError | RunJobCannotRunError +enum LogLevel { + DEBUG + INFO + WARN + ERROR +} + +type GlobalLogLevel { + level: LogLevel! +} + +union GlobalLogLevelPayload = GlobalLogLevel + +type LogLevelConfig { + keeper: LogLevel + headTracker: LogLevel + fluxMonitor: LogLevel +} + +input LogLevelConfigInput { + keeper: LogLevel + headTracker: LogLevel + fluxMonitor: LogLevel +} + +input SetServicesLogLevelsInput { + config: LogLevelConfigInput! +} + +type SetServicesLogLevelsSuccess { + config: LogLevelConfig! +} + +union SetServicesLogLevelsPayload = SetServicesLogLevelsSuccess | InputErrors + +type SQLLogging { + enabled: Boolean! +} + +input SetSQLLoggingInput { + enabled: Boolean! +} + +type SetSQLLoggingSuccess { + sqlLogging: SQLLogging! +} + +union SetSQLLoggingPayload = SetSQLLoggingSuccess + +union GetSQLLoggingPayload = SQLLogging + +type SetGlobalLogLevelSuccess { + globalLogLevel: GlobalLogLevel! +} + +union SetGlobalLogLevelPayload = SetGlobalLogLevelSuccess | InputErrors +type Node { + id: ID! + name: String! + wsURL: String! + httpURL: String! + chain: Chain! + createdAt: Time! + updatedAt: Time! + state: String! + sendOnly: Boolean! +} + +union NodePayload = Node | NotFoundError + +type NodesPayload implements PaginatedPayload { + results: [Node!]! + metadata: PaginationMetadata! +} + +input CreateNodeInput { + name: String! + evmChainID: Int! + wsURL: String! + httpURL: String! + sendOnly: Boolean! +} + +type CreateNodeSuccess { + node: Node! +} + +union CreateNodePayload = CreateNodeSuccess + +type DeleteNodeSuccess { + node: Node! +} + +union DeleteNodePayload = DeleteNodeSuccess | NotFoundError +type OCRKeyBundle { + id: ID! + configPublicKey: String! + offChainPublicKey: String! + onChainSigningAddress: String! +} + +type OCRKeyBundlesPayload { + results: [OCRKeyBundle!]! +} + +type CreateOCRKeyBundleSuccess { + bundle: OCRKeyBundle! +} + +union CreateOCRKeyBundlePayload = CreateOCRKeyBundleSuccess + +type DeleteOCRKeyBundleSuccess { + bundle: OCRKeyBundle! +} + +union DeleteOCRKeyBundlePayload = DeleteOCRKeyBundleSuccess | NotFoundError +enum OCR2ChainType { + EVM + TERRA + SOLANA +} + + +type OCR2KeyBundle { + id: ID! + chainType: OCR2ChainType + configPublicKey: String! + onChainPublicKey: String! + offChainPublicKey: String! +} + +type OCR2KeyBundlesPayload { + results: [OCR2KeyBundle!]! +} + +type CreateOCR2KeyBundleSuccess { + bundle: OCR2KeyBundle! +} + +union CreateOCR2KeyBundlePayload = CreateOCR2KeyBundleSuccess + +type DeleteOCR2KeyBundleSuccess { + bundle: OCR2KeyBundle! +} + +union DeleteOCR2KeyBundlePayload = DeleteOCR2KeyBundleSuccess | NotFoundError +type P2PKey { + id: ID! + peerID: String! + publicKey: String! +} + +type P2PKeysPayload { + results: [P2PKey!]! +} + +type CreateP2PKeySuccess { + p2pKey: P2PKey! +} + +union CreateP2PKeyPayload = CreateP2PKeySuccess + + +type DeleteP2PKeySuccess { + p2pKey: P2PKey! +} + +union DeleteP2PKeyPayload = DeleteP2PKeySuccess | NotFoundError +type PaginationMetadata { + total: Int! +} + +interface PaginatedPayload { + metadata: PaginationMetadata! +} +type SolanaKey { + id: ID! +} + +type SolanaKeysPayload { + results: [SolanaKey!]! +} +union JobSpec = + CronSpec | + DirectRequestSpec | + KeeperSpec | + FluxMonitorSpec | + OCRSpec | + OCR2Spec | + VRFSpec | + WebhookSpec | + BlockhashStoreSpec | + BootstrapSpec + +type CronSpec { + schedule: String! + createdAt: Time! +} + +type DirectRequestSpec { + contractAddress: String! + createdAt: Time! + evmChainID: String + minIncomingConfirmations: Int! + minIncomingConfirmationsEnv: Boolean! + minContractPaymentLinkJuels: String! + requesters: [String!] +} + +type FluxMonitorSpec { + absoluteThreshold: Float! + contractAddress: String! + createdAt: Time! + drumbeatEnabled: Boolean! + drumbeatRandomDelay: String + drumbeatSchedule: String + evmChainID: String + idleTimerDisabled: Boolean! + idleTimerPeriod: String! + minPayment: String + pollTimerDisabled: Boolean! + pollTimerPeriod: String! + threshold: Float! +} + +type KeeperSpec { + contractAddress: String! + createdAt: Time! + evmChainID: String + fromAddress: String +} + +type OCRSpec { + blockchainTimeout: String + blockchainTimeoutEnv: Boolean! + contractAddress: String! + contractConfigConfirmations: Int + contractConfigConfirmationsEnv: Boolean! + contractConfigTrackerPollInterval: String + contractConfigTrackerPollIntervalEnv: Boolean! + contractConfigTrackerSubscribeInterval: String + contractConfigTrackerSubscribeIntervalEnv: Boolean! + createdAt: Time! + evmChainID: String + isBootstrapPeer: Boolean! + keyBundleID: String + observationTimeout: String + observationTimeoutEnv: Boolean! + p2pBootstrapPeers: [String!] + p2pv2Bootstrappers: [String!] + transmitterAddress: String + databaseTimeout: String! + databaseTimeoutEnv: Boolean! + observationGracePeriod: String! + observationGracePeriodEnv: Boolean! + contractTransmitterTransmitTimeout: String! + contractTransmitterTransmitTimeoutEnv: Boolean! +} + +type OCR2Spec { + blockchainTimeout: String + contractID: String! + contractConfigConfirmations: Int + contractConfigTrackerPollInterval: String + createdAt: Time! + ocrKeyBundleID: String + monitoringEndpoint: String + p2pv2Bootstrappers: [String!] + relay: String! + relayConfig: Map! + transmitterID: String + pluginType: String! + pluginConfig: Map! +} + +type VRFSpec { + coordinatorAddress: String! + createdAt: Time! + evmChainID: String + fromAddresses: [String!] + minIncomingConfirmations: Int! + minIncomingConfirmationsEnv: Boolean! + pollPeriod: String! + publicKey: String! + requestedConfsDelay: Int! + requestTimeout: String! + batchCoordinatorAddress: String + batchFulfillmentEnabled: Boolean! + batchFulfillmentGasMultiplier: Float! + chunkSize: Int! + backoffInitialDelay: String! + backoffMaxDelay: String! + gasLanePrice: String +} + +type WebhookSpec { + createdAt: Time! +} + +type BlockhashStoreSpec { + coordinatorV1Address: String + coordinatorV2Address: String + waitBlocks: Int! + lookbackBlocks: Int! + blockhashStoreAddress: String! + pollPeriod: String! + runTimeout: String! + evmChainID: String + fromAddresses: [String!] + createdAt: Time! +} + +type BootstrapSpec { + id: ID! + contractID: String! + relay: String! + relayConfig: Map! + monitoringEndpoint: String + blockchainTimeout: String + contractConfigTrackerPollInterval: String + contractConfigConfirmations: Int + createdAt: Time! +} +type TaskRun { + id: ID! + dotID: String! + type: String! + output: String! + error: String + createdAt: Time! + finishedAt: Time +} +type User { + email: String! + createdAt: Time! +} + +input UpdatePasswordInput { + oldPassword: String! + newPassword: String! +} + +type UpdatePasswordSuccess { + user: User! +} + +union UpdatePasswordPayload = UpdatePasswordSuccess | InputErrors +type VRFKey { + id: ID! + compressed: String! + uncompressed: String! + hash: String! +} + +type VRFKeySuccess { + key: VRFKey! +} + +union VRFKeyPayload = VRFKeySuccess | NotFoundError + +type VRFKeysPayload { + results: [VRFKey!]! +} + +type CreateVRFKeyPayload { + key: VRFKey! +} + +type DeleteVRFKeySuccess { + key: VRFKey! +} + +union DeleteVRFKeyPayload = DeleteVRFKeySuccess | NotFoundError diff --git a/integration-tests/web/sdk/main.go b/integration-tests/web/sdk/main.go new file mode 100644 index 00000000000..4ffde13a468 --- /dev/null +++ b/integration-tests/web/sdk/main.go @@ -0,0 +1,21 @@ +package main + +import ( + "fmt" + "os" + + "github.com/Khan/genqlient/generate" + + "github.com/smartcontractkit/chainlink/core/web/schema" +) + +func main() { + schema := schema.MustGetRootSchema() + + if err := os.WriteFile("./internal/schema.graphql", []byte(schema), 0600); err != nil { + fmt.Println(err) + os.Exit(1) + } + + generate.Main() +}