opslevel

package module
v2022.12.16 Latest Latest
Warning

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

Go to latest
Published: Dec 16, 2022 License: MIT Imports: 18 Imported by: 1

README

Overall

opslevel-go

Package opslevel provides an OpsLevel API client implementation.

NOTE: this library is still a WIP and does not match the API 100% yet

Installation

opslevel requires Go version 1.8 or later.

go get -u github.com/opslevel/opslevel-go

Usage

Construct a client, specifying the API token. Then, you can use it to make GraphQL queries and mutations.

client := opslevel.NewClient("XXX_API_TOKEN_XXX")
// Use client...

You can validate the client can successfully talk to the OpsLevel API.

client := opslevel.NewClient("XXX_API_TOKEN_XXX")
if err := client.Validate(); err != nil {
	panic(err)
}

Every resource (IE: service, lifecycle, tier, etc) in OpsLevel API has a corresponding data structure in go as well as the graphql query & mutation inputs. Additionally there is also some helper functions that use native go types like string and []string to make it easier to work with. The following are a handful of examples:

Find a service given an alias and print the owning team name:

foundService, foundServiceErr := client.GetServiceWithAlias("MyCoolService")
if foundServiceErr != nil {

	panic(foundServiceErr)
}
fmt.Println(foundService.Owner.Name)

Create a new service in OpsLevel and print the ID:

serviceCreateInput := opslevel.ServiceCreateInput{
	Name:        "MyCoolService",
	Product:     "MyProduct",
	Description: "The Coolest Service",
	Language:    "go",
}
newService, newServiceErr := client.CreateService(serviceCreateInput)
if newServiceErr != nil {
	panic(newServiceErr)
}
fmt.Println(newService.Id)

Assign the tag {"hello": "world"} to our newly created service and print all the tags currently on it:

allTagsOnThisService, err := client.AssignTagForId(newService.Id, "Hello", "World")
for tagKey, tagValue := range allTagsOnThisService {
	fmt.Printf("Tag '{%s : %s}'", tagKey, tagValue)
}

List all the tags for a service:

tags, tagsErr := client.GetTagsForServiceWithAlias("MyCoolService")
for _, tag := range tags {
	fmt.Printf("Tag '{%s : %s}'\n", tag.Key, tag.Value)
}
// OR
service, serviceErr := client.GetServiceWithAlias("MyCoolService")
tags, tagsErr := client.GetTagsForService(service.Id)
for _, tag := range tags {
	fmt.Printf("Tag '{%s : %s}'\n", tag.Key, tag.Value)
}

Build a lookup table of teams:

func GetTeams(client *opslevel.Client) (map[string]opslevel.Team, error) {
	teams := make(map[string]opslevel.Team)
	data, dataErr := client.ListTeams()
	if dataErr != nil {
		return teams, dataErr
	}
	for _, team := range data {
		teams[string(team.Alias)] = team
	}
	return teams, nil
}

Advanced Usage

The client also exposes functions Query and Mutate for doing custom query or mutations. We are running ontop of this go graphql library so you can read up on how to define go structures that represent a query or mutation there but examples of each can be found here.

Documentation

Overview

Package opslevel provides an OpsLevel API client implementation.

see README for more details.

Index

Constants

This section is empty.

Variables

View Source
var Cache = &Cacher{
	mutex:        sync.Mutex{},
	Tiers:        make(map[string]Tier),
	Lifecycles:   make(map[string]Lifecycle),
	Teams:        make(map[string]Team),
	Categories:   make(map[string]Category),
	Levels:       make(map[string]Level),
	Filters:      make(map[string]Filter),
	Integrations: make(map[string]Integration),
	Repositories: make(map[string]Repository),
}

Functions

func AllAlertSourceTypeEnum

func AllAlertSourceTypeEnum() []string

All AlertSourceTypeEnum as []string

func AllAliasOwnerTypeEnum

func AllAliasOwnerTypeEnum() []string

All AliasOwnerTypeEnum as []string

func AllApiDocumentSourceEnum added in v2022.8.1

func AllApiDocumentSourceEnum() []string

All ApiDocumentSourceEnum as []string

func AllCheckStatus

func AllCheckStatus() []string

All CheckStatus as []string

func AllCheckType

func AllCheckType() []string

All CheckType as []string

func AllConnectiveEnum

func AllConnectiveEnum() []string

All ConnectiveEnum as []string

func AllContactType

func AllContactType() []string

All ContactType as []string

func AllFrequencyTimeScale

func AllFrequencyTimeScale() []string

All FrequencyTimeScale as []string

func AllHasDocumentationSubtypeEnum added in v2022.8.25

func AllHasDocumentationSubtypeEnum() []string

All HasDocumentationSubtypeEnum as []string

func AllHasDocumentationTypeEnum added in v2022.8.25

func AllHasDocumentationTypeEnum() []string

All HasDocumentationTypeEnum as []string

func AllPredicateKeyEnum

func AllPredicateKeyEnum() []string

All PredicateKeyEnum as []string

func AllPredicateTypeEnum

func AllPredicateTypeEnum() []string

All PredicateTypeEnum as []string

func AllRunnerJobOutcomeEnum added in v2022.7.20

func AllRunnerJobOutcomeEnum() []string

All RunnerJobOutcomeEnum as []string

func AllRunnerJobStatusEnum added in v2022.7.20

func AllRunnerJobStatusEnum() []string

All RunnerJobStatusEnum as []string

func AllRunnerStatusTypeEnum added in v2022.7.20

func AllRunnerStatusTypeEnum() []string

All RunnerStatusTypeEnum as []string

func AllServiceOwnershipCheckContactType added in v2022.8.1

func AllServiceOwnershipCheckContactType() []string

All ContactType as []string

func AllServicePropertyTypeEnum

func AllServicePropertyTypeEnum() []string

All ServicePropertyTypeEnum as []string

func AllTaggableResource

func AllTaggableResource() []string

All TaggableResource as []string

func AllToolCategory

func AllToolCategory() []string

All ToolCategory as []string

func AllUserRole

func AllUserRole() []string

All UserRole as []string

func Bool

func Bool(v bool) *bool

Bool is a helper routine that allocates a new bool value to store v and returns a pointer to it.

func FormatErrors

func FormatErrors(errs []OpsLevelErrors) error

func IsID

func IsID(value string) bool

func NewEmptyString added in v2022.10.22

func NewEmptyString() *graphql.String

func NewID

func NewID(id string) *graphql.ID

func NewISO8601Date

func NewISO8601Date(datetime string) iso8601.Time

func NewISO8601DateNow added in v2022.7.20

func NewISO8601DateNow() iso8601.Time

func NewInt

func NewInt(i int) *int

func NewRestClient

func NewRestClient(options ...Option) *resty.Client

func NewString added in v2022.10.22

func NewString(value string) *graphql.String

Types

type AlertSource added in v2022.8.25

type AlertSource struct {
	Name        string              `graphql:"name"`
	Description string              `graphql:"description"`
	Id          graphql.ID          `graphql:"id"`
	Type        AlertSourceTypeEnum `graphql:"type"`
	ExternalId  string              `graphql:"externalId"`
	Integration Integration         `graphql:"integration"`
	Url         string              `graphql:"url"`
}

type AlertSourceExternalIdentifier added in v2022.8.25

type AlertSourceExternalIdentifier struct {
	Type       AlertSourceTypeEnum `json:"type"`
	ExternalId string              `json:"externalId"`
}

type AlertSourceTypeEnum

type AlertSourceTypeEnum string

AlertSourceTypeEnum represents the type of the alert source.

const (
	AlertSourceTypeEnumPagerduty AlertSourceTypeEnum = "pagerduty" // A PagerDuty alert source (aka service).
	AlertSourceTypeEnumDatadog   AlertSourceTypeEnum = "datadog"   // A Datadog alert source (aka monitor).
	AlertSourceTypeEnumOpsgenie  AlertSourceTypeEnum = "opsgenie"  // An Opsgenie alert source (aka service).
)

type AlertSourceUsageCheckFragment

type AlertSourceUsageCheckFragment struct {
	AlertSourceNamePredicate Predicate           `graphql:"alertSourceNamePredicate"`
	AlertSourceType          AlertSourceTypeEnum `graphql:"alertSourceType"`
}

type AliasCreateInput

type AliasCreateInput struct {
	Alias   string     `json:"alias"`
	OwnerId graphql.ID `json:"ownerId"`
}

type AliasDeleteInput

type AliasDeleteInput struct {
	Alias     string             `json:"alias"`
	OwnerType AliasOwnerTypeEnum `json:"ownerType"`
}

type AliasOwnerTypeEnum

type AliasOwnerTypeEnum string

AliasOwnerTypeEnum represents the owner type an alias is assigned to.

const (
	AliasOwnerTypeEnumService AliasOwnerTypeEnum = "service" // Aliases that are assigned to services.
	AliasOwnerTypeEnumTeam    AliasOwnerTypeEnum = "team"    // Aliases that are assigned to teams.
)

type ApiDocumentSourceEnum added in v2022.8.1

type ApiDocumentSourceEnum string

ApiDocumentSourceEnum represents the source used to determine the preferred API document.

const (
	ApiDocumentSourceEnumPush ApiDocumentSourceEnum = "PUSH" // Use the document that was pushed to OpsLevel via an API Docs integration.
	ApiDocumentSourceEnumPull ApiDocumentSourceEnum = "PULL" // Use the document that was pulled by OpsLevel via a repo.
)

type Cacher

type Cacher struct {
	Tiers        map[string]Tier
	Lifecycles   map[string]Lifecycle
	Teams        map[string]Team
	Categories   map[string]Category
	Levels       map[string]Level
	Filters      map[string]Filter
	Integrations map[string]Integration
	Repositories map[string]Repository
	// contains filtered or unexported fields
}

func (*Cacher) CacheAll

func (c *Cacher) CacheAll(client *Client)

func (*Cacher) CacheCategories

func (c *Cacher) CacheCategories(client *Client)

func (*Cacher) CacheFilters

func (c *Cacher) CacheFilters(client *Client)

func (*Cacher) CacheIntegrations

func (c *Cacher) CacheIntegrations(client *Client)

func (*Cacher) CacheLevels

func (c *Cacher) CacheLevels(client *Client)

func (*Cacher) CacheLifecycles

func (c *Cacher) CacheLifecycles(client *Client)

func (*Cacher) CacheRepositories

func (c *Cacher) CacheRepositories(client *Client)

func (*Cacher) CacheTeams

func (c *Cacher) CacheTeams(client *Client)

func (*Cacher) CacheTiers

func (c *Cacher) CacheTiers(client *Client)

func (*Cacher) TryGetCategory

func (c *Cacher) TryGetCategory(alias string) (*Category, bool)

func (*Cacher) TryGetFilter

func (c *Cacher) TryGetFilter(alias string) (*Filter, bool)

func (*Cacher) TryGetIntegration

func (c *Cacher) TryGetIntegration(alias string) (*Integration, bool)

func (*Cacher) TryGetLevel

func (c *Cacher) TryGetLevel(alias string) (*Level, bool)

func (*Cacher) TryGetLifecycle

func (c *Cacher) TryGetLifecycle(alias string) (*Lifecycle, bool)

func (*Cacher) TryGetRepository

func (c *Cacher) TryGetRepository(alias string) (*Repository, bool)

