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 ¶
- Constants
- Variables
- func ConstructEndpoint(request *Request) (string, *framework.Error)
- func NewAdapter(client Client) framework.Adapter[Config]
- func ParseResponse(body []byte) (objects []map[string]any, err *framework.Error)
- 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 DatasourceResponse
- type Request
- type Response
Constants ¶
const ( Users string = "User" Groups string = "Group" GroupMembers string = "GroupMember" )
Variables ¶
var ( // ValidEntityExternalIDs is a set of valid external IDs of entities that can be queried. ValidEntityExternalIDs = map[string]struct{}{ Users: {}, Groups: {}, GroupMembers: {}, } )
Functions ¶
func ConstructEndpoint ¶
ConstructEndpoint constructs and returns the endpoint to query the datasource.
func NewAdapter ¶
NewAdapter instantiates a new Adapter.
Types ¶
type Adapter ¶
type Adapter struct {
OktaClient 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 Okta datasource which contains JSON objects.
type Config ¶
type Config struct {
*config.CommonConfig
APIVersion string `json:"apiVersion,omitempty"`
Filters map[string]string `json:"filters,omitempty"`
Search map[string]string `json:"search,omitempty"`
}
Config is the configuration passed in each GetPage calls to the adapter. Adapter configuration example: nolint: godot
{
"requestTimeoutSeconds": 10,
"localTimeZoneOffset": 43200,
"apiVersion": "v1",
"filters": {
"User": "status eq \"ACTIVE\"",
"Group": "type eq \"OKTA_GROUP\""
},
"search": {
"User": "profile.department eq \"Engineering\""
}
}
type Datasource ¶
Datasource directly implements a Client interface to allow querying an external datasource.
type DatasourceResponse ¶
type Request ¶
type Request struct {
// BaseURL is the Base URL of the datasource to query.
BaseURL string
// Token is the API token to authenticate a request. Okta supports both API tokens and OAuth2 Client Credential
// auth, so this may either be in the form "SSWS XXXX" (for API tokens) or "Bearer eyJhbG[...]1LQ" (for OAuth2).
Token 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 *pagination.CompositeCursor[string]
// APIVersion the API version to use.
APIVersion string
// Filter is the Okta Filter syntax to apply to requests for Users and/or Groups
Filter string
// Search is the Okta Search syntax to apply to requests for Users and/or Groups
Search 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 Okta.
type Response ¶
type Response struct {
// StatusCode is an HTTP status code.
StatusCode int
// RetryAfterHeader is the Retry-After response HTTP header, if set.
RetryAfterHeader string
// Objects is the list of
// May be empty.
Objects []map[string]any
// NextCursor is the cursor that identifies the first object of the next page.
// nil if this is the last page in this full sync.
NextCursor *pagination.CompositeCursor[string]
}
Response is a response returned by the datasource.