Documentation
¶
Overview ¶
Copyright 2025 SGNL.ai, Inc.
Copyright 2025 SGNL.ai, Inc.
Copyright 2025 SGNL.ai, Inc.
Copyright 2025 SGNL.ai, Inc.
Copyright 2025 SGNL.ai, Inc.
Copyright 2025 SGNL.ai, Inc.
Index ¶
- func ConstructEndpoint(request *Request) string
- func NewAdapter(client Client) framework.Adapter[Config]
- type Adapter
- func (a *Adapter) GetPage(ctx context.Context, request *framework.Request[Config]) framework.Response
- func (a *Adapter) RequestPageFromDatasource(ctx context.Context, request *framework.Request[Config]) framework.Response
- func (a *Adapter) ValidateGetPageRequest(ctx context.Context, request *framework.Request[Config]) *framework.Error
- type Client
- type Config
- type Datasource
- type DatasourceErrorResponse
- type DatasourceResponse
- type Request
- type Response
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ConstructEndpoint ¶
ConstructEndpoint constructs the endpoint URL for the given request.
Types ¶
type Adapter ¶
type Adapter struct {
RootlyClient Client
}
Adapter implements the framework.Adapter interface to query pages of objects from datasources.
func (*Adapter) GetPage ¶
func (a *Adapter) GetPage(ctx context.Context, request *framework.Request[Config]) framework.Response
GetPage is called by SGNL's ingestion service to query a page of objects from a datasource.
type Client ¶
type Client interface {
GetPage(ctx context.Context, request *Request) (*Response, *framework.Error)
}
Client is a client that allows querying the Rootly datasource which contains JSON objects.
type Config ¶
type Config struct {
// Common configuration
*config.CommonConfig
// APIVersion is the Rootly API version to use for requests.
APIVersion string `json:"apiVersion,omitempty"`
// Filters contains a map of filters for each entity associated with this
// datasource. The key is the entity's external_name, and the value is the filter string.
Filters map[string]string `json:"filters,omitempty"`
}
Config is the configuration passed in each GetPage calls to the adapter. Adapter configuration example: nolint: godot
{
"requestTimeoutSeconds": 10,
"apiVersion": "v1",
"filters": {
"users": "email=rufus_raynor@hegmann.test",
"incidents": "status=started&severity=high"
}
}
type Datasource ¶
Datasource directly implements a Client interface to allow querying an external datasource.
type DatasourceErrorResponse ¶
type DatasourceResponse ¶
type Request ¶
type Request struct {
// BaseURL is the Base URL of the datasource to query.
BaseURL string
// HTTPAuthorization is the HTTP authorization header value to authenticate a request.
// This will be provided in the form "Bearer <token>".
HTTPAuthorization string
// PageSize is the maximum number of objects to return from the entity.
PageSize int64
// EntityExternalID is the external ID of the entity.
// The external ID should match the API's resource name.
EntityExternalID string
// Cursor identifies the first object of the page to return, as returned by
// the last request for the entity.
// nil in the request for the first page.
Cursor *string
// Filter contains the optional filter to apply to the current request.
Filter string
// RequestTimeoutSeconds is the timeout duration for requests made to datasources.
// This should be set to the number of seconds to wait before timing out.
RequestTimeoutSeconds int
}
Request is a request to Rootly.
type Response ¶
type Response struct {
// Objects contains the list of objects returned by the datasource.
Objects []map[string]any
// NextCursor identifies the first object of the next page to return.
// nil if the current page is the last page for the entity.
NextCursor *string
}
Response is a response returned by the datasource.