func (*Cacher) TryGetTeam

func (c *Cacher) TryGetTeam(alias string) (*Team, bool)

func (*Cacher) TryGetTier

func (c *Cacher) TryGetTier(alias string) (*Tier, bool)

type Category

type Category struct {
	Id   graphql.ID `json:"id"`
	Name string
}

func (*Category) Alias

func (self *Category) Alias() string

type CategoryBreakdown

type CategoryBreakdown struct {
	Category Category
	Level    Level
}

type CategoryConnection

type CategoryConnection struct {
	Nodes      []Category
	PageInfo   PageInfo
	TotalCount graphql.Int
}

func (*CategoryConnection) Hydrate

func (conn *CategoryConnection) Hydrate(client *Client) error

type CategoryCreateInput

type CategoryCreateInput struct {
	Name string `json:"name"`
}

type CategoryDeleteInput

type CategoryDeleteInput struct {
	Id graphql.ID `json:"id"`
}

type CategoryUpdateInput

type CategoryUpdateInput struct {
	Id   graphql.ID `json:"id"`
	Name string     `json:"name"`
}

type Check

type Check struct {
	Category    Category     `graphql:"category"`
	Description string       `graphql:"description"`
	Enabled     bool         `graphql:"enabled"`
	EnableOn    iso8601.Time `graphql:"enableOn"`
	Filter      Filter       `graphql:"filter"`
	Id          graphql.ID   `graphql:"id"`
	Level       Level        `graphql:"level"`
	Name        string       `graphql:"name"`
	Notes       string       `graphql:"notes"`
	Owner       CheckOwner   `graphql:"owner"`
	Type        CheckType    `graphql:"type"`

	AlertSourceUsageCheckFragment `graphql:"... on AlertSourceUsageCheck"`
	CustomEventCheckFragment      `graphql:"... on CustomEventCheck"`
	HasRecentDeployCheckFragment  `graphql:"... on HasRecentDeployCheck"`
	ManualCheckFragment           `graphql:"... on ManualCheck"`
	RepositoryFileCheckFragment   `graphql:"... on RepositoryFileCheck"`
	RepositoryGrepCheckFragment   `graphql:"... on RepositoryGrepCheck"`
	RepositorySearchCheckFragment `graphql:"... on RepositorySearchCheck"`
	ServiceOwnershipCheckFragment `graphql:"... on ServiceOwnershipCheck"`
	ServicePropertyCheckFragment  `graphql:"... on ServicePropertyCheck"`
	TagDefinedCheckFragment       `graphql:"... on TagDefinedCheck"`
	ToolUsageCheckFragment        `graphql:"... on ToolUsageCheck"`
	HasDocumentationCheckFragment `graphql:"... on HasDocumentationCheck"`
}

type CheckAlertSourceUsageCreateInput

type CheckAlertSourceUsageCreateInput struct {
	CheckCreateInput

	AlertSourceType          AlertSourceTypeEnum `json:"alertSourceType,omitempty"`
	AlertSourceNamePredicate *PredicateInput     `json:"alertSourceNamePredicate,omitempty"`
}

type CheckAlertSourceUsageUpdateInput

type CheckAlertSourceUsageUpdateInput struct {
	CheckUpdateInput

	AlertSourceType          AlertSourceTypeEnum   `json:"alertSourceType,omitempty"`
	AlertSourceNamePredicate *PredicateUpdateInput `json:"alertSourceNamePredicate,omitempty"`
}

type CheckConnection

type CheckConnection struct {
	Nodes      []Check
	PageInfo   PageInfo
	TotalCount graphql.Int
}

func (*CheckConnection) Hydrate

func (conn *CheckConnection) Hydrate(client *Client) error

type CheckCreateInput

type CheckCreateInput struct {
	Name     string        `json:"name"`
	Enabled  bool          `json:"enabled"`
	EnableOn *iso8601.Time `json:"enableOn,omitempty"`
	Category graphql.ID    `json:"categoryId"`
	Level    graphql.ID    `json:"levelId"`
	Owner    *graphql.ID   `json:"ownerId,omitempty"`
	Filter   *graphql.ID   `json:"filterId,omitempty"`
	Notes    string        `json:"notes"`
}

func (*CheckCreateInput) GetCheckCreateInput

func (c *CheckCreateInput) GetCheckCreateInput() *CheckCreateInput

type CheckCreateInputProvider

type CheckCreateInputProvider interface {
	GetCheckCreateInput() *CheckCreateInput
}

type CheckCustomEventCreateInput

type CheckCustomEventCreateInput struct {
	CheckCreateInput

	Integration      graphql.ID `json:"integrationId"`
	ServiceSelector  string     `json:"serviceSelector"`
	SuccessCondition string     `json:"successCondition"`
	Message          string     `json:"resultMessage,omitempty"`
	PassPending      *bool      `json:"passPending,omitempty"`
}

type CheckCustomEventUpdateInput

type CheckCustomEventUpdateInput struct {
	CheckUpdateInput

	ServiceSelector  string      `json:"serviceSelector,omitempty"`
	SuccessCondition string      `json:"successCondition,omitempty"`
	Message          string      `json:"resultMessage,omitempty"`
	PassPending      *bool       `json:"passPending,omitempty"`
	Integration      *graphql.ID `json:"integrationId,omitempty"`
}

type CheckDeleteInput

type CheckDeleteInput struct {
	Id graphql.ID `json:"id"`
}

type CheckGitBranchProtectionCreateInput

type CheckGitBranchProtectionCreateInput struct {
	CheckCreateInput
}

type CheckGitBranchProtectionUpdateInput

type CheckGitBranchProtectionUpdateInput struct {
	CheckUpdateInput
}

type CheckHasDocumentationCreateInput added in v2022.8.25

type CheckHasDocumentationCreateInput struct {
	CheckCreateInput

	DocumentType    HasDocumentationTypeEnum    `json:"documentType"`
	DocumentSubtype HasDocumentationSubtypeEnum `json:"documentSubtype"`
}

type CheckHasDocumentationUpdateInput added in v2022.8.25

type CheckHasDocumentationUpdateInput struct {
	CheckUpdateInput

	DocumentType    HasDocumentationTypeEnum    `json:"documentType"`
	DocumentSubtype HasDocumentationSubtypeEnum `json:"documentSubtype"`
}

type CheckHasRecentDeployCreateInput

type CheckHasRecentDeployCreateInput struct {
	CheckCreateInput

	Days int `json:"days"`
}

type CheckHasRecentDeployUpdateInput

type CheckHasRecentDeployUpdateInput struct {
	CheckUpdateInput

	Days *int `json:"days,omitempty"`
}

type CheckManualCreateInput

type CheckManualCreateInput struct {
	CheckCreateInput

	UpdateFrequency       *ManualCheckFrequencyInput `json:"updateFrequency,omitempty"`
	UpdateRequiresComment bool                       `json:"updateRequiresComment"`
}

type CheckManualUpdateInput

type CheckManualUpdateInput struct {
	CheckUpdateInput

	UpdateFrequency       *ManualCheckFrequencyInput `json:"updateFrequency,omitempty"`
	UpdateRequiresComment bool                       `json:"updateRequiresComment,omitempty"`
}

type CheckOwner

type CheckOwner struct {
	Team TeamId `graphql:"... on Team"`
}

type CheckRepositoryFileCreateInput

type CheckRepositoryFileCreateInput struct {
	CheckCreateInput

	DirectorySearch       bool            `json:"directorySearch"`
	Filepaths             []string        `json:"filePaths"`
	FileContentsPredicate *PredicateInput `json:"fileContentsPredicate,omitempty"`
	UseAbsoluteRoot       *bool           `json:"useAbsoluteRoot,omitempty"`
}

type CheckRepositoryFileUpdateInput

type CheckRepositoryFileUpdateInput struct {
	CheckUpdateInput

	DirectorySearch       *bool           `json:"directorySearch,omitempty"`
	Filepaths             []string        `json:"filePaths,omitempty"`
	FileContentsPredicate *PredicateInput `json:"fileContentsPredicate,omitempty"`
	UseAbsoluteRoot       *bool           `json:"useAbsoluteRoot,omitempty"`
}

type CheckRepositoryGrepCreateInput added in v2022.12.16

type CheckRepositoryGrepCreateInput struct {
	CheckCreateInput

	DirectorySearch       bool            `json:"directorySearch"`
	Filepaths             []string        `json:"filePaths"`
	FileContentsPredicate *PredicateInput `json:"fileContentsPredicate,omitempty"`
}

type CheckRepositoryGrepUpdateInput added in v2022.12.16

type CheckRepositoryGrepUpdateInput struct {
	CheckUpdateInput

	DirectorySearch       bool            `json:"directorySearch"`
	Filepaths             []string        `json:"filePaths,omitempty"`
	FileContentsPredicate *PredicateInput `json:"fileContentsPredicate,omitempty"`
}

type CheckRepositoryIntegratedCreateInput

type CheckRepositoryIntegratedCreateInput struct {
	CheckCreateInput
}

type CheckRepositoryIntegratedUpdateInput

type CheckRepositoryIntegratedUpdateInput struct {
	CheckUpdateInput
}

type CheckRepositorySearchCreateInput

type CheckRepositorySearchCreateInput struct {
	CheckCreateInput

	FileExtensions        []string       `json:"fileExtensions,omitempty"`
	FileContentsPredicate PredicateInput `json:"fileContentsPredicate"`
}

type CheckRepositorySearchUpdateInput

type CheckRepositorySearchUpdateInput struct {
	CheckUpdateInput

	FileExtensions        []string        `json:"fileExtensions,omitempty"`
	FileContentsPredicate *PredicateInput `json:"fileContentsPredicate,omitempty"`
}

type CheckResponsePayload

type CheckResponsePayload struct {
	Check  Check
	Errors []OpsLevelErrors
}

Encompass CheckCreatePayload and CheckUpdatePayload into 1 struct

func (*CheckResponsePayload) Mutate

func (p *CheckResponsePayload) Mutate(client *Client, m interface{}, v map[string]interface{}) (*Check, error)

type CheckServiceConfigurationCreateInput

type CheckServiceConfigurationCreateInput struct {
	CheckCreateInput
}

type CheckServiceConfigurationUpdateInput

type CheckServiceConfigurationUpdateInput struct {
	CheckUpdateInput
}

type CheckServiceDependencyCreateInput added in v2022.8.1

type CheckServiceDependencyCreateInput struct {
	CheckCreateInput
}

type CheckServiceDependencyUpdateInput added in v2022.8.1

type CheckServiceDependencyUpdateInput struct {
	CheckUpdateInput
}

type CheckServiceOwnershipCreateInput

type CheckServiceOwnershipCreateInput struct {
	CheckCreateInput

	RequireContactMethod *bool                             `json:"requireContactMethod,omitempty"`
	ContactMethod        *ServiceOwnershipCheckContactType `json:"contactMethod,omitempty"`
	TeamTagKey           string                            `json:"tagKey,omitempty"`
	TeamTagPredicate     *PredicateInput                   `json:"tagPredicate,omitempty"`
}

type CheckServiceOwnershipUpdateInput

