proto/wg/cosmo/platform/v1/platform.proto (2,435 lines of code) (raw):
// https://protobuf.dev/programming-guides/style/
syntax = "proto3";
package wg.cosmo.platform.v1;
import "wg/cosmo/common/common.proto";
import "wg/cosmo/notifications/events.proto";
message Label {
string key = 1;
string value = 2;
}
message Response {
wg.cosmo.common.EnumStatusCode code = 1;
// details is an optional field which can be used to provide more details about the error.
optional string details = 2;
}
message ResponseStatus {
int32 code = 1;
string message = 2;
}
message PublishMonographRequest {
string name = 1;
string namespace = 2;
string schema = 3;
}
message PublishMonographResponse {
Response response = 1;
repeated CompositionError compositionErrors = 2;
repeated DeploymentError deploymentErrors = 3;
repeated CompositionWarning compositionWarnings = 4;
}
message PublishFederatedSubgraphRequest {
// The FQDN of the subgraph to be published e.g. "wg.team1.orders"
string name = 1;
// The string representation of the schema, the content of the file
string schema = 2;
// The routing_url is the URL of the service which will be used to route the requests to the subgraph.
optional string routing_url = 3;
// The labels are the labels of the services which will form the federated graph. If the proposed is not valid, the service will be rejected.
repeated Label labels = 4;
// The subscription protocol to use when subscribing to this subgraph
optional wg.cosmo.common.GraphQLSubscriptionProtocol subscription_protocol = 6;
// The url used for subscriptions
optional string subscription_url = 7;
// The namespace of the subgraph
string namespace = 8;
// The subscription subprotocol to use when subscribing to this subgraph
optional wg.cosmo.common.GraphQLWebsocketSubprotocol websocket_subprotocol = 9;
optional bool is_feature_subgraph = 10;
optional string base_subgraph_name = 11;
}
message PublishFederatedSubgraphResponse {
Response response = 1;
repeated CompositionError compositionErrors = 2;
repeated DeploymentError deploymentErrors = 3;
optional bool hasChanged = 4;
repeated CompositionWarning compositionWarnings = 5;
}
message GitInfo {
string commit_sha = 1;
string account_id = 2;
string owner_slug = 3;
string repository_slug = 4;
}
message VCSContext {
string author = 1;
string commit_sha = 2;
string branch = 3;
}
message CheckSubgraphSchemaRequest {
// The FQDN of the subgraph to be checked e.g. "wg.team1.orders"
string subgraph_name = 1;
// The binary representation of the schema, the content of the file
bytes schema = 2;
GitInfo gitInfo = 3;
// Check breaking changes and composition when this subgraph is deleted
optional bool delete = 4;
string namespace = 5;
optional bool skip_traffic_check = 6;
optional VCSContext vcsContext = 7;
}
message FixSubgraphSchemaRequest {
// The FQDN of the subgraph to be checked e.g. "wg.team1.orders"
string subgraph_name = 1;
// The string representation of the schema, the content of the file
string schema = 2;
string namespace = 3;
}
message CreateMonographRequest {
string name = 1;
string namespace = 2;
string routing_url = 3;
string graph_url = 4;
optional string subscription_url = 5;
optional wg.cosmo.common.GraphQLSubscriptionProtocol subscription_protocol = 6;
optional string readme = 7;
string admissionWebhookURL = 8;
// The subscription protocol to use when subscribing to this subgraph
optional wg.cosmo.common.GraphQLWebsocketSubprotocol websocket_subprotocol = 9;
optional string admissionWebhookSecret = 10;
}
message CreateMonographResponse {
Response response = 1;
}
message CreateFederatedGraphRequest {
// name is the FQDN of the federated graph e.g. "wg.main"
string name = 1;
// routing_url is the URL of the service which will be used to route the requests to the subgraph.
string routing_url = 2;
// label_matchers match the labels of the services which will form the federated graph. If the proposed schema composition is invalid, it will be rejected.
repeated string label_matchers = 3;
// readme of the fed graph
optional string readme = 4;
string namespace = 5;
string admissionWebhookURL = 6;
optional string admissionWebhookSecret = 7;
}
message CreateFederatedSubgraphRequest {
// The FQDN of the subgraph to be published e.g. "wg.team1.orders"
string name = 1;
// routing_url is the URL of the service which will be used to route the requests to the subgraph.
optional string routing_url = 2;
// labels are the labels of the services which will form the federated graph. If the proposed is not valid, the service will be rejected.
repeated Label labels = 3;
// subscription protocol to use when subscribing to this subgraph
optional wg.cosmo.common.GraphQLSubscriptionProtocol subscription_protocol = 5;
// url used for subscriptions
optional string subscription_url = 6;
// readme of the subgraph
optional string readme = 7;
string namespace = 8;
optional wg.cosmo.common.GraphQLWebsocketSubprotocol websocket_subprotocol = 9;
optional bool is_event_driven_graph = 10;
optional bool is_feature_subgraph = 11;
optional string base_subgraph_name = 12;
}
message DeleteFederatedGraphRequest {
string name = 1;
string namespace = 2;
}
message DeleteMonographRequest {
string name = 1;
string namespace = 2;
}
message DeleteMonographResponse {
Response response = 1;
}
message DeleteFederatedSubgraphRequest {
// The FQDN of the subgraph to be checked e.g. "wg.team1.orders"
string subgraph_name = 1;
string namespace = 2;
}
message SchemaChange{
string message = 1;
string changeType = 2;
optional string path = 3;
bool isBreaking = 4;
optional bool hasOverride = 5;
}
message CompositionError {
string message = 1;
string federatedGraphName = 2;
string namespace = 3;
string featureFlag = 4;
}
message CompositionWarning {
string message = 1;
string federatedGraphName = 2;
string namespace = 3;
string featureFlag = 4;
}
message DeploymentError {
string message = 1;
string federatedGraphName = 2;
string namespace = 3;
}
message CheckOperationUsageStats {
uint32 totalOperations = 1;
string firstSeenAt = 2;
string lastSeenAt = 3;
uint32 safeOperations = 4;
}
message CheckedFederatedGraphs {
string id = 1;
string name = 2;
string namespace = 3;
string organization_slug = 4;
}
enum LintSeverity {
warn = 0;
error = 1;
}
message LintLocation{
uint32 line = 1;
uint32 column = 2;
optional uint32 endLine = 3;
optional uint32 endColumn = 4;
}
message LintIssue{
optional string lintRuleType = 1;
LintSeverity severity = 2;
string message = 3;
LintLocation issueLocation = 4;
}
message GraphPruningIssue{
string graphPruningRuleType = 1;
LintSeverity severity = 2;
string fieldPath = 3;
string message = 4;
LintLocation issueLocation = 5;
string federatedGraphName = 6;
}
message CheckSubgraphSchemaResponse {
Response response = 1;
repeated SchemaChange breakingChanges = 2;
repeated SchemaChange nonBreakingChanges = 3;
repeated CompositionError compositionErrors = 4;
// Contains the operation usage stats for the operations that are impacted by the schema changes.
CheckOperationUsageStats operationUsageStats = 5;
string check_id = 6;
repeated CheckedFederatedGraphs checked_federated_graphs = 7;
repeated LintIssue lintWarnings = 8;
repeated LintIssue lintErrors = 9;
repeated GraphPruningIssue graphPruneWarnings = 10;
repeated GraphPruningIssue graphPruneErrors = 11;
optional bool client_traffic_check_skipped = 12;
repeated CompositionWarning compositionWarnings = 13;
}
message FixSubgraphSchemaResponse {
Response response = 1;
bool modified = 2;
string schema = 3;
}
message CreateFederatedGraphResponse {
Response response = 1;
repeated CompositionError compositionErrors = 2;
repeated DeploymentError deploymentErrors = 3;
repeated CompositionWarning compositionWarnings = 4;
}
message CreateFederatedSubgraphResponse {
Response response = 1;
}
message DeleteFederatedSubgraphResponse {
Response response = 1;
repeated CompositionError compositionErrors = 2;
repeated DeploymentError deploymentErrors = 3;
repeated CompositionWarning compositionWarnings = 4;
}
message DeleteFederatedGraphResponse {
Response response = 1;
}
message GetFederatedGraphsRequest {
int32 limit = 1;
int32 offset = 2;
bool includeMetrics = 3;
string namespace = 4;
optional bool supports_federation = 5;
}
message Contract {
string id = 1;
string source_federated_graph_id = 2;
repeated string exclude_tags = 3;
repeated string include_tags = 4;
}
message FederatedGraph {
string id = 1;
string name = 2;
string routingURL = 3;
repeated string label_matchers = 4;
string lastUpdatedAt = 5;
bool isComposable = 6;
string compositionErrors = 7;
int32 connectedSubgraphs = 8;
repeated RequestSeriesItem requestSeries = 9;
optional string readme = 10;
string target_id = 11;
string namespace = 12;
optional string compositionId = 13;
bool supports_federation = 14;
optional Contract contract = 15;
optional string admission_webhook_url = 16;
string router_compatibility_version = 17;
}
message GetFederatedGraphsResponse {
Response response = 1;
repeated FederatedGraph graphs = 2;
}
message GetFederatedGraphsBySubgraphLabelsRequest {
string subgraphName = 1;
string namespace = 2;
}
message GetFederatedGraphsBySubgraphLabelsResponse {
Response response = 1;
repeated FederatedGraph graphs = 2;
}
message GetSubgraphsRequest {
int32 limit = 1;
int32 offset = 2;
string namespace = 3;
optional string query = 4;
bool exclude_feature_subgraphs = 5;
}
message Subgraph {
string id = 1;
string name = 2;
string routingURL = 3;
string lastUpdatedAt = 4;
repeated Label labels = 5;
optional string creatorUserId = 6;
optional string readme = 7;
string subscriptionUrl = 8;
string target_id = 9;
string namespace = 10;
string subscriptionProtocol = 11;
optional bool isV2Graph = 12;
bool isEventDrivenGraph = 13;
string websocketSubprotocol = 14;
bool isFeatureSubgraph = 15;
optional string baseSubgraphName = 16;
optional string baseSubgraphId = 17;
}
message GetSubgraphsResponse {
Response response = 1;
repeated Subgraph graphs = 2;
int32 count = 3;
}
message GetFederatedGraphByNameRequest {
string name = 1;
bool includeMetrics = 2;
string namespace = 3;
}
message GetFederatedGraphByNameResponse {
Response response = 1;
FederatedGraph graph = 2;
repeated Subgraph subgraphs = 3;
string graphRequestToken = 4;
repeated FeatureFlag featureFlagsInLatestValidComposition = 5;
// includes all the feature subgraphs that are part of the federated graph;
// even the ones that are not part of the latest composition
repeated Subgraph featureSubgraphs = 6;
}
message GetFederatedGraphSDLByNameRequest {
string name = 1;
string namespace = 2;
optional string feature_flag_name = 3;
}
message GetFederatedGraphSDLByNameResponse {
Response response = 1;
optional string sdl = 2;
optional string version_id = 3;
optional string client_schema = 4;
}
message GetSubgraphByNameRequest {
string name = 1;
string namespace = 2;
}
message GetSubgraphByNameResponse {
Response response = 1;
Subgraph graph = 2;
repeated SubgraphMember members = 3;
}
message GetSubgraphSDLFromLatestCompositionRequest {
string name = 1;
string fedGraphName = 2;
string namespace = 3;
}
message GetSubgraphSDLFromLatestCompositionResponse {
Response response = 1;
optional string sdl = 2;
optional string version_id = 3;
}
message GetLatestSubgraphSDLRequest {
string name = 1;
string namespace = 2;
}
message GetLatestSubgraphSDLResponse {
Response response = 1;
optional string sdl = 2;
optional string version_id = 3;
}
message GetChecksByFederatedGraphNameRequest {
string name = 1;
int32 limit = 2;
int32 offset = 3;
string startDate = 4;
string endDate = 5;
string namespace = 6;
}
message SchemaCheck {
message GhDetails {
string commitSha = 1;
string ownerSlug = 2;
string repositorySlug = 3;
}
string id = 1;
string targetID = 2;
string subgraphName = 3;
string timestamp = 4;
bool isComposable = 5;
bool isBreaking = 6;
bool hasClientTraffic = 7;
bool isForcedSuccess = 8;
bool isDeleted = 9;
optional GhDetails ghDetails = 10;
bool hasLintErrors = 11;
bool hasGraphPruningErrors = 12;
bool client_traffic_check_skipped = 13;
bool lint_skipped = 14;
bool graph_pruning_skipped = 15;
optional VCSContext vcsContext = 16;
}
message GetChecksByFederatedGraphNameResponse {
Response response = 1;
repeated SchemaCheck checks = 2;
int32 checksCountBasedOnDateRange = 3;
int32 totalChecksCount = 4;
}
message GetCheckSummaryRequest {
string check_id = 1;
string graph_name = 2;
string namespace = 3;
}
message ChangeCounts {
int32 additions = 1;
int32 deletions = 2;
}
message GetCheckSummaryResponse {
message AffectedGraph {
string id = 1;
int32 traffic_check_days = 2;
}
Response response = 1;
SchemaCheck check = 2;
repeated AffectedGraph affected_graphs = 3;
optional string proposedSubgraphSchemaSDL = 4;
repeated SchemaChange changes = 6;
repeated string compositionErrors = 7;
int32 traffic_check_days = 8;
repeated LintIssue lintIssues = 9;
repeated GraphPruningIssue graphPruningIssues = 10;
repeated string compositionWarnings = 11;
}
message GetCheckOperationsRequest {
string check_id = 1;
string graph_name = 2;
string namespace = 3;
int32 limit = 4;
int32 offset = 5;
}
message GetCheckOperationsResponse {
message CheckOperation {
string hash = 1;
string name = 2;
string type = 3;
string first_seen_at = 4;
string last_seen_at = 5;
repeated SchemaChange impacting_changes = 6;
bool is_safe = 7;
bool hasIgnoreAllOverride = 8;
}
Response response = 1;
repeated CheckOperation operations = 2;
int32 traffic_check_days = 3;
string created_at = 4;
bool client_traffic_check_skipped = 5;
int32 totalOperationsCount = 6;
}
message GetOperationContentRequest {
string hash = 1;
}
message GetOperationContentResponse {
Response response = 1;
string operation_content = 2;
}
message GetFederatedGraphChangelogRequest {
string name = 1;
Pagination pagination = 2;
DateRange dateRange = 3;
string namespace = 4;
}
message FederatedGraphChangelog{
string id = 1;
string path = 2;
string changeType = 3;
string changeMessage = 4;
string createdAt = 5;
}
message FederatedGraphChangelogOutput{
string createdAt = 1;
string schemaVersionId = 2;
repeated FederatedGraphChangelog changelogs = 3;
string compositionId = 4;
}
message GetFederatedGraphChangelogResponse {
Response response = 1;
repeated FederatedGraphChangelogOutput federatedGraphChangelogOutput = 2;
bool hasNextPage = 3;
}
message GetFederatedResponse {
Response response = 1;
string FederatedSchemaSDL = 2;
}
message UpdateSubgraphRequest {
string name = 1;
optional string routing_url = 2;
repeated Label labels = 3;
repeated string headers = 4;
// subscription protocol to use when subscribing to this subgraph
optional wg.cosmo.common.GraphQLSubscriptionProtocol subscription_protocol = 5;
// url used for subscriptions
optional string subscription_url = 6;
optional string readme = 7;
string namespace = 8;
optional bool unset_labels = 9;
optional wg.cosmo.common.GraphQLWebsocketSubprotocol websocket_subprotocol = 10;
}
message UpdateSubgraphResponse {
Response response = 1;
repeated CompositionError compositionErrors = 2;
repeated DeploymentError deploymentErrors = 3;
repeated CompositionWarning compositionWarnings = 4;
}
message UpdateFederatedGraphRequest {
string name = 1;
string routing_url = 2;
repeated string label_matchers = 3;
optional string readme = 4;
string namespace = 5;
optional bool unset_label_matchers = 6;
optional string admissionWebhookURL = 7;
optional string admissionWebhookSecret = 8;
}
message UpdateFederatedGraphResponse {
Response response = 1;
repeated CompositionError compositionErrors = 2;
repeated DeploymentError deploymentErrors = 3;
repeated CompositionWarning compositionWarnings = 4;
}
message UpdateMonographRequest {
string name = 1;
string namespace = 2;
string routing_url = 3;
string graph_url = 4;
optional wg.cosmo.common.GraphQLSubscriptionProtocol subscription_protocol = 5;
optional string subscription_url = 6;
optional string readme = 7;
optional wg.cosmo.common.GraphQLWebsocketSubprotocol websocket_subprotocol = 8;
optional string admissionWebhookURL = 9;
optional string admissionWebhookSecret = 10;
}
message UpdateMonographResponse {
Response response = 1;
}
message CheckFederatedGraphRequest {
string name = 1;
repeated string label_matchers = 2;
string namespace = 3;
}
message CheckFederatedGraphResponse {
Response response = 1;
repeated CompositionError compositionErrors = 2;
repeated Subgraph subgraphs = 3;
repeated CompositionWarning compositionWarnings = 4;
}
message Pagination {
int32 limit = 1;
int32 offset = 2;
}
message Sort {
string id = 1;
bool desc = 2;
}
message AnalyticsConfig {
DateRange dateRange = 1;
optional int32 range = 2;
repeated AnalyticsFilter filters = 3;
Pagination pagination = 4;
optional Sort sort = 5;
}
message AnalyticsFilter {
// The name of the column / attribute to filter on.
string field = 1;
// The value to filter on.
string value = 2;
// The operator to use for the filter.
AnalyticsViewFilterOperator operator = 3;
}
message DateRange {
// The start date of the date range in ISO 8601 format.
string start = 1;
// The end date of the date range in ISO 8601 format.
string end = 2;
}
enum AnalyticsViewGroupName {
None = 0;
OperationName = 1;
Client = 2;
HttpStatusCode = 3;
}
message GetAnalyticsViewRequest {
string federatedGraphName = 1;
AnalyticsViewGroupName name = 2;
AnalyticsConfig config = 3;
string namespace = 4;
}
message AnalyticsViewResult {
repeated AnalyticsViewColumn columns = 1;
repeated AnalyticsViewRow rows = 2;
repeated AnalyticsViewResultFilter filters = 3;
int32 pages = 4;
}
message AnalyticsViewColumn {
string name = 1;
string title = 2;
string type = 3;
optional Unit unit = 4;
optional bool is_hidden = 5;
optional bool is_cta = 6;
}
enum CustomOptions {
Text = 0;
Range = 1;
}
message AnalyticsViewResultFilter {
string columnName = 1;
string title = 2;
repeated AnalyticsViewResultFilterOption options = 3;
optional CustomOptions custom_options = 4;
}
message AnalyticsViewResultFilterOption {
string label = 1;
optional string value = 2;
AnalyticsViewFilterOperator operator = 3;
}
enum Unit {
Unspecified = 0;
Nanoseconds = 1;
UnixTimestamp = 2;
Bytes = 3;
CodeBlock = 4;
StatusCode = 5;
TraceID = 6;
SpanID = 7;
Percentage = 8;
}
enum AnalyticsViewFilterOperator {
EQUALS = 0;
NOT_EQUALS = 1;
GREATER_THAN = 2;
LESS_THAN = 3;
GREATER_THAN_OR_EQUAL = 4;
LESS_THAN_OR_EQUAL = 5;
CONTAINS = 6;
NOT_CONTAINS = 7;
IN = 8;
NOT_IN = 9;
BETWEEN = 10;
NOT_BETWEEN = 11;
IS_NULL = 12;
IS_NOT_NULL = 13;
}
message AnalyticsViewRow {
map<string, AnalyticsViewRowValue> value = 1;
}
message AnalyticsViewRowValue {
// The kind of value.
oneof kind {
// Represents a double value.
double number_value = 1;
// Represents a string value.
string string_value = 2;
// Represents a boolean value.
bool bool_value = 3;
}
}
message GetAnalyticsViewResponse {
Response response = 1;
AnalyticsViewResult view = 2;
}
message GetDashboardAnalyticsViewRequest {
string federatedGraphName = 1;
string startDate = 2;
string endDate = 3;
int32 range = 4;
string namespace = 5;
}
message RequestSeriesItem {
string timestamp = 1;
int32 totalRequests = 2;
int32 erroredRequests = 3;
}
message OperationRequestCount {
string operationHash = 1;
string operationName = 2;
int32 totalRequests = 3;
}
message FederatedGraphMetrics {
string federatedGraphID = 1;
float requestRate = 2;
float errorRate = 3;
float latency = 4;
}
message SubgraphMetrics {
string subgraphID = 1;
float requestRate = 2;
float errorRate = 3;
float latency = 4;
}
message GetDashboardAnalyticsViewResponse {
Response response = 1;
repeated RequestSeriesItem requestSeries = 2;
repeated OperationRequestCount mostRequestedOperations = 3;
repeated SubgraphMetrics subgraphMetrics = 4;
FederatedGraphMetrics federatedGraphMetrics = 5;
}
message CreateFederatedGraphTokenRequest {
string graphName = 1;
string tokenName = 2;
string namespace = 3;
}
message CreateFederatedGraphTokenResponse {
Response response = 1;
string token = 2;
}
message OrgMember{
string userID = 1;
string email = 2;
repeated string roles = 3;
string orgMemberID = 4;
bool active = 5;
}
message PendingOrgInvitation{
string userID = 1;
string email = 2;
}
message GetPendingOrganizationMembersRequest {
Pagination pagination = 1;
optional string search = 2;
}
message GetPendingOrganizationMembersResponse {
Response response = 1;
repeated PendingOrgInvitation pendingInvitations = 2;
int32 total_count = 3;
}
message GetOrganizationMembersRequest {
Pagination pagination = 1;
optional string search = 2;
}
message GetOrganizationMembersResponse {
Response response = 1;
repeated OrgMember members = 2;
int32 total_count = 3;
}
message InviteUserRequest {
string email = 1;
}
message InviteUserResponse {
Response response = 1;
}
message APIKey{
string id = 1;
string name = 2;
string createdBy = 3;
string createdAt = 4;
string lastUsedAt = 5;
string expiresAt = 6;
}
message GetAPIKeysRequest {}
message GetAPIKeysResponse {
Response response = 1;
repeated APIKey apiKeys = 2;
}
enum ExpiresAt {
NEVER = 0;
THIRTY_DAYS = 1;
SIX_MONTHS = 2;
ONE_YEAR = 3;
}
message CreateAPIKeyRequest {
string name = 1;
string userID = 2;
ExpiresAt expires = 3;
repeated string federatedGraphTargetIds = 4;
repeated string subgraphTargetIds = 5;
repeated string permissions = 6;
bool allowAllResources = 7;
}
message CreateAPIKeyResponse {
Response response = 1;
string apiKey = 2;
}
message DeleteAPIKeyRequest {
string name = 1;
}
message DeleteAPIKeyResponse {
Response response = 1;
}
message RemoveOrganizationMemberRequest {
string email = 1;
}
message RemoveOrganizationMemberResponse {
Response response = 1;
}
message RemoveInvitationRequest {
string email = 1;
}
message RemoveInvitationResponse {
Response response = 1;
}
message MigrateFromApolloRequest {
string apiKey = 1;
string variantName = 2;
string namespace = 3;
}
message MigrateFromApolloResponse {
Response response = 1;
string token = 2;
}
message Span {
int64 timestamp = 1;
string scopeName = 2;
string traceID = 3;
string spanID = 4;
string parentSpanID = 5;
string spanName = 6;
string spanKind = 7;
int64 duration = 8;
string serviceName = 9;
string statusCode = 10;
string statusMessage = 11;
map<string, string> attributes = 12;
}
message GetTraceRequest {
string id = 1;
string span_id = 2;
string federated_graph_id = 3;
}
message GetTraceResponse {
Response response = 1;
repeated Span spans = 2;
}
message WhoAmIRequest {}
message WhoAmIResponse {
Response response = 1;
string organizationName = 2;
optional string userEmail = 3;
string organizationSlug = 4;
}
message RouterToken {
string id = 1;
string name = 2;
string createdAt = 3;
string creatorEmail = 5;
}
message GenerateRouterTokenRequest {
string fedGraphName = 1;
string namespace = 2;
}
message GenerateRouterTokenResponse {
Response response = 1;
string token = 2;
}
message GetRouterTokensRequest {
string fedGraphName = 1;
string namespace = 2;
}
message GetRouterTokensResponse {
Response response = 1;
repeated RouterToken tokens = 2;
}
message DeleteRouterTokenRequest {
string tokenName = 1;
string fedGraphName = 2;
string namespace = 3;
}
message DeleteRouterTokenResponse {
Response response = 1;
}
message PersistedOperation {
string id = 1;
string contents = 2;
}
message PublishPersistedOperationsRequest {
string fedGraphName = 1;
string clientName = 2;
repeated PersistedOperation operations = 3;
string namespace = 4;
}
enum PublishedOperationStatus {
UP_TO_DATE = 0;
CREATED = 1;
CONFLICT = 2;
}
message PublishedOperation {
string id = 1;
string hash = 2;
PublishedOperationStatus status = 3;
repeated string operationNames = 4;
}
message PublishPersistedOperationsResponse {
Response response = 1;
repeated PublishedOperation operations = 2;
}
message GetPersistedOperationsRequest {
string federated_graph_name = 1;
string client_id = 2;
string namespace = 3;
}
message GetPersistedOperationsResponse {
message Operation {
string id = 1;
string contents = 2;
string created_at = 3;
string last_updated_at = 4;
repeated string operation_names = 5;
}
Response response = 1;
repeated Operation operations = 2;
}
message Header{
string key = 1;
string value = 2;
}
message CreateOrganizationWebhookConfigRequest {
string endpoint = 1;
string key = 2;
repeated string events = 3;
repeated wg.cosmo.notifications.EventMeta events_meta = 4;
}
message CreateOrganizationWebhookConfigResponse {
Response response = 1;
string webhook_config_id = 2;
}
message GetOrganizationWebhookConfigsRequest {}
message GetOrganizationWebhookConfigsResponse {
message Config {
string id = 1;
string endpoint = 2;
repeated string events = 3;
}
Response response = 1;
repeated Config configs = 2;
}
message GetOrganizationWebhookMetaRequest {
string id = 1;
}
message GetOrganizationWebhookMetaResponse {
Response response = 1;
repeated wg.cosmo.notifications.EventMeta events_meta = 2;
}
message UpdateOrganizationWebhookConfigRequest {
string id = 1;
string endpoint = 2;
string key = 3;
repeated string events = 4;
repeated wg.cosmo.notifications.EventMeta events_meta = 5;
bool should_update_key = 6;
}
message UpdateOrganizationWebhookConfigResponse {
Response response = 1;
}
message DeleteOrganizationWebhookConfigRequest {
string id = 1;
}
message DeleteOrganizationWebhookConfigResponse {
Response response = 1;
}
message CreateIntegrationRequest {
string type = 1;
string name = 2;
string code = 3;
repeated string events = 4;
repeated wg.cosmo.notifications.EventMeta eventsMeta = 5;
}
message CreateIntegrationResponse {
Response response = 1;
}
message GetOrganizationIntegrationsRequest {}
enum IntegrationType {
SLACK = 0;
}
message SlackIntegrationConfig {
string endpoint = 1;
}
message IntegrationConfig{
IntegrationType type = 1;
oneof config{
SlackIntegrationConfig slackIntegrationConfig = 2;
}
}
message Integration {
string id = 1;
string name = 2;
string type = 3;
repeated string events = 4;
IntegrationConfig integrationConfig = 5;
repeated wg.cosmo.notifications.EventMeta eventsMeta = 6;
}
message GetOrganizationIntegrationsResponse {
Response response = 1;
repeated Integration integrations = 2;
}
message UpdateIntegrationConfigRequest {
string id = 1;
string endpoint = 2;
repeated string events = 3;
repeated wg.cosmo.notifications.EventMeta events_meta = 4;
}
message UpdateIntegrationConfigResponse {
Response response = 1;
}
message DeleteIntegrationRequest {
string id = 1;
}
message DeleteIntegrationResponse {
Response response = 1;
}
message DeleteOrganizationRequest {
string userID = 1;
}
message DeleteOrganizationResponse {
Response response = 1;
}
message LeaveOrganizationRequest {
string userID = 1;
}
message LeaveOrganizationResponse {
Response response = 1;
}
message UpdateOrganizationDetailsRequest {
string userID = 1;
string organizationName = 2;
string organizationSlug = 3;
}
message UpdateOrganizationDetailsResponse {
Response response = 1;
}
message UpdateOrgMemberRoleRequest {
string userID = 1;
string orgMemberUserID = 2;
string role = 3;
}
message UpdateOrgMemberRoleResponse {
Response response = 1;
}
message CreateOrganizationRequest {
string name = 1;
string slug = 2;
string plan = 3;
}
message CreateOrganizationResponse {
Response response = 1;
optional Organization organization = 2;
optional string stripeSessionId = 3;
}
message Organization {
string id = 1;
string name = 2;
string slug = 3;
optional string creatorUserId = 4;
string createdAt = 5;
}
message GetOrganizationBySlugRequest {
string slug = 1;
}
message GetOrganizationBySlugResponse {
Response response = 1;
optional Organization organization = 2;
}
/**
* Billing
*/
message GetBillingPlansRequest {
}
message GetBillingPlansResponse {
message BillingPlanFeature {
string id = 1;
string description = 3;
optional int32 limit = 4;
}
message BillingPlan {
string id = 1;
string name = 2;
int32 price = 3;
repeated BillingPlanFeature features = 4;
}
Response response = 1;
repeated BillingPlan plans = 2;
}
message CreateCheckoutSessionRequest {
string plan = 1;
}
message CreateCheckoutSessionResponse {
Response response = 1;
string sessionId = 2;
}
message CreateBillingPortalSessionRequest {
}
message CreateBillingPortalSessionResponse {
Response response = 1;
string sessionId = 2;
string url = 3;
}
message UpgradePlanRequest {
string plan = 1;
}
message UpgradePlanResponse {
Response response = 1;
}
/**
* MetricsDashboard
*/
message GetGraphMetricsRequest {
string federatedGraphName = 1;
int32 range = 2;
DateRange dateRange = 3;
repeated AnalyticsFilter filters = 4;
string namespace = 5;
}
message GetGraphMetricsResponse {
Response response = 1;
MetricsDashboardMetric requests = 2;
MetricsDashboardMetric latency = 3;
MetricsDashboardMetric errors = 4;
repeated AnalyticsViewResultFilter filters = 5;
optional string resolution = 6;
}
message MetricsDashboardMetric {
string value = 1;
optional string previousValue = 2;
repeated MetricsTopItem top = 3;
repeated MetricsSeriesItem series = 4;
}
message MetricsTopItem {
string hash = 1;
string name = 2;
string value = 3;
bool isPersisted = 4;
}
message MetricsSeriesItem {
string timestamp = 1;
string value = 2;
optional string previousValue = 3;
}
message MetricsDashboard {
string name = 1;
string title = 2;
string type = 3;
optional Unit unit = 4;
optional bool is_hidden = 5;
optional bool is_cta = 6;
}
message GetMetricsErrorRateRequest {
string federatedGraphName = 1;
int32 range = 2;
DateRange dateRange = 3;
repeated AnalyticsFilter filters = 4;
string namespace = 5;
}
message GetMetricsErrorRateResponse {
Response response = 1;
repeated MetricsErrorRateSeriesItem series = 2;
optional string resolution = 3;
}
message MetricsErrorRateSeriesItem {
string timestamp = 1;
float requestRate = 2;
float errorRate = 3;
}
message GetSubgraphMetricsRequest {
string subgraphName = 1;
string namespace = 2;
int32 range = 4;
DateRange dateRange = 5;
repeated AnalyticsFilter filters = 6;
}
message GetSubgraphMetricsResponse {
Response response = 1;
MetricsDashboardMetric requests = 2;
MetricsDashboardMetric latency = 3;
MetricsDashboardMetric errors = 4;
repeated AnalyticsViewResultFilter filters = 5;
optional string resolution = 6;
}
message GetSubgraphMetricsErrorRateRequest {
string subgraphName = 1;
string namespace = 2;
int32 range = 4;
DateRange dateRange = 5;
repeated AnalyticsFilter filters = 6;
}
message GetSubgraphMetricsErrorRateResponse {
Response response = 1;
repeated MetricsErrorRateSeriesItem series = 2;
optional string resolution = 3;
}
message ForceCheckSuccessRequest {
string check_id = 1;
string graph_name = 2;
string namespace = 3;
}
message ForceCheckSuccessResponse {
Response response = 1;
}
message ToggleChangeOverridesForAllOperationsRequest {
string check_id = 1;
bool is_safe = 2;
string graph_name = 3;
string namespace = 4;
}
message ToggleChangeOverridesForAllOperationsResponse {
Response response = 1;
}
message CreateIgnoreOverridesForAllOperationsRequest {
string check_id = 1;
string graph_name = 2;
string namespace = 3;
}
message CreateIgnoreOverridesForAllOperationsResponse {
Response response = 1;
}
message OverrideChange {
string changeType = 1;
optional string path = 2;
}
message CreateOperationOverridesRequest {
string graph_name = 1;
string namespace = 2;
string operation_hash = 3;
string operation_name = 4;
repeated OverrideChange changes = 5;
}
message CreateOperationOverridesResponse {
Response response = 1;
}
message CreateOperationIgnoreAllOverrideRequest {
string graph_name = 1;
string namespace = 2;
string operation_hash = 3;
string operation_name = 4;
}
message CreateOperationIgnoreAllOverrideResponse {
Response response = 1;
}
message RemoveOperationOverridesRequest {
string graph_name = 1;
string namespace = 2;
string operation_hash = 3;
repeated OverrideChange changes = 4;
}
message RemoveOperationOverridesResponse {
Response response = 1;
}
message RemoveOperationIgnoreAllOverrideRequest {
string graph_name = 1;
string namespace = 2;
string operation_hash = 3;
}
message RemoveOperationIgnoreAllOverrideResponse {
Response response = 1;
}
message GetOperationOverridesRequest {
string graph_name = 1;
string namespace = 2;
string operation_hash = 3;
}
message GetOperationOverridesResponse {
Response response = 1;
repeated OverrideChange changes = 2;
bool ignore_all = 3;
}
message GetAllOverridesRequest {
string graph_name = 1;
string namespace = 2;
}
message GetAllOverridesResponse {
message Override {
string hash = 1;
string name = 2;
uint32 changesOverrideCount = 3;
bool hasIgnoreAllOverride = 4;
string updated_at = 5;
}
Response response = 1;
repeated Override overrides = 2;
}
message IsGitHubAppInstalledRequest {
GitInfo git_info = 1;
}
message IsGitHubAppInstalledResponse {
Response response = 1;
bool is_installed = 2;
}
message GroupMapper {
string role = 1;
string ssoGroup = 2;
}
message CreateOIDCProviderRequest {
string name = 1;
string discoveryEndpoint = 2;
string clientID = 3;
string clientSecrect = 4;
repeated GroupMapper mappers = 5;
}
message CreateOIDCProviderResponse {
Response response = 1;
string signInURL = 2;
string signOutURL = 3;
string loginURL = 4;
}
message GetOIDCProviderRequest {}
message GetOIDCProviderResponse {
Response response = 1;
string name = 2;
string endpoint = 3;
string loginURL = 4;
string signInRedirectURL = 5;
string signOutRedirectURL = 6;
repeated GroupMapper mappers = 7;
}
message DeleteOIDCProviderRequest {}
message DeleteOIDCProviderResponse {
Response response = 1;
}
message UpdateIDPMappersRequest {
repeated GroupMapper mappers = 1;
}
message UpdateIDPMappersResponse {
Response response = 1;
}
message GetOrganizationRequestsCountRequest {}
message GetOrganizationRequestsCountResponse {
Response response = 1;
int64 count = 2;
}
message OrganizationInvite{
string id = 1;
string name = 2;
string slug = 3;
optional string creatorUserId = 4;
string createdAt = 5;
optional string invitedBy = 6;
}
message GetAuditLogsRequest {
int32 limit = 1;
int32 offset = 2;
string startDate = 3;
string endDate = 4;
}
message AuditLog {
string id = 1;
string actorDisplayName = 2;
string action = 3;
string actorType = 4;
string auditAction = 5;
string auditableDisplayName = 6;
string targetDisplayName = 7;
string targetType = 8;
string createdAt = 9;
string targetNamespaceId = 10;
string targetNamespaceDisplayName = 11;
string apiKeyName = 12;
}
message GetAuditLogsResponse {
Response response = 1;
repeated AuditLog logs = 2;
int32 count = 3;
}
message GetInvitationsRequest {}
message GetInvitationsResponse {
Response response = 1;
repeated OrganizationInvite invitations = 2;
}
message AcceptOrDeclineInvitationRequest {
string organizationId = 1;
bool accept = 2;
}
message AcceptOrDeclineInvitationResponse {
Response response = 1;
}
message GraphComposition {
string id = 1;
string schemaVersionId = 2;
string createdAt = 3;
bool isComposable = 4;
optional string compositionErrors = 5;
optional string createdBy = 6;
bool isLatestValid = 7;
optional string routerConfigSignature = 8;
optional string admissionError = 9;
optional string deploymentError = 10;
optional bool hasMultipleChangedSubgraphs = 11;
optional string triggeredBySubgraphName = 12;
optional string compositionWarnings = 13;
string router_compatibility_version = 14;
}
message GraphCompositionSubgraph {
string id = 1;
string schemaVersionId = 2;
string name = 3;
string target_id = 4;
bool isFeatureSubgraph = 5;
string changeType = 6;
}
message GetCompositionsRequest {
string fedGraphName = 1;
int32 limit = 2;
int32 offset = 3;
string startDate = 4;
string endDate = 5;
string namespace = 6;
bool excludeFeatureFlagCompositions = 7;
}
message GetCompositionsResponse {
Response response = 1;
repeated GraphComposition compositions = 2;
int32 count = 3;
}
message GetCompositionDetailsRequest {
string compositionId = 1;
string namespace = 2;
}
message FeatureFlagComposition {
string id = 1;
string schemaVersionId = 2;
string createdAt = 3;
bool isComposable = 4;
optional string compositionErrors = 5;
optional string createdBy = 6;
optional string routerConfigSignature = 7;
optional string admissionError = 8;
optional string deploymentError = 9;
string featureFlagName = 10;
optional string compositionWarnings = 11;
}
message GetCompositionDetailsResponse {
Response response = 1;
GraphComposition composition = 2;
repeated GraphCompositionSubgraph compositionSubgraphs = 3;
ChangeCounts changeCounts = 4;
repeated FeatureFlagComposition featureFlagCompositions = 5;
}
message GetSdlBySchemaVersionRequest {
string schemaVersionId = 1;
string target_id = 2;
}
message GetSdlBySchemaVersionResponse {
Response response = 1;
string sdl = 2;
string client_schema = 3;
}
message GetChangelogBySchemaVersionRequest {
string schemaVersionId = 1;
}
message GetChangelogBySchemaVersionResponse {
Response response = 1;
FederatedGraphChangelogOutput changelog = 2;
}
message GetUserAccessibleResourcesRequest {}
message GetUserAccessibleResourcesResponse {
message Graph {
string targetId = 1;
string name = 2;
string namespace = 3;
}
Response response = 1;
repeated Graph federatedGraphs = 2;
repeated Graph subgraphs = 3;
}
enum Feature {
rbac = 0;
ai = 1;
scim = 2;
}
message UpdateFeatureSettingsRequest {
bool enable = 1;
Feature featureId = 2;
}
message UpdateFeatureSettingsResponse {
Response response = 1;
}
message AddSubgraphMemberRequest {
string subgraphName = 1;
string userEmail = 2;
string namespace = 3;
}
message AddSubgraphMemberResponse {
Response response = 1;
}
message RemoveSubgraphMemberRequest {
string subgraphName = 1;
string subgraphMemberId = 2;
string namespace = 3;
}
message RemoveSubgraphMemberResponse {
Response response = 1;
}
message GetSubgraphMembersRequest {
string subgraphName = 1;
string namespace = 2;
}
message SubgraphMember{
string userId = 1;
string email = 2;
string subgraphMemberId = 4;
}
message GetSubgraphMembersResponse {
Response response = 1;
repeated SubgraphMember members = 2;
}
message AddReadmeRequest {
string targetName = 1;
string readme = 2;
string namespace = 3;
}
message AddReadmeResponse {
Response response = 1;
}
message Router {
string hostname = 1;
string clusterName = 2;
string serviceName = 3;
string serviceVersion = 4;
string serviceInstanceId = 5;
string uptimeSeconds = 6;
string serverUptimeSeconds = 7;
string compositionId = 8;
bool onLatestComposition = 9;
string processId = 10;
float memoryUsageMb = 11;
float memoryUsageChangePercent = 12;
float cpuUsagePercent = 13;
float cpuUsageChangePercent = 14;
}
message GetRoutersRequest {
string fedGraphName = 1;
string namespace = 2;
}
message GetRoutersResponse {
Response response = 1;
repeated Router routers = 2;
}
message ClientInfo{
string name = 1;
string id = 2;
string createdAt = 3;
string lastUpdatedAt = 4;
string createdBy = 5;
string lastUpdatedBy = 6;
}
message GetClientsRequest {
string fedGraphName = 1;
string namespace = 2;
}
message GetClientsResponse {
Response response = 1;
repeated ClientInfo clients = 2;
}
message GetFieldUsageRequest {
string graph_name = 1;
optional string namedType = 2;
optional string typename = 3;
optional string field = 4;
optional int32 range = 5;
DateRange dateRange = 6;
string namespace = 7;
optional string feature_flag_name = 8;
}
message ClientWithOperations {
message Operation {
string hash = 1;
string name = 2;
int32 count = 3;
}
string name = 1;
string version = 2;
repeated Operation operations = 3;
}
message FieldUsageMeta {
repeated string subgraph_ids = 1;
string firstSeenTimestamp = 2;
string latestSeenTimestamp = 3;
}
message GetFieldUsageResponse {
Response response = 1;
repeated RequestSeriesItem request_series = 2;
repeated ClientWithOperations clients = 3;
FieldUsageMeta meta = 4;
}
message CreateDiscussionRequest {
string target_id = 1;
string content_markdown = 2;
string content_json = 3;
string schema_version_id = 4;
int32 reference_line = 5;
}
message CreateDiscussionResponse {
Response response = 1;
}
message UpdateDiscussionCommentRequest {
string discussion_id = 1;
string comment_id = 2;
string content_markdown = 3;
string content_json = 4;
}
message UpdateDiscussionCommentResponse {
Response response = 1;
}
message DeleteDiscussionCommentRequest {
string discussion_id = 1;
string comment_id = 2;
}
message DeleteDiscussionCommentResponse {
Response response = 1;
}
message ReplyToDiscussionRequest {
string discussion_id = 2;
string content_markdown = 3;
string content_json = 4;
}
message ReplyToDiscussionResponse {
Response response = 1;
}
message GetAllDiscussionsRequest {
string target_id = 1;
optional string schema_version_id = 2;
}
message Discussion {
string id = 1;
string schema_version_id = 2;
string target_id = 3;
int32 reference_line = 4;
DiscussionComment openingComment = 5;
bool is_resolved = 6;
}
message DiscussionComment {
string id = 1;
string content_json = 2;
optional string created_by = 3;
string created_at = 4;
optional string updated_at = 5;
bool is_deleted = 6;
}
message GetAllDiscussionsResponse {
Response response = 1;
repeated Discussion discussions = 2;
}
message GetDiscussionRequest {
string discussion_id = 1;
}
message GetDiscussionResponse {
Response response = 1;
Discussion discussion = 2;
repeated DiscussionComment comments = 3;
}
message GetDiscussionSchemasRequest {
string discussion_id = 1;
}
message GetDiscussionSchemasResponse {
message Schemas {
string reference = 1;
string latest = 2;
}
Response response = 1;
Schemas schemas = 4;
}
message SetDiscussionResolutionRequest {
string discussion_id = 1;
bool is_resolved = 2;
}
message SetDiscussionResolutionResponse {
Response response = 1;
}
message CreateNamespaceRequest {
string name = 1;
}
message CreateNamespaceResponse {
Response response = 1;
}
message DeleteNamespaceRequest {
string name = 1;
}
message DeleteNamespaceResponse {
Response response = 1;
}
message RenameNamespaceRequest {
string name = 1;
string new_name = 2;
}
message RenameNamespaceResponse {
Response response = 1;
}
message Namespace {
string id = 1;
string name = 2;
}
message GetNamespacesRequest {}
message GetNamespacesResponse {
Response response = 1;
repeated Namespace namespaces = 2;
}
message MoveGraphRequest {
string name = 1;
string namespace = 2;
string new_namespace = 3;
}
message MoveGraphResponse {
Response response = 1;
repeated CompositionError compositionErrors = 2;
repeated DeploymentError deploymentErrors = 3;
repeated CompositionWarning compositionWarnings = 4;
}
message GetNamespaceLintConfigRequest {
string namespace = 1;
}
message GetNamespaceLintConfigResponse {
Response response = 1;
bool linterEnabled = 2;
repeated LintConfig configs = 3;
}
message EnableLintingForTheNamespaceRequest {
string namespace = 1;
bool enableLinting = 2;
}
message EnableLintingForTheNamespaceResponse {
Response response = 1;
}
message LintConfig {
string ruleName = 1;
LintSeverity severityLevel = 2;
}
message ConfigureNamespaceLintConfigRequest {
string namespace = 1;
repeated LintConfig configs = 2;
}
message ConfigureNamespaceLintConfigResponse {
Response response = 1;
}
message EnableGraphPruningRequest {
string namespace = 1;
bool enableGraphPruning = 2;
}
message EnableGraphPruningResponse {
Response response = 1;
}
message GraphPruningConfig {
string ruleName = 1;
LintSeverity severityLevel = 2;
int32 gracePeriodInDays = 3;
optional int32 schemaUsageCheckPeriodInDays = 4;
}
message ConfigureNamespaceGraphPruningConfigRequest {
string namespace = 1;
repeated GraphPruningConfig configs = 2;
}
message ConfigureNamespaceGraphPruningConfigResponse {
Response response = 1;
}
message GetNamespaceGraphPruningConfigRequest {
string namespace = 1;
}
message GetNamespaceGraphPruningConfigResponse {
Response response = 1;
bool graphPrunerEnabled = 2;
repeated GraphPruningConfig configs = 3;
}
message MigrateMonographRequest {
string name = 1;
string namespace = 2;
}
message MigrateMonographResponse {
Response response = 1;
}
message GetUserAccessiblePermissionsRequest {}
message Permission {
string displayName = 1;
string value = 2;
}
message GetUserAccessiblePermissionsResponse {
Response response = 1;
repeated Permission permissions = 2;
}
message CreateContractRequest {
string name = 1;
string namespace = 2;
string source_graph_name = 3;
string routing_url = 4;
string admission_webhook_url = 5;
repeated string exclude_tags = 6;
optional string readme = 7;
optional string admission_webhook_secret = 8;
repeated string include_tags = 9;
}
message CreateContractResponse {
Response response = 1;
repeated CompositionError compositionErrors = 2;
repeated DeploymentError deploymentErrors = 3;
repeated CompositionWarning compositionWarnings = 4;
}
message UpdateContractRequest {
string name = 1;
string namespace = 2;
repeated string exclude_tags = 3;
repeated string include_tags = 4;
optional string routing_url = 5;
optional string admission_webhook_url = 6;
optional string admission_webhook_secret = 7;
optional string readme = 8;
}
message UpdateContractResponse {
Response response = 1;
repeated CompositionError compositionErrors = 2;
repeated DeploymentError deploymentErrors = 3;
repeated CompositionWarning compositionWarnings = 4;
}
message IsMemberLimitReachedRequest {}
message IsMemberLimitReachedResponse {
Response response = 1;
bool limit_reached = 2;
int32 member_count = 3;
}
message DeleteUserRequest {}
message DeleteUserResponse {
Response response = 1;
}
message CreateFeatureFlagRequest {
string name = 1;
string namespace = 2;
repeated Label labels = 3;
repeated string feature_subgraph_names = 4;
bool is_enabled = 5;
}
message CreateFeatureFlagResponse {
Response response = 1;
repeated CompositionError composition_errors = 2;
repeated DeploymentError deployment_errors = 3;
repeated CompositionWarning compositionWarnings = 4;
}
message UpdateFeatureFlagRequest {
string name = 1;
string namespace = 2;
repeated Label labels = 3;
repeated string feature_subgraph_names = 4;
bool unset_labels = 5;
}
message UpdateFeatureFlagResponse {
Response response = 1;
repeated CompositionError composition_errors = 2;
repeated DeploymentError deployment_errors = 3;
repeated CompositionWarning compositionWarnings = 4;
}
message EnableFeatureFlagRequest {
string name = 1;
string namespace = 2;
bool enabled = 3;
}
message EnableFeatureFlagResponse {
Response response = 1;
repeated CompositionError composition_errors = 2;
repeated DeploymentError deployment_errors = 3;
optional bool has_changed = 4;
repeated CompositionWarning compositionWarnings = 5;
}
message DeleteFeatureFlagRequest {
string name = 1;
string namespace = 2;
}
message DeleteFeatureFlagResponse {
Response response = 1;
repeated CompositionError composition_errors = 2;
repeated DeploymentError deployment_errors = 3;
repeated CompositionWarning compositionWarnings = 4;
}
message FeatureFlag {
string id = 1;
string name = 2;
string namespace = 3;
repeated Label labels = 4;
bool is_enabled = 5;
string created_by = 6;
string created_at = 7;
string updated_at = 8;
}
message GetFeatureFlagsRequest {
int32 limit = 1;
int32 offset = 2;
string namespace = 3;
optional string query = 4;
}
message GetFeatureFlagsResponse {
Response response = 1;
repeated FeatureFlag feature_flags = 2;
int32 total_count = 3;
}
message GetFeatureFlagByNameRequest {
string name = 1;
string namespace = 2;
}
message GetFeatureFlagByNameResponse {
message FfFederatedGraph{
FederatedGraph federated_graph = 1;
bool is_connected = 2;
}
Response response = 1;
FeatureFlag feature_flag = 2;
repeated FfFederatedGraph federated_graphs = 3;
repeated Subgraph feature_subgraphs = 4;
}
message GetFeatureSubgraphsByFeatureFlagRequest {
string feature_flag_name = 1;
string namespace = 2;
}
message GetFeatureSubgraphsByFeatureFlagResponse {
Response response = 1;
repeated Subgraph feature_subgraphs = 2;
}
message GetFeatureSubgraphsRequest {
int32 limit = 1;
int32 offset = 2;
string namespace = 3;
optional string query = 4;
}
message GetFeatureSubgraphsResponse {
Response response = 1;
repeated Subgraph feature_subgraphs = 2;
int32 count = 3;
}
message GetFeatureFlagsByFederatedGraphRequest {
string federated_graph_name = 1;
int32 limit = 2;
int32 offset = 3;
string namespace = 4;
optional string query = 5;
}
message GetFeatureFlagsByFederatedGraphResponse {
Response response = 1;
repeated FeatureFlag feature_flags = 2;
int32 total_count = 3;
}
message GetOrganizationWebhookHistoryRequest {
Pagination pagination = 1;
DateRange date_range = 2;
optional string filter_by_type = 3;
}
message WebhookDelivery {
string id = 1;
string created_at = 2;
optional string created_by = 3;
string type = 4;
string endpoint = 5;
string event_name = 6;
string payload = 7;
string request_headers = 8;
optional string response_headers = 9;
optional int32 response_status_code = 10;
optional string response_error_code = 11;
optional string error_message = 12;
optional string response_body = 13;
int32 retry_count = 14;
float duration = 15;
bool is_redelivery = 16;
}
message GetOrganizationWebhookHistoryResponse {
Response response = 1;
repeated WebhookDelivery deliveries = 2;
int32 total_count = 3;
}
message RedeliverWebhookRequest {
string id = 1;
}
message RedeliverWebhookResponse {
Response response = 1;
}
message GetWebhookDeliveryDetailsRequest {
string id = 1;
}
message GetWebhookDeliveryDetailsResponse {
Response response = 1;
WebhookDelivery delivery = 2;
}
message CreatePlaygroundScriptRequest {
string title = 1;
string type = 2;
string content = 3;
}
message CreatePlaygroundScriptResponse {
Response response = 1;
}
message DeletePlaygroundScriptRequest {
string id = 1;
}
message DeletePlaygroundScriptResponse {
Response response = 1;
}
message UpdatePlaygroundScriptRequest {
string id = 1;
string title = 2;
string content = 3;
}
message UpdatePlaygroundScriptResponse {
Response response = 1;
}
message GetPlaygroundScriptsRequest {
string type = 1;
}
message PlaygroundScript {
string id = 1;
string type = 2;
string title = 3;
string content = 4;
}
message GetPlaygroundScriptsResponse {
Response response = 1;
repeated PlaygroundScript scripts = 2;
}
message GetFederatedGraphByIdRequest {
string id = 1;
bool includeMetrics = 2;
}
message GetFederatedGraphByIdResponse {
Response response = 1;
FederatedGraph graph = 2;
repeated Subgraph subgraphs = 3;
string graphRequestToken = 4;
repeated FeatureFlag featureFlagsInLatestValidComposition = 5;
// includes all the feature subgraphs that are part of the federated graph;
// even the ones that are not part of the latest composition
repeated Subgraph featureSubgraphs = 6;
}
message GetSubgraphByIdRequest {
string id = 1;
}
message GetSubgraphByIdResponse {
Response response = 1;
Subgraph graph = 2;
repeated SubgraphMember members = 3;
}
message GetNamespaceRequest {
string name = 1;
string id = 2;
}
message GetNamespaceResponse {
Response response = 1;
Namespace namespace = 2;
}
message PushCacheWarmerOperationRequest {
string federatedGraphName = 1;
string operationContent = 2;
string operationName = 3;
string operationPersistedId = 4;
string namespace = 5;
}
message PushCacheWarmerOperationResponse {
Response response = 1;
}
message GetCacheWarmerOperationsRequest {
string federatedGraphName = 1;
string namespace = 2;
int32 limit = 3;
int32 offset = 4;
}
message CacheWarmerOperation {
string id = 1;
string operationContent = 2;
string operationName = 3;
string operationPersistedId = 4;
string operationHash = 5;
string clientName = 6;
string clientVersion = 7;
float planningTime = 8;
bool isManuallyAdded = 9;
string createdAt = 10;
string createdBy = 11;
}
message GetCacheWarmerOperationsResponse {
Response response = 1;
repeated CacheWarmerOperation operations = 2;
int32 total_count = 3;
bool isCacheWarmerEnabled = 4;
}
message ComputeCacheWarmerOperationsRequest {
string federatedGraphName = 1;
string namespace = 2;
}
message ComputeCacheWarmerOperationsResponse {
Response response = 1;
}
message ConfigureCacheWarmerRequest {
string namespace = 1;
bool enableCacheWarmer = 2;
int32 maxOperationsCount = 3;
}
message ConfigureCacheWarmerResponse {
Response response = 1;
}
message GetCacheWarmerConfigRequest {
string namespace = 1;
}
message GetCacheWarmerConfigResponse {
Response response = 1;
bool isCacheWarmerEnabled = 2;
int32 maxOperationsCount = 3;
}
message DeleteCacheWarmerOperationRequest {
string id = 1;
string federatedGraphName = 2;
string namespace = 3;
}
message DeleteCacheWarmerOperationResponse {
Response response = 1;
}
message ListRouterCompatibilityVersionsRequest {
}
message ListRouterCompatibilityVersionsResponse {
Response response = 1;
repeated string versions = 2;
}
message SetGraphRouterCompatibilityVersionRequest {
string name = 1;
string namespace = 2;
string version = 3;
}
message SetGraphRouterCompatibilityVersionResponse {
Response response = 1;
string previous_version = 2;
string new_version = 3;
repeated CompositionError compositionErrors = 4;
repeated DeploymentError deploymentErrors = 5;
repeated CompositionWarning compositionWarnings = 6;
}
service PlatformService {
// PlaygroundScripts
rpc CreatePlaygroundScript(CreatePlaygroundScriptRequest) returns (CreatePlaygroundScriptResponse) {}
rpc DeletePlaygroundScript(DeletePlaygroundScriptRequest) returns (DeletePlaygroundScriptResponse) {}
rpc UpdatePlaygroundScript(UpdatePlaygroundScriptRequest) returns (UpdatePlaygroundScriptResponse) {}
rpc GetPlaygroundScripts(GetPlaygroundScriptsRequest) returns (GetPlaygroundScriptsResponse) {}
// Namespaces
rpc CreateNamespace(CreateNamespaceRequest) returns (CreateNamespaceResponse) {}
rpc DeleteNamespace(DeleteNamespaceRequest) returns (DeleteNamespaceResponse) {}
rpc RenameNamespace(RenameNamespaceRequest) returns (RenameNamespaceResponse) {}
rpc GetNamespaces(GetNamespacesRequest) returns (GetNamespacesResponse) {}
rpc GetNamespace(GetNamespaceRequest) returns (GetNamespaceResponse) {}
// Contracts
rpc CreateContract(CreateContractRequest) returns (CreateContractResponse) {}
rpc UpdateContract(UpdateContractRequest) returns (UpdateContractResponse) {}
rpc MoveFederatedGraph(MoveGraphRequest) returns (MoveGraphResponse) {}
rpc MoveSubgraph(MoveGraphRequest) returns (MoveGraphResponse) {}
rpc MoveMonograph(MoveGraphRequest) returns (MoveGraphResponse) {}
// CreateMonograph creates a monograph on the control plane.
rpc CreateMonograph(CreateMonographRequest) returns (CreateMonographResponse) {}
// PublishMonograph pushes the schema of the monograph to the control plane.
rpc PublishMonograph(PublishMonographRequest) returns (PublishMonographResponse) {}
// DeleteMonograph deletes a monograph from the control plane.
rpc DeleteMonograph(DeleteMonographRequest) returns (DeleteMonographResponse) {}
// UpdateMonograph updates a monograph with new urls, subscription config and readme
rpc UpdateMonograph(UpdateMonographRequest) returns (UpdateMonographResponse) {}
// MigrateMonograph converts a monograph into a federated graph.
rpc MigrateMonograph(MigrateMonographRequest) returns (MigrateMonographResponse) {}
// CreateFederatedSubgraph creates a federated subgraph on the control plane.
rpc CreateFederatedSubgraph(CreateFederatedSubgraphRequest) returns (CreateFederatedSubgraphResponse) {}
// PublishFederatedSubgraph pushes the schema of the subgraph to the control plane.
rpc PublishFederatedSubgraph(PublishFederatedSubgraphRequest) returns (PublishFederatedSubgraphResponse) {}
// CreateFederatedGraph creates a federated graph on the control plane.
rpc CreateFederatedGraph(CreateFederatedGraphRequest) returns (CreateFederatedGraphResponse) {}
// DeleteFederatedGraph deletes a federated graph from the control plane.
rpc DeleteFederatedGraph(DeleteFederatedGraphRequest) returns (DeleteFederatedGraphResponse) {}
// DeleteFederatedSubgraph deletes a federated subgraph from the control plane.
rpc DeleteFederatedSubgraph(DeleteFederatedSubgraphRequest) returns (DeleteFederatedSubgraphResponse) {}
// CheckSubgraphSchema checks if the schema is valid and if it can be composed without conflicts with the provided new subgraph schema.
rpc CheckSubgraphSchema(CheckSubgraphSchemaRequest) returns (CheckSubgraphSchemaResponse) {}
rpc FixSubgraphSchema(FixSubgraphSchemaRequest) returns (FixSubgraphSchemaResponse) {}
// UpdateFederatedGraph updates a federated graph with new labels and routing url
rpc UpdateFederatedGraph(UpdateFederatedGraphRequest) returns (UpdateFederatedGraphResponse) {}
// UpdateSubgraph updates a subgraph with new labels and routing url
rpc UpdateSubgraph(UpdateSubgraphRequest) returns (UpdateSubgraphResponse) {}
// CheckFederatedGraph checks if the federated graph can be composed with the new labels provided.
rpc CheckFederatedGraph(CheckFederatedGraphRequest) returns (CheckFederatedGraphResponse) {}
// WhoAmI returns the identity of the user currently logged in.
rpc WhoAmI(WhoAmIRequest) returns (WhoAmIResponse) {}
// GenerateRouterToken generates a temporary router token to fetch the router config.
rpc GenerateRouterToken(GenerateRouterTokenRequest) returns (GenerateRouterTokenResponse) {}
// GetRouterTokens returns the router tokens of a federated graph.
rpc GetRouterTokens(GetRouterTokensRequest) returns (GetRouterTokensResponse) {}
// DeleteRouterToken deletes the router token of a federated graph.
rpc DeleteRouterToken(DeleteRouterTokenRequest) returns (DeleteRouterTokenResponse) {}
// Add persisted operations
rpc PublishPersistedOperations(PublishPersistedOperationsRequest) returns (PublishPersistedOperationsResponse) {}
// GetPersistedOperations returns operations for the registered client id
rpc GetPersistedOperations(GetPersistedOperationsRequest) returns (GetPersistedOperationsResponse) {}
// GetAuditLogs returns the audit logs of the organization
rpc GetAuditLogs(GetAuditLogsRequest) returns (GetAuditLogsResponse) {}
// For Studio and CLI
// GetFederatedGraphs returns the list of federated graphs.
rpc GetFederatedGraphs(GetFederatedGraphsRequest) returns (GetFederatedGraphsResponse) {}
// GetFederatedGraphsBySubgraphLabels returns the list of federated graphs based on the subgraph labels
rpc GetFederatedGraphsBySubgraphLabels(GetFederatedGraphsBySubgraphLabelsRequest) returns (GetFederatedGraphsBySubgraphLabelsResponse) {}
// GetFederatedGraphByName returns the federated graph by name.
rpc GetFederatedGraphByName(GetFederatedGraphByNameRequest) returns (GetFederatedGraphByNameResponse) {}
// GetFederatedGraphSDLByName returns the latest valid SDL of the federated graph by name.
rpc GetFederatedGraphSDLByName(GetFederatedGraphSDLByNameRequest) returns (GetFederatedGraphSDLByNameResponse) {}
// GetSubgraphs returns the list of subgraphs.
rpc GetSubgraphs(GetSubgraphsRequest) returns (GetSubgraphsResponse) {}
// GetSubgraphByName returns the subgraph by name.
rpc GetSubgraphByName(GetSubgraphByNameRequest) returns (GetSubgraphByNameResponse) {}
// GetSubgraphSDLFromLatestComposition returns the latest valid SDL of the subgraph composed with the federated graph.
rpc GetSubgraphSDLFromLatestComposition(GetSubgraphSDLFromLatestCompositionRequest) returns (GetSubgraphSDLFromLatestCompositionResponse) {}
// GetLatestSubgraphSDL returns the latest SDL of the subgraph by name.
rpc GetLatestSubgraphSDL(GetLatestSubgraphSDLRequest) returns (GetLatestSubgraphSDLResponse) {}
// GetChecksByFederatedGraphName return schema and composition checks that concern a federated graph
rpc GetChecksByFederatedGraphName(GetChecksByFederatedGraphNameRequest) returns (GetChecksByFederatedGraphNameResponse) {}
// GetCheckSummary returns top level information about a schema check
rpc GetCheckSummary(GetCheckSummaryRequest) returns (GetCheckSummaryResponse) {}
// GetCheckOperations returns affected operations for a check
rpc GetCheckOperations(GetCheckOperationsRequest) returns (GetCheckOperationsResponse) {}
// ForceCheckSuccess forces a failed check to be marked as successful
rpc ForceCheckSuccess(ForceCheckSuccessRequest) returns (ForceCheckSuccessResponse) {}
// CreateOperationOverrides marks if the given set of changes as safe for an operation
rpc CreateOperationOverrides(CreateOperationOverridesRequest) returns (CreateOperationOverridesResponse) {}
// RemoveOperationOverride removes a change from the safe-list for an operation
rpc RemoveOperationOverrides(RemoveOperationOverridesRequest) returns (RemoveOperationOverridesResponse) {}
// CreateOperationIgnoreAllOverride adds an ignore all override for the operation
rpc CreateOperationIgnoreAllOverride(CreateOperationIgnoreAllOverrideRequest) returns (CreateOperationIgnoreAllOverrideResponse) {}
// RemoveOperationIgnoreAllOverride removes the ignore all override for the operation
rpc RemoveOperationIgnoreAllOverride(RemoveOperationIgnoreAllOverrideRequest) returns (RemoveOperationIgnoreAllOverrideResponse) {}
// GetOperationOverrides retrieves all overrides for an operation hash
rpc GetOperationOverrides(GetOperationOverridesRequest) returns (GetOperationOverridesResponse) {}
// GetAllOverrides returns all overrides for operations within a namespace
rpc GetAllOverrides(GetAllOverridesRequest) returns (GetAllOverridesResponse) {}
// ToggleChangeOverridesForAllOperations marks all impacting changes of a given check either safe or unsafe
rpc ToggleChangeOverridesForAllOperations(ToggleChangeOverridesForAllOperationsRequest) returns (ToggleChangeOverridesForAllOperationsResponse) {}
// CreateIgnoreOverridesForAllOperations creates ignore override for all operations of a given check
rpc CreateIgnoreOverridesForAllOperations(CreateIgnoreOverridesForAllOperationsRequest) returns (CreateIgnoreOverridesForAllOperationsResponse) {}
// GetOperationContent returns the operation body by searching using the hash
rpc GetOperationContent(GetOperationContentRequest) returns (GetOperationContentResponse) {}
// GetFederatedGraphChangelog returns the changelog of the federated graph.
rpc GetFederatedGraphChangelog(GetFederatedGraphChangelogRequest) returns (GetFederatedGraphChangelogResponse) {}
// CreateFederatedGraphToken creates a federated graph token that is consumed by the router to authenticate requests.
rpc CreateFederatedGraphToken(CreateFederatedGraphTokenRequest) returns (CreateFederatedGraphTokenResponse) {}
// GetOrganizationBySlug returns a specific organization by its slug
rpc GetOrganizationBySlug(GetOrganizationBySlugRequest) returns (GetOrganizationBySlugResponse){}
// GetOrganizationMembers returns the list of organization members
rpc GetOrganizationMembers(GetOrganizationMembersRequest) returns (GetOrganizationMembersResponse){}
// GetOrganizationMembers returns the list of pending organization invites
rpc GetPendingOrganizationMembers(GetPendingOrganizationMembersRequest) returns (GetPendingOrganizationMembersResponse){}
// IsMemberLimitReached returns whether the organization has reached the member limit
rpc IsMemberLimitReached(IsMemberLimitReachedRequest) returns (IsMemberLimitReachedResponse){}
// InviteUser invites an user to join the organization
rpc InviteUser(InviteUserRequest) returns (InviteUserResponse){}
// GetAPIKeys returns a list of API keys of the organization
rpc GetAPIKeys(GetAPIKeysRequest) returns (GetAPIKeysResponse){}
// CreateAPIKey creates an API key for the organization
rpc CreateAPIKey(CreateAPIKeyRequest) returns (CreateAPIKeyResponse){}
// DeleteAPIKey deletes an API key for the organization
rpc DeleteAPIKey(DeleteAPIKeyRequest) returns (DeleteAPIKeyResponse){}
// RemoveOrganizationMember removes the user from the organization
rpc RemoveOrganizationMember(RemoveOrganizationMemberRequest) returns (RemoveOrganizationMemberResponse){}
// RemoveInvitation removes the org invitation of the user
rpc RemoveInvitation(RemoveInvitationRequest) returns (RemoveInvitationResponse){}
// MigrateFromApollo migrates the graphs from apollo to cosmo
rpc MigrateFromApollo(MigrateFromApolloRequest) returns (MigrateFromApolloResponse) {}
// CreateOrganizationWebhookConfig create a new webhook config for the organization
rpc CreateOrganizationWebhookConfig(CreateOrganizationWebhookConfigRequest) returns (CreateOrganizationWebhookConfigResponse) {}
// GetOrganizationWebhookConfigs returns all webhooks for the organization
rpc GetOrganizationWebhookConfigs(GetOrganizationWebhookConfigsRequest) returns (GetOrganizationWebhookConfigsResponse) {}
// GetOrganizationWebhookMeta returns the meta data for a particular webhook
rpc GetOrganizationWebhookMeta(GetOrganizationWebhookMetaRequest) returns (GetOrganizationWebhookMetaResponse) {}
// UpdateOrganizationWebhookConfig updates an existing webhook for the organization
rpc UpdateOrganizationWebhookConfig(UpdateOrganizationWebhookConfigRequest) returns (UpdateOrganizationWebhookConfigResponse) {}
// DeleteOrganizationWebhookConfig deletes an organization webhook
rpc DeleteOrganizationWebhookConfig(DeleteOrganizationWebhookConfigRequest) returns (DeleteOrganizationWebhookConfigResponse) {}
// GetOrganizationWebhookHistory retrieves all webhook deliveries for the organization
rpc GetOrganizationWebhookHistory(GetOrganizationWebhookHistoryRequest) returns (GetOrganizationWebhookHistoryResponse) {}
// GetWebhookDeliveryDetails retrieves details for a particular webhook
rpc GetWebhookDeliveryDetails(GetWebhookDeliveryDetailsRequest) returns (GetWebhookDeliveryDetailsResponse) {}
// RedeliverWebhook triggers the delivery of the given webhook once again
rpc RedeliverWebhook(RedeliverWebhookRequest) returns (RedeliverWebhookResponse) {}
// CreateIntegration create a new integration for the organization
rpc CreateIntegration(CreateIntegrationRequest) returns (CreateIntegrationResponse) {}
// GetOrganizationIntegrations returns all integrations of the organization
rpc GetOrganizationIntegrations(GetOrganizationIntegrationsRequest) returns (GetOrganizationIntegrationsResponse) {}
// UpdateIntegrationConfig updates an existing integration of the organization
rpc UpdateIntegrationConfig(UpdateIntegrationConfigRequest) returns (UpdateIntegrationConfigResponse) {}
// DeleteIntegration deletes an organization web integration hook
rpc DeleteIntegration(DeleteIntegrationRequest) returns (DeleteIntegrationResponse) {}
// DeleteUser deletes the user
rpc DeleteUser(DeleteUserRequest) returns (DeleteUserResponse) {}
// DeleteOrganization deletes an organization
rpc DeleteOrganization(DeleteOrganizationRequest) returns (DeleteOrganizationResponse) {}
// LeaveOrganization removes a member from the organization
rpc LeaveOrganization(LeaveOrganizationRequest) returns (LeaveOrganizationResponse) {}
// UpdateOrganizationDetails updates the name and slug of the organization
rpc UpdateOrganizationDetails(UpdateOrganizationDetailsRequest) returns (UpdateOrganizationDetailsResponse) {}
// UpdateOrgMemberRole updates the role of an org member
rpc UpdateOrgMemberRole(UpdateOrgMemberRoleRequest) returns (UpdateOrgMemberRoleResponse) {}
// IsGitHubAppInstalled checks if the cosmo github app is installed to a repository
rpc IsGitHubAppInstalled(IsGitHubAppInstalledRequest) returns (IsGitHubAppInstalledResponse) {}
// CreateOIDCProvider adds an oidc provider to the organization
rpc CreateOIDCProvider(CreateOIDCProviderRequest) returns (CreateOIDCProviderResponse) {}
// GetOIDCProvider gets the oidc provider connected the organization
rpc GetOIDCProvider(GetOIDCProviderRequest) returns (GetOIDCProviderResponse) {}
// DeleteOIDCProvider deletes the oidc provider connected the organization
rpc DeleteOIDCProvider(DeleteOIDCProviderRequest) returns (DeleteOIDCProviderResponse) {}
// UpdateIDPMappers updates the mappings of the oidc provider
rpc UpdateIDPMappers(UpdateIDPMappersRequest) returns (UpdateIDPMappersResponse) {}
// GetClients returns all the clients of the federated graph
rpc GetClients(GetClientsRequest) returns (GetClientsResponse) {}
// GetRouters returns all active routers of the federated graph
rpc GetRouters(GetRoutersRequest) returns (GetRoutersResponse) {}
// GetInvitations returns all the invitations a user has received
rpc GetInvitations(GetInvitationsRequest) returns (GetInvitationsResponse) {}
// AcceptOrDeclineInvitation accepts or declines the invitation
rpc AcceptOrDeclineInvitation(AcceptOrDeclineInvitationRequest) returns (AcceptOrDeclineInvitationResponse) {}
// GetCompositions returns all the compositions of the federated graph
rpc GetCompositions(GetCompositionsRequest) returns (GetCompositionsResponse) {}
// GetCompositionDetails returns the details of that composition
rpc GetCompositionDetails(GetCompositionDetailsRequest) returns (GetCompositionDetailsResponse) {}
// GetSdlBySchemaVersion returns the sdl based on the schema version
rpc GetSdlBySchemaVersion(GetSdlBySchemaVersionRequest) returns (GetSdlBySchemaVersionResponse) {}
// GetChangelogBySchemaVersion returns the changelog based on the schema version
rpc GetChangelogBySchemaVersion(GetChangelogBySchemaVersionRequest) returns (GetChangelogBySchemaVersionResponse) {}
// GetUserAccessibleResources returns all the federated and subgraphs where the user has write permissions
rpc GetUserAccessibleResources(GetUserAccessibleResourcesRequest) returns (GetUserAccessibleResourcesResponse) {}
// UpdateFeatureSettings updates the setinngs of features(ai, rbac, scim) of the organization
rpc UpdateFeatureSettings(UpdateFeatureSettingsRequest) returns (UpdateFeatureSettingsResponse) {}
// AddSubgraphMember adds a user to the subgraph
rpc AddSubgraphMember(AddSubgraphMemberRequest) returns (AddSubgraphMemberResponse) {}
// RemoveSubgraphMember removes a member from the subgraph
rpc RemoveSubgraphMember(RemoveSubgraphMemberRequest) returns (RemoveSubgraphMemberResponse) {}
// GetSubgraphMembers gets all the members of the subgraph
rpc GetSubgraphMembers(GetSubgraphMembersRequest) returns (GetSubgraphMembersResponse) {}
// CreateDiscussion creates a new discussion with an opening comment
rpc CreateDiscussion(CreateDiscussionRequest) returns (CreateDiscussionResponse) {}
// ReplyToDiscussion creates a new comment in the discussion
rpc ReplyToDiscussion(ReplyToDiscussionRequest) returns (ReplyToDiscussionResponse) {}
// GetAllDiscussions fetches all discussions which may be scoped to a schema version if passed
rpc GetAllDiscussions(GetAllDiscussionsRequest) returns (GetAllDiscussionsResponse) {}
// UpdateDiscussionComment edits the comment in the discussion
rpc UpdateDiscussionComment(UpdateDiscussionCommentRequest) returns (UpdateDiscussionCommentResponse) {}
// DeleteDiscussionComment deletes the comment or the discussion if it is an opening comment
rpc DeleteDiscussionComment(DeleteDiscussionCommentRequest) returns (DeleteDiscussionCommentResponse) {}
// GetDiscussion gets the entire discussion thread
rpc GetDiscussion(GetDiscussionRequest) returns (GetDiscussionResponse) {}
// GetDiscussionSchemas gets the reference and latest schema of the target graph in which the discussion was created
rpc GetDiscussionSchemas(GetDiscussionSchemasRequest) returns (GetDiscussionSchemasResponse) {}
// SetDiscussionResolutionRequest marks the discussion as resolved or not
rpc SetDiscussionResolution(SetDiscussionResolutionRequest) returns (SetDiscussionResolutionResponse) {}
// AddReadme adds a readme of a target, can be a subgraph or a federated graph
rpc AddReadme(AddReadmeRequest) returns (AddReadmeResponse) {}
// GetUserAccessiblePermissions returns all the federated and subgraphs where the user has write permissions
rpc GetUserAccessiblePermissions(GetUserAccessiblePermissionsRequest) returns (GetUserAccessiblePermissionsResponse) {}
// CreateFeatureFlag creates a new feature flag for the selected feature graphs
rpc CreateFeatureFlag(CreateFeatureFlagRequest) returns (CreateFeatureFlagResponse) {}
// DeleteFeatureFlag deletes an existing feature flag
rpc DeleteFeatureFlag(DeleteFeatureFlagRequest) returns (DeleteFeatureFlagResponse) {}
// UpdateFeatureFlag updates a new feature flag for the selected feature graphs
rpc UpdateFeatureFlag(UpdateFeatureFlagRequest) returns (UpdateFeatureFlagResponse) {}
// EnableFeatureFlag enables/disables a feature flag
rpc EnableFeatureFlag(EnableFeatureFlagRequest) returns (EnableFeatureFlagResponse) {}
// Analytics
rpc GetAnalyticsView(GetAnalyticsViewRequest) returns (GetAnalyticsViewResponse) {
option idempotency_level = NO_SIDE_EFFECTS;
}
rpc GetDashboardAnalyticsView(GetDashboardAnalyticsViewRequest) returns (GetDashboardAnalyticsViewResponse){
option idempotency_level = NO_SIDE_EFFECTS;
}
rpc GetTrace(GetTraceRequest) returns (GetTraceResponse) {}
rpc GetGraphMetrics(GetGraphMetricsRequest) returns (GetGraphMetricsResponse) {
option idempotency_level = NO_SIDE_EFFECTS;
}
rpc GetMetricsErrorRate(GetMetricsErrorRateRequest) returns (GetMetricsErrorRateResponse) {
option idempotency_level = NO_SIDE_EFFECTS;
}
rpc GetSubgraphMetrics(GetSubgraphMetricsRequest) returns (GetSubgraphMetricsResponse) {
option idempotency_level = NO_SIDE_EFFECTS;
}
rpc GetSubgraphMetricsErrorRate(GetSubgraphMetricsErrorRateRequest) returns (GetSubgraphMetricsErrorRateResponse) {
option idempotency_level = NO_SIDE_EFFECTS;
}
rpc GetFieldUsage(GetFieldUsageRequest) returns (GetFieldUsageResponse) {
option idempotency_level = NO_SIDE_EFFECTS;
}
rpc GetOrganizationRequestsCount(GetOrganizationRequestsCountRequest) returns (GetOrganizationRequestsCountResponse) {}
rpc CreateOrganization(CreateOrganizationRequest) returns (CreateOrganizationResponse) {}
// EnableLintingForTheNamespace enables the lint check for the namespace passed.
rpc EnableLintingForTheNamespace(EnableLintingForTheNamespaceRequest) returns (EnableLintingForTheNamespaceResponse) {}
// ConfigureNamespaceLintConfig configures the lint config of the organization.
rpc ConfigureNamespaceLintConfig(ConfigureNamespaceLintConfigRequest) returns (ConfigureNamespaceLintConfigResponse) {}
// GetNamespaceLintConfig returns the lint config of the namespace.
rpc GetNamespaceLintConfig(GetNamespaceLintConfigRequest) returns (GetNamespaceLintConfigResponse) {}
// EnablePruningForTheNamespace enables the graph pruning check for the namespace passed.
rpc EnableGraphPruning(EnableGraphPruningRequest) returns (EnableGraphPruningResponse) {}
// ConfigureNamespaceGraphPruningConfig configures the graph pruning config of the organization.
rpc ConfigureNamespaceGraphPruningConfig(ConfigureNamespaceGraphPruningConfigRequest) returns (ConfigureNamespaceGraphPruningConfigResponse) {}
// GetNamespaceGraphPruningConfig returns the graph pruning config of the namespace.
rpc GetNamespaceGraphPruningConfig(GetNamespaceGraphPruningConfigRequest) returns (GetNamespaceGraphPruningConfigResponse) {}
// GetFeatureFlags returns the feature flags of the namespace
rpc GetFeatureFlags(GetFeatureFlagsRequest) returns (GetFeatureFlagsResponse) {}
// GetFeatureFlagByName returns the feature flag of the namespace
rpc GetFeatureFlagByName(GetFeatureFlagByNameRequest) returns (GetFeatureFlagByNameResponse) {}
// GetFeatureSubgraphsByFeatureFlag returns the feature subgraphs of a feature flag
rpc GetFeatureSubgraphsByFeatureFlag(GetFeatureSubgraphsByFeatureFlagRequest) returns (GetFeatureSubgraphsByFeatureFlagResponse) {}
// GetFeatureSubgraphs returns the list of feature subgraphs.
rpc GetFeatureSubgraphs(GetFeatureSubgraphsRequest) returns (GetFeatureSubgraphsResponse) {}
// GetFeatureFlagsByFederatedGraph returns the list of feature flags which match the label matchers of the federated graph.
rpc GetFeatureFlagsByFederatedGraph(GetFeatureFlagsByFederatedGraphRequest) returns (GetFeatureFlagsByFederatedGraphResponse) {}
// GetFederatedGraphById returns the federated graph by id.
rpc GetFederatedGraphById(GetFederatedGraphByIdRequest) returns (GetFederatedGraphByIdResponse) {}
// GetSubgraphById returns the subgraph by id.
rpc GetSubgraphById(GetSubgraphByIdRequest) returns (GetSubgraphByIdResponse) {}
// PushCacheWarmerOperation adds a operation to the list of cache warmer operations.
rpc PushCacheWarmerOperation(PushCacheWarmerOperationRequest) returns (PushCacheWarmerOperationResponse) {}
// GetCacheWarmerOperations returns the list of cache warmer operations.
rpc GetCacheWarmerOperations(GetCacheWarmerOperationsRequest) returns (GetCacheWarmerOperationsResponse) {}
// ComputeCacheWarmerOperations computes the list of cache warmer operations.
rpc ComputeCacheWarmerOperations(ComputeCacheWarmerOperationsRequest) returns (ComputeCacheWarmerOperationsResponse) {}
// ConfigureCacheWarmer enables cache warmer for the namespace passed.
rpc ConfigureCacheWarmer(ConfigureCacheWarmerRequest) returns (ConfigureCacheWarmerResponse) {}
// GetCacheWarmerConfig gets the config of cache warming for that namespace.
rpc GetCacheWarmerConfig(GetCacheWarmerConfigRequest) returns (GetCacheWarmerConfigResponse) {}
// DeleteCacheWarmerOperation deletes a cache warmer operation.
rpc DeleteCacheWarmerOperation(DeleteCacheWarmerOperationRequest) returns (DeleteCacheWarmerOperationResponse) {}
//
// Billing
//-----------------------------------------------------------------------------------------------------------------------------
// Return the available billing plans
rpc GetBillingPlans(GetBillingPlansRequest) returns (GetBillingPlansResponse) { }
// Create a Stripe checkout session
rpc CreateCheckoutSession(CreateCheckoutSessionRequest) returns (CreateCheckoutSessionResponse) { }
// Create a Stripe billing portal session
rpc CreateBillingPortalSession(CreateBillingPortalSessionRequest) returns (CreateBillingPortalSessionResponse) { }
// Upgrade the current plan
rpc UpgradePlan(UpgradePlanRequest) returns (UpgradePlanResponse) { }
// Router Compatibility Versions
rpc ListRouterCompatibilityVersions(ListRouterCompatibilityVersionsRequest) returns (ListRouterCompatibilityVersionsResponse) { }
// Graph
rpc SetGraphRouterCompatibilityVersion(SetGraphRouterCompatibilityVersionRequest) returns (SetGraphRouterCompatibilityVersionResponse) { }
}