type CheckServiceOwnershipUpdateInput struct {
	CheckUpdateInput

	RequireContactMethod *bool                             `json:"requireContactMethod,omitempty"`
	ContactMethod        *ServiceOwnershipCheckContactType `json:"contactMethod,omitempty"`
	TeamTagKey           string                            `json:"tagKey,omitempty"`
	TeamTagPredicate     *PredicateUpdateInput             `json:"tagPredicate,omitempty"`
}

type CheckServicePropertyCreateInput

type CheckServicePropertyCreateInput struct {
	CheckCreateInput

	Property  ServicePropertyTypeEnum `json:"serviceProperty"`
	Predicate *PredicateInput         `json:"propertyValuePredicate,omitempty"`
}

type CheckServicePropertyUpdateInput

type CheckServicePropertyUpdateInput struct {
	CheckUpdateInput

	Property  ServicePropertyTypeEnum `json:"serviceProperty,omitempty"`
	Predicate *PredicateInput         `json:"propertyValuePredicate,omitempty"`
}

type CheckStatus

type CheckStatus string

CheckStatus represents the evaluation status of the check.

const (
	CheckStatusPassed  CheckStatus = "passed"  // The check evaluated to a truthy value based on some conditions.
	CheckStatusFailed  CheckStatus = "failed"  // The check evaluated to a falsy value based on some conditions.
	CheckStatusPending CheckStatus = "pending" // The check has not been evaluated yet..
)

type CheckTagDefinedCreateInput

type CheckTagDefinedCreateInput struct {
	CheckCreateInput

	TagKey       string          `json:"tagKey"`
	TagPredicate *PredicateInput `json:"tagPredicate,omitempty"`
}

type CheckTagDefinedUpdateInput

type CheckTagDefinedUpdateInput struct {
	CheckUpdateInput

	TagKey       string          `json:"tagKey,omitempty"`
	TagPredicate *PredicateInput `json:"tagPredicate,omitempty"`
}

type CheckToolUsageCreateInput

type CheckToolUsageCreateInput struct {
	CheckCreateInput

	ToolCategory         ToolCategory    `json:"toolCategory"`
	ToolNamePredicate    *PredicateInput `json:"toolNamePredicate,omitempty"`
	ToolUrlPredicate     *PredicateInput `json:"toolUrlPredicate,omitempty"`
	EnvironmentPredicate *PredicateInput `json:"environmentPredicate,omitempty"`
}

type CheckToolUsageUpdateInput

type CheckToolUsageUpdateInput struct {
	CheckUpdateInput

	ToolCategory         ToolCategory    `json:"toolCategory,omitempty"`
	ToolNamePredicate    *PredicateInput `json:"toolNamePredicate,omitempty"`
	ToolUrlPredicate     *PredicateInput `json:"toolUrlPredicate,omitempty"`
	EnvironmentPredicate *PredicateInput `json:"environmentPredicate,omitempty"`
}

type CheckType

type CheckType string

CheckType represents the type of check.

const (
	CheckTypeHasOwner            CheckType = "has_owner"             // Verifies that the service has an owner defined.
	CheckTypeHasRecentDeploy     CheckType = "has_recent_deploy"     // Verified that the services has received a deploy within a specified number of days.
	CheckTypeServiceProperty     CheckType = "service_property"      // Verifies that a service property is set or matches a specified format.
	CheckTypeHasServiceConfig    CheckType = "has_service_config"    // Verifies that the service is maintained though the use of an opslevel.yml service config.
	CheckTypeHasDocumentation    CheckType = "has_documentation"     // Verifies that the service has visible documentation of a particular type and subtype.
	CheckTypeHasRepository       CheckType = "has_repository"        // Verifies that the service has a repository integrated.
	CheckTypeToolUsage           CheckType = "tool_usage"            // Verifies that the service is using a tool of a particular category or name.
	CheckTypeTagDefined          CheckType = "tag_defined"           // Verifies that the service has the specified tag defined.
	CheckTypeRepoFile            CheckType = "repo_file"             // Verifies that the service's repository contains a file with a certain path. (Optional: Can also be used to check for specific file contents).
	CheckTypeRepoGrep            CheckType = "repo_grep"             // Runs a comprehensive search across the service's repository with advanced search parameters.
	CheckTypeRepoSearch          CheckType = "repo_search"           // Searches the service's repository and verifies if any file matches the given contents.
	CheckTypeCustom              CheckType = "custom"                // Allows for the creation of programmatic checks that use an API to mark the status as passing or failing.
	CheckTypePayload             CheckType = "payload"               // Requires a payload integration api call to complete a check for the service.
	CheckTypeManual              CheckType = "manual"                // Requires a service owner to manually complete a check for the service.
	CheckTypeGeneric             CheckType = "generic"               // Requires a generic integration api call to complete a series of checks for multiple services.
	CheckTypeAlertSourceUsage    CheckType = "alert_source_usage"    // Verifies that the service has an alert source of a particular type or name.
	CheckTypeGitBranchProtection CheckType = "git_branch_protection" // Verifies that all the repositories on the service have branch protection enabled.
	CheckTypeServiceDependency   CheckType = "service_dependency"    // Verifies that the service has either a dependent or dependency.
)

type CheckUpdateInput

type CheckUpdateInput struct {
	Id       graphql.ID    `json:"id"`
	Name     string        `json:"name,omitempty"`
	Enabled  *bool         `json:"enabled,omitempty"`
	EnableOn *iso8601.Time `json:"enableOn,omitempty"`
	Category *graphql.ID   `json:"categoryId,omitempty"`
	Level    *graphql.ID   `json:"levelId,omitempty"`
	Owner    *graphql.ID   `json:"ownerId,omitempty"`
	Filter   *graphql.ID   `json:"filterId,omitempty"`
	Notes    string        `json:"notes"`
}

func (*CheckUpdateInput) GetCheckUpdateInput

func (c *CheckUpdateInput) GetCheckUpdateInput() *CheckUpdateInput

type CheckUpdateInputProvider

type CheckUpdateInputProvider interface {
	GetCheckUpdateInput() *CheckUpdateInput
}

type Client

type Client struct {
	// contains filtered or unexported fields
}

func NewClient deprecated

func NewClient(apiToken string, options ...Option) *Client

Deprecated: Use NewGQLClient instead

func NewGQLClient

func NewGQLClient(options ...Option) *Client

func (*Client) AddContact

func (client *Client) AddContact(team string, contact ContactInput) (*Contact, error)

func (*Client) AddMember

func (client *Client) AddMember(team *TeamId, email string) ([]User, error)

func (*Client) AddMembers

func (client *Client) AddMembers(team *TeamId, emails []string) ([]User, error)

func (*Client) AssignTagForAlias

func (client *Client) AssignTagForAlias(alias string, key string, value string) ([]Tag, error)

func (*Client) AssignTagForId

func (client *Client) AssignTagForId(id graphql.ID, key string, value string) ([]Tag, error)

func (*Client) AssignTags

func (client *Client) AssignTags(input TagAssignInput) ([]Tag, error)

func (*Client) AssignTagsForAlias

func (client *Client) AssignTagsForAlias(alias string, tags map[string]string) ([]Tag, error)

func (*Client) AssignTagsForId

func (client *Client) AssignTagsForId(id graphql.ID, tags map[string]string) ([]Tag, error)

func (*Client) ConnectServiceRepository

func (client *Client) ConnectServiceRepository(service *ServiceId, repository *Repository) (*ServiceRepository, error)

func (*Client) CreateAlias

func (client *Client) CreateAlias(input AliasCreateInput) ([]string, error)

func (*Client) CreateAliases

func (client *Client) CreateAliases(ownerId graphql.ID, aliases []string) ([]string, error)

#region Create TODO: make sure duplicate aliases throw an error that we can catch

func (*Client) CreateCategory

func (client *Client) CreateCategory(input CategoryCreateInput) (*Category, error)

func (*Client) CreateCheckAlertSourceUsage

func (client *Client) CreateCheckAlertSourceUsage(input CheckAlertSourceUsageCreateInput) (*Check, error)

func (*Client) CreateCheckCustomEvent

func (client *Client) CreateCheckCustomEvent(input CheckCustomEventCreateInput) (*Check, error)

func (*Client) CreateCheckGitBranchProtection

func (client *Client) CreateCheckGitBranchProtection(input CheckGitBranchProtectionCreateInput) (*Check, error)

func (*Client) CreateCheckHasDocumentation added in v2022.8.25

func (client *Client) CreateCheckHasDocumentation(input CheckHasDocumentationCreateInput) (*Check, error)

func (*Client) CreateCheckHasRecentDeploy

func (client *Client) CreateCheckHasRecentDeploy(input CheckHasRecentDeployCreateInput) (*Check, error)

func (*Client) CreateCheckManual

func (client *Client) CreateCheckManual(input CheckManualCreateInput) (*Check, error)

func (*Client) CreateCheckRepositoryFile

func (client *Client) CreateCheckRepositoryFile(input CheckRepositoryFileCreateInput) (*Check, error)

func (*Client) CreateCheckRepositoryGrep added in v2022.12.16

func (client *Client) CreateCheckRepositoryGrep(input CheckRepositoryGrepCreateInput) (*Check, error)

func (*Client) CreateCheckRepositoryIntegrated

func (client *Client) CreateCheckRepositoryIntegrated(input CheckRepositoryIntegratedCreateInput) (*Check, error)

func (*Client) CreateCheckRepositorySearch

func (client *Client) CreateCheckRepositorySearch(input CheckRepositorySearchCreateInput) (*Check, error)

func (*Client) CreateCheckServiceConfiguration

func (client *Client) CreateCheckServiceConfiguration(input CheckServiceConfigurationCreateInput) (*Check, error)

func (*Client) CreateCheckServiceDependency added in v2022.8.1

func (client *Client) CreateCheckServiceDependency(input CheckServiceDependencyCreateInput) (*Check, error)

func (*Client) CreateCheckServiceOwnership

func (client *Client) CreateCheckServiceOwnership(input CheckServiceOwnershipCreateInput) (*Check, error)

func (*Client) CreateCheckServiceProperty

func (client *Client) CreateCheckServiceProperty(input CheckServicePropertyCreateInput) (*Check, error)

func (*Client) CreateCheckTagDefined

func (client *Client) CreateCheckTagDefined(input CheckTagDefinedCreateInput) (*Check, error)

func (*Client) CreateCheckToolUsage

func (client *Client) CreateCheckToolUsage(input CheckToolUsageCreateInput) (*Check, error)

func (*Client) CreateFilter

func (client *Client) CreateFilter(input FilterCreateInput) (*Filter, error)

func (*Client) CreateGroup

func (client *Client) CreateGroup(input GroupInput) (*Group, error)

func (*Client) CreateLevel

func (client *Client) CreateLevel(input LevelCreateInput) (*Level, error)

func (*Client) CreateService

func (client *Client) CreateService(input ServiceCreateInput) (*Service, error)

func (*Client) CreateServiceRepository

func (client *Client) CreateServiceRepository(input ServiceRepositoryCreateInput) (*ServiceRepository, error)

func (*Client) CreateTag

func (client *Client) CreateTag(input TagCreateInput) (*Tag, error)

func (*Client) CreateTags

func (client *Client) CreateTags(alias string, tags map[string]string) ([]Tag, error)

func (*Client) CreateTagsForId

func (client *Client) CreateTagsForId(id graphql.ID, tags map[string]string) ([]Tag, error)

func (*Client) CreateTeam

func (client *Client) CreateTeam(input TeamCreateInput) (*Team, error)

func (*Client) CreateTool

func (client *Client) CreateTool(input ToolCreateInput) (*Tool, error)

func (*Client) DeleteAlias

func (client *Client) DeleteAlias(input AliasDeleteInput) error

func (*Client) DeleteCategory

func (client *Client) DeleteCategory(id graphql.ID) error

func (*Client) DeleteCheck

func (client *Client) DeleteCheck(id graphql.ID) error

func (*Client) DeleteFilter

func (client *Client) DeleteFilter(id graphql.ID) error

func (*Client) DeleteGroup

func (client *Client) DeleteGroup(id graphql.ID) error

func (*Client) DeleteGroupWithAlias

func (client *Client) DeleteGroupWithAlias(alias string) error

func (*Client) DeleteLevel

func (client *Client) DeleteLevel(id graphql.ID) error

func (*Client) DeleteService

func (client *Client) DeleteService(input ServiceDeleteInput) error

TODO: we should have a method that takes and ID and that follows the convention of other delete functions

func (*Client) DeleteServiceAlias

func (client *Client) DeleteServiceAlias(alias string) error

func (*Client) DeleteServiceRepository

func (client *Client) DeleteServiceRepository(id graphql.ID) error

func (*Client) DeleteServiceWithAlias

func (client *Client) DeleteServiceWithAlias(alias string) error

func (*Client) DeleteTag

func (client *Client) DeleteTag(id graphql.ID) error

func (*Client) DeleteTeam

func (client *Client) DeleteTeam(id graphql.ID) error

func (*Client) DeleteTeamAlias

func (client *Client) DeleteTeamAlias(alias string) error

func (*Client) DeleteTeamWithAlias

func (client *Client) DeleteTeamWithAlias(alias string) error

func (*Client) DeleteTeamWithId deprecated

func (client *Client) DeleteTeamWithId(id graphql.ID) error

Deprecated: use DeleteTeam instead

func (*Client) DeleteTool

func (client *Client) DeleteTool(id graphql.ID) error

func (*Client) DeleteUser

func (client *Client) DeleteUser(user string) error

func (*Client) GetAlertSource added in v2022.8.25

func (client *Client) GetAlertSource(id graphql.ID) (*AlertSource, error)

func (*Client) GetAlertSourceWithExternalIdentifier added in v2022.8.25

func (client *Client) GetAlertSourceWithExternalIdentifier(input AlertSourceExternalIdentifier) (*AlertSource, error)

func (*Client) GetCategory

func (client *Client) GetCategory(id graphql.ID) (*Category, error)

func (*Client) GetCheck

func (client *Client) GetCheck(id graphql.ID) (*Check, error)

func (*Client) GetFilter

func (client *Client) GetFilter(id graphql.ID) (*Filter, error)

func (*Client) GetGroup

func (client *Client) GetGroup(id graphql.ID) (*Group, error)

func (*Client) GetGroupWithAlias

func (client *Client) GetGroupWithAlias(alias string) (*Group, error)

func (*Client) GetIntegration

func (client *Client) GetIntegration(id graphql.ID) (*Integration, error)

func (*Client) GetLevel

func (client *Client) GetLevel(id graphql.ID) (*Level, error)

func (*Client) GetRepository

func (client *Client) GetRepository(id graphql.ID) (*Repository, error)

func (*Client) GetRepositoryWithAlias

func (client *Client) GetRepositoryWithAlias(alias string) (*Repository, error)

func (*Client) GetService

func (client *Client) GetService(id graphql.ID) (*Service, error)

func (*Client) GetServiceCount

func (client *Client) GetServiceCount() (int, error)

func (*Client) GetServiceIdWithAlias

func (client *Client) GetServiceIdWithAlias(alias string) (*ServiceId, error)

This is a lightweight api call to lookup a service id by and alias - it does not return a full Service object

func (*Client) GetServiceMaturityWithAlias added in v2022.8.25

func (c *Client) GetServiceMaturityWithAlias(alias string) (*ServiceMaturity, error)

func (*Client) GetServiceWithAlias

func (client *Client) GetServiceWithAlias(alias string) (*Service, error)

func (*Client) GetServiceWithId deprecated

func (client *Client) GetServiceWithId(id graphql.ID) (*Service, error)

Deprecated: Use GetService instead

func (*Client) GetTagCount

func (client *Client) GetTagCount(service graphql.ID) (int, error)

func (*Client) GetTagsForService

func (client *Client) GetTagsForService(service graphql.ID) ([]Tag, error)

func (*Client) GetTagsForServiceWithAlias

func (client *Client) GetTagsForServiceWithAlias(alias string) ([]Tag, error)

func (*Client) GetTagsForServiceWithId deprecated

func (client *Client) GetTagsForServiceWithId(service graphql.ID) ([]Tag, error)

Deprecated: use GetTagsForService instead

func (*Client) GetTeam

func (client *Client) GetTeam(id graphql.ID) (*Team, error)

func (*Client) GetTeamCount

func (client *Client) GetTeamCount() (int, error)

func (*Client) GetTeamWithAlias

func (client *Client) GetTeamWithAlias(alias string) (*Team, error)

func (*Client) GetTeamWithId deprecated

func (client *Client) GetTeamWithId(id graphql.ID) (*Team, error)

Deprecated: use GetTeam instead

func (*Client) GetToolCount

func (client *Client) GetToolCount(service graphql.ID) (int, error)

func (*Client) GetToolsForService

func (client *Client) GetToolsForService(service graphql.ID) ([]Tool, error)

func (*Client) GetToolsForServiceWithAlias

func (client *Client) GetToolsForServiceWithAlias(alias string) ([]Tool, error)

func (*Client) GetToolsForServiceWithId deprecated

func (client *Client) GetToolsForServiceWithId(service graphql.ID) ([]Tool, error)

Deprecated: Use GetToolsForService instead

func (*Client) GetUser

func (client *Client) GetUser(id graphql.ID) (*User, error)

func (*Client) InitialPageVariables

func (client *Client) InitialPageVariables() PayloadVariables

func (*Client) InviteUser

func (client *Client) InviteUser(email string, input UserInput) (*User, error)

func (*Client) ListCategories

func (client *Client) ListCategories() ([]Category, error)

func (*Client) ListChecks

func (client *Client) ListChecks() ([]Check, error)

func (*Client) ListFilters

func (client *Client) ListFilters() ([]Filter, error)

func (*Client) ListGroups

func (client *Client) ListGroups() ([]Group, error)

func (*Client) ListIntegrations

func (client *Client) ListIntegrations() ([]Integration, error)

func (*Client) ListLevels

func (client *Client) ListLevels() ([]Level, error)

func (*Client) ListLifecycles

func (client *Client) ListLifecycles() ([]Lifecycle, error)

func (*Client) ListRepositories

func (client *Client) ListRepositories() ([]Repository, error)

func (*Client) ListRepositoriesWithTier

func (client *Client) ListRepositoriesWithTier(tier string) ([]Repository, error)

func (*Client) ListServices

func (client *Client) ListServices() ([]Service, error)

func (*Client) ListServicesMaturity

func (c *Client) ListServicesMaturity() ([]ServiceMaturity, error)

func (*Client) ListServicesWithFramework

func (client *Client) ListServicesWithFramework(framework string) ([]Service, error)

func (*Client) ListServicesWithLanguage

func (client *Client) ListServicesWithLanguage(language string) ([]Service, error)

func (*Client) ListServicesWithLifecycle

func (client *Client) ListServicesWithLifecycle(lifecycle string) ([]Service, error)

func (*Client) ListServicesWithOwner

func (client *Client) ListServicesWithOwner(owner string) ([]Service, error)

func (*Client) ListServicesWithProduct

func (client *Client) ListServicesWithProduct(product string) ([]Service, error)

func (*Client) ListServicesWithTag

func (client *Client) ListServicesWithTag(tag TagArgs) ([]Service, error)

func (*Client) ListServicesWithTier

func (client *Client) ListServicesWithTier(tier string) ([]Service, error)

func (*Client) ListTeams

func (client *Client) ListTeams() ([]Team, error)

func (*Client) ListTeamsWithManager

func (client *Client) ListTeamsWithManager(email string) ([]Team, error)

func (*Client) ListTiers

func (client *Client) ListTiers() ([]Tier, error)

func (*Client) ListUsers

func (client *Client) ListUsers() ([]User, error)

func (*Client) Mutate

func (client *Client) Mutate(m interface{}, variables map[string]interface{}) error

func (*Client) MutateCTX

func (client *Client) MutateCTX(ctx context.Context, m interface{}, variables map[string]interface{}) error

func (*Client) Query

func (client *Client) Query(q interface{}, variables map[string]interface{}) error

func (*Client) QueryCTX

func (client *Client) QueryCTX(ctx context.Context, q interface{}, variables map[string]interface{}) error

func (*Client) RemoveContact

func (client *Client) RemoveContact(contact graphql.ID) error

func (*Client) RemoveMember

func (client *Client) RemoveMember(team *TeamId, email string) ([]User, error)

func (*Client) RemoveMembers

func (client *Client) RemoveMembers(team *TeamId, emails []string) ([]User, error)

func (*Client) RunnerAppendJobLog added in v2022.7.20

func (c *Client) RunnerAppendJobLog(input RunnerAppendJobLogInput) error

func (*Client) RunnerGetPendingJob added in v2022.7.20

func (c *Client) RunnerGetPendingJob(runnerId graphql.ID, lastUpdateToken graphql.ID) (*RunnerJob, *graphql.ID, error)

func (*Client) RunnerRegister added in v2022.7.20

func (c *Client) RunnerRegister() (*Runner, error)

func (*Client) RunnerReportJobOutcome added in v2022.7.20

func (c *Client) RunnerReportJobOutcome(input RunnerReportJobOutcomeInput) error

func (*Client) RunnerScale added in v2022.12.16

func (c *Client) RunnerScale(runnerId graphql.ID, currentReplicaCount, jobConcurrency int) (*RunnerScale, error)

func (*Client) RunnerUnregister added in v2022.7.20

func (c *Client) RunnerUnregister(runnerId *graphql.ID) error

func (*Client) ServiceApiDocSettingsUpdate added in v2022.8.1

func (c *Client) ServiceApiDocSettingsUpdate(service string, docPath string, docSource *ApiDocumentSourceEnum) (*Service, error)

func (*Client) UpdateCategory

func (client *Client) UpdateCategory(input CategoryUpdateInput) (*Category, error)

func (*Client) UpdateCheckAlertSourceUsage

func (client *Client) UpdateCheckAlertSourceUsage(input CheckAlertSourceUsageUpdateInput) (*Check, error)

func (*Client) UpdateCheckCustomEvent

func (client *Client) UpdateCheckCustomEvent(input CheckCustomEventUpdateInput) (*Check, error)

func (*Client) UpdateCheckGitBranchProtection

func (client *Client) UpdateCheckGitBranchProtection(input CheckGitBranchProtectionUpdateInput) (*Check, error)

func (*Client) UpdateCheckHasDocumentation added in v2022.8.25

func (client *Client) UpdateCheckHasDocumentation(input CheckHasDocumentationUpdateInput) (*Check, error)

func (*Client) UpdateCheckHasRecentDeploy

func (client *Client) UpdateCheckHasRecentDeploy(input CheckHasRecentDeployUpdateInput) (*Check, error)

func (*Client) UpdateCheckManual

func (client *Client) UpdateCheckManual(input CheckManualUpdateInput) (*Check, error)

func (*Client) UpdateCheckRepositoryFile

func (client *Client) UpdateCheckRepositoryFile(input CheckRepositoryFileUpdateInput) (*Check, error)

func (*Client) UpdateCheckRepositoryGrep added in v2022.12.16

func (client *Client) UpdateCheckRepositoryGrep(input CheckRepositoryGrepUpdateInput) (*Check, error)

func (*Client) UpdateCheckRepositoryIntegrated

func (client *Client) UpdateCheckRepositoryIntegrated(input CheckRepositoryIntegratedUpdateInput) (*Check, error)

func (*Client) UpdateCheckRepositorySearch

func (client *Client) UpdateCheckRepositorySearch(input CheckRepositorySearchUpdateInput) (*Check, error)

func (*Client) UpdateCheckServiceConfiguration

func (client *Client) UpdateCheckServiceConfiguration(input CheckServiceConfigurationUpdateInput) (*Check, error)

func (*Client) UpdateCheckServiceDependency added in v2022.8.1

func (client *Client) UpdateCheckServiceDependency(input CheckServiceDependencyUpdateInput) (*Check, error)

func (*Client) UpdateCheckServiceOwnership

func (client *Client) UpdateCheckServiceOwnership(input CheckServiceOwnershipUpdateInput) (*Check, error)

func (*Client) UpdateCheckServiceProperty

func (client *Client) UpdateCheckServiceProperty(input CheckServicePropertyUpdateInput) (*Check, error)

func (*Client) UpdateCheckTagDefined

func (client *Client) UpdateCheckTagDefined(input CheckTagDefinedUpdateInput) (*Check, error)

func (*Client) UpdateCheckToolUsage

func (client *Client) UpdateCheckToolUsage(input CheckToolUsageUpdateInput) (*Check, error)

func (*Client) UpdateContact

func (client *Client) UpdateContact(id graphql.ID, contact ContactInput) (*Contact, error)

func (*Client) UpdateFilter

func (client *Client) UpdateFilter(input FilterUpdateInput) (*Filter, error)

func (*Client) UpdateGroup

func (client *Client) UpdateGroup(identifier string, input GroupInput) (*Group, error)

func (*Client) UpdateLevel

func (client *Client) UpdateLevel(input LevelUpdateInput) (*Level, error)

func (*Client) UpdateService

func (client *Client) UpdateService(input ServiceUpdateInput) (*Service, error)

func (*Client) UpdateServiceRepository

func (client *Client) UpdateServiceRepository(input ServiceRepositoryUpdateInput) (*ServiceRepository, error)

func (*Client) UpdateTag

func (client *Client) UpdateTag(input TagUpdateInput) (*Tag, error)

func (*Client) UpdateTeam

func (client *Client) UpdateTeam(input TeamUpdateInput) (*Team, error)

func (*Client) UpdateTool

func (client *Client) UpdateTool(input ToolUpdateInput) (*Tool, error)

func (*Client) UpdateUser

func (client *Client) UpdateUser(user string, input UserInput) (*User, error)

func (*Client) Validate

func (client *Client) Validate() error

type ClientSettings

type ClientSettings struct {
	// contains filtered or unexported fields
}

type Connection

type Connection struct {
	PageInfo PageInfo `graphql:"pageInfo"`
}

type ConnectiveEnum

type ConnectiveEnum string

ConnectiveEnum represents the logical operator to be used in conjunction with multiple filters (requires filters to be supplied).

const (
	ConnectiveEnumAnd ConnectiveEnum = "and" // Used to ensure **all** filters match for a given resource.
	ConnectiveEnumOr  ConnectiveEnum = "or"  // Used to ensure **any** filters match for a given resource.
)

type Contact

type Contact struct {
	Address     string
	DisplayName string
	Id          graphql.ID
	Type        ContactType
}

type ContactCreateInput

type ContactCreateInput struct {
	Type        ContactType `json:"type"`
	DisplayName string      `json:"displayName,omitempty"`
	Address     string      `json:"address"`
	TeamId      *graphql.ID `json:"teamId,omitempty"`
	TeamAlias   string      `json:"teamAlias,omitempty"`
}

type ContactDeleteInput

type ContactDeleteInput struct {
	Id graphql.ID `json:"id"`
}

type ContactInput

type ContactInput struct {
	Type        ContactType `json:"type"`
	DisplayName string      `json:"displayName,omitEmpty"`
	Address     string      `json:"address"`
}

func CreateContactEmail

func CreateContactEmail(email string, name string) ContactInput

func CreateContactSlack

func CreateContactSlack(channel string, name string) ContactInput

func CreateContactWeb

func CreateContactWeb(address string, name string) ContactInput

type ContactType

type ContactType string

ContactType represents the method of contact.

const (
	ContactTypeSlack       ContactType = "slack"        // A Slack channel contact method.
	ContactTypeSlackHandle ContactType = "slack_handle" // A Slack handle contact method.
	ContactTypeEmail       ContactType = "email"        // An email contact method.
	ContactTypeWeb         ContactType = "web"          // A website contact method.
)

type ContactUpdateInput

type ContactUpdateInput struct {
	Id          graphql.ID   `json:"id"`
	Type        *ContactType `json:"type,omitempty"`
	DisplayName string       `json:"displayName,omitempty"`
	Address     string       `json:"address,omitempty"`
}

type CustomEventCheckFragment

type CustomEventCheckFragment struct {
	Integration      Integration `graphql:"integration"`
	PassPending      bool        `graphql:"passPending"`
	ResultMessage    string      `graphql:"resultMessage"`
	ServiceSelector  string      `graphql:"serviceSelector"`
	SuccessCondition string      `graphql:"successCondition"`
}

type DeleteInput

type DeleteInput struct {
	Id graphql.ID `json:"id"`
}

type Filter

type Filter struct {
	Connective ConnectiveEnum
	HtmlURL    string
	Id         graphql.ID
	Name       string
	Predicates []FilterPredicate
}

func (*Filter) Alias

func (self *Filter) Alias() string

type FilterConnection

type FilterConnection struct {
	Nodes      []Filter
	PageInfo   PageInfo
	TotalCount graphql.Int
}

func (*FilterConnection) Hydrate

func (conn *FilterConnection) Hydrate(client *Client) error

type FilterCreateInput

type FilterCreateInput struct {
	Name       string            `json:"name"`
	Predicates []FilterPredicate `json:"predicates"`
	Connective ConnectiveEnum    `json:"connective,omitempty"`
}

type FilterPredicate

type FilterPredicate struct {
	Key     PredicateKeyEnum  `json:"key"`
	KeyData string            `json:"keyData,omitempty"`
	Type    PredicateTypeEnum `json:"type"`
	Value   string            `json:"value,omitempty"`
}

type FilterUpdateInput

type FilterUpdateInput struct {
	Id         graphql.ID        `json:"id"`
	Name       string            `json:"name,omitempty"`
	Predicates []FilterPredicate `json:"predicates"` //The list of predicates used to select which services apply to the filter. All existing predicates will be replaced by these predicates.
	Connective ConnectiveEnum    `json:"connective,omitempty"`
}

type FrequencyTimeScale

type FrequencyTimeScale string

FrequencyTimeScale represents the time scale type for the frequency.

const (
	FrequencyTimeScaleDay   FrequencyTimeScale = "day"   // Consider the time scale of days.
	FrequencyTimeScaleWeek  FrequencyTimeScale = "week"  // Consider the time scale of weeks.
	FrequencyTimeScaleMonth FrequencyTimeScale = "month" // Consider the time scale of months.
	FrequencyTimeScaleYear  FrequencyTimeScale = "year"  // Consider the time scale of years.
)

type GitBranchProtectionCheckFragment

type GitBranchProtectionCheckFragment struct {
}

type Group

type Group struct {
	GroupId
	Description string  `json:"description,omitempty"`
	HtmlURL     string  `json:"htmlUrl,omitempty"`
	Name        string  `json:"name,omitempty"`
	Parent      GroupId `json:"parent,omitempty"`
}

func (*Group) ChildTeams

func (g *Group) ChildTeams(client *Client) ([]TeamId, error)

func (*Group) DescendantRepositories

func (g *Group) DescendantRepositories(client *Client) ([]RepositoryId, error)

func (*Group) DescendantServices

func (g *Group) DescendantServices(client *Client) ([]ServiceId, error)

func (*Group) DescendantSubgroups

func (g *Group) DescendantSubgroups(client *Client) ([]GroupId, error)

func (*Group) DescendantTeams

func (g *Group) DescendantTeams(client *Client) ([]TeamId, error)

func (*Group) Members

func (g *Group) Members(client *Client) ([]UserId, error)

type GroupConnection

type GroupConnection struct {
	Nodes      []Group
	PageInfo   PageInfo
	TotalCount graphql.Int
}

func (*GroupConnection) Hydrate

func (conn *GroupConnection) Hydrate(client *Client) error

func (*GroupConnection) Query

func (conn *GroupConnection) Query(client *Client, q interface{}, v PayloadVariables) ([]Group, error)

type GroupId

type GroupId struct {
	Alias string     `json:"alias,omitempty"`
	Id    graphql.ID `json:"id"`
}

type GroupInput

type GroupInput struct {
	Name        string             `json:"name,omitempty"`
	Description string             `json:"description,omitempty"`
	Parent      *IdentifierInput   `json:"parent"`
	Members     *[]MemberInput     `json:"members,omitempty"`
	Teams       *[]IdentifierInput `json:"teams,omitempty"`
}

type HasDocumentationCheckFragment added in v2022.8.25

type HasDocumentationCheckFragment struct {
	DocumentType    HasDocumentationTypeEnum    `graphql:"documentType"`
	DocumentSubtype HasDocumentationSubtypeEnum `graphql:"documentSubtype"`
}

type HasDocumentationSubtypeEnum added in v2022.8.25

type HasDocumentationSubtypeEnum string

HasDocumentationSubtypeEnum represents the subtype of the document.

const (
	HasDocumentationSubtypeEnumOpenapi HasDocumentationSubtypeEnum = "openapi" // Document is an OpenAPI document.
)

type HasDocumentationTypeEnum added in v2022.8.25

type HasDocumentationTypeEnum string

HasDocumentationTypeEnum represents the type of the document.

const (
	HasDocumentationTypeEnumAPI HasDocumentationTypeEnum = "api" // Document is an API document.
)

type HasRecentDeployCheckFragment

type HasRecentDeployCheckFragment struct {
	Days int `graphql:"days"`
}

type IdResponsePayload

type IdResponsePayload struct {
	Id     graphql.ID `graphql:"deletedCheckId"`
	Errors []OpsLevelErrors
}

func (*IdResponsePayload) Mutate

func (p *IdResponsePayload) Mutate(client *Client, m interface{}, v PayloadVariables) error

type IdentifierInput

type IdentifierInput struct {
	Id    graphql.ID     `graphql:"id" json:"id,omitempty"`
	Alias graphql.String `graphql:"alias" json:"alias,omitempty"`
}

func NewIdentifier

func NewIdentifier(value string) *IdentifierInput

type Integration

type Integration struct {
	Id   graphql.ID `json:"id"`
	Name string     `json:"name"`
	Type string     `json:"type"`
}

func (*Integration) Alias

func (self *Integration) Alias() string

type IntegrationConnection

type IntegrationConnection struct {
	Nodes      []Integration
	PageInfo   PageInfo
	TotalCount graphql.Int
}

func (*IntegrationConnection) Hydrate

func (conn *IntegrationConnection) Hydrate(client *Client) error

type Language

type Language struct {
	Name  string
	Usage float32
}

type Level

type Level struct {
	Alias       string
	Description string     `json:"description,omitempty"`
	Id          graphql.ID `json:"id"`
	Index       int
	Name        string
}

type LevelConnection

type LevelConnection struct {
	Nodes      []Level
	PageInfo   PageInfo
	TotalCount graphql.Int
}

func (*LevelConnection) Hydrate

func (conn *LevelConnection) Hydrate(client *Client) error

type LevelCreateInput

type LevelCreateInput struct {
	Name        string `json:"name"`
	Description string `json:"description,omitempty"`
	Index       *int   `json:"index,omitempty"`
}

type LevelDeleteInput

type LevelDeleteInput struct {
	Id graphql.ID `json:"id"`
}

type LevelUpdateInput

type LevelUpdateInput struct {
	Id          graphql.ID      `json:"id"`
	Name        graphql.String  `json:"name,omitempty"`
	Description *graphql.String `json:"description,omitempty"`
}

type Lifecycle

type Lifecycle struct {
	Alias       string
	Description string
	Id          graphql.ID
	Index       int
	Name        string
}

type ManualCheckFragment

type ManualCheckFragment struct {
	UpdateFrequency       *ManualCheckFrequency `graphql:"updateFrequency"`
	UpdateRequiresComment bool                  `graphql:"updateRequiresComment"`
}

type ManualCheckFrequency

type ManualCheckFrequency struct {
	StartingDate       iso8601.Time       `graphql:"startingDate"`
	FrequencyTimeScale FrequencyTimeScale `graphql:"frequencyTimeScale"`
	FrequencyValue     int                `graphql:"frequencyValue"`
}

type ManualCheckFrequencyInput

type ManualCheckFrequencyInput struct {
	StartingDate       iso8601.Time       `json:"startingDate"`
	FrequencyTimeScale FrequencyTimeScale `json:"frequencyTimeScale"`
	FrequencyValue     int                `json:"frequencyValue"`
}

func NewManualCheckFrequencyInput

func NewManualCheckFrequencyInput(startingDate string, timeScale FrequencyTimeScale, value int) *ManualCheckFrequencyInput

type MaturityReport

type MaturityReport struct {
	CategoryBreakdown []CategoryBreakdown
	OverallLevel      Level
}

func (*MaturityReport) Get

func (s *MaturityReport) Get(category string) *Level

Get Given a 'category' name returns the 'Level'

type MemberInput

type MemberInput struct {
	Email string `json:"email"`
}

type OpsLevelErrors

type OpsLevelErrors struct {
	Message string
	Path    []string
}

type Option

type Option func(*ClientSettings)

func SetAPIToken

func SetAPIToken(apiToken string) Option

func SetAPIVisibility

func SetAPIVisibility(visibility string) Option

func SetMaxRetries

func SetMaxRetries(amount int) Option

func SetPageSize

func SetPageSize(size int) Option

func SetTimeout

func SetTimeout(amount time.Duration) Option

func SetURL

func SetURL(url string) Option

func SetUserAgentExtra

func SetUserAgentExtra(extra string) Option

type PageInfo

type PageInfo struct {
	HasNextPage     graphql.Boolean `graphql:"hasNextPage"`
	HasPreviousPage graphql.Boolean `graphql:"hasPreviousPage"`
	Start           graphql.String  `graphql:"startCursor"`
	End             graphql.String  `graphql:"endCursor"`
}

type PayloadVariables

type PayloadVariables map[string]interface{}

type Predicate

type Predicate struct {
	Type  PredicateTypeEnum `graphql:"type"`
	Value string            `graphql:"value"`
}

type PredicateInput

type PredicateInput struct {
	Type  PredicateTypeEnum `json:"type"`
	Value string            `json:"value,omitempty"`
}

type PredicateKeyEnum

type PredicateKeyEnum string

PredicateKeyEnum represents fields that can be used as part of filter for services.

const (
	PredicateKeyEnumTierIndex      PredicateKeyEnum = "tier_index"      // Filter by `tier` field.
	PredicateKeyEnumLifecycleIndex PredicateKeyEnum = "lifecycle_index" // Filter by `lifecycle` field.
	PredicateKeyEnumLanguage       PredicateKeyEnum = "language"        // Filter by `language` field.
	PredicateKeyEnumFramework      PredicateKeyEnum = "framework"       // Filter by `framework` field.
	PredicateKeyEnumProduct        PredicateKeyEnum = "product"         // Filter by `product` field.
	PredicateKeyEnumName           PredicateKeyEnum = "name"            // Filter by `name` field.
	PredicateKeyEnumTags           PredicateKeyEnum = "tags"            // Filter by `tags` field.
	PredicateKeyEnumOwnerID        PredicateKeyEnum = "owner_id"        // Filter by `owner` field.
	PredicateKeyEnumGroupIDs       PredicateKeyEnum = "group_ids"       // Filter by group hierarchy. Will return resources who's owner is in the group ancestry chain.
)

type PredicateTypeEnum

type PredicateTypeEnum string

PredicateTypeEnum represents operations that can be used on predicates.

const (
	PredicateTypeEnumContains                   PredicateTypeEnum = "contains"                     // Contains a specific value.
	PredicateTypeEnumDoesNotContain             PredicateTypeEnum = "does_not_contain"             // Does not contain a specific value.
	PredicateTypeEnumDoesNotEqual               PredicateTypeEnum = "does_not_equal"               // Does not equal a specific value.
	PredicateTypeEnumDoesNotExist               PredicateTypeEnum = "does_not_exist"               // Specific attribute does not exist.
	PredicateTypeEnumEndsWith                   PredicateTypeEnum = "ends_with"                    // Ends with a specific value.
	PredicateTypeEnumEquals                     PredicateTypeEnum = "equals"                       // Equals a specific value.
	PredicateTypeEnumExists                     PredicateTypeEnum = "exists"                       // Specific attribute exists.
	PredicateTypeEnumGreaterThanOrEqualTo       PredicateTypeEnum = "greater_than_or_equal_to"     // Greater than or equal to a specific value (numeric only).
	PredicateTypeEnumLessThanOrEqualTo          PredicateTypeEnum = "less_than_or_equal_to"        // Less than or equal to a specific value (numeric only).
	PredicateTypeEnumStartsWith                 PredicateTypeEnum = "starts_with"                  // Starts with a specific value.
	PredicateTypeEnumSatisfiesVersionConstraint PredicateTypeEnum = "satisfies_version_constraint" // Satisfies version constraint (tag value only).
	PredicateTypeEnumMatchesRegex               PredicateTypeEnum = "matches_regex"                // Matches a value using a regular expression.
	PredicateTypeEnumBelongsTo                  PredicateTypeEnum = "belongs_to"                   // Belongs to a group's hierarchy.
	PredicateTypeEnumSatisfiesJqExpression      PredicateTypeEnum = "satisfies_jq_expression"      // Satisfies an expression defined in jq.
)

type PredicateUpdateInput

type PredicateUpdateInput struct {
	Type  PredicateTypeEnum `json:"type,omitempty"`
	Value string            `json:"value,omitempty"`
}

type Repository

type Repository struct {
	ArchivedAt         iso8601.Time
	CreatedOn          iso8601.Time
	DefaultAlias       string
	DefaultBranch      string
	Description        string
	Forked             bool
	HtmlUrl            string
	Id                 graphql.ID
	Languages          []Language
	LastOwnerChangedAt iso8601.Time
	Name               string
	Organization       string
	Owner              TeamId
	Private            bool
	RepoKey            string
	Services           RepositoryServiceConnection
	Tags               RepositoryTagConnection
	Tier               Tier
	Type               string
	Url                string
	Visible            bool
}

func (*Repository) GetService

func (r *Repository) GetService(service graphql.ID, directory string) *ServiceRepository

func (*Repository) Hydrate

func (r *Repository) Hydrate(client *Client) error

type RepositoryConnection

type RepositoryConnection struct {
	HiddenCount       int
	Nodes             []Repository
	OrganizationCount int
	OwnedCount        int
	PageInfo          PageInfo
	TotalCount        int
	VisibleCount      int
}

func (*RepositoryConnection) Hydrate

func (conn *RepositoryConnection) Hydrate(client *Client) error

type RepositoryFileCheckFragment

type RepositoryFileCheckFragment struct {
	DirectorySearch       bool       `graphql:"directorySearch"`
	Filepaths             []string   `graphql:"filePaths"`
	FileContentsPredicate *Predicate `graphql:"fileContentsPredicate"`
	UseAbsoluteRoot       bool       `graphql:"useAbsoluteRoot"`
}

type RepositoryGrepCheckFragment added in v2022.12.16

type RepositoryGrepCheckFragment struct {
	DirectorySearch       bool       `graphql:"directorySearch"`
	Filepaths             []string   `graphql:"filePaths"`
	FileContentsPredicate *Predicate `graphql:"fileContentsPredicate"`
}

type RepositoryId

type RepositoryId struct {
	Id           graphql.ID
	DefaultAlias string
}

Lightweight Repository struct used to make some API calls return less data

type RepositoryPath

type RepositoryPath struct {
	Href string
	Path string
}

type RepositorySearchCheckFragment

type RepositorySearchCheckFragment struct {
	FileExtensions        []string  `graphql:"fileExtensions"`
	FileContentsPredicate Predicate `graphql:"fileContentsPredicate"`
}

type RepositoryServiceConnection

type RepositoryServiceConnection struct {
	Edges      []RepositoryServiceEdge
	PageInfo   PageInfo
	TotalCount graphql.Int
}

func (*RepositoryServiceConnection) Hydrate

func (conn *RepositoryServiceConnection) Hydrate(id graphql.ID, client *Client) error

type RepositoryServiceEdge

type RepositoryServiceEdge struct {
	AtRoot              bool
	Node                ServiceId
	Paths               []RepositoryPath
	ServiceRepositories []ServiceRepository
}

type RepositoryTagConnection

type RepositoryTagConnection struct {
	Nodes      []Tag
	PageInfo   PageInfo
	TotalCount graphql.Int
}

func (*RepositoryTagConnection) Hydrate

func (conn *RepositoryTagConnection) Hydrate(id graphql.ID, client *Client) error

type ResourceDeletePayload

type ResourceDeletePayload struct {
	Alias  string           `graphql:"deletedAlias" json:"alias,omitempty"`
	Id     graphql.ID       `graphql:"deletedId" json:"id,omitempty"`
	Errors []OpsLevelErrors `graphql:"errors" json:"errors,omitempty"`
}

type RestResponse

type RestResponse struct {
	Result  string `json:"result"`
	Message string `json:"message"`
}

type Runner added in v2022.7.20

type Runner struct {
	Id     graphql.ID           `json:"id"`
	Status RunnerStatusTypeEnum `json:"status"`
}

type RunnerAppendJobLogInput added in v2022.7.20

type RunnerAppendJobLogInput struct {
	RunnerId    graphql.ID   `json:"runnerId"`
	RunnerJobId graphql.ID   `json:"runnerJobId"`
	SentAt      iso8601.Time `json:"sentAt"`
	Logs        []string     `json:"logChunk"`
}

type RunnerJob added in v2022.7.20

type RunnerJob struct {
	Commands  []string             `json:"commands"`
	Id        graphql.ID           `json:"id"`
	Image     string               `json:"image"`
	Outcome   RunnerJobOutcomeEnum `json:"outcome"`
	Status    RunnerJobStatusEnum  `json:"status"`
	Variables []RunnerJobVariable  `json:"variables"`
	Files     []RunnerJobFile      `json:"files"`
}

func (*RunnerJob) Number added in v2022.8.25

func (j *RunnerJob) Number() string

type RunnerJobFile added in v2022.8.25

type RunnerJobFile struct {
	Name     string `json:"name"`
	Contents string `json:"contents"`
}

type RunnerJobOutcomeEnum added in v2022.7.20

type RunnerJobOutcomeEnum string

RunnerJobOutcomeEnum represents the runner job outcome.

const (
	RunnerJobOutcomeEnumUnstarted        RunnerJobOutcomeEnum = "unstarted"         // translation missing: en.graphql.types.runner_job_outcome_enum.unstarted.
	RunnerJobOutcomeEnumCanceled         RunnerJobOutcomeEnum = "canceled"          // Job was canceled.
	RunnerJobOutcomeEnumFailed           RunnerJobOutcomeEnum = "failed"            // Job failed during execution.
	RunnerJobOutcomeEnumSuccess          RunnerJobOutcomeEnum = "success"           // Job succeded the execution.
	RunnerJobOutcomeEnumQueueTimeout     RunnerJobOutcomeEnum = "queue_timeout"     // Job was not assigned to a runner for too long.
	RunnerJobOutcomeEnumExecutionTimeout RunnerJobOutcomeEnum = "execution_timeout" // Job run took too long to complete, and was marked as failed.
	RunnerJobOutcomeEnumPodTimeout       RunnerJobOutcomeEnum = "pod_timeout"       // A pod could not be scheduled for the job in time.
)

type RunnerJobOutcomeVariable added in v2022.7.20

type RunnerJobOutcomeVariable struct {
	Key   string `json:"key"`
	Value string `json:"value"`
}

type RunnerJobStatusEnum added in v2022.7.20

type RunnerJobStatusEnum string

RunnerJobStatusEnum represents the runner job status.

const (
	RunnerJobStatusEnumCreated  RunnerJobStatusEnum = "created"  // A created runner job, but not yet ready to be run.
	RunnerJobStatusEnumPending  RunnerJobStatusEnum = "pending"  // A runner job ready to be run.
	RunnerJobStatusEnumRunning  RunnerJobStatusEnum = "running"  // A runner job being run by a runner.
	RunnerJobStatusEnumComplete RunnerJobStatusEnum = "complete" // A finished runner job.
)
const (
	RunnerStatusTypeEnumInactive   RunnerJobStatusEnum = "inactive"   // The runner will not actively take jobs.
	RunnerStatusTypeEnumRegistered RunnerJobStatusEnum = "registered" // The runner will process jobs.
)

type RunnerJobVariable added in v2022.7.20

type RunnerJobVariable struct {
	Key       string `json:"key"`
	Sensitive bool   `json:"sensitive"`
	Value     string `json:"value"`
}

type RunnerReportJobOutcomeInput added in v2022.7.20

type RunnerReportJobOutcomeInput struct {
	RunnerId         graphql.ID                 `json:"runnerId"`
	RunnerJobId      graphql.ID                 `json:"runnerJobId"`
	Outcome          RunnerJobOutcomeEnum       `json:"outcome"`
	OutcomeVariables []RunnerJobOutcomeVariable `json:"outcomeVariables,omitempty"`
}

type RunnerScale added in v2022.12.16

type RunnerScale struct {
	RecommendedReplicaCount int `json:"recommendedReplicaCount"`
}

type RunnerStatusTypeEnum added in v2022.7.20

type RunnerStatusTypeEnum string

RunnerStatusTypeEnum represents The status of an OpsLevel runner.

type Service

type Service struct {
	ApiDocumentPath string `json:"apiDocumentPath,omitempty"`
	Description     string `json:"description,omitempty"`
	Framework       string `json:"framework,omitempty"`
	HtmlURL         string `json:"htmlUrl"`
	ServiceId
	Language                   string                      `json:"language,omitempty"`
	Lifecycle                  Lifecycle                   `json:"lifecycle,omitempty"`
	Name                       string                      `json:"name,omitempty"`
	Owner                      TeamId                      `json:"owner,omitempty"`
	PreferredApiDocument       *ServiceDocument            `json:"preferredApiDocument,omitempty"`
	PreferredApiDocumentSource *ApiDocumentSourceEnum      `json:"preferredApiDocumentSource,omitempty"`
	Product                    string                      `json:"product,omitempty"`
	Repositories               ServiceRepositoryConnection `json:"repos,omitempty" graphql:"repos"`
	Tags                       TagConnection               `json:"tags,omitempty"`
	Tier                       Tier                        `json:"tier,omitempty"`
	Timestamps                 Timestamps                  `json:"timestamps"`
	Tools                      ToolConnection              `json:"tools,omitempty"`
}

func (*Service) Documents added in v2022.8.1

func (s *Service) Documents(client *Client) ([]ServiceDocument, error)

func (*Service) HasAlias

func (s *Service) HasAlias(alias string) bool

func (*Service) HasTag

func (s *Service) HasTag(key string, value string) bool

func (*Service) HasTool

func (s *Service) HasTool(category ToolCategory, name string, environment string) bool

func (*Service) Hydrate

func (s *Service) Hydrate(client *Client) error

type ServiceConnection

type ServiceConnection struct {
	Nodes      []Service
	PageInfo   PageInfo
	TotalCount graphql.Int
}

func (*ServiceConnection) Hydrate

func (conn *ServiceConnection) Hydrate(client *Client) error

func (*ServiceConnection) Query

func (conn *ServiceConnection) Query(client *Client, q interface{}, v PayloadVariables) ([]Service, error)

TODO: maybe we can find a way to merge ServiceConnection.Query & Hydrate

type ServiceCreateInput

type ServiceCreateInput struct {
	Name        string `json:"name"`
	Product     string `json:"product,omitempty"`
	Description string `json:"description,omitempty"`
	Language    string `json:"language,omitempty"`
	Framework   string `json:"framework,omitempty"`
	Tier        string `json:"tierAlias,omitempty"`
	Owner       string `json:"ownerAlias,omitempty"`
	Lifecycle   string `json:"lifecycleAlias,omitempty"`
}

type ServiceDeleteInput

type ServiceDeleteInput struct {
	Id    graphql.ID `json:"id,omitempty"`
	Alias string     `json:"alias,omitempty"`
}

type ServiceDocument added in v2022.8.1

type ServiceDocument struct {
	Id         graphql.ID            `graphql:"id" json:"id"`
	HtmlURL    string                `graphql:"htmlUrl" json:"htmUrl,omitempty"`
	Source     ServiceDocumentSource `graphql:"source" json:"source"`
	Timestamps Timestamps            `graphql:"timestamps" json:"timestamps"`
}

type ServiceDocumentContent added in v2022.8.1

type ServiceDocumentContent struct {
	ServiceDocument
	Content string `graphql:"content" json:"content,omitempty"`
}

type ServiceDocumentSource added in v2022.8.1

type ServiceDocumentSource struct {
	Integration       `graphql:"... on ApiDocIntegration"`
	ServiceRepository `graphql:"... on ServiceRepository"`
}

type ServiceId

type ServiceId struct {
	Id      graphql.ID `json:"id"`
	Aliases []string   `json:"aliases,omitempty"`
}

type ServiceMaturity

type ServiceMaturity struct {
	Name           string
	MaturityReport MaturityReport
}

type ServiceOwnershipCheckContactType added in v2022.8.1

type ServiceOwnershipCheckContactType string

ContactType represents the method of contact.

const (
	ServiceOwnershipCheckContactTypeAny         ServiceOwnershipCheckContactType = "any"          // Any contact method.
	ServiceOwnershipCheckContactTypeSlack       ServiceOwnershipCheckContactType = "slack"        // A Slack channel contact method.
	ServiceOwnershipCheckContactTypeSlackHandle ServiceOwnershipCheckContactType = "slack_handle" // A Slack handle contact method.
	ServiceOwnershipCheckContactTypeEmail       ServiceOwnershipCheckContactType = "email"        // An email contact method.
	ServiceOwnershipCheckContactTypeWeb         ServiceOwnershipCheckContactType = "web"          // A website contact method.
)

type ServiceOwnershipCheckFragment

type ServiceOwnershipCheckFragment struct {
	RequireContactMethod *bool                             `graphql:"requireContactMethod"`
	ContactMethod        *ServiceOwnershipCheckContactType `graphql:"contactMethod"`
	TeamTagKey           string                            `graphql:"tagKey"`
	TeamTagPredicate     *Predicate                        `graphql:"tagPredicate"`
}

type ServicePropertyCheckFragment

type ServicePropertyCheckFragment struct {
	Property  ServicePropertyTypeEnum `graphql:"serviceProperty"`
	Predicate *Predicate              `graphql:"propertyValuePredicate"`
}

type ServicePropertyTypeEnum

type ServicePropertyTypeEnum string

ServicePropertyTypeEnum represents properties of services that can be validated.

const (
	ServicePropertyTypeEnumDescription    ServicePropertyTypeEnum = "description"     // The description of a service.
	ServicePropertyTypeEnumName           ServicePropertyTypeEnum = "name"            // The name of a service.
	ServicePropertyTypeEnumLanguage       ServicePropertyTypeEnum = "language"        // The primary programming language of a service.
	ServicePropertyTypeEnumFramework      ServicePropertyTypeEnum = "framework"       // The primary software development framework of a service.
	ServicePropertyTypeEnumProduct        ServicePropertyTypeEnum = "product"         // The product that is associated with a service.
	ServicePropertyTypeEnumLifecycleIndex ServicePropertyTypeEnum = "lifecycle_index" // The index of the lifecycle a service belongs to.
	ServicePropertyTypeEnumTierIndex      ServicePropertyTypeEnum = "tier_index"      // The index of the tier a service belongs to.
)

type ServiceRepository

type ServiceRepository struct {
	BaseDirectory string
	DisplayName   string
	Id            graphql.ID
	Repository    RepositoryId
	Service       ServiceId
}

type ServiceRepositoryConnection

type ServiceRepositoryConnection struct {
	Edges      []ServiceRepositoryEdge
	PageInfo   PageInfo
	TotalCount graphql.Int
}

func (*ServiceRepositoryConnection) Hydrate

func (conn *ServiceRepositoryConnection) Hydrate(id graphql.ID, client *Client) error

type ServiceRepositoryCreateInput

type ServiceRepositoryCreateInput struct {
	Service       IdentifierInput `json:"service"`
	Repository    IdentifierInput `json:"repository"`
	BaseDirectory string          `json:"baseDirectory"`
	DisplayName   string          `json:"displayName,omitempty"`
}

type ServiceRepositoryEdge

type ServiceRepositoryEdge struct {
	Node                RepositoryId
	ServiceRepositories []ServiceRepository
}

type ServiceRepositoryUpdateInput

type ServiceRepositoryUpdateInput struct {
	Id            graphql.ID `json:"id"`
	BaseDirectory string     `json:"baseDirectory,omitempty"`
	DisplayName   string     `json:"displayName,omitempty"`
}

type ServiceUpdateInput

type ServiceUpdateInput struct {
	Id          graphql.ID `json:"id,omitempty"`
	Alias       string     `json:"alias,omitempty"`
	Name        string     `json:"name,omitempty"`
	Product     string     `json:"product,omitempty"`
	Description string     `json:"description,omitempty"`
	Language    string     `json:"language,omitempty"`
	Framework   string     `json:"framework,omitempty"`
	Tier        string     `json:"tierAlias,omitempty"`
	Owner       string     `json:"ownerAlias,omitempty"`
	Lifecycle   string     `json:"lifecycleAlias,omitempty"`
}

type Tag

type Tag struct {
	Id    graphql.ID `json:"id"`
	Key   string     `json:"key"`
	Value string     `json:"value"`
}

type TagArgs

type TagArgs struct {
	Key   string `json:"key,omitempty"`
	Value string `json:"value,omitempty"`
}

func NewTagArgs

func NewTagArgs(tag string) TagArgs

type TagAssignInput

type TagAssignInput struct {
	Id    graphql.ID       `json:"id,omitempty"`
	Alias string           `json:"alias,omitempty"`
	Type  TaggableResource `json:"type,omitempty"`
	Tags  []TagInput       `json:"tags"`
}

type TagConnection

type TagConnection struct {
	Nodes      []Tag
	PageInfo   PageInfo
	TotalCount int
}

func (*TagConnection) Hydrate

func (conn *TagConnection) Hydrate(service graphql.ID, client *Client) error

type TagCreateInput

type TagCreateInput struct {
	Id    graphql.ID       `json:"id"`
	Alias string           `json:"alias,omitempty"`
	Type  TaggableResource `json:"type,omitempty"`
	Key   string           `json:"key"`
	Value string           `json:"value"`
}

type TagDefinedCheckFragment

type TagDefinedCheckFragment struct {
	TagKey       string     `graphql:"tagKey"`
	TagPredicate *Predicate `graphql:"tagPredicate"`
}

type TagDeleteInput

type TagDeleteInput struct {
	Id graphql.ID `json:"id"`
}

type TagInput

type TagInput struct {
	Key   string `json:"key"`
	Value string `json:"value"`
}

type TagOwner

type TagOwner string
const (
	TagOwnerService    TagOwner = "Service"
	TagOwnerRepository TagOwner = "Repository"
)

type TagUpdateInput

type TagUpdateInput struct {
	Id    graphql.ID `json:"id"`
	Key   string     `json:"key,omitempty"`
	Value string     `json:"value,omitempty"`
}

type TaggableResource

type TaggableResource string

TaggableResource represents possible types to apply tags to.

const (
	TaggableResourceService    TaggableResource = "Service"    // Used to identify a Service.
	TaggableResourceRepository TaggableResource = "Repository" // Used to identify a Repository.
	TaggableResourceTeam       TaggableResource = "Team"       // Used to identify a Team.
)

type Team

type Team struct {
	TeamId

	Aliases          []string
	Contacts         []Contact
	Group            GroupId
	HTMLUrl          string
	Manager          User
	Members          UserConnection
	Name             string
	Responsibilities string
	Tags             TagConnection
}

func (*Team) HasTag added in v2022.12.16

func (s *Team) HasTag(key string, value string) bool

func (*Team) Hydrate

func (self *Team) Hydrate(client *Client) error

type TeamConnection

type TeamConnection struct {
	Nodes    []Team
	PageInfo PageInfo
}

func (*TeamConnection) Hydrate

func (conn *TeamConnection) Hydrate(client *Client) error

func (*TeamConnection) Query

func (conn *TeamConnection) Query(client *Client, q interface{}, v PayloadVariables) ([]Team, error)

type TeamCreateInput

type TeamCreateInput struct {
	Name             string           `json:"name"`
	ManagerEmail     string           `json:"managerEmail,omitempty"`
	Responsibilities string           `json:"responsibilities,omitempty"`
	Group            *IdentifierInput `json:"group"`
	Contacts         []ContactInput   `json:"contacts,omitempty"`
}

type TeamDeleteInput

type TeamDeleteInput struct {
	Id    graphql.ID `json:"id,omitempty"`
	Alias string     `json:"alias,omitempty"`
}

type TeamId

type TeamId struct {
	Alias string
	Id    graphql.ID
}

type TeamMembershipCreateInput

type TeamMembershipCreateInput struct {
	TeamId  graphql.ID                `json:"teamId"`
	Members []TeamMembershipUserInput `json:"members"`
}

type TeamMembershipDeleteInput

type TeamMembershipDeleteInput struct {
	TeamId  graphql.ID                `json:"teamId"`
	Members []TeamMembershipUserInput `json:"members"`
}

type TeamMembershipUserInput

type TeamMembershipUserInput struct {
	Email string `json:"email"`
}

func BuildMembershipInput

func BuildMembershipInput(members []string) (output []TeamMembershipUserInput)

type TeamUpdateInput

type TeamUpdateInput struct {
	Id               graphql.ID       `json:"id,omitempty"`
	Alias            string           `json:"alias,omitempty"`
	Name             string           `json:"name,omitempty"`
	ManagerEmail     string           `json:"managerEmail,omitempty"`
	Group            *IdentifierInput `json:"group"`
	Responsibilities string           `json:"responsibilities,omitempty"`
}

type Tier

type Tier struct {
	Alias       string
	Description string
	Id          graphql.ID
	Index       int
	Name        string
}

type Timestamps added in v2022.8.1

type Timestamps struct {
	CreatedAt iso8601.Time `json:"createdAt"`
	UpdatedAt iso8601.Time `json:"updatedAt"`
}

type Tool

type Tool struct {
	Category      ToolCategory
	CategoryAlias string `json:",omitempty"`
	DisplayName   string
	Environment   string     `json:",omitempty"`
	Id            graphql.ID `json:",omitempty"`
	Url           string
	Service       ServiceId
}

type ToolCategory

type ToolCategory string

ToolCategory represents the specific categories that a tool can belong to.

const (
	ToolCategoryAdmin                 ToolCategory = "admin"                  // Tools used for administrative purposes.
	ToolCategoryAPIDocumentation      ToolCategory = "api_documentation"      // Tools used as API documentation for this service.
	ToolCategoryCode                  ToolCategory = "code"                   // Tools used for source code.
	ToolCategoryContinuousIntegration ToolCategory = "continuous_integration" // Tools used for building/unit testing a service.
	ToolCategoryDeployment            ToolCategory = "deployment"             // Tools used for deploying changes to a service.
	ToolCategoryErrors                ToolCategory = "errors"                 // Tools used for tracking/reporting errors.
	ToolCategoryFeatureFlag           ToolCategory = "feature_flag"           // Tools used for managing feature flags.
	ToolCategoryHealthChecks          ToolCategory = "health_checks"          // Tools used for tracking/reporting the health of a service.
	ToolCategoryIncidents             ToolCategory = "incidents"              // Tools used to surface incidents on a service.
	ToolCategoryIssueTracking         ToolCategory = "issue_tracking"         // Tools used for tracking issues.
	ToolCategoryLogs                  ToolCategory = "logs"                   // Tools used for displaying logs from services.
	ToolCategoryMetrics               ToolCategory = "metrics"                // Tools used for tracking/reporting service metrics.
	ToolCategoryOrchestrator          ToolCategory = "orchestrator"           // Tools used for orchestrating a service.
	ToolCategoryResiliency            ToolCategory = "resiliency"             // Tools used for testing the resiliency of a service.
	ToolCategoryRunbooks              ToolCategory = "runbooks"               // Tools used for managing runbooks for a service.
	ToolCategorySecurityScans         ToolCategory = "security_scans"         // Tools used for performing security scans.
	ToolCategoryStatusPage            ToolCategory = "status_page"            // Tools used for reporting the status of a service.
	ToolCategoryWiki                  ToolCategory = "wiki"                   // Tools used as a wiki for this service.
	ToolCategoryOther                 ToolCategory = "other"                  // Tools that do not fit into the available categories.
)

type ToolConnection

type ToolConnection struct {
	Nodes      []Tool
	PageInfo   PageInfo
	TotalCount int
}

func (*ToolConnection) Hydrate

func (conn *ToolConnection) Hydrate(service graphql.ID, client *Client) error

type ToolCreateInput

type ToolCreateInput struct {
	Category     ToolCategory `json:"category"`
	DisplayName  string       `json:"displayName"`
	Url          string       `json:"url"`
	Environment  string       `json:"environment,omitempty"`
	ServiceId    graphql.ID   `json:"serviceId,omitempty"`
	ServiceAlias string       `json:"serviceAlias,omitempty"`
}

type ToolDeleteInput

type ToolDeleteInput struct {
	Id graphql.ID `json:"id"`
}

type ToolUpdateInput

type ToolUpdateInput struct {
	Id          graphql.ID   `json:"id"`
	Category    ToolCategory `json:"category,omitempty"`
	DisplayName string       `json:"displayName,omitempty"`
	Url         string       `json:"url,omitempty"`
	Environment string       `json:"environment,omitempty"`
}

type ToolUsageCheckFragment

type ToolUsageCheckFragment struct {
	ToolCategory         ToolCategory `graphql:"toolCategory"`
	ToolNamePredicate    *Predicate   `graphql:"toolNamePredicate"`
	ToolUrlPredicate     *Predicate   `graphql:"toolUrlPredicate"`
	EnvironmentPredicate *Predicate   `graphql:"environmentPredicate"`
}

type User

type User struct {
	Email   string
	HTMLUrl string
	Id      graphql.ID
	Name    string
	Role    UserRole
}

func (*User) Teams

func (u *User) Teams(client *Client) ([]Team, error)

type UserConnection

type UserConnection struct {
	Nodes    []User
	PageInfo PageInfo
}

func (*UserConnection) Hydrate

func (conn *UserConnection) Hydrate(id graphql.ID, client *Client) error

type UserId

type UserId struct {
	Email string
	Id    graphql.ID
}

type UserIdentifierInput

type UserIdentifierInput struct {
	Id    graphql.ID     `graphql:"id" json:"id,omitempty"`
	Email graphql.String `graphql:"email" json:"email,omitempty"`
}

func NewUserIdentifier

func NewUserIdentifier(value string) UserIdentifierInput

type UserInput

type UserInput struct {
	Name string   `json:"name,omitempty"`
	Role UserRole `json:"role,omitempty"`
}

type UserRole

type UserRole string

UserRole represents a role that can be assigned to a user.

const (
	UserRoleUser  UserRole = "user"  // A regular user on the account.
	UserRoleAdmin UserRole = "admin" // An administrator on the account.
)

Directories

Path Synopsis
Wrapping the client can be useful when you want to override default behavior, such as always setting context or disallowing (to the best of Go's ability) access to specific receiver functions on `opslevel.Client`.
Wrapping the client can be useful when you want to override default behavior, such as always setting context or disallowing (to the best of Go's ability) access to specific receiver functions on `opslevel.Client`.

Jump to

Keyboard shortcuts

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