diff --git a/Makefile b/Makefile index bd7c1ddeb5..8e3e5ce677 100644 --- a/Makefile +++ b/Makefile @@ -129,9 +129,12 @@ start-studio: start-router: (cd router && make dev) +start-graphqlmetrics: + (cd graphqlmetrics && make dev) + DC_FLAGS= dc-dev: - docker compose --file docker-compose.yml --profile dev up --remove-orphans --detach $(DC_FLAGS) + docker compose --file docker-compose.yml --profile dev up --remove-orphans --detach --scale graphqlmetrics=0 $(DC_FLAGS) dc-stack: docker compose --file docker-compose.cosmo.yml up --remove-orphans --detach diff --git a/benchmark/k6/random_traffic.js b/benchmark/k6/random_traffic.js new file mode 100644 index 0000000000..8d1c4dee84 --- /dev/null +++ b/benchmark/k6/random_traffic.js @@ -0,0 +1,833 @@ +// Random traffic generator for the **employees** federated demo. +// +// Pounds the router at $BASE_URL (default http://localhost:3002/graphql) with +// a weighted random mix of queries + mutations that, taken together, exercise +// nearly every root field and most leaf fields across every subgraph in +// demo/pkg/subgraphs/. Subscriptions are intentionally skipped. +// +// Subgraph coverage: +// employees — employee/employeeAsList/employees/products/teammates/ +// firstEmployee/findEmployeesBy, updateEmployeeTag, +// Employee {details,tag,expertise,role,notes,updatedAt, +// currentMood,derivedMood,isAvailable,primaryWorkItem, +// lastWorkReview,workSetup}, Products union, RoleType +// hierarchy, Country (via location), pets via family. +// family — findEmployees, Employee.details.{hasChildren, +// maritalStatus,nationality,pets[Pet hierarchy]}. +// hobbies — Employee.hobbies (every Hobby concrete type). +// products — productTypes, sharedThings, slicedThings, Products union +// (Consultancy/Cosmo/Documentation/SDK with url/urls). +// products_fg — same productTypes shape; reached via the products surface +// plus Employee.productCount. +// availability — updateAvailability + Employee.isAvailable. +// mood — updateMood + Employee.currentMood. +// countries — Country.{key{name},language} via Employee/Travelling. +// employeeupdated — skipped by default (NATS/Kafka/Redis dependent). +// test1 — skipped entirely (synthetic edge-case subgraph). +// projects — projects/project/projectStatuses/projectsByStatus/ +// projectResources/searchProjects/milestones/tasks/ +// projectActivities/projectTags/archivedProjects/ +// tasksByPriority/resourceMatrix/nodesById, every mutation, +// and Employee.{projects,assignedTasks,completedTasks, +// skills,certifications,projectHistory,workItemInfo, +// reviewReport,workSetupSummary,currentWorkload, +// averageTaskCompletionDays,totalProjectCount}. +// courses — courses/course/lessons, addCourse/addLesson + +// Employee.taughtCourses. +// +// Intentionally excluded (will error / require infra): +// - Subscriptions (all subgraphs). +// - employeeupdated event mutations + queries (NATS/Kafka/Redis). +// - test1 subgraph (header/payload/delay/big/long/rootFieldWith* etc.). +// - File-upload mutations (multipart isn't built here). +// - @requiresScopes / @authenticated fields by default +// (topSecretFederationFacts/factTypes/addFact/Employee.startDate). +// Set ENABLE_AUTH_OPS=true plus AUTH_HEADER='Bearer ' to include them. +// - kill*/panic/throwError*/rootFieldThrowsError/fieldThrowsError/returnsError. +// +// Env vars: +// BASE_URL default "http://localhost:3002/graphql" +// VUS default 10 +// DURATION default "60s" +// MUTATION_RATE default 0.1 +// ENABLE_AUTH_OPS "true" to include @requiresScopes / @authenticated ops +// AUTH_HEADER e.g. "Bearer "; sent on every request when set +// OPS_WEIGHTS_JSON JSON override, e.g. '{"addProject":0,"panicQuery":0}' +// FAIL_ON_ERRORS "true" to log payload+body on first error +// +// Run: +// k6 run benchmark/k6/random_traffic.js +// k6 run -e VUS=30 -e DURATION=3m -e MUTATION_RATE=0.15 \ +// benchmark/k6/random_traffic.js + +import http from "k6/http"; +import { check } from "k6"; +import { Counter, Rate, Trend } from "k6/metrics"; +import { randomIntBetween, randomItem } from "https://jslib.k6.io/k6-utils/1.4.0/index.js"; + +const BASE_URL = __ENV.BASE_URL || "http://localhost:3002/graphql"; +const VUS = parseInt(__ENV.VUS || "10", 10); +const DURATION = __ENV.DURATION || "60s"; +const MUTATION_RATE = parseFloat(__ENV.MUTATION_RATE || "0.1"); +const ENABLE_AUTH_OPS = (__ENV.ENABLE_AUTH_OPS || "false").toLowerCase() === "true"; +const AUTH_HEADER = __ENV.AUTH_HEADER || ""; +const FAIL_ON_ERRORS = (__ENV.FAIL_ON_ERRORS || "false").toLowerCase() === "true"; +const WEIGHT_OVERRIDES = (() => { + try { + return JSON.parse(__ENV.OPS_WEIGHTS_JSON || "{}"); + } catch (_e) { + return {}; + } +})(); + +export const options = { + vus: VUS, + duration: DURATION, + summaryTrendStats: ["min", "avg", "med", "p(90)", "p(95)", "p(99)", "max"], +}; + +const graphqlErrorRate = new Rate("graphql_error_rate"); +const httpErrorRate = new Rate("http_error_rate"); +const opCount = new Counter("op_count"); +const opDuration = new Trend("op_duration_ms", true); + +// --------------------------------------------------------------------------- +// Seed values matched to demo/pkg/subgraphs data. +// --------------------------------------------------------------------------- + +const EMPLOYEE_IDS = [1, 2, 3, 4, 5, 7, 8, 10, 11, 12]; +const DEPARTMENTS = ["ENGINEERING", "MARKETING", "OPERATIONS"]; +const ENGINEER_TYPES = ["BACKEND", "FRONTEND", "FULLSTACK"]; +const OPERATION_TYPES = ["FINANCE", "HUMAN_RESOURCES"]; +const NATIONALITIES = ["AMERICAN", "DUTCH", "ENGLISH", "GERMAN", "INDIAN", "SPANISH", "UKRAINIAN"]; +const MARITAL_STATUSES = ["ENGAGED", "MARRIED"]; +const MOODS = ["HAPPY", "SAD"]; // APATHETIC is @inaccessible +const PRODUCT_NAMES = ["CONSULTANCY", "COSMO", "ENGINE", "FINANCE", "HUMAN_RESOURCES", "MARKETING", "SDK"]; +const PROJECT_STATUSES = ["PLANNING", "ACTIVE", "COMPLETED", "ON_HOLD"]; +const MILESTONE_STATUSES = ["PENDING", "IN_PROGRESS", "COMPLETED", "DELAYED"]; +const TASK_STATUSES = ["TODO", "IN_PROGRESS", "REVIEW", "COMPLETED", "BLOCKED"]; +const TASK_PRIORITIES = ["LOW", "MEDIUM", "HIGH", "URGENT"]; +const SAMPLE_IDS = ["1", "2", "3", "4", "5"]; + +// --------------------------------------------------------------------------- +// Reusable GraphQL fragments. The Employee fragment fans out across every +// subgraph that contributes to Employee: employees, family, hobbies, +// availability, mood, products, products_fg, projects, courses, countries. +// --------------------------------------------------------------------------- + +const EMPLOYEE_DEEP = ` + fragment EmployeeDeep on Employee { + id + tag + expertise + notes + updatedAt + isAvailable + currentMood + derivedMood + details { + forename + surname + hasChildren + maritalStatus + nationality + location { key { name } language } + pastLocations { type name country { key { name } language } } + pets { + class gender + ... on Cat { name type } + ... on Dog { name breed } + ... on Alligator { name dangerous } + ... on Mouse { name } + ... on Pony { name } + } + } + role { + departments + title + ... on Engineer { engineerType } + ... on Operator { operatorType } + } + hobbies { + ... on Exercise { category } + ... on Flying { planeModels yearsOfExperience } + ... on Gaming { genres name yearsOfExperience } + ... on Other { name } + ... on Programming { languages } + ... on Travelling { countriesLived { key { name } language } } + } + products + productCount + taughtCourses { id title description } + projects { id name status } + assignedTasks { id name status priority } + completedTasks { id name } + skills + certifications + workItemInfo + reviewReport + workSetupSummary + currentWorkload(includeCompleted: true) + totalProjectCount + primaryWorkItem { + __typename name priority + ... on TechnicalWorkItem { codeCount handler { name } specs { name complexity metrics { score efficiency } } } + ... on ManagementWorkItem { teamSize handler { name } specs { name scope metrics { score efficiency } } } + } + lastWorkReview { + __typename + ... on WorkApproval { comment approvedAt } + ... on WorkRejection { reason rejectionCode } + } + workSetup { priority primaryItem { __typename name priority } } + } +`; + +const PRODUCTS_UNION = ` + ... on Consultancy { upc name lead { id } isLeadAvailable } + ... on Cosmo { upc name repositoryURL engineers { id } lead { id } isLeadAvailable } + ... on Documentation { url(product: COSMO) urls(products: [COSMO, SDK]) } + ... on SDK { upc unicode owner { id } engineers { id } clientLanguages } +`; + +const PROJECT_DEEP = ` + fragment ProjectDeep on Project { + id name description status startDate endDate progress + tags milestoneIds + teamMembers { id } + relatedProducts { upc } + milestones { id name status completionPercentage } + tasks { id name status priority } + completionRate(includeSubtasks: true) + taskCount + activeMilestoneCount + subProjects(includeArchived: false) { id name status } + } +`; + +// --------------------------------------------------------------------------- +// Operation pool. Each entry's `build()` returns { query, variables, headers }. +// `auth: true` marks operations that depend on @requiresScopes / @authenticated. +// --------------------------------------------------------------------------- + +const OPERATIONS = [ + // ============================================================ employees === + { + name: "employee", + weight: 10, + build: () => ({ + query: `${EMPLOYEE_DEEP} + query Employee($id: Int!) { employee(id: $id) { ...EmployeeDeep } }`, + variables: { id: randomItem(EMPLOYEE_IDS) }, + }), + }, + { + name: "employeeAsList", + weight: 4, + build: () => ({ + query: `${EMPLOYEE_DEEP} + query EmployeeAsList($id: Int!) { employeeAsList(id: $id) { ...EmployeeDeep } }`, + variables: { id: randomItem(EMPLOYEE_IDS) }, + }), + }, + { + name: "employees", + weight: 6, + build: () => ({ + query: `${EMPLOYEE_DEEP} + query Employees { employees { ...EmployeeDeep } }`, + variables: {}, + }), + }, + { + name: "teammates", + weight: 5, + build: () => ({ + query: `${EMPLOYEE_DEEP} + query Teammates($team: Department!) { teammates(team: $team) { ...EmployeeDeep } }`, + variables: { team: randomItem(DEPARTMENTS) }, + }), + }, + { + name: "firstEmployee", + weight: 3, + build: () => ({ + query: `${EMPLOYEE_DEEP} query FirstEmployee { firstEmployee { ...EmployeeDeep } }`, + variables: {}, + }), + }, + { + name: "findEmployeesBy_id", + weight: 3, + build: () => ({ + query: `query FindByID($criteria: FindEmployeeCriteria!) { + findEmployeesBy(criteria: $criteria) { id tag details { forename surname } } + }`, + variables: { criteria: { id: randomItem(EMPLOYEE_IDS) } }, + }), + }, + { + name: "findEmployeesBy_department", + weight: 3, + build: () => ({ + query: `query FindByDept($criteria: FindEmployeeCriteria!) { + findEmployeesBy(criteria: $criteria) { id role { departments title } } + }`, + variables: { criteria: { department: randomItem(DEPARTMENTS) } }, + }), + }, + { + name: "findEmployeesBy_title", + weight: 3, + build: () => ({ + query: `query FindByTitle($criteria: FindEmployeeCriteria!) { + findEmployeesBy(criteria: $criteria) { id role { title } } + }`, + variables: { criteria: { title: randomItem(["Senior Engineer", "Director", "Engineer", "Manager"]) } }, + }), + }, + { + name: "rootProducts", + weight: 4, + build: () => ({ + query: `query RootProducts { products { __typename ${PRODUCTS_UNION} } }`, + variables: {}, + }), + }, + { + name: "updateEmployeeTag", + weight: 4, + isMutation: true, + build: () => ({ + query: `mutation UpdateTag($id: Int!, $tag: String!) { + updateEmployeeTag(id: $id, tag: $tag) { id tag } + }`, + variables: { + id: randomItem(EMPLOYEE_IDS), + tag: `k6-${randomIntBetween(1, 1_000_000)}`, + }, + }), + }, + + // =============================================================== family === + { + name: "findEmployees_family", + weight: 5, + build: () => ({ + query: `query FindFamily($criteria: SearchInput) { + findEmployees(criteria: $criteria) { + id + details { + forename surname middlename hasChildren maritalStatus nationality + pets { class gender ... on Cat { name type } ... on Dog { name breed } ... on Alligator { name dangerous } } + } + } + }`, + variables: { + criteria: { + hasPets: Math.random() < 0.5, + nationality: randomItem(NATIONALITIES), + nested: { + maritalStatus: Math.random() < 0.5 ? randomItem(MARITAL_STATUSES) : null, + hasChildren: Math.random() < 0.5, + }, + }, + }, + }), + }, + + // ============================================================= products === + { + name: "productTypes", + weight: 4, + build: () => ({ + query: `query ProductTypes { productTypes { __typename ${PRODUCTS_UNION} } }`, + variables: {}, + }), + }, + { + name: "sharedThings", + weight: 3, + build: () => ({ + query: `query SharedThings($a: Int!, $b: Int!) { + sharedThings(numOfA: $a, numOfB: $b) { a b } + }`, + variables: { a: randomIntBetween(1, 5), b: randomIntBetween(1, 5) }, + }), + }, + { + name: "slicedThings", + weight: 2, + build: () => ({ + query: `query SlicedThings($first: Int) { slicedThings(first: $first) { a } }`, + variables: { first: randomIntBetween(1, 5) }, + }), + }, + { + name: "factTypes", + weight: 1, + auth: true, + build: () => ({ + query: `query FactTypes { factTypes }`, + variables: {}, + }), + }, + { + name: "topSecretFederationFacts", + weight: 1, + auth: true, + build: () => ({ + query: `query TopSecret { + topSecretFederationFacts { + __typename description factType + ... on DirectiveFact { title } + ... on EntityFact { title } + ... on MiscellaneousFact { title } + } + }`, + variables: {}, + }), + }, + { + name: "addFact", + weight: 1, + isMutation: true, + auth: true, + build: () => ({ + query: `mutation AddFact($fact: TopSecretFactInput!) { + addFact(fact: $fact) { __typename description factType } + }`, + variables: { + fact: { + title: `k6-fact-${randomIntBetween(1, 1_000_000)}`, + description: "k6 generated description", + factType: randomItem(["DIRECTIVE", "ENTITY", "MISCELLANEOUS"]), + }, + }, + }), + }, + + // ========================================================= availability === + { + name: "updateAvailability", + weight: 3, + isMutation: true, + build: () => ({ + query: `mutation UpdateAvail($id: Int!, $avail: Boolean!) { + updateAvailability(employeeID: $id, isAvailable: $avail) { id isAvailable } + }`, + variables: { id: randomItem(EMPLOYEE_IDS), avail: Math.random() < 0.5 }, + }), + }, + + // ================================================================= mood === + { + name: "updateMood", + weight: 3, + isMutation: true, + build: () => ({ + query: `mutation UpdateMood($id: Int!, $mood: Mood!) { + updateMood(employeeID: $id, mood: $mood) { id currentMood } + }`, + variables: { id: randomItem(EMPLOYEE_IDS), mood: randomItem(MOODS) }, + }), + }, + + // ============================================================= projects === + { + name: "projects", + weight: 6, + build: () => ({ + query: `${PROJECT_DEEP} query Projects { projects { ...ProjectDeep } }`, + variables: {}, + }), + }, + { + name: "project", + weight: 5, + build: () => ({ + query: `${PROJECT_DEEP} query Project($id: ID!) { project(id: $id) { ...ProjectDeep } }`, + variables: { id: randomItem(SAMPLE_IDS) }, + }), + }, + { + name: "projectStatuses", + weight: 2, + build: () => ({ + query: `query ProjectStatuses { projectStatuses }`, + variables: {}, + }), + }, + { + name: "projectsByStatus", + weight: 4, + build: () => ({ + query: `${PROJECT_DEEP} + query ByStatus($status: ProjectStatus!) { + projectsByStatus(status: $status) { ...ProjectDeep } + }`, + variables: { status: randomItem(PROJECT_STATUSES) }, + }), + }, + { + name: "projectResources", + weight: 3, + build: () => ({ + query: `query Resources($id: ID!) { + projectResources(projectId: $id) { + __typename + ... on Employee { id tag } + ... on Product { upc } + ... on Milestone { id name status } + ... on Task { id name status } + } + }`, + variables: { id: randomItem(SAMPLE_IDS) }, + }), + }, + { + name: "searchProjects", + weight: 3, + build: () => ({ + query: `query Search($q: String!) { + searchProjects(query: $q) { + __typename + ... on Project { id name status } + ... on Milestone { id name } + ... on Task { id name } + } + }`, + variables: { q: randomItem(["alpha", "beta", "cosmo", "demo", "k6"]) }, + }), + }, + { + name: "milestones", + weight: 3, + build: () => ({ + query: `query Milestones($id: ID!) { + milestones(projectId: $id) { + id name status completionPercentage + dependencies { id name } + subtasks { id name } + reviewers { id } + isAtRisk(threshold: 0.5) + daysUntilDue + } + }`, + variables: { id: randomItem(SAMPLE_IDS) }, + }), + }, + { + name: "tasks", + weight: 3, + build: () => ({ + query: `query Tasks($id: ID!) { + tasks(projectId: $id) { + id name status priority actualHours + labels subtasks { id } dependencies { id } attachmentUrls reviewerIds + isBlocked(checkDependencies: true) + totalEffort(includeSubtasks: true) + } + }`, + variables: { id: randomItem(SAMPLE_IDS) }, + }), + }, + { + name: "projectActivities", + weight: 2, + build: () => ({ + query: `query Activities($id: ID!) { + projectActivities(projectId: $id) { + __typename + ... on ProjectUpdate { id updateType description timestamp } + ... on Milestone { id name } + ... on Task { id name } + } + }`, + variables: { id: randomItem(SAMPLE_IDS) }, + }), + }, + { + name: "projectTags", + weight: 1, + build: () => ({ + query: `query ProjectTags { projectTags }`, + variables: {}, + }), + }, + { + name: "archivedProjects", + weight: 2, + build: () => ({ + query: `${PROJECT_DEEP} query Archived { archivedProjects { ...ProjectDeep } }`, + variables: {}, + }), + }, + { + name: "tasksByPriority", + weight: 2, + build: () => ({ + query: `query TBP($id: ID!) { tasksByPriority(projectId: $id) { id name priority } }`, + variables: { id: randomItem(SAMPLE_IDS) }, + }), + }, + { + name: "resourceMatrix", + weight: 2, + build: () => ({ + query: `query Matrix($id: ID!) { + resourceMatrix(projectId: $id) { + __typename + ... on Employee { id } + ... on Product { upc } + ... on Milestone { id } + ... on Task { id } + } + }`, + variables: { id: randomItem(SAMPLE_IDS) }, + }), + }, + { + name: "nodesById", + weight: 2, + build: () => ({ + query: `query Nodes($id: ID!) { + nodesById(id: $id) { + __typename + ... on Project { id name } + ... on Milestone { id name } + ... on Task { id name } + } + }`, + variables: { id: randomItem(SAMPLE_IDS) }, + }), + }, + { + name: "addProject", + weight: 2, + isMutation: true, + build: () => ({ + query: `mutation AddProject($p: ProjectInput!) { + addProject(project: $p) { id name status } + }`, + variables: { + p: { + name: `k6-project-${randomIntBetween(1, 1_000_000)}`, + description: "k6 random traffic", + status: randomItem(PROJECT_STATUSES), + }, + }, + }), + }, + { + name: "addMilestone", + weight: 2, + isMutation: true, + build: () => ({ + query: `mutation AddMilestone($m: MilestoneInput!) { + addMilestone(milestone: $m) { id name status } + }`, + variables: { + m: { + projectId: randomItem(SAMPLE_IDS), + name: `k6-milestone-${randomIntBetween(1, 1_000_000)}`, + status: randomItem(MILESTONE_STATUSES), + }, + }, + }), + }, + { + name: "addTask", + weight: 2, + isMutation: true, + build: () => ({ + query: `mutation AddTask($t: TaskInput!) { + addTask(task: $t) { id name status priority } + }`, + variables: { + t: { + projectId: randomItem(SAMPLE_IDS), + assigneeId: randomItem(EMPLOYEE_IDS), + name: `k6-task-${randomIntBetween(1, 1_000_000)}`, + priority: randomItem(TASK_PRIORITIES), + status: randomItem(TASK_STATUSES), + estimatedHours: randomIntBetween(1, 40), + }, + }, + }), + }, + { + name: "updateProjectStatus", + weight: 2, + isMutation: true, + build: () => ({ + query: `mutation UpdStatus($id: ID!, $s: ProjectStatus!) { + updateProjectStatus(projectId: $id, status: $s) { + id projectId updateType description timestamp + } + }`, + variables: { id: randomItem(SAMPLE_IDS), s: randomItem(PROJECT_STATUSES) }, + }), + }, + + // ============================================================== courses === + { + name: "courses", + weight: 4, + build: () => ({ + query: `query Courses { + courses { + id title description + instructor { id details { forename surname } } + lessons { id title order } + } + }`, + variables: {}, + }), + }, + { + name: "course", + weight: 3, + build: () => ({ + query: `query Course($id: ID!) { + course(id: $id) { id title description lessons { id title order } } + }`, + variables: { id: randomItem(SAMPLE_IDS) }, + }), + }, + { + name: "lessons", + weight: 3, + build: () => ({ + query: `query Lessons($id: ID!) { + lessons(courseId: $id) { id courseId title order course { id title } } + }`, + variables: { id: randomItem(SAMPLE_IDS) }, + }), + }, + { + name: "addCourse", + weight: 1, + isMutation: true, + build: () => ({ + query: `mutation AddCourse($t: String!, $i: Int!) { + addCourse(title: $t, instructorId: $i) { id title } + }`, + variables: { + t: `k6-course-${randomIntBetween(1, 1_000_000)}`, + i: randomItem(EMPLOYEE_IDS), + }, + }), + }, + { + name: "addLesson", + weight: 1, + isMutation: true, + build: () => ({ + query: `mutation AddLesson($c: ID!, $t: String!, $o: Int!) { + addLesson(courseId: $c, title: $t, order: $o) { id title order } + }`, + variables: { + c: randomItem(SAMPLE_IDS), + t: `k6-lesson-${randomIntBetween(1, 1_000_000)}`, + o: randomIntBetween(1, 20), + }, + }), + }, +]; + +// Apply weight overrides and gate auth-only ops behind ENABLE_AUTH_OPS. +for (const op of OPERATIONS) { + if (Object.prototype.hasOwnProperty.call(WEIGHT_OVERRIDES, op.name)) { + op.weight = Math.max(0, Number(WEIGHT_OVERRIDES[op.name]) || 0); + } + if (op.auth && !ENABLE_AUTH_OPS) { + op.weight = 0; + } +} + +const READS = OPERATIONS.filter((o) => !o.isMutation && o.weight > 0); +const WRITES = OPERATIONS.filter((o) => o.isMutation && o.weight > 0); + +function pickWeighted(pool) { + const total = pool.reduce((acc, o) => acc + o.weight, 0); + let r = Math.random() * total; + for (const op of pool) { + r -= op.weight; + if (r <= 0) return op; + } + return pool[pool.length - 1]; +} + +function chooseOp() { + const pool = WRITES.length > 0 && Math.random() < MUTATION_RATE ? WRITES : READS; + return pickWeighted(pool); +} + +// --------------------------------------------------------------------------- +// setup() — log the surface that will be exercised. +// --------------------------------------------------------------------------- + +export function setup() { + const enabled = OPERATIONS.filter((o) => o.weight > 0).map( + (o) => `${o.isMutation ? "M" : "Q"} ${o.name} (w=${o.weight}${o.auth ? ", auth" : ""})`, + ); + const disabled = OPERATIONS.filter((o) => o.weight === 0).map((o) => o.name); + console.log(`random_traffic -> ${BASE_URL}`); + console.log(`vus=${VUS} duration=${DURATION} mutation_rate=${MUTATION_RATE} auth_ops=${ENABLE_AUTH_OPS}`); + console.log(`enabled (${enabled.length}):\n ${enabled.join("\n ")}`); + if (disabled.length) console.log(`disabled: ${disabled.join(", ")}`); + return {}; +} + +// --------------------------------------------------------------------------- +// Per-iteration: pick → fire → record. +// --------------------------------------------------------------------------- + +export default function () { + const op = chooseOp(); + const built = op.build(); + const body = JSON.stringify({ + operationName: extractOperationName(built.query), + query: built.query, + variables: built.variables || {}, + }); + const headers = Object.assign( + { "content-type": "application/json" }, + AUTH_HEADER ? { Authorization: AUTH_HEADER } : {}, + built.headers || {}, + ); + + const res = http.post(BASE_URL, body, { headers, tags: { op: op.name } }); + + opCount.add(1, { op: op.name }); + opDuration.add(res.timings.duration, { op: op.name }); + + const httpOk = res.status === 200; + httpErrorRate.add(!httpOk, { op: op.name }); + + let parsed = null; + if (httpOk) { + try { + parsed = res.json(); + } catch (_e) { + // fall through; counts as a graphql error below + } + } + const hasErrors = !parsed || (Array.isArray(parsed.errors) && parsed.errors.length > 0); + graphqlErrorRate.add(hasErrors, { op: op.name }); + + check(res, { "http 200": (r) => r.status === 200 }); + check({ hasErrors }, { "no graphql errors": (d) => !d.hasErrors }); + + if (FAIL_ON_ERRORS && hasErrors) { + console.error( + `op=${op.name} status=${res.status} body=${res.body && String(res.body).slice(0, 500)}`, + ); + } +} + +function extractOperationName(query) { + const m = /(?:query|mutation)\s+([A-Za-z_][A-Za-z0-9_]*)/.exec(query); + return m ? m[1] : undefined; +} diff --git a/connect-go/gen/proto/wg/cosmo/platform/v1/platform.pb.go b/connect-go/gen/proto/wg/cosmo/platform/v1/platform.pb.go index 60fc40c127..26d1a59fb2 100644 --- a/connect-go/gen/proto/wg/cosmo/platform/v1/platform.pb.go +++ b/connect-go/gen/proto/wg/cosmo/platform/v1/platform.pb.go @@ -796,7 +796,7 @@ func (x GetOperationsResponse_OperationType) Number() protoreflect.EnumNumber { // Deprecated: Use GetOperationsResponse_OperationType.Descriptor instead. func (GetOperationsResponse_OperationType) EnumDescriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{426, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{428, 0} } type Label struct { @@ -27291,6 +27291,113 @@ func (x *GetProposalChecksResponse) GetTotalChecksCount() int32 { return 0 } +type GetCacheCohortConfigVersionsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + FederatedGraphId string `protobuf:"bytes,1,opt,name=federated_graph_id,json=federatedGraphId,proto3" json:"federated_graph_id,omitempty"` + // When unset, the base/main cohort (rows with feature_flag_id IS NULL) is returned. + FeatureFlagId *string `protobuf:"bytes,2,opt,name=feature_flag_id,json=featureFlagId,proto3,oneof" json:"feature_flag_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetCacheCohortConfigVersionsRequest) Reset() { + *x = GetCacheCohortConfigVersionsRequest{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[417] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetCacheCohortConfigVersionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCacheCohortConfigVersionsRequest) ProtoMessage() {} + +func (x *GetCacheCohortConfigVersionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[417] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCacheCohortConfigVersionsRequest.ProtoReflect.Descriptor instead. +func (*GetCacheCohortConfigVersionsRequest) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{417} +} + +func (x *GetCacheCohortConfigVersionsRequest) GetFederatedGraphId() string { + if x != nil { + return x.FederatedGraphId + } + return "" +} + +func (x *GetCacheCohortConfigVersionsRequest) GetFeatureFlagId() string { + if x != nil && x.FeatureFlagId != nil { + return *x.FeatureFlagId + } + return "" +} + +type GetCacheCohortConfigVersionsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response *Response `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + // schemaVersion.id UUIDs that have ever been minted for the given + // (federated_graph_id, feature_flag_id) cohort, newest first. + ConfigVersions []string `protobuf:"bytes,2,rep,name=config_versions,json=configVersions,proto3" json:"config_versions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetCacheCohortConfigVersionsResponse) Reset() { + *x = GetCacheCohortConfigVersionsResponse{} + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[418] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetCacheCohortConfigVersionsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCacheCohortConfigVersionsResponse) ProtoMessage() {} + +func (x *GetCacheCohortConfigVersionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[418] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCacheCohortConfigVersionsResponse.ProtoReflect.Descriptor instead. +func (*GetCacheCohortConfigVersionsResponse) Descriptor() ([]byte, []int) { + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{418} +} + +func (x *GetCacheCohortConfigVersionsResponse) GetResponse() *Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *GetCacheCohortConfigVersionsResponse) GetConfigVersions() []string { + if x != nil { + return x.ConfigVersions + } + return nil +} + type UpdateProposalRequest struct { state protoimpl.MessageState `protogen:"open.v1"` ProposalName string `protobuf:"bytes,1,opt,name=proposalName,proto3" json:"proposalName,omitempty"` @@ -27307,7 +27414,7 @@ type UpdateProposalRequest struct { func (x *UpdateProposalRequest) Reset() { *x = UpdateProposalRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[417] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[419] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27319,7 +27426,7 @@ func (x *UpdateProposalRequest) String() string { func (*UpdateProposalRequest) ProtoMessage() {} func (x *UpdateProposalRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[417] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[419] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27332,7 +27439,7 @@ func (x *UpdateProposalRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProposalRequest.ProtoReflect.Descriptor instead. func (*UpdateProposalRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{417} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{419} } func (x *UpdateProposalRequest) GetProposalName() string { @@ -27425,7 +27532,7 @@ type UpdateProposalResponse struct { func (x *UpdateProposalResponse) Reset() { *x = UpdateProposalResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[418] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[420] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27437,7 +27544,7 @@ func (x *UpdateProposalResponse) String() string { func (*UpdateProposalResponse) ProtoMessage() {} func (x *UpdateProposalResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[418] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[420] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27450,7 +27557,7 @@ func (x *UpdateProposalResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateProposalResponse.ProtoReflect.Descriptor instead. func (*UpdateProposalResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{418} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{420} } func (x *UpdateProposalResponse) GetResponse() *Response { @@ -27589,7 +27696,7 @@ type EnableProposalsForNamespaceRequest struct { func (x *EnableProposalsForNamespaceRequest) Reset() { *x = EnableProposalsForNamespaceRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[419] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[421] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27601,7 +27708,7 @@ func (x *EnableProposalsForNamespaceRequest) String() string { func (*EnableProposalsForNamespaceRequest) ProtoMessage() {} func (x *EnableProposalsForNamespaceRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[419] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[421] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27614,7 +27721,7 @@ func (x *EnableProposalsForNamespaceRequest) ProtoReflect() protoreflect.Message // Deprecated: Use EnableProposalsForNamespaceRequest.ProtoReflect.Descriptor instead. func (*EnableProposalsForNamespaceRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{419} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{421} } func (x *EnableProposalsForNamespaceRequest) GetNamespace() string { @@ -27640,7 +27747,7 @@ type EnableProposalsForNamespaceResponse struct { func (x *EnableProposalsForNamespaceResponse) Reset() { *x = EnableProposalsForNamespaceResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[420] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[422] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27652,7 +27759,7 @@ func (x *EnableProposalsForNamespaceResponse) String() string { func (*EnableProposalsForNamespaceResponse) ProtoMessage() {} func (x *EnableProposalsForNamespaceResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[420] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[422] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27665,7 +27772,7 @@ func (x *EnableProposalsForNamespaceResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use EnableProposalsForNamespaceResponse.ProtoReflect.Descriptor instead. func (*EnableProposalsForNamespaceResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{420} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{422} } func (x *EnableProposalsForNamespaceResponse) GetResponse() *Response { @@ -27686,7 +27793,7 @@ type ConfigureNamespaceProposalConfigRequest struct { func (x *ConfigureNamespaceProposalConfigRequest) Reset() { *x = ConfigureNamespaceProposalConfigRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[421] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[423] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27698,7 +27805,7 @@ func (x *ConfigureNamespaceProposalConfigRequest) String() string { func (*ConfigureNamespaceProposalConfigRequest) ProtoMessage() {} func (x *ConfigureNamespaceProposalConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[421] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[423] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27711,7 +27818,7 @@ func (x *ConfigureNamespaceProposalConfigRequest) ProtoReflect() protoreflect.Me // Deprecated: Use ConfigureNamespaceProposalConfigRequest.ProtoReflect.Descriptor instead. func (*ConfigureNamespaceProposalConfigRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{421} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{423} } func (x *ConfigureNamespaceProposalConfigRequest) GetNamespace() string { @@ -27744,7 +27851,7 @@ type ConfigureNamespaceProposalConfigResponse struct { func (x *ConfigureNamespaceProposalConfigResponse) Reset() { *x = ConfigureNamespaceProposalConfigResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[422] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[424] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27756,7 +27863,7 @@ func (x *ConfigureNamespaceProposalConfigResponse) String() string { func (*ConfigureNamespaceProposalConfigResponse) ProtoMessage() {} func (x *ConfigureNamespaceProposalConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[422] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[424] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27769,7 +27876,7 @@ func (x *ConfigureNamespaceProposalConfigResponse) ProtoReflect() protoreflect.M // Deprecated: Use ConfigureNamespaceProposalConfigResponse.ProtoReflect.Descriptor instead. func (*ConfigureNamespaceProposalConfigResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{422} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{424} } func (x *ConfigureNamespaceProposalConfigResponse) GetResponse() *Response { @@ -27788,7 +27895,7 @@ type GetNamespaceProposalConfigRequest struct { func (x *GetNamespaceProposalConfigRequest) Reset() { *x = GetNamespaceProposalConfigRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[423] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[425] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27800,7 +27907,7 @@ func (x *GetNamespaceProposalConfigRequest) String() string { func (*GetNamespaceProposalConfigRequest) ProtoMessage() {} func (x *GetNamespaceProposalConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[423] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[425] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27813,7 +27920,7 @@ func (x *GetNamespaceProposalConfigRequest) ProtoReflect() protoreflect.Message // Deprecated: Use GetNamespaceProposalConfigRequest.ProtoReflect.Descriptor instead. func (*GetNamespaceProposalConfigRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{423} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{425} } func (x *GetNamespaceProposalConfigRequest) GetNamespace() string { @@ -27835,7 +27942,7 @@ type GetNamespaceProposalConfigResponse struct { func (x *GetNamespaceProposalConfigResponse) Reset() { *x = GetNamespaceProposalConfigResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[424] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[426] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27847,7 +27954,7 @@ func (x *GetNamespaceProposalConfigResponse) String() string { func (*GetNamespaceProposalConfigResponse) ProtoMessage() {} func (x *GetNamespaceProposalConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[424] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[426] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27860,7 +27967,7 @@ func (x *GetNamespaceProposalConfigResponse) ProtoReflect() protoreflect.Message // Deprecated: Use GetNamespaceProposalConfigResponse.ProtoReflect.Descriptor instead. func (*GetNamespaceProposalConfigResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{424} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{426} } func (x *GetNamespaceProposalConfigResponse) GetResponse() *Response { @@ -27913,7 +28020,7 @@ type GetOperationsRequest struct { func (x *GetOperationsRequest) Reset() { *x = GetOperationsRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[425] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[427] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27925,7 +28032,7 @@ func (x *GetOperationsRequest) String() string { func (*GetOperationsRequest) ProtoMessage() {} func (x *GetOperationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[425] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[427] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27938,7 +28045,7 @@ func (x *GetOperationsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOperationsRequest.ProtoReflect.Descriptor instead. func (*GetOperationsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{425} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{427} } func (x *GetOperationsRequest) GetFederatedGraphName() string { @@ -28050,7 +28157,7 @@ type GetOperationsResponse struct { func (x *GetOperationsResponse) Reset() { *x = GetOperationsResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[426] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[428] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28062,7 +28169,7 @@ func (x *GetOperationsResponse) String() string { func (*GetOperationsResponse) ProtoMessage() {} func (x *GetOperationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[426] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[428] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28075,7 +28182,7 @@ func (x *GetOperationsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOperationsResponse.ProtoReflect.Descriptor instead. func (*GetOperationsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{426} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{428} } func (x *GetOperationsResponse) GetResponse() *Response { @@ -28109,7 +28216,7 @@ type GetClientsFromAnalyticsRequest struct { func (x *GetClientsFromAnalyticsRequest) Reset() { *x = GetClientsFromAnalyticsRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[427] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[429] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28121,7 +28228,7 @@ func (x *GetClientsFromAnalyticsRequest) String() string { func (*GetClientsFromAnalyticsRequest) ProtoMessage() {} func (x *GetClientsFromAnalyticsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[427] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[429] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28134,7 +28241,7 @@ func (x *GetClientsFromAnalyticsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClientsFromAnalyticsRequest.ProtoReflect.Descriptor instead. func (*GetClientsFromAnalyticsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{427} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{429} } func (x *GetClientsFromAnalyticsRequest) GetFederatedGraphName() string { @@ -28161,7 +28268,7 @@ type GetClientsFromAnalyticsResponse struct { func (x *GetClientsFromAnalyticsResponse) Reset() { *x = GetClientsFromAnalyticsResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[428] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[430] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28173,7 +28280,7 @@ func (x *GetClientsFromAnalyticsResponse) String() string { func (*GetClientsFromAnalyticsResponse) ProtoMessage() {} func (x *GetClientsFromAnalyticsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[428] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[430] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28186,7 +28293,7 @@ func (x *GetClientsFromAnalyticsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClientsFromAnalyticsResponse.ProtoReflect.Descriptor instead. func (*GetClientsFromAnalyticsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{428} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{430} } func (x *GetClientsFromAnalyticsResponse) GetResponse() *Response { @@ -28217,7 +28324,7 @@ type GetOperationClientsRequest struct { func (x *GetOperationClientsRequest) Reset() { *x = GetOperationClientsRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[429] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[431] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28229,7 +28336,7 @@ func (x *GetOperationClientsRequest) String() string { func (*GetOperationClientsRequest) ProtoMessage() {} func (x *GetOperationClientsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[429] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[431] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28242,7 +28349,7 @@ func (x *GetOperationClientsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOperationClientsRequest.ProtoReflect.Descriptor instead. func (*GetOperationClientsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{429} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{431} } func (x *GetOperationClientsRequest) GetFederatedGraphName() string { @@ -28297,7 +28404,7 @@ type GetOperationClientsResponse struct { func (x *GetOperationClientsResponse) Reset() { *x = GetOperationClientsResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[430] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[432] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28309,7 +28416,7 @@ func (x *GetOperationClientsResponse) String() string { func (*GetOperationClientsResponse) ProtoMessage() {} func (x *GetOperationClientsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[430] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[432] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28322,7 +28429,7 @@ func (x *GetOperationClientsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOperationClientsResponse.ProtoReflect.Descriptor instead. func (*GetOperationClientsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{430} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{432} } func (x *GetOperationClientsResponse) GetResponse() *Response { @@ -28353,7 +28460,7 @@ type GetOperationDeprecatedFieldsRequest struct { func (x *GetOperationDeprecatedFieldsRequest) Reset() { *x = GetOperationDeprecatedFieldsRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[431] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[433] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28365,7 +28472,7 @@ func (x *GetOperationDeprecatedFieldsRequest) String() string { func (*GetOperationDeprecatedFieldsRequest) ProtoMessage() {} func (x *GetOperationDeprecatedFieldsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[431] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[433] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28378,7 +28485,7 @@ func (x *GetOperationDeprecatedFieldsRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use GetOperationDeprecatedFieldsRequest.ProtoReflect.Descriptor instead. func (*GetOperationDeprecatedFieldsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{431} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{433} } func (x *GetOperationDeprecatedFieldsRequest) GetFederatedGraphName() string { @@ -28433,7 +28540,7 @@ type GetOperationDeprecatedFieldsResponse struct { func (x *GetOperationDeprecatedFieldsResponse) Reset() { *x = GetOperationDeprecatedFieldsResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[432] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[434] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28445,7 +28552,7 @@ func (x *GetOperationDeprecatedFieldsResponse) String() string { func (*GetOperationDeprecatedFieldsResponse) ProtoMessage() {} func (x *GetOperationDeprecatedFieldsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[432] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[434] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28458,7 +28565,7 @@ func (x *GetOperationDeprecatedFieldsResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use GetOperationDeprecatedFieldsResponse.ProtoReflect.Descriptor instead. func (*GetOperationDeprecatedFieldsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{432} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{434} } func (x *GetOperationDeprecatedFieldsResponse) GetResponse() *Response { @@ -28486,7 +28593,7 @@ type ValidateAndFetchPluginDataRequest struct { func (x *ValidateAndFetchPluginDataRequest) Reset() { *x = ValidateAndFetchPluginDataRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[433] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[435] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28498,7 +28605,7 @@ func (x *ValidateAndFetchPluginDataRequest) String() string { func (*ValidateAndFetchPluginDataRequest) ProtoMessage() {} func (x *ValidateAndFetchPluginDataRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[433] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[435] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28511,7 +28618,7 @@ func (x *ValidateAndFetchPluginDataRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ValidateAndFetchPluginDataRequest.ProtoReflect.Descriptor instead. func (*ValidateAndFetchPluginDataRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{433} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{435} } func (x *ValidateAndFetchPluginDataRequest) GetName() string { @@ -28547,7 +28654,7 @@ type ValidateAndFetchPluginDataResponse struct { func (x *ValidateAndFetchPluginDataResponse) Reset() { *x = ValidateAndFetchPluginDataResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[434] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[436] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28559,7 +28666,7 @@ func (x *ValidateAndFetchPluginDataResponse) String() string { func (*ValidateAndFetchPluginDataResponse) ProtoMessage() {} func (x *ValidateAndFetchPluginDataResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[434] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[436] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28572,7 +28679,7 @@ func (x *ValidateAndFetchPluginDataResponse) ProtoReflect() protoreflect.Message // Deprecated: Use ValidateAndFetchPluginDataResponse.ProtoReflect.Descriptor instead. func (*ValidateAndFetchPluginDataResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{434} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{436} } func (x *ValidateAndFetchPluginDataResponse) GetResponse() *Response { @@ -28615,7 +28722,7 @@ type LinkSubgraphRequest struct { func (x *LinkSubgraphRequest) Reset() { *x = LinkSubgraphRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[435] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[437] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28627,7 +28734,7 @@ func (x *LinkSubgraphRequest) String() string { func (*LinkSubgraphRequest) ProtoMessage() {} func (x *LinkSubgraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[435] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[437] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28640,7 +28747,7 @@ func (x *LinkSubgraphRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LinkSubgraphRequest.ProtoReflect.Descriptor instead. func (*LinkSubgraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{435} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{437} } func (x *LinkSubgraphRequest) GetSourceSubgraphName() string { @@ -28680,7 +28787,7 @@ type LinkSubgraphResponse struct { func (x *LinkSubgraphResponse) Reset() { *x = LinkSubgraphResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[436] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[438] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28692,7 +28799,7 @@ func (x *LinkSubgraphResponse) String() string { func (*LinkSubgraphResponse) ProtoMessage() {} func (x *LinkSubgraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[436] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[438] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28705,7 +28812,7 @@ func (x *LinkSubgraphResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use LinkSubgraphResponse.ProtoReflect.Descriptor instead. func (*LinkSubgraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{436} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{438} } func (x *LinkSubgraphResponse) GetResponse() *Response { @@ -28725,7 +28832,7 @@ type UnlinkSubgraphRequest struct { func (x *UnlinkSubgraphRequest) Reset() { *x = UnlinkSubgraphRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[437] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[439] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28737,7 +28844,7 @@ func (x *UnlinkSubgraphRequest) String() string { func (*UnlinkSubgraphRequest) ProtoMessage() {} func (x *UnlinkSubgraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[437] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[439] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28750,7 +28857,7 @@ func (x *UnlinkSubgraphRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UnlinkSubgraphRequest.ProtoReflect.Descriptor instead. func (*UnlinkSubgraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{437} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{439} } func (x *UnlinkSubgraphRequest) GetSourceSubgraphName() string { @@ -28776,7 +28883,7 @@ type UnlinkSubgraphResponse struct { func (x *UnlinkSubgraphResponse) Reset() { *x = UnlinkSubgraphResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[438] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[440] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28788,7 +28895,7 @@ func (x *UnlinkSubgraphResponse) String() string { func (*UnlinkSubgraphResponse) ProtoMessage() {} func (x *UnlinkSubgraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[438] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[440] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28801,7 +28908,7 @@ func (x *UnlinkSubgraphResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UnlinkSubgraphResponse.ProtoReflect.Descriptor instead. func (*UnlinkSubgraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{438} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{440} } func (x *UnlinkSubgraphResponse) GetResponse() *Response { @@ -28820,7 +28927,7 @@ type VerifyAPIKeyGraphAccessRequest struct { func (x *VerifyAPIKeyGraphAccessRequest) Reset() { *x = VerifyAPIKeyGraphAccessRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[439] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[441] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28832,7 +28939,7 @@ func (x *VerifyAPIKeyGraphAccessRequest) String() string { func (*VerifyAPIKeyGraphAccessRequest) ProtoMessage() {} func (x *VerifyAPIKeyGraphAccessRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[439] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[441] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28845,7 +28952,7 @@ func (x *VerifyAPIKeyGraphAccessRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifyAPIKeyGraphAccessRequest.ProtoReflect.Descriptor instead. func (*VerifyAPIKeyGraphAccessRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{439} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{441} } func (x *VerifyAPIKeyGraphAccessRequest) GetFederatedGraphId() string { @@ -28866,7 +28973,7 @@ type VerifyAPIKeyGraphAccessResponse struct { func (x *VerifyAPIKeyGraphAccessResponse) Reset() { *x = VerifyAPIKeyGraphAccessResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[440] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[442] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28878,7 +28985,7 @@ func (x *VerifyAPIKeyGraphAccessResponse) String() string { func (*VerifyAPIKeyGraphAccessResponse) ProtoMessage() {} func (x *VerifyAPIKeyGraphAccessResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[440] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[442] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28891,7 +28998,7 @@ func (x *VerifyAPIKeyGraphAccessResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifyAPIKeyGraphAccessResponse.ProtoReflect.Descriptor instead. func (*VerifyAPIKeyGraphAccessResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{440} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{442} } func (x *VerifyAPIKeyGraphAccessResponse) GetResponse() *Response { @@ -28924,7 +29031,7 @@ type InitializeCosmoUserRequest struct { func (x *InitializeCosmoUserRequest) Reset() { *x = InitializeCosmoUserRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[441] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[443] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28936,7 +29043,7 @@ func (x *InitializeCosmoUserRequest) String() string { func (*InitializeCosmoUserRequest) ProtoMessage() {} func (x *InitializeCosmoUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[441] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[443] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28949,7 +29056,7 @@ func (x *InitializeCosmoUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use InitializeCosmoUserRequest.ProtoReflect.Descriptor instead. func (*InitializeCosmoUserRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{441} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{443} } func (x *InitializeCosmoUserRequest) GetToken() string { @@ -28968,7 +29075,7 @@ type InitializeCosmoUserResponse struct { func (x *InitializeCosmoUserResponse) Reset() { *x = InitializeCosmoUserResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[442] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[444] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -28980,7 +29087,7 @@ func (x *InitializeCosmoUserResponse) String() string { func (*InitializeCosmoUserResponse) ProtoMessage() {} func (x *InitializeCosmoUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[442] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[444] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -28993,7 +29100,7 @@ func (x *InitializeCosmoUserResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use InitializeCosmoUserResponse.ProtoReflect.Descriptor instead. func (*InitializeCosmoUserResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{442} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{444} } func (x *InitializeCosmoUserResponse) GetResponse() *Response { @@ -29011,7 +29118,7 @@ type ListOrganizationsRequest struct { func (x *ListOrganizationsRequest) Reset() { *x = ListOrganizationsRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[443] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[445] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29023,7 +29130,7 @@ func (x *ListOrganizationsRequest) String() string { func (*ListOrganizationsRequest) ProtoMessage() {} func (x *ListOrganizationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[443] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[445] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29036,7 +29143,7 @@ func (x *ListOrganizationsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListOrganizationsRequest.ProtoReflect.Descriptor instead. func (*ListOrganizationsRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{443} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{445} } type ListOrganizationsResponse struct { @@ -29049,7 +29156,7 @@ type ListOrganizationsResponse struct { func (x *ListOrganizationsResponse) Reset() { *x = ListOrganizationsResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[444] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[446] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29061,7 +29168,7 @@ func (x *ListOrganizationsResponse) String() string { func (*ListOrganizationsResponse) ProtoMessage() {} func (x *ListOrganizationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[444] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[446] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29074,7 +29181,7 @@ func (x *ListOrganizationsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListOrganizationsResponse.ProtoReflect.Descriptor instead. func (*ListOrganizationsResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{444} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{446} } func (x *ListOrganizationsResponse) GetResponse() *Response { @@ -29104,7 +29211,7 @@ type RecomposeGraphRequest struct { func (x *RecomposeGraphRequest) Reset() { *x = RecomposeGraphRequest{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[445] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[447] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29116,7 +29223,7 @@ func (x *RecomposeGraphRequest) String() string { func (*RecomposeGraphRequest) ProtoMessage() {} func (x *RecomposeGraphRequest) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[445] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[447] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29129,7 +29236,7 @@ func (x *RecomposeGraphRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RecomposeGraphRequest.ProtoReflect.Descriptor instead. func (*RecomposeGraphRequest) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{445} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{447} } func (x *RecomposeGraphRequest) GetName() string { @@ -29180,7 +29287,7 @@ type RecomposeGraphResponse struct { func (x *RecomposeGraphResponse) Reset() { *x = RecomposeGraphResponse{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[446] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[448] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29192,7 +29299,7 @@ func (x *RecomposeGraphResponse) String() string { func (*RecomposeGraphResponse) ProtoMessage() {} func (x *RecomposeGraphResponse) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[446] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[448] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29205,7 +29312,7 @@ func (x *RecomposeGraphResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RecomposeGraphResponse.ProtoReflect.Descriptor instead. func (*RecomposeGraphResponse) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{446} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{448} } func (x *RecomposeGraphResponse) GetResponse() *Response { @@ -29253,7 +29360,7 @@ type Subgraph_PluginData struct { func (x *Subgraph_PluginData) Reset() { *x = Subgraph_PluginData{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[447] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[449] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29265,7 +29372,7 @@ func (x *Subgraph_PluginData) String() string { func (*Subgraph_PluginData) ProtoMessage() {} func (x *Subgraph_PluginData) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[447] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[449] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29306,7 +29413,7 @@ type GetSubgraphByNameResponse_LinkedSubgraph struct { func (x *GetSubgraphByNameResponse_LinkedSubgraph) Reset() { *x = GetSubgraphByNameResponse_LinkedSubgraph{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[448] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[450] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29318,7 +29425,7 @@ func (x *GetSubgraphByNameResponse_LinkedSubgraph) String() string { func (*GetSubgraphByNameResponse_LinkedSubgraph) ProtoMessage() {} func (x *GetSubgraphByNameResponse_LinkedSubgraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[448] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[450] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29366,7 +29473,7 @@ type SchemaCheck_GhDetails struct { func (x *SchemaCheck_GhDetails) Reset() { *x = SchemaCheck_GhDetails{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[449] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[451] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29378,7 +29485,7 @@ func (x *SchemaCheck_GhDetails) String() string { func (*SchemaCheck_GhDetails) ProtoMessage() {} func (x *SchemaCheck_GhDetails) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[449] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[451] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29431,7 +29538,7 @@ type SchemaCheck_CheckedSubgraph struct { func (x *SchemaCheck_CheckedSubgraph) Reset() { *x = SchemaCheck_CheckedSubgraph{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[450] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[452] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29443,7 +29550,7 @@ func (x *SchemaCheck_CheckedSubgraph) String() string { func (*SchemaCheck_CheckedSubgraph) ProtoMessage() {} func (x *SchemaCheck_CheckedSubgraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[450] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[452] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29519,7 +29626,7 @@ type SchemaCheck_LinkedCheck struct { func (x *SchemaCheck_LinkedCheck) Reset() { *x = SchemaCheck_LinkedCheck{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[451] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[453] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29531,7 +29638,7 @@ func (x *SchemaCheck_LinkedCheck) String() string { func (*SchemaCheck_LinkedCheck) ProtoMessage() {} func (x *SchemaCheck_LinkedCheck) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[451] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[453] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29634,7 +29741,7 @@ type GetCheckSummaryResponse_AffectedGraph struct { func (x *GetCheckSummaryResponse_AffectedGraph) Reset() { *x = GetCheckSummaryResponse_AffectedGraph{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[452] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[454] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29646,7 +29753,7 @@ func (x *GetCheckSummaryResponse_AffectedGraph) String() string { func (*GetCheckSummaryResponse_AffectedGraph) ProtoMessage() {} func (x *GetCheckSummaryResponse_AffectedGraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[452] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[454] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29736,7 +29843,7 @@ type GetCheckSummaryResponse_ProposalSchemaMatch struct { func (x *GetCheckSummaryResponse_ProposalSchemaMatch) Reset() { *x = GetCheckSummaryResponse_ProposalSchemaMatch{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[453] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[455] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29748,7 +29855,7 @@ func (x *GetCheckSummaryResponse_ProposalSchemaMatch) String() string { func (*GetCheckSummaryResponse_ProposalSchemaMatch) ProtoMessage() {} func (x *GetCheckSummaryResponse_ProposalSchemaMatch) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[453] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[455] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29801,7 +29908,7 @@ type GetCheckOperationsResponse_CheckOperation struct { func (x *GetCheckOperationsResponse_CheckOperation) Reset() { *x = GetCheckOperationsResponse_CheckOperation{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[454] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[456] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29813,7 +29920,7 @@ func (x *GetCheckOperationsResponse_CheckOperation) String() string { func (*GetCheckOperationsResponse_CheckOperation) ProtoMessage() {} func (x *GetCheckOperationsResponse_CheckOperation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[454] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[456] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29896,7 +30003,7 @@ type GetOrganizationGroupMembersResponse_GroupMember struct { func (x *GetOrganizationGroupMembersResponse_GroupMember) Reset() { *x = GetOrganizationGroupMembersResponse_GroupMember{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[456] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[458] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29908,7 +30015,7 @@ func (x *GetOrganizationGroupMembersResponse_GroupMember) String() string { func (*GetOrganizationGroupMembersResponse_GroupMember) ProtoMessage() {} func (x *GetOrganizationGroupMembersResponse_GroupMember) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[456] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[458] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29956,7 +30063,7 @@ type GetOrganizationGroupMembersResponse_GroupApiKey struct { func (x *GetOrganizationGroupMembersResponse_GroupApiKey) Reset() { *x = GetOrganizationGroupMembersResponse_GroupApiKey{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[457] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[459] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29968,7 +30075,7 @@ func (x *GetOrganizationGroupMembersResponse_GroupApiKey) String() string { func (*GetOrganizationGroupMembersResponse_GroupApiKey) ProtoMessage() {} func (x *GetOrganizationGroupMembersResponse_GroupApiKey) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[457] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[459] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30016,7 +30123,7 @@ type UpdateOrganizationGroupRequest_GroupRule struct { func (x *UpdateOrganizationGroupRequest_GroupRule) Reset() { *x = UpdateOrganizationGroupRequest_GroupRule{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[458] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[460] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30028,7 +30135,7 @@ func (x *UpdateOrganizationGroupRequest_GroupRule) String() string { func (*UpdateOrganizationGroupRequest_GroupRule) ProtoMessage() {} func (x *UpdateOrganizationGroupRequest_GroupRule) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[458] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[460] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30075,7 +30182,7 @@ type OrgMember_Group struct { func (x *OrgMember_Group) Reset() { *x = OrgMember_Group{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[459] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[461] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30087,7 +30194,7 @@ func (x *OrgMember_Group) String() string { func (*OrgMember_Group) ProtoMessage() {} func (x *OrgMember_Group) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[459] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[461] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30127,7 +30234,7 @@ type APIKey_Group struct { func (x *APIKey_Group) Reset() { *x = APIKey_Group{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[460] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[462] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30139,7 +30246,7 @@ func (x *APIKey_Group) String() string { func (*APIKey_Group) ProtoMessage() {} func (x *APIKey_Group) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[460] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[462] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30181,7 +30288,7 @@ type DeletePersistedOperationResponse_Operation struct { func (x *DeletePersistedOperationResponse_Operation) Reset() { *x = DeletePersistedOperationResponse_Operation{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[462] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[464] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30193,7 +30300,7 @@ func (x *DeletePersistedOperationResponse_Operation) String() string { func (*DeletePersistedOperationResponse_Operation) ProtoMessage() {} func (x *DeletePersistedOperationResponse_Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[462] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[464] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30250,7 +30357,7 @@ type CheckPersistedOperationTrafficResponse_Operation struct { func (x *CheckPersistedOperationTrafficResponse_Operation) Reset() { *x = CheckPersistedOperationTrafficResponse_Operation{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[463] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[465] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30262,7 +30369,7 @@ func (x *CheckPersistedOperationTrafficResponse_Operation) String() string { func (*CheckPersistedOperationTrafficResponse_Operation) ProtoMessage() {} func (x *CheckPersistedOperationTrafficResponse_Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[463] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[465] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30326,7 +30433,7 @@ type GetPersistedOperationsResponse_Operation struct { func (x *GetPersistedOperationsResponse_Operation) Reset() { *x = GetPersistedOperationsResponse_Operation{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[464] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[466] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30338,7 +30445,7 @@ func (x *GetPersistedOperationsResponse_Operation) String() string { func (*GetPersistedOperationsResponse_Operation) ProtoMessage() {} func (x *GetPersistedOperationsResponse_Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[464] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[466] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30400,7 +30507,7 @@ type GetOrganizationWebhookConfigsResponse_Config struct { func (x *GetOrganizationWebhookConfigsResponse_Config) Reset() { *x = GetOrganizationWebhookConfigsResponse_Config{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[465] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[467] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30412,7 +30519,7 @@ func (x *GetOrganizationWebhookConfigsResponse_Config) String() string { func (*GetOrganizationWebhookConfigsResponse_Config) ProtoMessage() {} func (x *GetOrganizationWebhookConfigsResponse_Config) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[465] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[467] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30460,7 +30567,7 @@ type GetBillingPlansResponse_BillingPlanFeature struct { func (x *GetBillingPlansResponse_BillingPlanFeature) Reset() { *x = GetBillingPlansResponse_BillingPlanFeature{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[466] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[468] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30472,7 +30579,7 @@ func (x *GetBillingPlansResponse_BillingPlanFeature) String() string { func (*GetBillingPlansResponse_BillingPlanFeature) ProtoMessage() {} func (x *GetBillingPlansResponse_BillingPlanFeature) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[466] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[468] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30521,7 +30628,7 @@ type GetBillingPlansResponse_BillingPlan struct { func (x *GetBillingPlansResponse_BillingPlan) Reset() { *x = GetBillingPlansResponse_BillingPlan{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[467] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[469] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30533,7 +30640,7 @@ func (x *GetBillingPlansResponse_BillingPlan) String() string { func (*GetBillingPlansResponse_BillingPlan) ProtoMessage() {} func (x *GetBillingPlansResponse_BillingPlan) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[467] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[469] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30590,7 +30697,7 @@ type GetAllOverridesResponse_Override struct { func (x *GetAllOverridesResponse_Override) Reset() { *x = GetAllOverridesResponse_Override{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[468] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[470] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30602,7 +30709,7 @@ func (x *GetAllOverridesResponse_Override) String() string { func (*GetAllOverridesResponse_Override) ProtoMessage() {} func (x *GetAllOverridesResponse_Override) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[468] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[470] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30663,7 +30770,7 @@ type GetUserAccessibleResourcesResponse_Namespace struct { func (x *GetUserAccessibleResourcesResponse_Namespace) Reset() { *x = GetUserAccessibleResourcesResponse_Namespace{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[469] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[471] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30675,7 +30782,7 @@ func (x *GetUserAccessibleResourcesResponse_Namespace) String() string { func (*GetUserAccessibleResourcesResponse_Namespace) ProtoMessage() {} func (x *GetUserAccessibleResourcesResponse_Namespace) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[469] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[471] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30716,7 +30823,7 @@ type GetUserAccessibleResourcesResponse_FederatedGraph struct { func (x *GetUserAccessibleResourcesResponse_FederatedGraph) Reset() { *x = GetUserAccessibleResourcesResponse_FederatedGraph{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[470] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[472] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30728,7 +30835,7 @@ func (x *GetUserAccessibleResourcesResponse_FederatedGraph) String() string { func (*GetUserAccessibleResourcesResponse_FederatedGraph) ProtoMessage() {} func (x *GetUserAccessibleResourcesResponse_FederatedGraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[470] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[472] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30777,7 +30884,7 @@ type GetUserAccessibleResourcesResponse_SubGraph struct { func (x *GetUserAccessibleResourcesResponse_SubGraph) Reset() { *x = GetUserAccessibleResourcesResponse_SubGraph{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[471] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[473] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30789,7 +30896,7 @@ func (x *GetUserAccessibleResourcesResponse_SubGraph) String() string { func (*GetUserAccessibleResourcesResponse_SubGraph) ProtoMessage() {} func (x *GetUserAccessibleResourcesResponse_SubGraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[471] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[473] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30844,7 +30951,7 @@ type ClientWithOperations_Operation struct { func (x *ClientWithOperations_Operation) Reset() { *x = ClientWithOperations_Operation{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[472] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[474] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30856,7 +30963,7 @@ func (x *ClientWithOperations_Operation) String() string { func (*ClientWithOperations_Operation) ProtoMessage() {} func (x *ClientWithOperations_Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[472] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[474] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30903,7 +31010,7 @@ type GetFeatureFlagByNameResponse_FfFederatedGraph struct { func (x *GetFeatureFlagByNameResponse_FfFederatedGraph) Reset() { *x = GetFeatureFlagByNameResponse_FfFederatedGraph{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[473] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[475] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30915,7 +31022,7 @@ func (x *GetFeatureFlagByNameResponse_FfFederatedGraph) String() string { func (*GetFeatureFlagByNameResponse_FfFederatedGraph) ProtoMessage() {} func (x *GetFeatureFlagByNameResponse_FfFederatedGraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[473] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[475] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30955,7 +31062,7 @@ type BulkUpdateProposalRolloutPercentagesRequest_Item struct { func (x *BulkUpdateProposalRolloutPercentagesRequest_Item) Reset() { *x = BulkUpdateProposalRolloutPercentagesRequest_Item{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[474] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[476] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30967,7 +31074,7 @@ func (x *BulkUpdateProposalRolloutPercentagesRequest_Item) String() string { func (*BulkUpdateProposalRolloutPercentagesRequest_Item) ProtoMessage() {} func (x *BulkUpdateProposalRolloutPercentagesRequest_Item) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[474] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[476] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31007,7 +31114,7 @@ type GetProposalResponse_CurrentSubgraph struct { func (x *GetProposalResponse_CurrentSubgraph) Reset() { *x = GetProposalResponse_CurrentSubgraph{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[475] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[477] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31019,7 +31126,7 @@ func (x *GetProposalResponse_CurrentSubgraph) String() string { func (*GetProposalResponse_CurrentSubgraph) ProtoMessage() {} func (x *GetProposalResponse_CurrentSubgraph) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[475] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[477] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31058,7 +31165,7 @@ type UpdateProposalRequest_UpdateProposalSubgraphs struct { func (x *UpdateProposalRequest_UpdateProposalSubgraphs) Reset() { *x = UpdateProposalRequest_UpdateProposalSubgraphs{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[476] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[478] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31070,7 +31177,7 @@ func (x *UpdateProposalRequest_UpdateProposalSubgraphs) String() string { func (*UpdateProposalRequest_UpdateProposalSubgraphs) ProtoMessage() {} func (x *UpdateProposalRequest_UpdateProposalSubgraphs) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[476] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[478] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31083,7 +31190,7 @@ func (x *UpdateProposalRequest_UpdateProposalSubgraphs) ProtoReflect() protorefl // Deprecated: Use UpdateProposalRequest_UpdateProposalSubgraphs.ProtoReflect.Descriptor instead. func (*UpdateProposalRequest_UpdateProposalSubgraphs) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{417, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{419, 0} } func (x *UpdateProposalRequest_UpdateProposalSubgraphs) GetSubgraphs() []*ProposalSubgraph { @@ -31112,7 +31219,7 @@ type GetOperationsResponse_Operation struct { func (x *GetOperationsResponse_Operation) Reset() { *x = GetOperationsResponse_Operation{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[477] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[479] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31124,7 +31231,7 @@ func (x *GetOperationsResponse_Operation) String() string { func (*GetOperationsResponse_Operation) ProtoMessage() {} func (x *GetOperationsResponse_Operation) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[477] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[479] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31137,7 +31244,7 @@ func (x *GetOperationsResponse_Operation) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOperationsResponse_Operation.ProtoReflect.Descriptor instead. func (*GetOperationsResponse_Operation) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{426, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{428, 0} } func (x *GetOperationsResponse_Operation) GetHash() string { @@ -31240,7 +31347,7 @@ type GetClientsFromAnalyticsResponse_Client struct { func (x *GetClientsFromAnalyticsResponse_Client) Reset() { *x = GetClientsFromAnalyticsResponse_Client{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[478] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[480] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31252,7 +31359,7 @@ func (x *GetClientsFromAnalyticsResponse_Client) String() string { func (*GetClientsFromAnalyticsResponse_Client) ProtoMessage() {} func (x *GetClientsFromAnalyticsResponse_Client) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[478] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[480] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31265,7 +31372,7 @@ func (x *GetClientsFromAnalyticsResponse_Client) ProtoReflect() protoreflect.Mes // Deprecated: Use GetClientsFromAnalyticsResponse_Client.ProtoReflect.Descriptor instead. func (*GetClientsFromAnalyticsResponse_Client) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{428, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{430, 0} } func (x *GetClientsFromAnalyticsResponse_Client) GetName() string { @@ -31287,7 +31394,7 @@ type GetOperationClientsResponse_Client struct { func (x *GetOperationClientsResponse_Client) Reset() { *x = GetOperationClientsResponse_Client{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[479] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[481] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31299,7 +31406,7 @@ func (x *GetOperationClientsResponse_Client) String() string { func (*GetOperationClientsResponse_Client) ProtoMessage() {} func (x *GetOperationClientsResponse_Client) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[479] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[481] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31312,7 +31419,7 @@ func (x *GetOperationClientsResponse_Client) ProtoReflect() protoreflect.Message // Deprecated: Use GetOperationClientsResponse_Client.ProtoReflect.Descriptor instead. func (*GetOperationClientsResponse_Client) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{430, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{432, 0} } func (x *GetOperationClientsResponse_Client) GetName() string { @@ -31355,7 +31462,7 @@ type GetOperationDeprecatedFieldsResponse_DeprecatedField struct { func (x *GetOperationDeprecatedFieldsResponse_DeprecatedField) Reset() { *x = GetOperationDeprecatedFieldsResponse_DeprecatedField{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[480] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[482] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31367,7 +31474,7 @@ func (x *GetOperationDeprecatedFieldsResponse_DeprecatedField) String() string { func (*GetOperationDeprecatedFieldsResponse_DeprecatedField) ProtoMessage() {} func (x *GetOperationDeprecatedFieldsResponse_DeprecatedField) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[480] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[482] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31380,7 +31487,7 @@ func (x *GetOperationDeprecatedFieldsResponse_DeprecatedField) ProtoReflect() pr // Deprecated: Use GetOperationDeprecatedFieldsResponse_DeprecatedField.ProtoReflect.Descriptor instead. func (*GetOperationDeprecatedFieldsResponse_DeprecatedField) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{432, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{434, 0} } func (x *GetOperationDeprecatedFieldsResponse_DeprecatedField) GetFieldName() string { @@ -31423,7 +31530,7 @@ type ListOrganizationsResponse_OrganizationMembership struct { func (x *ListOrganizationsResponse_OrganizationMembership) Reset() { *x = ListOrganizationsResponse_OrganizationMembership{} - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[481] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[483] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31435,7 +31542,7 @@ func (x *ListOrganizationsResponse_OrganizationMembership) String() string { func (*ListOrganizationsResponse_OrganizationMembership) ProtoMessage() {} func (x *ListOrganizationsResponse_OrganizationMembership) ProtoReflect() protoreflect.Message { - mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[481] + mi := &file_wg_cosmo_platform_v1_platform_proto_msgTypes[483] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31448,7 +31555,7 @@ func (x *ListOrganizationsResponse_OrganizationMembership) ProtoReflect() protor // Deprecated: Use ListOrganizationsResponse_OrganizationMembership.ProtoReflect.Descriptor instead. func (*ListOrganizationsResponse_OrganizationMembership) Descriptor() ([]byte, []int) { - return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{444, 0} + return file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP(), []int{446, 0} } func (x *ListOrganizationsResponse_OrganizationMembership) GetId() string { @@ -33909,7 +34016,14 @@ const file_wg_cosmo_platform_v1_platform_proto_rawDesc = "" + "\x19GetProposalChecksResponse\x12:\n" + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x129\n" + "\x06checks\x18\x02 \x03(\v2!.wg.cosmo.platform.v1.SchemaCheckR\x06checks\x12*\n" + - "\x10totalChecksCount\x18\x03 \x01(\x05R\x10totalChecksCount\"\x86\x03\n" + + "\x10totalChecksCount\x18\x03 \x01(\x05R\x10totalChecksCount\"\x94\x01\n" + + "#GetCacheCohortConfigVersionsRequest\x12,\n" + + "\x12federated_graph_id\x18\x01 \x01(\tR\x10federatedGraphId\x12+\n" + + "\x0ffeature_flag_id\x18\x02 \x01(\tH\x00R\rfeatureFlagId\x88\x01\x01B\x12\n" + + "\x10_feature_flag_id\"\x8b\x01\n" + + "$GetCacheCohortConfigVersionsResponse\x12:\n" + + "\bresponse\x18\x01 \x01(\v2\x1e.wg.cosmo.platform.v1.ResponseR\bresponse\x12'\n" + + "\x0fconfig_versions\x18\x02 \x03(\tR\x0econfigVersions\"\x86\x03\n" + "\x15UpdateProposalRequest\x12\"\n" + "\fproposalName\x18\x01 \x01(\tR\fproposalName\x12.\n" + "\x12federatedGraphName\x18\x02 \x01(\tR\x12federatedGraphName\x12\x16\n" + @@ -34200,7 +34314,7 @@ const file_wg_cosmo_platform_v1_platform_proto_rawDesc = "" + "\x06ERRORS\x10\x02*\"\n" + "\rSortDirection\x12\a\n" + "\x03ASC\x10\x00\x12\b\n" + - "\x04DESC\x10\x012\u07fc\x01\n" + + "\x04DESC\x10\x012\xf9\xbd\x01\n" + "\x0fPlatformService\x12\x85\x01\n" + "\x16CreatePlaygroundScript\x123.wg.cosmo.platform.v1.CreatePlaygroundScriptRequest\x1a4.wg.cosmo.platform.v1.CreatePlaygroundScriptResponse\"\x00\x12\x85\x01\n" + "\x16DeletePlaygroundScript\x123.wg.cosmo.platform.v1.DeletePlaygroundScriptRequest\x1a4.wg.cosmo.platform.v1.DeletePlaygroundScriptResponse\"\x00\x12\x85\x01\n" + @@ -34377,7 +34491,8 @@ const file_wg_cosmo_platform_v1_platform_proto_rawDesc = "" + " ConfigureNamespaceProposalConfig\x12=.wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest\x1a>.wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse\"\x00\x12\x91\x01\n" + "\x1aGetNamespaceProposalConfig\x127.wg.cosmo.platform.v1.GetNamespaceProposalConfigRequest\x1a8.wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse\"\x00\x12\x97\x01\n" + "\x1cGetProposalsByFederatedGraph\x129.wg.cosmo.platform.v1.GetProposalsByFederatedGraphRequest\x1a:.wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse\"\x00\x12v\n" + - "\x11GetProposalChecks\x12..wg.cosmo.platform.v1.GetProposalChecksRequest\x1a/.wg.cosmo.platform.v1.GetProposalChecksResponse\"\x00\x12\xaf\x01\n" + + "\x11GetProposalChecks\x12..wg.cosmo.platform.v1.GetProposalChecksRequest\x1a/.wg.cosmo.platform.v1.GetProposalChecksResponse\"\x00\x12\x97\x01\n" + + "\x1cGetCacheCohortConfigVersions\x129.wg.cosmo.platform.v1.GetCacheCohortConfigVersionsRequest\x1a:.wg.cosmo.platform.v1.GetCacheCohortConfigVersionsResponse\"\x00\x12\xaf\x01\n" + "$BulkUpdateProposalRolloutPercentages\x12A.wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest\x1aB.wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesResponse\"\x00\x12\x88\x01\n" + "\x17TeardownProposalRollout\x124.wg.cosmo.platform.v1.TeardownProposalRolloutRequest\x1a5.wg.cosmo.platform.v1.TeardownProposalRolloutResponse\"\x00\x12j\n" + "\rGetOperations\x12*.wg.cosmo.platform.v1.GetOperationsRequest\x1a+.wg.cosmo.platform.v1.GetOperationsResponse\"\x00\x12\x88\x01\n" + @@ -34404,7 +34519,7 @@ func file_wg_cosmo_platform_v1_platform_proto_rawDescGZIP() []byte { } var file_wg_cosmo_platform_v1_platform_proto_enumTypes = make([]protoimpl.EnumInfo, 15) -var file_wg_cosmo_platform_v1_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 482) +var file_wg_cosmo_platform_v1_platform_proto_msgTypes = make([]protoimpl.MessageInfo, 484) var file_wg_cosmo_platform_v1_platform_proto_goTypes = []any{ (LintSeverity)(0), // 0: wg.cosmo.platform.v1.LintSeverity (SubgraphType)(0), // 1: wg.cosmo.platform.v1.SubgraphType @@ -34838,85 +34953,87 @@ var file_wg_cosmo_platform_v1_platform_proto_goTypes = []any{ (*GetProposalsByFederatedGraphResponse)(nil), // 429: wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse (*GetProposalChecksRequest)(nil), // 430: wg.cosmo.platform.v1.GetProposalChecksRequest (*GetProposalChecksResponse)(nil), // 431: wg.cosmo.platform.v1.GetProposalChecksResponse - (*UpdateProposalRequest)(nil), // 432: wg.cosmo.platform.v1.UpdateProposalRequest - (*UpdateProposalResponse)(nil), // 433: wg.cosmo.platform.v1.UpdateProposalResponse - (*EnableProposalsForNamespaceRequest)(nil), // 434: wg.cosmo.platform.v1.EnableProposalsForNamespaceRequest - (*EnableProposalsForNamespaceResponse)(nil), // 435: wg.cosmo.platform.v1.EnableProposalsForNamespaceResponse - (*ConfigureNamespaceProposalConfigRequest)(nil), // 436: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest - (*ConfigureNamespaceProposalConfigResponse)(nil), // 437: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse - (*GetNamespaceProposalConfigRequest)(nil), // 438: wg.cosmo.platform.v1.GetNamespaceProposalConfigRequest - (*GetNamespaceProposalConfigResponse)(nil), // 439: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse - (*GetOperationsRequest)(nil), // 440: wg.cosmo.platform.v1.GetOperationsRequest - (*GetOperationsResponse)(nil), // 441: wg.cosmo.platform.v1.GetOperationsResponse - (*GetClientsFromAnalyticsRequest)(nil), // 442: wg.cosmo.platform.v1.GetClientsFromAnalyticsRequest - (*GetClientsFromAnalyticsResponse)(nil), // 443: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse - (*GetOperationClientsRequest)(nil), // 444: wg.cosmo.platform.v1.GetOperationClientsRequest - (*GetOperationClientsResponse)(nil), // 445: wg.cosmo.platform.v1.GetOperationClientsResponse - (*GetOperationDeprecatedFieldsRequest)(nil), // 446: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsRequest - (*GetOperationDeprecatedFieldsResponse)(nil), // 447: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse - (*ValidateAndFetchPluginDataRequest)(nil), // 448: wg.cosmo.platform.v1.ValidateAndFetchPluginDataRequest - (*ValidateAndFetchPluginDataResponse)(nil), // 449: wg.cosmo.platform.v1.ValidateAndFetchPluginDataResponse - (*LinkSubgraphRequest)(nil), // 450: wg.cosmo.platform.v1.LinkSubgraphRequest - (*LinkSubgraphResponse)(nil), // 451: wg.cosmo.platform.v1.LinkSubgraphResponse - (*UnlinkSubgraphRequest)(nil), // 452: wg.cosmo.platform.v1.UnlinkSubgraphRequest - (*UnlinkSubgraphResponse)(nil), // 453: wg.cosmo.platform.v1.UnlinkSubgraphResponse - (*VerifyAPIKeyGraphAccessRequest)(nil), // 454: wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessRequest - (*VerifyAPIKeyGraphAccessResponse)(nil), // 455: wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessResponse - (*InitializeCosmoUserRequest)(nil), // 456: wg.cosmo.platform.v1.InitializeCosmoUserRequest - (*InitializeCosmoUserResponse)(nil), // 457: wg.cosmo.platform.v1.InitializeCosmoUserResponse - (*ListOrganizationsRequest)(nil), // 458: wg.cosmo.platform.v1.ListOrganizationsRequest - (*ListOrganizationsResponse)(nil), // 459: wg.cosmo.platform.v1.ListOrganizationsResponse - (*RecomposeGraphRequest)(nil), // 460: wg.cosmo.platform.v1.RecomposeGraphRequest - (*RecomposeGraphResponse)(nil), // 461: wg.cosmo.platform.v1.RecomposeGraphResponse - (*Subgraph_PluginData)(nil), // 462: wg.cosmo.platform.v1.Subgraph.PluginData - (*GetSubgraphByNameResponse_LinkedSubgraph)(nil), // 463: wg.cosmo.platform.v1.GetSubgraphByNameResponse.LinkedSubgraph - (*SchemaCheck_GhDetails)(nil), // 464: wg.cosmo.platform.v1.SchemaCheck.GhDetails - (*SchemaCheck_CheckedSubgraph)(nil), // 465: wg.cosmo.platform.v1.SchemaCheck.CheckedSubgraph - (*SchemaCheck_LinkedCheck)(nil), // 466: wg.cosmo.platform.v1.SchemaCheck.LinkedCheck - (*GetCheckSummaryResponse_AffectedGraph)(nil), // 467: wg.cosmo.platform.v1.GetCheckSummaryResponse.AffectedGraph - (*GetCheckSummaryResponse_ProposalSchemaMatch)(nil), // 468: wg.cosmo.platform.v1.GetCheckSummaryResponse.ProposalSchemaMatch - (*GetCheckOperationsResponse_CheckOperation)(nil), // 469: wg.cosmo.platform.v1.GetCheckOperationsResponse.CheckOperation - nil, // 470: wg.cosmo.platform.v1.AnalyticsViewRow.ValueEntry - (*GetOrganizationGroupMembersResponse_GroupMember)(nil), // 471: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupMember - (*GetOrganizationGroupMembersResponse_GroupApiKey)(nil), // 472: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupApiKey - (*UpdateOrganizationGroupRequest_GroupRule)(nil), // 473: wg.cosmo.platform.v1.UpdateOrganizationGroupRequest.GroupRule - (*OrgMember_Group)(nil), // 474: wg.cosmo.platform.v1.OrgMember.Group - (*APIKey_Group)(nil), // 475: wg.cosmo.platform.v1.APIKey.Group - nil, // 476: wg.cosmo.platform.v1.Span.AttributesEntry - (*DeletePersistedOperationResponse_Operation)(nil), // 477: wg.cosmo.platform.v1.DeletePersistedOperationResponse.Operation - (*CheckPersistedOperationTrafficResponse_Operation)(nil), // 478: wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.Operation - (*GetPersistedOperationsResponse_Operation)(nil), // 479: wg.cosmo.platform.v1.GetPersistedOperationsResponse.Operation - (*GetOrganizationWebhookConfigsResponse_Config)(nil), // 480: wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.Config - (*GetBillingPlansResponse_BillingPlanFeature)(nil), // 481: wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlanFeature - (*GetBillingPlansResponse_BillingPlan)(nil), // 482: wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlan - (*GetAllOverridesResponse_Override)(nil), // 483: wg.cosmo.platform.v1.GetAllOverridesResponse.Override - (*GetUserAccessibleResourcesResponse_Namespace)(nil), // 484: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.Namespace - (*GetUserAccessibleResourcesResponse_FederatedGraph)(nil), // 485: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.FederatedGraph - (*GetUserAccessibleResourcesResponse_SubGraph)(nil), // 486: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.SubGraph - (*ClientWithOperations_Operation)(nil), // 487: wg.cosmo.platform.v1.ClientWithOperations.Operation - (*GetFeatureFlagByNameResponse_FfFederatedGraph)(nil), // 488: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.FfFederatedGraph - (*BulkUpdateProposalRolloutPercentagesRequest_Item)(nil), // 489: wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest.Item - (*GetProposalResponse_CurrentSubgraph)(nil), // 490: wg.cosmo.platform.v1.GetProposalResponse.CurrentSubgraph - (*UpdateProposalRequest_UpdateProposalSubgraphs)(nil), // 491: wg.cosmo.platform.v1.UpdateProposalRequest.UpdateProposalSubgraphs - (*GetOperationsResponse_Operation)(nil), // 492: wg.cosmo.platform.v1.GetOperationsResponse.Operation - (*GetClientsFromAnalyticsResponse_Client)(nil), // 493: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.Client - (*GetOperationClientsResponse_Client)(nil), // 494: wg.cosmo.platform.v1.GetOperationClientsResponse.Client - (*GetOperationDeprecatedFieldsResponse_DeprecatedField)(nil), // 495: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.DeprecatedField - (*ListOrganizationsResponse_OrganizationMembership)(nil), // 496: wg.cosmo.platform.v1.ListOrganizationsResponse.OrganizationMembership - (common.EnumStatusCode)(0), // 497: wg.cosmo.common.EnumStatusCode - (common.GraphQLSubscriptionProtocol)(0), // 498: wg.cosmo.common.GraphQLSubscriptionProtocol - (common.GraphQLWebsocketSubprotocol)(0), // 499: wg.cosmo.common.GraphQLWebsocketSubprotocol - (*notifications.EventMeta)(nil), // 500: wg.cosmo.notifications.EventMeta + (*GetCacheCohortConfigVersionsRequest)(nil), // 432: wg.cosmo.platform.v1.GetCacheCohortConfigVersionsRequest + (*GetCacheCohortConfigVersionsResponse)(nil), // 433: wg.cosmo.platform.v1.GetCacheCohortConfigVersionsResponse + (*UpdateProposalRequest)(nil), // 434: wg.cosmo.platform.v1.UpdateProposalRequest + (*UpdateProposalResponse)(nil), // 435: wg.cosmo.platform.v1.UpdateProposalResponse + (*EnableProposalsForNamespaceRequest)(nil), // 436: wg.cosmo.platform.v1.EnableProposalsForNamespaceRequest + (*EnableProposalsForNamespaceResponse)(nil), // 437: wg.cosmo.platform.v1.EnableProposalsForNamespaceResponse + (*ConfigureNamespaceProposalConfigRequest)(nil), // 438: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest + (*ConfigureNamespaceProposalConfigResponse)(nil), // 439: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse + (*GetNamespaceProposalConfigRequest)(nil), // 440: wg.cosmo.platform.v1.GetNamespaceProposalConfigRequest + (*GetNamespaceProposalConfigResponse)(nil), // 441: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse + (*GetOperationsRequest)(nil), // 442: wg.cosmo.platform.v1.GetOperationsRequest + (*GetOperationsResponse)(nil), // 443: wg.cosmo.platform.v1.GetOperationsResponse + (*GetClientsFromAnalyticsRequest)(nil), // 444: wg.cosmo.platform.v1.GetClientsFromAnalyticsRequest + (*GetClientsFromAnalyticsResponse)(nil), // 445: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse + (*GetOperationClientsRequest)(nil), // 446: wg.cosmo.platform.v1.GetOperationClientsRequest + (*GetOperationClientsResponse)(nil), // 447: wg.cosmo.platform.v1.GetOperationClientsResponse + (*GetOperationDeprecatedFieldsRequest)(nil), // 448: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsRequest + (*GetOperationDeprecatedFieldsResponse)(nil), // 449: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse + (*ValidateAndFetchPluginDataRequest)(nil), // 450: wg.cosmo.platform.v1.ValidateAndFetchPluginDataRequest + (*ValidateAndFetchPluginDataResponse)(nil), // 451: wg.cosmo.platform.v1.ValidateAndFetchPluginDataResponse + (*LinkSubgraphRequest)(nil), // 452: wg.cosmo.platform.v1.LinkSubgraphRequest + (*LinkSubgraphResponse)(nil), // 453: wg.cosmo.platform.v1.LinkSubgraphResponse + (*UnlinkSubgraphRequest)(nil), // 454: wg.cosmo.platform.v1.UnlinkSubgraphRequest + (*UnlinkSubgraphResponse)(nil), // 455: wg.cosmo.platform.v1.UnlinkSubgraphResponse + (*VerifyAPIKeyGraphAccessRequest)(nil), // 456: wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessRequest + (*VerifyAPIKeyGraphAccessResponse)(nil), // 457: wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessResponse + (*InitializeCosmoUserRequest)(nil), // 458: wg.cosmo.platform.v1.InitializeCosmoUserRequest + (*InitializeCosmoUserResponse)(nil), // 459: wg.cosmo.platform.v1.InitializeCosmoUserResponse + (*ListOrganizationsRequest)(nil), // 460: wg.cosmo.platform.v1.ListOrganizationsRequest + (*ListOrganizationsResponse)(nil), // 461: wg.cosmo.platform.v1.ListOrganizationsResponse + (*RecomposeGraphRequest)(nil), // 462: wg.cosmo.platform.v1.RecomposeGraphRequest + (*RecomposeGraphResponse)(nil), // 463: wg.cosmo.platform.v1.RecomposeGraphResponse + (*Subgraph_PluginData)(nil), // 464: wg.cosmo.platform.v1.Subgraph.PluginData + (*GetSubgraphByNameResponse_LinkedSubgraph)(nil), // 465: wg.cosmo.platform.v1.GetSubgraphByNameResponse.LinkedSubgraph + (*SchemaCheck_GhDetails)(nil), // 466: wg.cosmo.platform.v1.SchemaCheck.GhDetails + (*SchemaCheck_CheckedSubgraph)(nil), // 467: wg.cosmo.platform.v1.SchemaCheck.CheckedSubgraph + (*SchemaCheck_LinkedCheck)(nil), // 468: wg.cosmo.platform.v1.SchemaCheck.LinkedCheck + (*GetCheckSummaryResponse_AffectedGraph)(nil), // 469: wg.cosmo.platform.v1.GetCheckSummaryResponse.AffectedGraph + (*GetCheckSummaryResponse_ProposalSchemaMatch)(nil), // 470: wg.cosmo.platform.v1.GetCheckSummaryResponse.ProposalSchemaMatch + (*GetCheckOperationsResponse_CheckOperation)(nil), // 471: wg.cosmo.platform.v1.GetCheckOperationsResponse.CheckOperation + nil, // 472: wg.cosmo.platform.v1.AnalyticsViewRow.ValueEntry + (*GetOrganizationGroupMembersResponse_GroupMember)(nil), // 473: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupMember + (*GetOrganizationGroupMembersResponse_GroupApiKey)(nil), // 474: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupApiKey + (*UpdateOrganizationGroupRequest_GroupRule)(nil), // 475: wg.cosmo.platform.v1.UpdateOrganizationGroupRequest.GroupRule + (*OrgMember_Group)(nil), // 476: wg.cosmo.platform.v1.OrgMember.Group + (*APIKey_Group)(nil), // 477: wg.cosmo.platform.v1.APIKey.Group + nil, // 478: wg.cosmo.platform.v1.Span.AttributesEntry + (*DeletePersistedOperationResponse_Operation)(nil), // 479: wg.cosmo.platform.v1.DeletePersistedOperationResponse.Operation + (*CheckPersistedOperationTrafficResponse_Operation)(nil), // 480: wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.Operation + (*GetPersistedOperationsResponse_Operation)(nil), // 481: wg.cosmo.platform.v1.GetPersistedOperationsResponse.Operation + (*GetOrganizationWebhookConfigsResponse_Config)(nil), // 482: wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.Config + (*GetBillingPlansResponse_BillingPlanFeature)(nil), // 483: wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlanFeature + (*GetBillingPlansResponse_BillingPlan)(nil), // 484: wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlan + (*GetAllOverridesResponse_Override)(nil), // 485: wg.cosmo.platform.v1.GetAllOverridesResponse.Override + (*GetUserAccessibleResourcesResponse_Namespace)(nil), // 486: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.Namespace + (*GetUserAccessibleResourcesResponse_FederatedGraph)(nil), // 487: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.FederatedGraph + (*GetUserAccessibleResourcesResponse_SubGraph)(nil), // 488: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.SubGraph + (*ClientWithOperations_Operation)(nil), // 489: wg.cosmo.platform.v1.ClientWithOperations.Operation + (*GetFeatureFlagByNameResponse_FfFederatedGraph)(nil), // 490: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.FfFederatedGraph + (*BulkUpdateProposalRolloutPercentagesRequest_Item)(nil), // 491: wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest.Item + (*GetProposalResponse_CurrentSubgraph)(nil), // 492: wg.cosmo.platform.v1.GetProposalResponse.CurrentSubgraph + (*UpdateProposalRequest_UpdateProposalSubgraphs)(nil), // 493: wg.cosmo.platform.v1.UpdateProposalRequest.UpdateProposalSubgraphs + (*GetOperationsResponse_Operation)(nil), // 494: wg.cosmo.platform.v1.GetOperationsResponse.Operation + (*GetClientsFromAnalyticsResponse_Client)(nil), // 495: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.Client + (*GetOperationClientsResponse_Client)(nil), // 496: wg.cosmo.platform.v1.GetOperationClientsResponse.Client + (*GetOperationDeprecatedFieldsResponse_DeprecatedField)(nil), // 497: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.DeprecatedField + (*ListOrganizationsResponse_OrganizationMembership)(nil), // 498: wg.cosmo.platform.v1.ListOrganizationsResponse.OrganizationMembership + (common.EnumStatusCode)(0), // 499: wg.cosmo.common.EnumStatusCode + (common.GraphQLSubscriptionProtocol)(0), // 500: wg.cosmo.common.GraphQLSubscriptionProtocol + (common.GraphQLWebsocketSubprotocol)(0), // 501: wg.cosmo.common.GraphQLWebsocketSubprotocol + (*notifications.EventMeta)(nil), // 502: wg.cosmo.notifications.EventMeta } var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ - 497, // 0: wg.cosmo.platform.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode + 499, // 0: wg.cosmo.platform.v1.Response.code:type_name -> wg.cosmo.common.EnumStatusCode 16, // 1: wg.cosmo.platform.v1.PublishMonographResponse.response:type_name -> wg.cosmo.platform.v1.Response 38, // 2: wg.cosmo.platform.v1.PublishMonographResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError 40, // 3: wg.cosmo.platform.v1.PublishMonographResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError 39, // 4: wg.cosmo.platform.v1.PublishMonographResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning 15, // 5: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.labels:type_name -> wg.cosmo.platform.v1.Label - 498, // 6: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 499, // 7: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 500, // 6: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 501, // 7: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol 1, // 8: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.type:type_name -> wg.cosmo.platform.v1.SubgraphType 20, // 9: wg.cosmo.platform.v1.PublishFederatedSubgraphRequest.proto:type_name -> wg.cosmo.platform.v1.ProtoInput 16, // 10: wg.cosmo.platform.v1.PublishFederatedSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response @@ -34927,12 +35044,12 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 24, // 15: wg.cosmo.platform.v1.CheckSubgraphSchemaRequest.gitInfo:type_name -> wg.cosmo.platform.v1.GitInfo 25, // 16: wg.cosmo.platform.v1.CheckSubgraphSchemaRequest.vcsContext:type_name -> wg.cosmo.platform.v1.VCSContext 15, // 17: wg.cosmo.platform.v1.CheckSubgraphSchemaRequest.labels:type_name -> wg.cosmo.platform.v1.Label - 498, // 18: wg.cosmo.platform.v1.CreateMonographRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 499, // 19: wg.cosmo.platform.v1.CreateMonographRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 500, // 18: wg.cosmo.platform.v1.CreateMonographRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 501, // 19: wg.cosmo.platform.v1.CreateMonographRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol 16, // 20: wg.cosmo.platform.v1.CreateMonographResponse.response:type_name -> wg.cosmo.platform.v1.Response 15, // 21: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest.labels:type_name -> wg.cosmo.platform.v1.Label - 498, // 22: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 499, // 23: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 500, // 22: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 501, // 23: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol 1, // 24: wg.cosmo.platform.v1.CreateFederatedSubgraphRequest.type:type_name -> wg.cosmo.platform.v1.SubgraphType 16, // 25: wg.cosmo.platform.v1.DeleteMonographResponse.response:type_name -> wg.cosmo.platform.v1.Response 0, // 26: wg.cosmo.platform.v1.LintIssue.severity:type_name -> wg.cosmo.platform.v1.LintSeverity @@ -34971,7 +35088,7 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 55, // 59: wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsResponse.graphs:type_name -> wg.cosmo.platform.v1.FederatedGraph 15, // 60: wg.cosmo.platform.v1.Subgraph.labels:type_name -> wg.cosmo.platform.v1.Label 1, // 61: wg.cosmo.platform.v1.Subgraph.type:type_name -> wg.cosmo.platform.v1.SubgraphType - 462, // 62: wg.cosmo.platform.v1.Subgraph.pluginData:type_name -> wg.cosmo.platform.v1.Subgraph.PluginData + 464, // 62: wg.cosmo.platform.v1.Subgraph.pluginData:type_name -> wg.cosmo.platform.v1.Subgraph.PluginData 16, // 63: wg.cosmo.platform.v1.GetSubgraphsResponse.response:type_name -> wg.cosmo.platform.v1.Response 60, // 64: wg.cosmo.platform.v1.GetSubgraphsResponse.graphs:type_name -> wg.cosmo.platform.v1.Subgraph 16, // 65: wg.cosmo.platform.v1.GetFederatedGraphByNameResponse.response:type_name -> wg.cosmo.platform.v1.Response @@ -34981,26 +35098,26 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 16, // 69: wg.cosmo.platform.v1.GetSubgraphByNameResponse.response:type_name -> wg.cosmo.platform.v1.Response 60, // 70: wg.cosmo.platform.v1.GetSubgraphByNameResponse.graph:type_name -> wg.cosmo.platform.v1.Subgraph 288, // 71: wg.cosmo.platform.v1.GetSubgraphByNameResponse.members:type_name -> wg.cosmo.platform.v1.SubgraphMember - 463, // 72: wg.cosmo.platform.v1.GetSubgraphByNameResponse.linkedSubgraph:type_name -> wg.cosmo.platform.v1.GetSubgraphByNameResponse.LinkedSubgraph + 465, // 72: wg.cosmo.platform.v1.GetSubgraphByNameResponse.linkedSubgraph:type_name -> wg.cosmo.platform.v1.GetSubgraphByNameResponse.LinkedSubgraph 16, // 73: wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 74: wg.cosmo.platform.v1.GetLatestSubgraphSDLResponse.response:type_name -> wg.cosmo.platform.v1.Response 72, // 75: wg.cosmo.platform.v1.GetChecksByFederatedGraphNameRequest.filters:type_name -> wg.cosmo.platform.v1.GetChecksByFederatedGraphNameFilters - 464, // 76: wg.cosmo.platform.v1.SchemaCheck.ghDetails:type_name -> wg.cosmo.platform.v1.SchemaCheck.GhDetails + 466, // 76: wg.cosmo.platform.v1.SchemaCheck.ghDetails:type_name -> wg.cosmo.platform.v1.SchemaCheck.GhDetails 25, // 77: wg.cosmo.platform.v1.SchemaCheck.vcsContext:type_name -> wg.cosmo.platform.v1.VCSContext - 465, // 78: wg.cosmo.platform.v1.SchemaCheck.checkedSubgraphs:type_name -> wg.cosmo.platform.v1.SchemaCheck.CheckedSubgraph - 466, // 79: wg.cosmo.platform.v1.SchemaCheck.linkedChecks:type_name -> wg.cosmo.platform.v1.SchemaCheck.LinkedCheck + 467, // 78: wg.cosmo.platform.v1.SchemaCheck.checkedSubgraphs:type_name -> wg.cosmo.platform.v1.SchemaCheck.CheckedSubgraph + 468, // 79: wg.cosmo.platform.v1.SchemaCheck.linkedChecks:type_name -> wg.cosmo.platform.v1.SchemaCheck.LinkedCheck 16, // 80: wg.cosmo.platform.v1.GetChecksByFederatedGraphNameResponse.response:type_name -> wg.cosmo.platform.v1.Response 74, // 81: wg.cosmo.platform.v1.GetChecksByFederatedGraphNameResponse.checks:type_name -> wg.cosmo.platform.v1.SchemaCheck 16, // 82: wg.cosmo.platform.v1.GetCheckSummaryResponse.response:type_name -> wg.cosmo.platform.v1.Response 74, // 83: wg.cosmo.platform.v1.GetCheckSummaryResponse.check:type_name -> wg.cosmo.platform.v1.SchemaCheck - 467, // 84: wg.cosmo.platform.v1.GetCheckSummaryResponse.affected_graphs:type_name -> wg.cosmo.platform.v1.GetCheckSummaryResponse.AffectedGraph + 469, // 84: wg.cosmo.platform.v1.GetCheckSummaryResponse.affected_graphs:type_name -> wg.cosmo.platform.v1.GetCheckSummaryResponse.AffectedGraph 36, // 85: wg.cosmo.platform.v1.GetCheckSummaryResponse.changes:type_name -> wg.cosmo.platform.v1.SchemaChange 44, // 86: wg.cosmo.platform.v1.GetCheckSummaryResponse.lintIssues:type_name -> wg.cosmo.platform.v1.LintIssue 45, // 87: wg.cosmo.platform.v1.GetCheckSummaryResponse.graphPruningIssues:type_name -> wg.cosmo.platform.v1.GraphPruningIssue - 468, // 88: wg.cosmo.platform.v1.GetCheckSummaryResponse.proposalMatches:type_name -> wg.cosmo.platform.v1.GetCheckSummaryResponse.ProposalSchemaMatch + 470, // 88: wg.cosmo.platform.v1.GetCheckSummaryResponse.proposalMatches:type_name -> wg.cosmo.platform.v1.GetCheckSummaryResponse.ProposalSchemaMatch 37, // 89: wg.cosmo.platform.v1.GetCheckSummaryResponse.composedSchemaBreakingChanges:type_name -> wg.cosmo.platform.v1.FederatedGraphSchemaChange 16, // 90: wg.cosmo.platform.v1.GetCheckOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 469, // 91: wg.cosmo.platform.v1.GetCheckOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.GetCheckOperationsResponse.CheckOperation + 471, // 91: wg.cosmo.platform.v1.GetCheckOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.GetCheckOperationsResponse.CheckOperation 16, // 92: wg.cosmo.platform.v1.GetOperationContentResponse.response:type_name -> wg.cosmo.platform.v1.Response 96, // 93: wg.cosmo.platform.v1.GetFederatedGraphChangelogRequest.pagination:type_name -> wg.cosmo.platform.v1.Pagination 100, // 94: wg.cosmo.platform.v1.GetFederatedGraphChangelogRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange @@ -35009,8 +35126,8 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 85, // 97: wg.cosmo.platform.v1.GetFederatedGraphChangelogResponse.federatedGraphChangelogOutput:type_name -> wg.cosmo.platform.v1.FederatedGraphChangelogOutput 16, // 98: wg.cosmo.platform.v1.GetFederatedResponse.response:type_name -> wg.cosmo.platform.v1.Response 15, // 99: wg.cosmo.platform.v1.UpdateSubgraphRequest.labels:type_name -> wg.cosmo.platform.v1.Label - 498, // 100: wg.cosmo.platform.v1.UpdateSubgraphRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 499, // 101: wg.cosmo.platform.v1.UpdateSubgraphRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 500, // 100: wg.cosmo.platform.v1.UpdateSubgraphRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 501, // 101: wg.cosmo.platform.v1.UpdateSubgraphRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol 16, // 102: wg.cosmo.platform.v1.UpdateSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response 38, // 103: wg.cosmo.platform.v1.UpdateSubgraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError 40, // 104: wg.cosmo.platform.v1.UpdateSubgraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError @@ -35019,8 +35136,8 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 38, // 107: wg.cosmo.platform.v1.UpdateFederatedGraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError 40, // 108: wg.cosmo.platform.v1.UpdateFederatedGraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError 39, // 109: wg.cosmo.platform.v1.UpdateFederatedGraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 498, // 110: wg.cosmo.platform.v1.UpdateMonographRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol - 499, // 111: wg.cosmo.platform.v1.UpdateMonographRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol + 500, // 110: wg.cosmo.platform.v1.UpdateMonographRequest.subscription_protocol:type_name -> wg.cosmo.common.GraphQLSubscriptionProtocol + 501, // 111: wg.cosmo.platform.v1.UpdateMonographRequest.websocket_subprotocol:type_name -> wg.cosmo.common.GraphQLWebsocketSubprotocol 16, // 112: wg.cosmo.platform.v1.UpdateMonographResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 113: wg.cosmo.platform.v1.CheckFederatedGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response 38, // 114: wg.cosmo.platform.v1.CheckFederatedGraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError @@ -35041,7 +35158,7 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 105, // 129: wg.cosmo.platform.v1.AnalyticsViewResultFilter.options:type_name -> wg.cosmo.platform.v1.AnalyticsViewResultFilterOption 3, // 130: wg.cosmo.platform.v1.AnalyticsViewResultFilter.custom_options:type_name -> wg.cosmo.platform.v1.CustomOptions 5, // 131: wg.cosmo.platform.v1.AnalyticsViewResultFilterOption.operator:type_name -> wg.cosmo.platform.v1.AnalyticsViewFilterOperator - 470, // 132: wg.cosmo.platform.v1.AnalyticsViewRow.value:type_name -> wg.cosmo.platform.v1.AnalyticsViewRow.ValueEntry + 472, // 132: wg.cosmo.platform.v1.AnalyticsViewRow.value:type_name -> wg.cosmo.platform.v1.AnalyticsViewRow.ValueEntry 16, // 133: wg.cosmo.platform.v1.GetAnalyticsViewResponse.response:type_name -> wg.cosmo.platform.v1.Response 102, // 134: wg.cosmo.platform.v1.GetAnalyticsViewResponse.view:type_name -> wg.cosmo.platform.v1.AnalyticsViewResult 16, // 135: wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse.response:type_name -> wg.cosmo.platform.v1.Response @@ -35056,12 +35173,12 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 16, // 144: wg.cosmo.platform.v1.GetOrganizationGroupsResponse.response:type_name -> wg.cosmo.platform.v1.Response 118, // 145: wg.cosmo.platform.v1.GetOrganizationGroupsResponse.groups:type_name -> wg.cosmo.platform.v1.OrganizationGroup 16, // 146: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.response:type_name -> wg.cosmo.platform.v1.Response - 471, // 147: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.members:type_name -> wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupMember - 472, // 148: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.apiKeys:type_name -> wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupApiKey - 473, // 149: wg.cosmo.platform.v1.UpdateOrganizationGroupRequest.rules:type_name -> wg.cosmo.platform.v1.UpdateOrganizationGroupRequest.GroupRule + 473, // 147: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.members:type_name -> wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupMember + 474, // 148: wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.apiKeys:type_name -> wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse.GroupApiKey + 475, // 149: wg.cosmo.platform.v1.UpdateOrganizationGroupRequest.rules:type_name -> wg.cosmo.platform.v1.UpdateOrganizationGroupRequest.GroupRule 16, // 150: wg.cosmo.platform.v1.UpdateOrganizationGroupResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 151: wg.cosmo.platform.v1.DeleteOrganizationGroupResponse.response:type_name -> wg.cosmo.platform.v1.Response - 474, // 152: wg.cosmo.platform.v1.OrgMember.groups:type_name -> wg.cosmo.platform.v1.OrgMember.Group + 476, // 152: wg.cosmo.platform.v1.OrgMember.groups:type_name -> wg.cosmo.platform.v1.OrgMember.Group 96, // 153: wg.cosmo.platform.v1.GetPendingOrganizationMembersRequest.pagination:type_name -> wg.cosmo.platform.v1.Pagination 16, // 154: wg.cosmo.platform.v1.GetPendingOrganizationMembersResponse.response:type_name -> wg.cosmo.platform.v1.Response 130, // 155: wg.cosmo.platform.v1.GetPendingOrganizationMembersResponse.pendingInvitations:type_name -> wg.cosmo.platform.v1.PendingOrgInvitation @@ -35069,7 +35186,7 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 16, // 157: wg.cosmo.platform.v1.GetOrganizationMembersResponse.response:type_name -> wg.cosmo.platform.v1.Response 129, // 158: wg.cosmo.platform.v1.GetOrganizationMembersResponse.members:type_name -> wg.cosmo.platform.v1.OrgMember 16, // 159: wg.cosmo.platform.v1.InviteUserResponse.response:type_name -> wg.cosmo.platform.v1.Response - 475, // 160: wg.cosmo.platform.v1.APIKey.group:type_name -> wg.cosmo.platform.v1.APIKey.Group + 477, // 160: wg.cosmo.platform.v1.APIKey.group:type_name -> wg.cosmo.platform.v1.APIKey.Group 16, // 161: wg.cosmo.platform.v1.GetAPIKeysResponse.response:type_name -> wg.cosmo.platform.v1.Response 137, // 162: wg.cosmo.platform.v1.GetAPIKeysResponse.apiKeys:type_name -> wg.cosmo.platform.v1.APIKey 6, // 163: wg.cosmo.platform.v1.CreateAPIKeyRequest.expires:type_name -> wg.cosmo.platform.v1.ExpiresAt @@ -35079,7 +35196,7 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 16, // 167: wg.cosmo.platform.v1.RemoveOrganizationMemberResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 168: wg.cosmo.platform.v1.RemoveInvitationResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 169: wg.cosmo.platform.v1.MigrateFromApolloResponse.response:type_name -> wg.cosmo.platform.v1.Response - 476, // 170: wg.cosmo.platform.v1.Span.attributes:type_name -> wg.cosmo.platform.v1.Span.AttributesEntry + 478, // 170: wg.cosmo.platform.v1.Span.attributes:type_name -> wg.cosmo.platform.v1.Span.AttributesEntry 16, // 171: wg.cosmo.platform.v1.GetTraceResponse.response:type_name -> wg.cosmo.platform.v1.Response 152, // 172: wg.cosmo.platform.v1.GetTraceResponse.spans:type_name -> wg.cosmo.platform.v1.Span 16, // 173: wg.cosmo.platform.v1.WhoAmIResponse.response:type_name -> wg.cosmo.platform.v1.Response @@ -35092,29 +35209,29 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 16, // 180: wg.cosmo.platform.v1.PublishPersistedOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response 166, // 181: wg.cosmo.platform.v1.PublishPersistedOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.PublishedOperation 16, // 182: wg.cosmo.platform.v1.DeletePersistedOperationResponse.response:type_name -> wg.cosmo.platform.v1.Response - 477, // 183: wg.cosmo.platform.v1.DeletePersistedOperationResponse.operation:type_name -> wg.cosmo.platform.v1.DeletePersistedOperationResponse.Operation + 479, // 183: wg.cosmo.platform.v1.DeletePersistedOperationResponse.operation:type_name -> wg.cosmo.platform.v1.DeletePersistedOperationResponse.Operation 16, // 184: wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.response:type_name -> wg.cosmo.platform.v1.Response - 478, // 185: wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.operation:type_name -> wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.Operation + 480, // 185: wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.operation:type_name -> wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse.Operation 16, // 186: wg.cosmo.platform.v1.GetPersistedOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 479, // 187: wg.cosmo.platform.v1.GetPersistedOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.GetPersistedOperationsResponse.Operation - 500, // 188: wg.cosmo.platform.v1.CreateOrganizationWebhookConfigRequest.events_meta:type_name -> wg.cosmo.notifications.EventMeta + 481, // 187: wg.cosmo.platform.v1.GetPersistedOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.GetPersistedOperationsResponse.Operation + 502, // 188: wg.cosmo.platform.v1.CreateOrganizationWebhookConfigRequest.events_meta:type_name -> wg.cosmo.notifications.EventMeta 16, // 189: wg.cosmo.platform.v1.CreateOrganizationWebhookConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 190: wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 480, // 191: wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.configs:type_name -> wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.Config + 482, // 191: wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.configs:type_name -> wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse.Config 16, // 192: wg.cosmo.platform.v1.GetOrganizationWebhookMetaResponse.response:type_name -> wg.cosmo.platform.v1.Response - 500, // 193: wg.cosmo.platform.v1.GetOrganizationWebhookMetaResponse.events_meta:type_name -> wg.cosmo.notifications.EventMeta - 500, // 194: wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigRequest.events_meta:type_name -> wg.cosmo.notifications.EventMeta + 502, // 193: wg.cosmo.platform.v1.GetOrganizationWebhookMetaResponse.events_meta:type_name -> wg.cosmo.notifications.EventMeta + 502, // 194: wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigRequest.events_meta:type_name -> wg.cosmo.notifications.EventMeta 16, // 195: wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 196: wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response - 500, // 197: wg.cosmo.platform.v1.CreateIntegrationRequest.eventsMeta:type_name -> wg.cosmo.notifications.EventMeta + 502, // 197: wg.cosmo.platform.v1.CreateIntegrationRequest.eventsMeta:type_name -> wg.cosmo.notifications.EventMeta 16, // 198: wg.cosmo.platform.v1.CreateIntegrationResponse.response:type_name -> wg.cosmo.platform.v1.Response 8, // 199: wg.cosmo.platform.v1.IntegrationConfig.type:type_name -> wg.cosmo.platform.v1.IntegrationType 188, // 200: wg.cosmo.platform.v1.IntegrationConfig.slackIntegrationConfig:type_name -> wg.cosmo.platform.v1.SlackIntegrationConfig 189, // 201: wg.cosmo.platform.v1.Integration.integrationConfig:type_name -> wg.cosmo.platform.v1.IntegrationConfig - 500, // 202: wg.cosmo.platform.v1.Integration.eventsMeta:type_name -> wg.cosmo.notifications.EventMeta + 502, // 202: wg.cosmo.platform.v1.Integration.eventsMeta:type_name -> wg.cosmo.notifications.EventMeta 16, // 203: wg.cosmo.platform.v1.GetOrganizationIntegrationsResponse.response:type_name -> wg.cosmo.platform.v1.Response 190, // 204: wg.cosmo.platform.v1.GetOrganizationIntegrationsResponse.integrations:type_name -> wg.cosmo.platform.v1.Integration - 500, // 205: wg.cosmo.platform.v1.UpdateIntegrationConfigRequest.events_meta:type_name -> wg.cosmo.notifications.EventMeta + 502, // 205: wg.cosmo.platform.v1.UpdateIntegrationConfigRequest.events_meta:type_name -> wg.cosmo.notifications.EventMeta 16, // 206: wg.cosmo.platform.v1.UpdateIntegrationConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 207: wg.cosmo.platform.v1.DeleteIntegrationResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 208: wg.cosmo.platform.v1.DeleteOrganizationResponse.response:type_name -> wg.cosmo.platform.v1.Response @@ -35127,7 +35244,7 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 16, // 215: wg.cosmo.platform.v1.GetOrganizationBySlugResponse.response:type_name -> wg.cosmo.platform.v1.Response 208, // 216: wg.cosmo.platform.v1.GetOrganizationBySlugResponse.organization:type_name -> wg.cosmo.platform.v1.Organization 16, // 217: wg.cosmo.platform.v1.GetBillingPlansResponse.response:type_name -> wg.cosmo.platform.v1.Response - 482, // 218: wg.cosmo.platform.v1.GetBillingPlansResponse.plans:type_name -> wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlan + 484, // 218: wg.cosmo.platform.v1.GetBillingPlansResponse.plans:type_name -> wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlan 16, // 219: wg.cosmo.platform.v1.CreateCheckoutSessionResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 220: wg.cosmo.platform.v1.CreateBillingPortalSessionResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 221: wg.cosmo.platform.v1.UpgradePlanResponse.response:type_name -> wg.cosmo.platform.v1.Response @@ -35168,7 +35285,7 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 16, // 256: wg.cosmo.platform.v1.GetOperationOverridesResponse.response:type_name -> wg.cosmo.platform.v1.Response 238, // 257: wg.cosmo.platform.v1.GetOperationOverridesResponse.changes:type_name -> wg.cosmo.platform.v1.OverrideChange 16, // 258: wg.cosmo.platform.v1.GetAllOverridesResponse.response:type_name -> wg.cosmo.platform.v1.Response - 483, // 259: wg.cosmo.platform.v1.GetAllOverridesResponse.overrides:type_name -> wg.cosmo.platform.v1.GetAllOverridesResponse.Override + 485, // 259: wg.cosmo.platform.v1.GetAllOverridesResponse.overrides:type_name -> wg.cosmo.platform.v1.GetAllOverridesResponse.Override 24, // 260: wg.cosmo.platform.v1.IsGitHubAppInstalledRequest.git_info:type_name -> wg.cosmo.platform.v1.GitInfo 16, // 261: wg.cosmo.platform.v1.IsGitHubAppInstalledResponse.response:type_name -> wg.cosmo.platform.v1.Response 253, // 262: wg.cosmo.platform.v1.CreateOIDCProviderRequest.mappers:type_name -> wg.cosmo.platform.v1.GroupMapper @@ -35196,9 +35313,9 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 16, // 284: wg.cosmo.platform.v1.GetChangelogBySchemaVersionResponse.response:type_name -> wg.cosmo.platform.v1.Response 85, // 285: wg.cosmo.platform.v1.GetChangelogBySchemaVersionResponse.changelog:type_name -> wg.cosmo.platform.v1.FederatedGraphChangelogOutput 16, // 286: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.response:type_name -> wg.cosmo.platform.v1.Response - 484, // 287: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.namespaces:type_name -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.Namespace - 485, // 288: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.federatedGraphs:type_name -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.FederatedGraph - 486, // 289: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.subgraphs:type_name -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.SubGraph + 486, // 287: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.namespaces:type_name -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.Namespace + 487, // 288: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.federatedGraphs:type_name -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.FederatedGraph + 488, // 289: wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.subgraphs:type_name -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse.SubGraph 9, // 290: wg.cosmo.platform.v1.UpdateFeatureSettingsRequest.featureId:type_name -> wg.cosmo.platform.v1.Feature 16, // 291: wg.cosmo.platform.v1.UpdateFeatureSettingsResponse.response:type_name -> wg.cosmo.platform.v1.Response 16, // 292: wg.cosmo.platform.v1.GetSubgraphMembersResponse.response:type_name -> wg.cosmo.platform.v1.Response @@ -35209,7 +35326,7 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 16, // 297: wg.cosmo.platform.v1.GetClientsResponse.response:type_name -> wg.cosmo.platform.v1.Response 295, // 298: wg.cosmo.platform.v1.GetClientsResponse.clients:type_name -> wg.cosmo.platform.v1.ClientInfo 100, // 299: wg.cosmo.platform.v1.GetFieldUsageRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange - 487, // 300: wg.cosmo.platform.v1.ClientWithOperations.operations:type_name -> wg.cosmo.platform.v1.ClientWithOperations.Operation + 489, // 300: wg.cosmo.platform.v1.ClientWithOperations.operations:type_name -> wg.cosmo.platform.v1.ClientWithOperations.Operation 16, // 301: wg.cosmo.platform.v1.GetFieldUsageResponse.response:type_name -> wg.cosmo.platform.v1.Response 110, // 302: wg.cosmo.platform.v1.GetFieldUsageResponse.request_series:type_name -> wg.cosmo.platform.v1.RequestSeriesItem 299, // 303: wg.cosmo.platform.v1.GetFieldUsageResponse.clients:type_name -> wg.cosmo.platform.v1.ClientWithOperations @@ -35273,7 +35390,7 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 352, // 361: wg.cosmo.platform.v1.GetFeatureFlagsResponse.feature_flags:type_name -> wg.cosmo.platform.v1.FeatureFlag 16, // 362: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.response:type_name -> wg.cosmo.platform.v1.Response 352, // 363: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.feature_flag:type_name -> wg.cosmo.platform.v1.FeatureFlag - 488, // 364: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.federated_graphs:type_name -> wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.FfFederatedGraph + 490, // 364: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.federated_graphs:type_name -> wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.FfFederatedGraph 60, // 365: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.feature_subgraphs:type_name -> wg.cosmo.platform.v1.Subgraph 16, // 366: wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagResponse.response:type_name -> wg.cosmo.platform.v1.Response 60, // 367: wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagResponse.feature_subgraphs:type_name -> wg.cosmo.platform.v1.Subgraph @@ -35329,7 +35446,7 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 418, // 417: wg.cosmo.platform.v1.Proposal.subgraphs:type_name -> wg.cosmo.platform.v1.ProposalSubgraph 10, // 418: wg.cosmo.platform.v1.Proposal.origin:type_name -> wg.cosmo.platform.v1.ProposalOrigin 15, // 419: wg.cosmo.platform.v1.ProposalSubgraph.labels:type_name -> wg.cosmo.platform.v1.Label - 489, // 420: wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest.items:type_name -> wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest.Item + 491, // 420: wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest.items:type_name -> wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest.Item 16, // 421: wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesResponse.response:type_name -> wg.cosmo.platform.v1.Response 420, // 422: wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesResponse.items:type_name -> wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesItemResult 16, // 423: wg.cosmo.platform.v1.TeardownProposalRolloutResponse.response:type_name -> wg.cosmo.platform.v1.Response @@ -35349,432 +35466,435 @@ var file_wg_cosmo_platform_v1_platform_proto_depIdxs = []int32{ 37, // 437: wg.cosmo.platform.v1.CreateProposalResponse.composedSchemaBreakingChanges:type_name -> wg.cosmo.platform.v1.FederatedGraphSchemaChange 16, // 438: wg.cosmo.platform.v1.GetProposalResponse.response:type_name -> wg.cosmo.platform.v1.Response 417, // 439: wg.cosmo.platform.v1.GetProposalResponse.proposal:type_name -> wg.cosmo.platform.v1.Proposal - 490, // 440: wg.cosmo.platform.v1.GetProposalResponse.currentSubgraphs:type_name -> wg.cosmo.platform.v1.GetProposalResponse.CurrentSubgraph + 492, // 440: wg.cosmo.platform.v1.GetProposalResponse.currentSubgraphs:type_name -> wg.cosmo.platform.v1.GetProposalResponse.CurrentSubgraph 16, // 441: wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response 417, // 442: wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse.proposals:type_name -> wg.cosmo.platform.v1.Proposal 16, // 443: wg.cosmo.platform.v1.GetProposalChecksResponse.response:type_name -> wg.cosmo.platform.v1.Response 74, // 444: wg.cosmo.platform.v1.GetProposalChecksResponse.checks:type_name -> wg.cosmo.platform.v1.SchemaCheck - 491, // 445: wg.cosmo.platform.v1.UpdateProposalRequest.updatedSubgraphs:type_name -> wg.cosmo.platform.v1.UpdateProposalRequest.UpdateProposalSubgraphs - 16, // 446: wg.cosmo.platform.v1.UpdateProposalResponse.response:type_name -> wg.cosmo.platform.v1.Response - 36, // 447: wg.cosmo.platform.v1.UpdateProposalResponse.breakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange - 36, // 448: wg.cosmo.platform.v1.UpdateProposalResponse.nonBreakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange - 38, // 449: wg.cosmo.platform.v1.UpdateProposalResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError - 39, // 450: wg.cosmo.platform.v1.UpdateProposalResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 44, // 451: wg.cosmo.platform.v1.UpdateProposalResponse.lintErrors:type_name -> wg.cosmo.platform.v1.LintIssue - 44, // 452: wg.cosmo.platform.v1.UpdateProposalResponse.lintWarnings:type_name -> wg.cosmo.platform.v1.LintIssue - 45, // 453: wg.cosmo.platform.v1.UpdateProposalResponse.graphPruneErrors:type_name -> wg.cosmo.platform.v1.GraphPruningIssue - 45, // 454: wg.cosmo.platform.v1.UpdateProposalResponse.graphPruneWarnings:type_name -> wg.cosmo.platform.v1.GraphPruningIssue - 41, // 455: wg.cosmo.platform.v1.UpdateProposalResponse.operationUsageStats:type_name -> wg.cosmo.platform.v1.CheckOperationUsageStats - 37, // 456: wg.cosmo.platform.v1.UpdateProposalResponse.composedSchemaBreakingChanges:type_name -> wg.cosmo.platform.v1.FederatedGraphSchemaChange - 16, // 457: wg.cosmo.platform.v1.EnableProposalsForNamespaceResponse.response:type_name -> wg.cosmo.platform.v1.Response - 0, // 458: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest.checkSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity - 0, // 459: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest.publishSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity - 16, // 460: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 461: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response - 0, // 462: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse.checkSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity - 0, // 463: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse.publishSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity - 12, // 464: wg.cosmo.platform.v1.GetOperationsRequest.fetchBasedOn:type_name -> wg.cosmo.platform.v1.OperationsFetchBasedOn - 100, // 465: wg.cosmo.platform.v1.GetOperationsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange - 13, // 466: wg.cosmo.platform.v1.GetOperationsRequest.sortDirection:type_name -> wg.cosmo.platform.v1.SortDirection - 16, // 467: wg.cosmo.platform.v1.GetOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 492, // 468: wg.cosmo.platform.v1.GetOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.GetOperationsResponse.Operation - 16, // 469: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 493, // 470: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.clients:type_name -> wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.Client - 100, // 471: wg.cosmo.platform.v1.GetOperationClientsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange - 16, // 472: wg.cosmo.platform.v1.GetOperationClientsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 494, // 473: wg.cosmo.platform.v1.GetOperationClientsResponse.clients:type_name -> wg.cosmo.platform.v1.GetOperationClientsResponse.Client - 100, // 474: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange - 16, // 475: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 495, // 476: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.deprecatedFields:type_name -> wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.DeprecatedField - 15, // 477: wg.cosmo.platform.v1.ValidateAndFetchPluginDataRequest.labels:type_name -> wg.cosmo.platform.v1.Label - 16, // 478: wg.cosmo.platform.v1.ValidateAndFetchPluginDataResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 479: wg.cosmo.platform.v1.LinkSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 480: wg.cosmo.platform.v1.UnlinkSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 481: wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 482: wg.cosmo.platform.v1.InitializeCosmoUserResponse.response:type_name -> wg.cosmo.platform.v1.Response - 16, // 483: wg.cosmo.platform.v1.ListOrganizationsResponse.response:type_name -> wg.cosmo.platform.v1.Response - 496, // 484: wg.cosmo.platform.v1.ListOrganizationsResponse.organizations:type_name -> wg.cosmo.platform.v1.ListOrganizationsResponse.OrganizationMembership - 16, // 485: wg.cosmo.platform.v1.RecomposeGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response - 38, // 486: wg.cosmo.platform.v1.RecomposeGraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError - 40, // 487: wg.cosmo.platform.v1.RecomposeGraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError - 39, // 488: wg.cosmo.platform.v1.RecomposeGraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning - 23, // 489: wg.cosmo.platform.v1.RecomposeGraphResponse.errorCounts:type_name -> wg.cosmo.platform.v1.SubgraphPublishStats - 15, // 490: wg.cosmo.platform.v1.SchemaCheck.CheckedSubgraph.labels:type_name -> wg.cosmo.platform.v1.Label - 36, // 491: wg.cosmo.platform.v1.GetCheckOperationsResponse.CheckOperation.impacting_changes:type_name -> wg.cosmo.platform.v1.SchemaChange - 107, // 492: wg.cosmo.platform.v1.AnalyticsViewRow.ValueEntry.value:type_name -> wg.cosmo.platform.v1.AnalyticsViewRowValue - 481, // 493: wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlan.features:type_name -> wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlanFeature - 55, // 494: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.FfFederatedGraph.federated_graph:type_name -> wg.cosmo.platform.v1.FederatedGraph - 418, // 495: wg.cosmo.platform.v1.UpdateProposalRequest.UpdateProposalSubgraphs.subgraphs:type_name -> wg.cosmo.platform.v1.ProposalSubgraph - 14, // 496: wg.cosmo.platform.v1.GetOperationsResponse.Operation.type:type_name -> wg.cosmo.platform.v1.GetOperationsResponse.OperationType - 374, // 497: wg.cosmo.platform.v1.PlatformService.CreatePlaygroundScript:input_type -> wg.cosmo.platform.v1.CreatePlaygroundScriptRequest - 376, // 498: wg.cosmo.platform.v1.PlatformService.DeletePlaygroundScript:input_type -> wg.cosmo.platform.v1.DeletePlaygroundScriptRequest - 378, // 499: wg.cosmo.platform.v1.PlatformService.UpdatePlaygroundScript:input_type -> wg.cosmo.platform.v1.UpdatePlaygroundScriptRequest - 380, // 500: wg.cosmo.platform.v1.PlatformService.GetPlaygroundScripts:input_type -> wg.cosmo.platform.v1.GetPlaygroundScriptsRequest - 302, // 501: wg.cosmo.platform.v1.PlatformService.CreateNamespace:input_type -> wg.cosmo.platform.v1.CreateNamespaceRequest - 304, // 502: wg.cosmo.platform.v1.PlatformService.DeleteNamespace:input_type -> wg.cosmo.platform.v1.DeleteNamespaceRequest - 306, // 503: wg.cosmo.platform.v1.PlatformService.RenameNamespace:input_type -> wg.cosmo.platform.v1.RenameNamespaceRequest - 309, // 504: wg.cosmo.platform.v1.PlatformService.GetNamespaces:input_type -> wg.cosmo.platform.v1.GetNamespacesRequest - 387, // 505: wg.cosmo.platform.v1.PlatformService.GetNamespace:input_type -> wg.cosmo.platform.v1.GetNamespaceRequest - 392, // 506: wg.cosmo.platform.v1.PlatformService.GetWorkspace:input_type -> wg.cosmo.platform.v1.GetWorkspaceRequest - 336, // 507: wg.cosmo.platform.v1.PlatformService.CreateContract:input_type -> wg.cosmo.platform.v1.CreateContractRequest - 338, // 508: wg.cosmo.platform.v1.PlatformService.UpdateContract:input_type -> wg.cosmo.platform.v1.UpdateContractRequest - 311, // 509: wg.cosmo.platform.v1.PlatformService.MoveFederatedGraph:input_type -> wg.cosmo.platform.v1.MoveGraphRequest - 311, // 510: wg.cosmo.platform.v1.PlatformService.MoveSubgraph:input_type -> wg.cosmo.platform.v1.MoveGraphRequest - 311, // 511: wg.cosmo.platform.v1.PlatformService.MoveMonograph:input_type -> wg.cosmo.platform.v1.MoveGraphRequest - 28, // 512: wg.cosmo.platform.v1.PlatformService.CreateMonograph:input_type -> wg.cosmo.platform.v1.CreateMonographRequest - 18, // 513: wg.cosmo.platform.v1.PlatformService.PublishMonograph:input_type -> wg.cosmo.platform.v1.PublishMonographRequest - 33, // 514: wg.cosmo.platform.v1.PlatformService.DeleteMonograph:input_type -> wg.cosmo.platform.v1.DeleteMonographRequest - 92, // 515: wg.cosmo.platform.v1.PlatformService.UpdateMonograph:input_type -> wg.cosmo.platform.v1.UpdateMonographRequest - 331, // 516: wg.cosmo.platform.v1.PlatformService.MigrateMonograph:input_type -> wg.cosmo.platform.v1.MigrateMonographRequest - 31, // 517: wg.cosmo.platform.v1.PlatformService.CreateFederatedSubgraph:input_type -> wg.cosmo.platform.v1.CreateFederatedSubgraphRequest - 21, // 518: wg.cosmo.platform.v1.PlatformService.PublishFederatedSubgraph:input_type -> wg.cosmo.platform.v1.PublishFederatedSubgraphRequest - 30, // 519: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraph:input_type -> wg.cosmo.platform.v1.CreateFederatedGraphRequest - 32, // 520: wg.cosmo.platform.v1.PlatformService.DeleteFederatedGraph:input_type -> wg.cosmo.platform.v1.DeleteFederatedGraphRequest - 35, // 521: wg.cosmo.platform.v1.PlatformService.DeleteFederatedSubgraph:input_type -> wg.cosmo.platform.v1.DeleteFederatedSubgraphRequest - 26, // 522: wg.cosmo.platform.v1.PlatformService.CheckSubgraphSchema:input_type -> wg.cosmo.platform.v1.CheckSubgraphSchemaRequest - 415, // 523: wg.cosmo.platform.v1.PlatformService.GetProposedSchemaOfCheckedSubgraph:input_type -> wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphRequest - 27, // 524: wg.cosmo.platform.v1.PlatformService.FixSubgraphSchema:input_type -> wg.cosmo.platform.v1.FixSubgraphSchemaRequest - 90, // 525: wg.cosmo.platform.v1.PlatformService.UpdateFederatedGraph:input_type -> wg.cosmo.platform.v1.UpdateFederatedGraphRequest - 88, // 526: wg.cosmo.platform.v1.PlatformService.UpdateSubgraph:input_type -> wg.cosmo.platform.v1.UpdateSubgraphRequest - 94, // 527: wg.cosmo.platform.v1.PlatformService.CheckFederatedGraph:input_type -> wg.cosmo.platform.v1.CheckFederatedGraphRequest - 155, // 528: wg.cosmo.platform.v1.PlatformService.WhoAmI:input_type -> wg.cosmo.platform.v1.WhoAmIRequest - 158, // 529: wg.cosmo.platform.v1.PlatformService.GenerateRouterToken:input_type -> wg.cosmo.platform.v1.GenerateRouterTokenRequest - 160, // 530: wg.cosmo.platform.v1.PlatformService.GetRouterTokens:input_type -> wg.cosmo.platform.v1.GetRouterTokensRequest - 162, // 531: wg.cosmo.platform.v1.PlatformService.DeleteRouterToken:input_type -> wg.cosmo.platform.v1.DeleteRouterTokenRequest - 165, // 532: wg.cosmo.platform.v1.PlatformService.PublishPersistedOperations:input_type -> wg.cosmo.platform.v1.PublishPersistedOperationsRequest - 170, // 533: wg.cosmo.platform.v1.PlatformService.CheckPersistedOperationTraffic:input_type -> wg.cosmo.platform.v1.CheckPersistedOperationTrafficRequest - 168, // 534: wg.cosmo.platform.v1.PlatformService.DeletePersistedOperation:input_type -> wg.cosmo.platform.v1.DeletePersistedOperationRequest - 172, // 535: wg.cosmo.platform.v1.PlatformService.GetPersistedOperations:input_type -> wg.cosmo.platform.v1.GetPersistedOperationsRequest - 265, // 536: wg.cosmo.platform.v1.PlatformService.GetAuditLogs:input_type -> wg.cosmo.platform.v1.GetAuditLogsRequest - 456, // 537: wg.cosmo.platform.v1.PlatformService.InitializeCosmoUser:input_type -> wg.cosmo.platform.v1.InitializeCosmoUserRequest - 458, // 538: wg.cosmo.platform.v1.PlatformService.ListOrganizations:input_type -> wg.cosmo.platform.v1.ListOrganizationsRequest - 53, // 539: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphs:input_type -> wg.cosmo.platform.v1.GetFederatedGraphsRequest - 57, // 540: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphsBySubgraphLabels:input_type -> wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsRequest - 62, // 541: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphByName:input_type -> wg.cosmo.platform.v1.GetFederatedGraphByNameRequest - 64, // 542: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphSDLByName:input_type -> wg.cosmo.platform.v1.GetFederatedGraphSDLByNameRequest - 59, // 543: wg.cosmo.platform.v1.PlatformService.GetSubgraphs:input_type -> wg.cosmo.platform.v1.GetSubgraphsRequest - 66, // 544: wg.cosmo.platform.v1.PlatformService.GetSubgraphByName:input_type -> wg.cosmo.platform.v1.GetSubgraphByNameRequest - 68, // 545: wg.cosmo.platform.v1.PlatformService.GetSubgraphSDLFromLatestComposition:input_type -> wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionRequest - 70, // 546: wg.cosmo.platform.v1.PlatformService.GetLatestSubgraphSDL:input_type -> wg.cosmo.platform.v1.GetLatestSubgraphSDLRequest - 73, // 547: wg.cosmo.platform.v1.PlatformService.GetChecksByFederatedGraphName:input_type -> wg.cosmo.platform.v1.GetChecksByFederatedGraphNameRequest - 76, // 548: wg.cosmo.platform.v1.PlatformService.GetCheckSummary:input_type -> wg.cosmo.platform.v1.GetCheckSummaryRequest - 79, // 549: wg.cosmo.platform.v1.PlatformService.GetCheckOperations:input_type -> wg.cosmo.platform.v1.GetCheckOperationsRequest - 232, // 550: wg.cosmo.platform.v1.PlatformService.ForceCheckSuccess:input_type -> wg.cosmo.platform.v1.ForceCheckSuccessRequest - 239, // 551: wg.cosmo.platform.v1.PlatformService.CreateOperationOverrides:input_type -> wg.cosmo.platform.v1.CreateOperationOverridesRequest - 243, // 552: wg.cosmo.platform.v1.PlatformService.RemoveOperationOverrides:input_type -> wg.cosmo.platform.v1.RemoveOperationOverridesRequest - 241, // 553: wg.cosmo.platform.v1.PlatformService.CreateOperationIgnoreAllOverride:input_type -> wg.cosmo.platform.v1.CreateOperationIgnoreAllOverrideRequest - 245, // 554: wg.cosmo.platform.v1.PlatformService.RemoveOperationIgnoreAllOverride:input_type -> wg.cosmo.platform.v1.RemoveOperationIgnoreAllOverrideRequest - 247, // 555: wg.cosmo.platform.v1.PlatformService.GetOperationOverrides:input_type -> wg.cosmo.platform.v1.GetOperationOverridesRequest - 249, // 556: wg.cosmo.platform.v1.PlatformService.GetAllOverrides:input_type -> wg.cosmo.platform.v1.GetAllOverridesRequest - 234, // 557: wg.cosmo.platform.v1.PlatformService.ToggleChangeOverridesForAllOperations:input_type -> wg.cosmo.platform.v1.ToggleChangeOverridesForAllOperationsRequest - 236, // 558: wg.cosmo.platform.v1.PlatformService.CreateIgnoreOverridesForAllOperations:input_type -> wg.cosmo.platform.v1.CreateIgnoreOverridesForAllOperationsRequest - 81, // 559: wg.cosmo.platform.v1.PlatformService.GetOperationContent:input_type -> wg.cosmo.platform.v1.GetOperationContentRequest - 83, // 560: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphChangelog:input_type -> wg.cosmo.platform.v1.GetFederatedGraphChangelogRequest - 115, // 561: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraphToken:input_type -> wg.cosmo.platform.v1.CreateFederatedGraphTokenRequest - 209, // 562: wg.cosmo.platform.v1.PlatformService.GetOrganizationBySlug:input_type -> wg.cosmo.platform.v1.GetOrganizationBySlugRequest - 133, // 563: wg.cosmo.platform.v1.PlatformService.GetOrganizationMembers:input_type -> wg.cosmo.platform.v1.GetOrganizationMembersRequest - 131, // 564: wg.cosmo.platform.v1.PlatformService.GetPendingOrganizationMembers:input_type -> wg.cosmo.platform.v1.GetPendingOrganizationMembersRequest - 340, // 565: wg.cosmo.platform.v1.PlatformService.IsMemberLimitReached:input_type -> wg.cosmo.platform.v1.IsMemberLimitReachedRequest - 135, // 566: wg.cosmo.platform.v1.PlatformService.InviteUser:input_type -> wg.cosmo.platform.v1.InviteUserRequest - 138, // 567: wg.cosmo.platform.v1.PlatformService.GetAPIKeys:input_type -> wg.cosmo.platform.v1.GetAPIKeysRequest - 140, // 568: wg.cosmo.platform.v1.PlatformService.CreateAPIKey:input_type -> wg.cosmo.platform.v1.CreateAPIKeyRequest - 144, // 569: wg.cosmo.platform.v1.PlatformService.UpdateAPIKey:input_type -> wg.cosmo.platform.v1.UpdateAPIKeyRequest - 142, // 570: wg.cosmo.platform.v1.PlatformService.DeleteAPIKey:input_type -> wg.cosmo.platform.v1.DeleteAPIKeyRequest - 146, // 571: wg.cosmo.platform.v1.PlatformService.RemoveOrganizationMember:input_type -> wg.cosmo.platform.v1.RemoveOrganizationMemberRequest - 148, // 572: wg.cosmo.platform.v1.PlatformService.RemoveInvitation:input_type -> wg.cosmo.platform.v1.RemoveInvitationRequest - 150, // 573: wg.cosmo.platform.v1.PlatformService.MigrateFromApollo:input_type -> wg.cosmo.platform.v1.MigrateFromApolloRequest - 119, // 574: wg.cosmo.platform.v1.PlatformService.CreateOrganizationGroup:input_type -> wg.cosmo.platform.v1.CreateOrganizationGroupRequest - 121, // 575: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroups:input_type -> wg.cosmo.platform.v1.GetOrganizationGroupsRequest - 123, // 576: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroupMembers:input_type -> wg.cosmo.platform.v1.GetOrganizationGroupMembersRequest - 125, // 577: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationGroup:input_type -> wg.cosmo.platform.v1.UpdateOrganizationGroupRequest - 127, // 578: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationGroup:input_type -> wg.cosmo.platform.v1.DeleteOrganizationGroupRequest - 175, // 579: wg.cosmo.platform.v1.PlatformService.CreateOrganizationWebhookConfig:input_type -> wg.cosmo.platform.v1.CreateOrganizationWebhookConfigRequest - 177, // 580: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookConfigs:input_type -> wg.cosmo.platform.v1.GetOrganizationWebhookConfigsRequest - 179, // 581: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookMeta:input_type -> wg.cosmo.platform.v1.GetOrganizationWebhookMetaRequest - 181, // 582: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationWebhookConfig:input_type -> wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigRequest - 183, // 583: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationWebhookConfig:input_type -> wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigRequest - 367, // 584: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookHistory:input_type -> wg.cosmo.platform.v1.GetOrganizationWebhookHistoryRequest - 372, // 585: wg.cosmo.platform.v1.PlatformService.GetWebhookDeliveryDetails:input_type -> wg.cosmo.platform.v1.GetWebhookDeliveryDetailsRequest - 370, // 586: wg.cosmo.platform.v1.PlatformService.RedeliverWebhook:input_type -> wg.cosmo.platform.v1.RedeliverWebhookRequest - 185, // 587: wg.cosmo.platform.v1.PlatformService.CreateIntegration:input_type -> wg.cosmo.platform.v1.CreateIntegrationRequest - 187, // 588: wg.cosmo.platform.v1.PlatformService.GetOrganizationIntegrations:input_type -> wg.cosmo.platform.v1.GetOrganizationIntegrationsRequest - 192, // 589: wg.cosmo.platform.v1.PlatformService.UpdateIntegrationConfig:input_type -> wg.cosmo.platform.v1.UpdateIntegrationConfigRequest - 194, // 590: wg.cosmo.platform.v1.PlatformService.DeleteIntegration:input_type -> wg.cosmo.platform.v1.DeleteIntegrationRequest - 342, // 591: wg.cosmo.platform.v1.PlatformService.DeleteUser:input_type -> wg.cosmo.platform.v1.DeleteUserRequest - 196, // 592: wg.cosmo.platform.v1.PlatformService.DeleteOrganization:input_type -> wg.cosmo.platform.v1.DeleteOrganizationRequest - 198, // 593: wg.cosmo.platform.v1.PlatformService.RestoreOrganization:input_type -> wg.cosmo.platform.v1.RestoreOrganizationRequest - 200, // 594: wg.cosmo.platform.v1.PlatformService.LeaveOrganization:input_type -> wg.cosmo.platform.v1.LeaveOrganizationRequest - 202, // 595: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationDetails:input_type -> wg.cosmo.platform.v1.UpdateOrganizationDetailsRequest - 204, // 596: wg.cosmo.platform.v1.PlatformService.UpdateOrgMemberGroup:input_type -> wg.cosmo.platform.v1.UpdateOrgMemberGroupRequest - 251, // 597: wg.cosmo.platform.v1.PlatformService.IsGitHubAppInstalled:input_type -> wg.cosmo.platform.v1.IsGitHubAppInstalledRequest - 254, // 598: wg.cosmo.platform.v1.PlatformService.CreateOIDCProvider:input_type -> wg.cosmo.platform.v1.CreateOIDCProviderRequest - 256, // 599: wg.cosmo.platform.v1.PlatformService.GetOIDCProvider:input_type -> wg.cosmo.platform.v1.GetOIDCProviderRequest - 258, // 600: wg.cosmo.platform.v1.PlatformService.DeleteOIDCProvider:input_type -> wg.cosmo.platform.v1.DeleteOIDCProviderRequest - 260, // 601: wg.cosmo.platform.v1.PlatformService.UpdateIDPMappers:input_type -> wg.cosmo.platform.v1.UpdateIDPMappersRequest - 296, // 602: wg.cosmo.platform.v1.PlatformService.GetClients:input_type -> wg.cosmo.platform.v1.GetClientsRequest - 293, // 603: wg.cosmo.platform.v1.PlatformService.GetRouters:input_type -> wg.cosmo.platform.v1.GetRoutersRequest - 268, // 604: wg.cosmo.platform.v1.PlatformService.GetInvitations:input_type -> wg.cosmo.platform.v1.GetInvitationsRequest - 270, // 605: wg.cosmo.platform.v1.PlatformService.AcceptOrDeclineInvitation:input_type -> wg.cosmo.platform.v1.AcceptOrDeclineInvitationRequest - 274, // 606: wg.cosmo.platform.v1.PlatformService.GetCompositions:input_type -> wg.cosmo.platform.v1.GetCompositionsRequest - 276, // 607: wg.cosmo.platform.v1.PlatformService.GetCompositionDetails:input_type -> wg.cosmo.platform.v1.GetCompositionDetailsRequest - 279, // 608: wg.cosmo.platform.v1.PlatformService.GetSdlBySchemaVersion:input_type -> wg.cosmo.platform.v1.GetSdlBySchemaVersionRequest - 281, // 609: wg.cosmo.platform.v1.PlatformService.GetChangelogBySchemaVersion:input_type -> wg.cosmo.platform.v1.GetChangelogBySchemaVersionRequest - 283, // 610: wg.cosmo.platform.v1.PlatformService.GetUserAccessibleResources:input_type -> wg.cosmo.platform.v1.GetUserAccessibleResourcesRequest - 285, // 611: wg.cosmo.platform.v1.PlatformService.UpdateFeatureSettings:input_type -> wg.cosmo.platform.v1.UpdateFeatureSettingsRequest - 287, // 612: wg.cosmo.platform.v1.PlatformService.GetSubgraphMembers:input_type -> wg.cosmo.platform.v1.GetSubgraphMembersRequest - 290, // 613: wg.cosmo.platform.v1.PlatformService.AddReadme:input_type -> wg.cosmo.platform.v1.AddReadmeRequest - 333, // 614: wg.cosmo.platform.v1.PlatformService.GetUserAccessiblePermissions:input_type -> wg.cosmo.platform.v1.GetUserAccessiblePermissionsRequest - 344, // 615: wg.cosmo.platform.v1.PlatformService.CreateFeatureFlag:input_type -> wg.cosmo.platform.v1.CreateFeatureFlagRequest - 350, // 616: wg.cosmo.platform.v1.PlatformService.DeleteFeatureFlag:input_type -> wg.cosmo.platform.v1.DeleteFeatureFlagRequest - 346, // 617: wg.cosmo.platform.v1.PlatformService.UpdateFeatureFlag:input_type -> wg.cosmo.platform.v1.UpdateFeatureFlagRequest - 348, // 618: wg.cosmo.platform.v1.PlatformService.EnableFeatureFlag:input_type -> wg.cosmo.platform.v1.EnableFeatureFlagRequest - 101, // 619: wg.cosmo.platform.v1.PlatformService.GetAnalyticsView:input_type -> wg.cosmo.platform.v1.GetAnalyticsViewRequest - 109, // 620: wg.cosmo.platform.v1.PlatformService.GetDashboardAnalyticsView:input_type -> wg.cosmo.platform.v1.GetDashboardAnalyticsViewRequest - 153, // 621: wg.cosmo.platform.v1.PlatformService.GetTrace:input_type -> wg.cosmo.platform.v1.GetTraceRequest - 219, // 622: wg.cosmo.platform.v1.PlatformService.GetGraphMetrics:input_type -> wg.cosmo.platform.v1.GetGraphMetricsRequest - 225, // 623: wg.cosmo.platform.v1.PlatformService.GetMetricsErrorRate:input_type -> wg.cosmo.platform.v1.GetMetricsErrorRateRequest - 228, // 624: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetrics:input_type -> wg.cosmo.platform.v1.GetSubgraphMetricsRequest - 230, // 625: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetricsErrorRate:input_type -> wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateRequest - 298, // 626: wg.cosmo.platform.v1.PlatformService.GetFieldUsage:input_type -> wg.cosmo.platform.v1.GetFieldUsageRequest - 262, // 627: wg.cosmo.platform.v1.PlatformService.GetOrganizationRequestsCount:input_type -> wg.cosmo.platform.v1.GetOrganizationRequestsCountRequest - 206, // 628: wg.cosmo.platform.v1.PlatformService.CreateOrganization:input_type -> wg.cosmo.platform.v1.CreateOrganizationRequest - 319, // 629: wg.cosmo.platform.v1.PlatformService.EnableLintingForTheNamespace:input_type -> wg.cosmo.platform.v1.EnableLintingForTheNamespaceRequest - 322, // 630: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceLintConfig:input_type -> wg.cosmo.platform.v1.ConfigureNamespaceLintConfigRequest - 313, // 631: wg.cosmo.platform.v1.PlatformService.GetNamespaceLintConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceLintConfigRequest - 315, // 632: wg.cosmo.platform.v1.PlatformService.GetNamespaceChecksConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceChecksConfigurationRequest - 317, // 633: wg.cosmo.platform.v1.PlatformService.UpdateNamespaceChecksConfig:input_type -> wg.cosmo.platform.v1.UpdateNamespaceChecksConfigurationRequest - 324, // 634: wg.cosmo.platform.v1.PlatformService.EnableGraphPruning:input_type -> wg.cosmo.platform.v1.EnableGraphPruningRequest - 327, // 635: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceGraphPruningConfig:input_type -> wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigRequest - 329, // 636: wg.cosmo.platform.v1.PlatformService.GetNamespaceGraphPruningConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigRequest - 353, // 637: wg.cosmo.platform.v1.PlatformService.GetFeatureFlags:input_type -> wg.cosmo.platform.v1.GetFeatureFlagsRequest - 355, // 638: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagByName:input_type -> wg.cosmo.platform.v1.GetFeatureFlagByNameRequest - 357, // 639: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFeatureFlag:input_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagRequest - 359, // 640: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphs:input_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsRequest - 361, // 641: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphRequest - 363, // 642: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsInLatestCompositionByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetFeatureFlagsInLatestCompositionByFederatedGraphRequest - 365, // 643: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFederatedGraphRequest - 383, // 644: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphById:input_type -> wg.cosmo.platform.v1.GetFederatedGraphByIdRequest - 385, // 645: wg.cosmo.platform.v1.PlatformService.GetSubgraphById:input_type -> wg.cosmo.platform.v1.GetSubgraphByIdRequest - 394, // 646: wg.cosmo.platform.v1.PlatformService.PushCacheWarmerOperation:input_type -> wg.cosmo.platform.v1.PushCacheWarmerOperationRequest - 396, // 647: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerOperations:input_type -> wg.cosmo.platform.v1.GetCacheWarmerOperationsRequest - 399, // 648: wg.cosmo.platform.v1.PlatformService.ComputeCacheWarmerOperations:input_type -> wg.cosmo.platform.v1.ComputeCacheWarmerOperationsRequest - 401, // 649: wg.cosmo.platform.v1.PlatformService.ConfigureCacheWarmer:input_type -> wg.cosmo.platform.v1.ConfigureCacheWarmerRequest - 403, // 650: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerConfig:input_type -> wg.cosmo.platform.v1.GetCacheWarmerConfigRequest - 409, // 651: wg.cosmo.platform.v1.PlatformService.DeleteCacheWarmerOperation:input_type -> wg.cosmo.platform.v1.DeleteCacheWarmerOperationRequest - 405, // 652: wg.cosmo.platform.v1.PlatformService.GetSubgraphCheckExtensionsConfig:input_type -> wg.cosmo.platform.v1.GetSubgraphCheckExtensionsConfigRequest - 407, // 653: wg.cosmo.platform.v1.PlatformService.ConfigureSubgraphCheckExtensions:input_type -> wg.cosmo.platform.v1.ConfigureSubgraphCheckExtensionsRequest - 211, // 654: wg.cosmo.platform.v1.PlatformService.GetBillingPlans:input_type -> wg.cosmo.platform.v1.GetBillingPlansRequest - 213, // 655: wg.cosmo.platform.v1.PlatformService.CreateCheckoutSession:input_type -> wg.cosmo.platform.v1.CreateCheckoutSessionRequest - 215, // 656: wg.cosmo.platform.v1.PlatformService.CreateBillingPortalSession:input_type -> wg.cosmo.platform.v1.CreateBillingPortalSessionRequest - 217, // 657: wg.cosmo.platform.v1.PlatformService.UpgradePlan:input_type -> wg.cosmo.platform.v1.UpgradePlanRequest - 411, // 658: wg.cosmo.platform.v1.PlatformService.ListRouterCompatibilityVersions:input_type -> wg.cosmo.platform.v1.ListRouterCompatibilityVersionsRequest - 413, // 659: wg.cosmo.platform.v1.PlatformService.SetGraphRouterCompatibilityVersion:input_type -> wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionRequest - 424, // 660: wg.cosmo.platform.v1.PlatformService.CreateProposal:input_type -> wg.cosmo.platform.v1.CreateProposalRequest - 426, // 661: wg.cosmo.platform.v1.PlatformService.GetProposal:input_type -> wg.cosmo.platform.v1.GetProposalRequest - 432, // 662: wg.cosmo.platform.v1.PlatformService.UpdateProposal:input_type -> wg.cosmo.platform.v1.UpdateProposalRequest - 434, // 663: wg.cosmo.platform.v1.PlatformService.EnableProposalsForNamespace:input_type -> wg.cosmo.platform.v1.EnableProposalsForNamespaceRequest - 436, // 664: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceProposalConfig:input_type -> wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest - 438, // 665: wg.cosmo.platform.v1.PlatformService.GetNamespaceProposalConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceProposalConfigRequest - 428, // 666: wg.cosmo.platform.v1.PlatformService.GetProposalsByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetProposalsByFederatedGraphRequest - 430, // 667: wg.cosmo.platform.v1.PlatformService.GetProposalChecks:input_type -> wg.cosmo.platform.v1.GetProposalChecksRequest - 419, // 668: wg.cosmo.platform.v1.PlatformService.BulkUpdateProposalRolloutPercentages:input_type -> wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest - 422, // 669: wg.cosmo.platform.v1.PlatformService.TeardownProposalRollout:input_type -> wg.cosmo.platform.v1.TeardownProposalRolloutRequest - 440, // 670: wg.cosmo.platform.v1.PlatformService.GetOperations:input_type -> wg.cosmo.platform.v1.GetOperationsRequest - 442, // 671: wg.cosmo.platform.v1.PlatformService.GetClientsFromAnalytics:input_type -> wg.cosmo.platform.v1.GetClientsFromAnalyticsRequest - 444, // 672: wg.cosmo.platform.v1.PlatformService.GetOperationClients:input_type -> wg.cosmo.platform.v1.GetOperationClientsRequest - 446, // 673: wg.cosmo.platform.v1.PlatformService.GetOperationDeprecatedFields:input_type -> wg.cosmo.platform.v1.GetOperationDeprecatedFieldsRequest - 448, // 674: wg.cosmo.platform.v1.PlatformService.ValidateAndFetchPluginData:input_type -> wg.cosmo.platform.v1.ValidateAndFetchPluginDataRequest - 450, // 675: wg.cosmo.platform.v1.PlatformService.LinkSubgraph:input_type -> wg.cosmo.platform.v1.LinkSubgraphRequest - 452, // 676: wg.cosmo.platform.v1.PlatformService.UnlinkSubgraph:input_type -> wg.cosmo.platform.v1.UnlinkSubgraphRequest - 454, // 677: wg.cosmo.platform.v1.PlatformService.VerifyAPIKeyGraphAccess:input_type -> wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessRequest - 460, // 678: wg.cosmo.platform.v1.PlatformService.RecomposeGraph:input_type -> wg.cosmo.platform.v1.RecomposeGraphRequest - 375, // 679: wg.cosmo.platform.v1.PlatformService.CreatePlaygroundScript:output_type -> wg.cosmo.platform.v1.CreatePlaygroundScriptResponse - 377, // 680: wg.cosmo.platform.v1.PlatformService.DeletePlaygroundScript:output_type -> wg.cosmo.platform.v1.DeletePlaygroundScriptResponse - 379, // 681: wg.cosmo.platform.v1.PlatformService.UpdatePlaygroundScript:output_type -> wg.cosmo.platform.v1.UpdatePlaygroundScriptResponse - 382, // 682: wg.cosmo.platform.v1.PlatformService.GetPlaygroundScripts:output_type -> wg.cosmo.platform.v1.GetPlaygroundScriptsResponse - 303, // 683: wg.cosmo.platform.v1.PlatformService.CreateNamespace:output_type -> wg.cosmo.platform.v1.CreateNamespaceResponse - 305, // 684: wg.cosmo.platform.v1.PlatformService.DeleteNamespace:output_type -> wg.cosmo.platform.v1.DeleteNamespaceResponse - 307, // 685: wg.cosmo.platform.v1.PlatformService.RenameNamespace:output_type -> wg.cosmo.platform.v1.RenameNamespaceResponse - 310, // 686: wg.cosmo.platform.v1.PlatformService.GetNamespaces:output_type -> wg.cosmo.platform.v1.GetNamespacesResponse - 388, // 687: wg.cosmo.platform.v1.PlatformService.GetNamespace:output_type -> wg.cosmo.platform.v1.GetNamespaceResponse - 393, // 688: wg.cosmo.platform.v1.PlatformService.GetWorkspace:output_type -> wg.cosmo.platform.v1.GetWorkspaceResponse - 337, // 689: wg.cosmo.platform.v1.PlatformService.CreateContract:output_type -> wg.cosmo.platform.v1.CreateContractResponse - 339, // 690: wg.cosmo.platform.v1.PlatformService.UpdateContract:output_type -> wg.cosmo.platform.v1.UpdateContractResponse - 312, // 691: wg.cosmo.platform.v1.PlatformService.MoveFederatedGraph:output_type -> wg.cosmo.platform.v1.MoveGraphResponse - 312, // 692: wg.cosmo.platform.v1.PlatformService.MoveSubgraph:output_type -> wg.cosmo.platform.v1.MoveGraphResponse - 312, // 693: wg.cosmo.platform.v1.PlatformService.MoveMonograph:output_type -> wg.cosmo.platform.v1.MoveGraphResponse - 29, // 694: wg.cosmo.platform.v1.PlatformService.CreateMonograph:output_type -> wg.cosmo.platform.v1.CreateMonographResponse - 19, // 695: wg.cosmo.platform.v1.PlatformService.PublishMonograph:output_type -> wg.cosmo.platform.v1.PublishMonographResponse - 34, // 696: wg.cosmo.platform.v1.PlatformService.DeleteMonograph:output_type -> wg.cosmo.platform.v1.DeleteMonographResponse - 93, // 697: wg.cosmo.platform.v1.PlatformService.UpdateMonograph:output_type -> wg.cosmo.platform.v1.UpdateMonographResponse - 332, // 698: wg.cosmo.platform.v1.PlatformService.MigrateMonograph:output_type -> wg.cosmo.platform.v1.MigrateMonographResponse - 50, // 699: wg.cosmo.platform.v1.PlatformService.CreateFederatedSubgraph:output_type -> wg.cosmo.platform.v1.CreateFederatedSubgraphResponse - 22, // 700: wg.cosmo.platform.v1.PlatformService.PublishFederatedSubgraph:output_type -> wg.cosmo.platform.v1.PublishFederatedSubgraphResponse - 49, // 701: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraph:output_type -> wg.cosmo.platform.v1.CreateFederatedGraphResponse - 52, // 702: wg.cosmo.platform.v1.PlatformService.DeleteFederatedGraph:output_type -> wg.cosmo.platform.v1.DeleteFederatedGraphResponse - 51, // 703: wg.cosmo.platform.v1.PlatformService.DeleteFederatedSubgraph:output_type -> wg.cosmo.platform.v1.DeleteFederatedSubgraphResponse - 46, // 704: wg.cosmo.platform.v1.PlatformService.CheckSubgraphSchema:output_type -> wg.cosmo.platform.v1.CheckSubgraphSchemaResponse - 416, // 705: wg.cosmo.platform.v1.PlatformService.GetProposedSchemaOfCheckedSubgraph:output_type -> wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphResponse - 48, // 706: wg.cosmo.platform.v1.PlatformService.FixSubgraphSchema:output_type -> wg.cosmo.platform.v1.FixSubgraphSchemaResponse - 91, // 707: wg.cosmo.platform.v1.PlatformService.UpdateFederatedGraph:output_type -> wg.cosmo.platform.v1.UpdateFederatedGraphResponse - 89, // 708: wg.cosmo.platform.v1.PlatformService.UpdateSubgraph:output_type -> wg.cosmo.platform.v1.UpdateSubgraphResponse - 95, // 709: wg.cosmo.platform.v1.PlatformService.CheckFederatedGraph:output_type -> wg.cosmo.platform.v1.CheckFederatedGraphResponse - 156, // 710: wg.cosmo.platform.v1.PlatformService.WhoAmI:output_type -> wg.cosmo.platform.v1.WhoAmIResponse - 159, // 711: wg.cosmo.platform.v1.PlatformService.GenerateRouterToken:output_type -> wg.cosmo.platform.v1.GenerateRouterTokenResponse - 161, // 712: wg.cosmo.platform.v1.PlatformService.GetRouterTokens:output_type -> wg.cosmo.platform.v1.GetRouterTokensResponse - 163, // 713: wg.cosmo.platform.v1.PlatformService.DeleteRouterToken:output_type -> wg.cosmo.platform.v1.DeleteRouterTokenResponse - 167, // 714: wg.cosmo.platform.v1.PlatformService.PublishPersistedOperations:output_type -> wg.cosmo.platform.v1.PublishPersistedOperationsResponse - 171, // 715: wg.cosmo.platform.v1.PlatformService.CheckPersistedOperationTraffic:output_type -> wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse - 169, // 716: wg.cosmo.platform.v1.PlatformService.DeletePersistedOperation:output_type -> wg.cosmo.platform.v1.DeletePersistedOperationResponse - 173, // 717: wg.cosmo.platform.v1.PlatformService.GetPersistedOperations:output_type -> wg.cosmo.platform.v1.GetPersistedOperationsResponse - 267, // 718: wg.cosmo.platform.v1.PlatformService.GetAuditLogs:output_type -> wg.cosmo.platform.v1.GetAuditLogsResponse - 457, // 719: wg.cosmo.platform.v1.PlatformService.InitializeCosmoUser:output_type -> wg.cosmo.platform.v1.InitializeCosmoUserResponse - 459, // 720: wg.cosmo.platform.v1.PlatformService.ListOrganizations:output_type -> wg.cosmo.platform.v1.ListOrganizationsResponse - 56, // 721: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphs:output_type -> wg.cosmo.platform.v1.GetFederatedGraphsResponse - 58, // 722: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphsBySubgraphLabels:output_type -> wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsResponse - 63, // 723: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphByName:output_type -> wg.cosmo.platform.v1.GetFederatedGraphByNameResponse - 65, // 724: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphSDLByName:output_type -> wg.cosmo.platform.v1.GetFederatedGraphSDLByNameResponse - 61, // 725: wg.cosmo.platform.v1.PlatformService.GetSubgraphs:output_type -> wg.cosmo.platform.v1.GetSubgraphsResponse - 67, // 726: wg.cosmo.platform.v1.PlatformService.GetSubgraphByName:output_type -> wg.cosmo.platform.v1.GetSubgraphByNameResponse - 69, // 727: wg.cosmo.platform.v1.PlatformService.GetSubgraphSDLFromLatestComposition:output_type -> wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionResponse - 71, // 728: wg.cosmo.platform.v1.PlatformService.GetLatestSubgraphSDL:output_type -> wg.cosmo.platform.v1.GetLatestSubgraphSDLResponse - 75, // 729: wg.cosmo.platform.v1.PlatformService.GetChecksByFederatedGraphName:output_type -> wg.cosmo.platform.v1.GetChecksByFederatedGraphNameResponse - 78, // 730: wg.cosmo.platform.v1.PlatformService.GetCheckSummary:output_type -> wg.cosmo.platform.v1.GetCheckSummaryResponse - 80, // 731: wg.cosmo.platform.v1.PlatformService.GetCheckOperations:output_type -> wg.cosmo.platform.v1.GetCheckOperationsResponse - 233, // 732: wg.cosmo.platform.v1.PlatformService.ForceCheckSuccess:output_type -> wg.cosmo.platform.v1.ForceCheckSuccessResponse - 240, // 733: wg.cosmo.platform.v1.PlatformService.CreateOperationOverrides:output_type -> wg.cosmo.platform.v1.CreateOperationOverridesResponse - 244, // 734: wg.cosmo.platform.v1.PlatformService.RemoveOperationOverrides:output_type -> wg.cosmo.platform.v1.RemoveOperationOverridesResponse - 242, // 735: wg.cosmo.platform.v1.PlatformService.CreateOperationIgnoreAllOverride:output_type -> wg.cosmo.platform.v1.CreateOperationIgnoreAllOverrideResponse - 246, // 736: wg.cosmo.platform.v1.PlatformService.RemoveOperationIgnoreAllOverride:output_type -> wg.cosmo.platform.v1.RemoveOperationIgnoreAllOverrideResponse - 248, // 737: wg.cosmo.platform.v1.PlatformService.GetOperationOverrides:output_type -> wg.cosmo.platform.v1.GetOperationOverridesResponse - 250, // 738: wg.cosmo.platform.v1.PlatformService.GetAllOverrides:output_type -> wg.cosmo.platform.v1.GetAllOverridesResponse - 235, // 739: wg.cosmo.platform.v1.PlatformService.ToggleChangeOverridesForAllOperations:output_type -> wg.cosmo.platform.v1.ToggleChangeOverridesForAllOperationsResponse - 237, // 740: wg.cosmo.platform.v1.PlatformService.CreateIgnoreOverridesForAllOperations:output_type -> wg.cosmo.platform.v1.CreateIgnoreOverridesForAllOperationsResponse - 82, // 741: wg.cosmo.platform.v1.PlatformService.GetOperationContent:output_type -> wg.cosmo.platform.v1.GetOperationContentResponse - 86, // 742: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphChangelog:output_type -> wg.cosmo.platform.v1.GetFederatedGraphChangelogResponse - 116, // 743: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraphToken:output_type -> wg.cosmo.platform.v1.CreateFederatedGraphTokenResponse - 210, // 744: wg.cosmo.platform.v1.PlatformService.GetOrganizationBySlug:output_type -> wg.cosmo.platform.v1.GetOrganizationBySlugResponse - 134, // 745: wg.cosmo.platform.v1.PlatformService.GetOrganizationMembers:output_type -> wg.cosmo.platform.v1.GetOrganizationMembersResponse - 132, // 746: wg.cosmo.platform.v1.PlatformService.GetPendingOrganizationMembers:output_type -> wg.cosmo.platform.v1.GetPendingOrganizationMembersResponse - 341, // 747: wg.cosmo.platform.v1.PlatformService.IsMemberLimitReached:output_type -> wg.cosmo.platform.v1.IsMemberLimitReachedResponse - 136, // 748: wg.cosmo.platform.v1.PlatformService.InviteUser:output_type -> wg.cosmo.platform.v1.InviteUserResponse - 139, // 749: wg.cosmo.platform.v1.PlatformService.GetAPIKeys:output_type -> wg.cosmo.platform.v1.GetAPIKeysResponse - 141, // 750: wg.cosmo.platform.v1.PlatformService.CreateAPIKey:output_type -> wg.cosmo.platform.v1.CreateAPIKeyResponse - 145, // 751: wg.cosmo.platform.v1.PlatformService.UpdateAPIKey:output_type -> wg.cosmo.platform.v1.UpdateAPIKeyResponse - 143, // 752: wg.cosmo.platform.v1.PlatformService.DeleteAPIKey:output_type -> wg.cosmo.platform.v1.DeleteAPIKeyResponse - 147, // 753: wg.cosmo.platform.v1.PlatformService.RemoveOrganizationMember:output_type -> wg.cosmo.platform.v1.RemoveOrganizationMemberResponse - 149, // 754: wg.cosmo.platform.v1.PlatformService.RemoveInvitation:output_type -> wg.cosmo.platform.v1.RemoveInvitationResponse - 151, // 755: wg.cosmo.platform.v1.PlatformService.MigrateFromApollo:output_type -> wg.cosmo.platform.v1.MigrateFromApolloResponse - 120, // 756: wg.cosmo.platform.v1.PlatformService.CreateOrganizationGroup:output_type -> wg.cosmo.platform.v1.CreateOrganizationGroupResponse - 122, // 757: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroups:output_type -> wg.cosmo.platform.v1.GetOrganizationGroupsResponse - 124, // 758: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroupMembers:output_type -> wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse - 126, // 759: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationGroup:output_type -> wg.cosmo.platform.v1.UpdateOrganizationGroupResponse - 128, // 760: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationGroup:output_type -> wg.cosmo.platform.v1.DeleteOrganizationGroupResponse - 176, // 761: wg.cosmo.platform.v1.PlatformService.CreateOrganizationWebhookConfig:output_type -> wg.cosmo.platform.v1.CreateOrganizationWebhookConfigResponse - 178, // 762: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookConfigs:output_type -> wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse - 180, // 763: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookMeta:output_type -> wg.cosmo.platform.v1.GetOrganizationWebhookMetaResponse - 182, // 764: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationWebhookConfig:output_type -> wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigResponse - 184, // 765: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationWebhookConfig:output_type -> wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigResponse - 369, // 766: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookHistory:output_type -> wg.cosmo.platform.v1.GetOrganizationWebhookHistoryResponse - 373, // 767: wg.cosmo.platform.v1.PlatformService.GetWebhookDeliveryDetails:output_type -> wg.cosmo.platform.v1.GetWebhookDeliveryDetailsResponse - 371, // 768: wg.cosmo.platform.v1.PlatformService.RedeliverWebhook:output_type -> wg.cosmo.platform.v1.RedeliverWebhookResponse - 186, // 769: wg.cosmo.platform.v1.PlatformService.CreateIntegration:output_type -> wg.cosmo.platform.v1.CreateIntegrationResponse - 191, // 770: wg.cosmo.platform.v1.PlatformService.GetOrganizationIntegrations:output_type -> wg.cosmo.platform.v1.GetOrganizationIntegrationsResponse - 193, // 771: wg.cosmo.platform.v1.PlatformService.UpdateIntegrationConfig:output_type -> wg.cosmo.platform.v1.UpdateIntegrationConfigResponse - 195, // 772: wg.cosmo.platform.v1.PlatformService.DeleteIntegration:output_type -> wg.cosmo.platform.v1.DeleteIntegrationResponse - 343, // 773: wg.cosmo.platform.v1.PlatformService.DeleteUser:output_type -> wg.cosmo.platform.v1.DeleteUserResponse - 197, // 774: wg.cosmo.platform.v1.PlatformService.DeleteOrganization:output_type -> wg.cosmo.platform.v1.DeleteOrganizationResponse - 199, // 775: wg.cosmo.platform.v1.PlatformService.RestoreOrganization:output_type -> wg.cosmo.platform.v1.RestoreOrganizationResponse - 201, // 776: wg.cosmo.platform.v1.PlatformService.LeaveOrganization:output_type -> wg.cosmo.platform.v1.LeaveOrganizationResponse - 203, // 777: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationDetails:output_type -> wg.cosmo.platform.v1.UpdateOrganizationDetailsResponse - 205, // 778: wg.cosmo.platform.v1.PlatformService.UpdateOrgMemberGroup:output_type -> wg.cosmo.platform.v1.UpdateOrgMemberGroupResponse - 252, // 779: wg.cosmo.platform.v1.PlatformService.IsGitHubAppInstalled:output_type -> wg.cosmo.platform.v1.IsGitHubAppInstalledResponse - 255, // 780: wg.cosmo.platform.v1.PlatformService.CreateOIDCProvider:output_type -> wg.cosmo.platform.v1.CreateOIDCProviderResponse - 257, // 781: wg.cosmo.platform.v1.PlatformService.GetOIDCProvider:output_type -> wg.cosmo.platform.v1.GetOIDCProviderResponse - 259, // 782: wg.cosmo.platform.v1.PlatformService.DeleteOIDCProvider:output_type -> wg.cosmo.platform.v1.DeleteOIDCProviderResponse - 261, // 783: wg.cosmo.platform.v1.PlatformService.UpdateIDPMappers:output_type -> wg.cosmo.platform.v1.UpdateIDPMappersResponse - 297, // 784: wg.cosmo.platform.v1.PlatformService.GetClients:output_type -> wg.cosmo.platform.v1.GetClientsResponse - 294, // 785: wg.cosmo.platform.v1.PlatformService.GetRouters:output_type -> wg.cosmo.platform.v1.GetRoutersResponse - 269, // 786: wg.cosmo.platform.v1.PlatformService.GetInvitations:output_type -> wg.cosmo.platform.v1.GetInvitationsResponse - 271, // 787: wg.cosmo.platform.v1.PlatformService.AcceptOrDeclineInvitation:output_type -> wg.cosmo.platform.v1.AcceptOrDeclineInvitationResponse - 275, // 788: wg.cosmo.platform.v1.PlatformService.GetCompositions:output_type -> wg.cosmo.platform.v1.GetCompositionsResponse - 278, // 789: wg.cosmo.platform.v1.PlatformService.GetCompositionDetails:output_type -> wg.cosmo.platform.v1.GetCompositionDetailsResponse - 280, // 790: wg.cosmo.platform.v1.PlatformService.GetSdlBySchemaVersion:output_type -> wg.cosmo.platform.v1.GetSdlBySchemaVersionResponse - 282, // 791: wg.cosmo.platform.v1.PlatformService.GetChangelogBySchemaVersion:output_type -> wg.cosmo.platform.v1.GetChangelogBySchemaVersionResponse - 284, // 792: wg.cosmo.platform.v1.PlatformService.GetUserAccessibleResources:output_type -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse - 286, // 793: wg.cosmo.platform.v1.PlatformService.UpdateFeatureSettings:output_type -> wg.cosmo.platform.v1.UpdateFeatureSettingsResponse - 289, // 794: wg.cosmo.platform.v1.PlatformService.GetSubgraphMembers:output_type -> wg.cosmo.platform.v1.GetSubgraphMembersResponse - 291, // 795: wg.cosmo.platform.v1.PlatformService.AddReadme:output_type -> wg.cosmo.platform.v1.AddReadmeResponse - 335, // 796: wg.cosmo.platform.v1.PlatformService.GetUserAccessiblePermissions:output_type -> wg.cosmo.platform.v1.GetUserAccessiblePermissionsResponse - 345, // 797: wg.cosmo.platform.v1.PlatformService.CreateFeatureFlag:output_type -> wg.cosmo.platform.v1.CreateFeatureFlagResponse - 351, // 798: wg.cosmo.platform.v1.PlatformService.DeleteFeatureFlag:output_type -> wg.cosmo.platform.v1.DeleteFeatureFlagResponse - 347, // 799: wg.cosmo.platform.v1.PlatformService.UpdateFeatureFlag:output_type -> wg.cosmo.platform.v1.UpdateFeatureFlagResponse - 349, // 800: wg.cosmo.platform.v1.PlatformService.EnableFeatureFlag:output_type -> wg.cosmo.platform.v1.EnableFeatureFlagResponse - 108, // 801: wg.cosmo.platform.v1.PlatformService.GetAnalyticsView:output_type -> wg.cosmo.platform.v1.GetAnalyticsViewResponse - 114, // 802: wg.cosmo.platform.v1.PlatformService.GetDashboardAnalyticsView:output_type -> wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse - 154, // 803: wg.cosmo.platform.v1.PlatformService.GetTrace:output_type -> wg.cosmo.platform.v1.GetTraceResponse - 220, // 804: wg.cosmo.platform.v1.PlatformService.GetGraphMetrics:output_type -> wg.cosmo.platform.v1.GetGraphMetricsResponse - 226, // 805: wg.cosmo.platform.v1.PlatformService.GetMetricsErrorRate:output_type -> wg.cosmo.platform.v1.GetMetricsErrorRateResponse - 229, // 806: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetrics:output_type -> wg.cosmo.platform.v1.GetSubgraphMetricsResponse - 231, // 807: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetricsErrorRate:output_type -> wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateResponse - 301, // 808: wg.cosmo.platform.v1.PlatformService.GetFieldUsage:output_type -> wg.cosmo.platform.v1.GetFieldUsageResponse - 263, // 809: wg.cosmo.platform.v1.PlatformService.GetOrganizationRequestsCount:output_type -> wg.cosmo.platform.v1.GetOrganizationRequestsCountResponse - 207, // 810: wg.cosmo.platform.v1.PlatformService.CreateOrganization:output_type -> wg.cosmo.platform.v1.CreateOrganizationResponse - 320, // 811: wg.cosmo.platform.v1.PlatformService.EnableLintingForTheNamespace:output_type -> wg.cosmo.platform.v1.EnableLintingForTheNamespaceResponse - 323, // 812: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceLintConfig:output_type -> wg.cosmo.platform.v1.ConfigureNamespaceLintConfigResponse - 314, // 813: wg.cosmo.platform.v1.PlatformService.GetNamespaceLintConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceLintConfigResponse - 316, // 814: wg.cosmo.platform.v1.PlatformService.GetNamespaceChecksConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceChecksConfigurationResponse - 318, // 815: wg.cosmo.platform.v1.PlatformService.UpdateNamespaceChecksConfig:output_type -> wg.cosmo.platform.v1.UpdateNamespaceChecksConfigurationResponse - 325, // 816: wg.cosmo.platform.v1.PlatformService.EnableGraphPruning:output_type -> wg.cosmo.platform.v1.EnableGraphPruningResponse - 328, // 817: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceGraphPruningConfig:output_type -> wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigResponse - 330, // 818: wg.cosmo.platform.v1.PlatformService.GetNamespaceGraphPruningConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigResponse - 354, // 819: wg.cosmo.platform.v1.PlatformService.GetFeatureFlags:output_type -> wg.cosmo.platform.v1.GetFeatureFlagsResponse - 356, // 820: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagByName:output_type -> wg.cosmo.platform.v1.GetFeatureFlagByNameResponse - 358, // 821: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFeatureFlag:output_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagResponse - 360, // 822: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphs:output_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsResponse - 362, // 823: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphResponse - 364, // 824: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsInLatestCompositionByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetFeatureFlagsInLatestCompositionByFederatedGraphResponse - 366, // 825: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFederatedGraphResponse - 384, // 826: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphById:output_type -> wg.cosmo.platform.v1.GetFederatedGraphByIdResponse - 386, // 827: wg.cosmo.platform.v1.PlatformService.GetSubgraphById:output_type -> wg.cosmo.platform.v1.GetSubgraphByIdResponse - 395, // 828: wg.cosmo.platform.v1.PlatformService.PushCacheWarmerOperation:output_type -> wg.cosmo.platform.v1.PushCacheWarmerOperationResponse - 398, // 829: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerOperations:output_type -> wg.cosmo.platform.v1.GetCacheWarmerOperationsResponse - 400, // 830: wg.cosmo.platform.v1.PlatformService.ComputeCacheWarmerOperations:output_type -> wg.cosmo.platform.v1.ComputeCacheWarmerOperationsResponse - 402, // 831: wg.cosmo.platform.v1.PlatformService.ConfigureCacheWarmer:output_type -> wg.cosmo.platform.v1.ConfigureCacheWarmerResponse - 404, // 832: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerConfig:output_type -> wg.cosmo.platform.v1.GetCacheWarmerConfigResponse - 410, // 833: wg.cosmo.platform.v1.PlatformService.DeleteCacheWarmerOperation:output_type -> wg.cosmo.platform.v1.DeleteCacheWarmerOperationResponse - 406, // 834: wg.cosmo.platform.v1.PlatformService.GetSubgraphCheckExtensionsConfig:output_type -> wg.cosmo.platform.v1.GetSubgraphCheckExtensionsConfigResponse - 408, // 835: wg.cosmo.platform.v1.PlatformService.ConfigureSubgraphCheckExtensions:output_type -> wg.cosmo.platform.v1.ConfigureSubgraphCheckExtensionsResponse - 212, // 836: wg.cosmo.platform.v1.PlatformService.GetBillingPlans:output_type -> wg.cosmo.platform.v1.GetBillingPlansResponse - 214, // 837: wg.cosmo.platform.v1.PlatformService.CreateCheckoutSession:output_type -> wg.cosmo.platform.v1.CreateCheckoutSessionResponse - 216, // 838: wg.cosmo.platform.v1.PlatformService.CreateBillingPortalSession:output_type -> wg.cosmo.platform.v1.CreateBillingPortalSessionResponse - 218, // 839: wg.cosmo.platform.v1.PlatformService.UpgradePlan:output_type -> wg.cosmo.platform.v1.UpgradePlanResponse - 412, // 840: wg.cosmo.platform.v1.PlatformService.ListRouterCompatibilityVersions:output_type -> wg.cosmo.platform.v1.ListRouterCompatibilityVersionsResponse - 414, // 841: wg.cosmo.platform.v1.PlatformService.SetGraphRouterCompatibilityVersion:output_type -> wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionResponse - 425, // 842: wg.cosmo.platform.v1.PlatformService.CreateProposal:output_type -> wg.cosmo.platform.v1.CreateProposalResponse - 427, // 843: wg.cosmo.platform.v1.PlatformService.GetProposal:output_type -> wg.cosmo.platform.v1.GetProposalResponse - 433, // 844: wg.cosmo.platform.v1.PlatformService.UpdateProposal:output_type -> wg.cosmo.platform.v1.UpdateProposalResponse - 435, // 845: wg.cosmo.platform.v1.PlatformService.EnableProposalsForNamespace:output_type -> wg.cosmo.platform.v1.EnableProposalsForNamespaceResponse - 437, // 846: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceProposalConfig:output_type -> wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse - 439, // 847: wg.cosmo.platform.v1.PlatformService.GetNamespaceProposalConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse - 429, // 848: wg.cosmo.platform.v1.PlatformService.GetProposalsByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse - 431, // 849: wg.cosmo.platform.v1.PlatformService.GetProposalChecks:output_type -> wg.cosmo.platform.v1.GetProposalChecksResponse - 421, // 850: wg.cosmo.platform.v1.PlatformService.BulkUpdateProposalRolloutPercentages:output_type -> wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesResponse - 423, // 851: wg.cosmo.platform.v1.PlatformService.TeardownProposalRollout:output_type -> wg.cosmo.platform.v1.TeardownProposalRolloutResponse - 441, // 852: wg.cosmo.platform.v1.PlatformService.GetOperations:output_type -> wg.cosmo.platform.v1.GetOperationsResponse - 443, // 853: wg.cosmo.platform.v1.PlatformService.GetClientsFromAnalytics:output_type -> wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse - 445, // 854: wg.cosmo.platform.v1.PlatformService.GetOperationClients:output_type -> wg.cosmo.platform.v1.GetOperationClientsResponse - 447, // 855: wg.cosmo.platform.v1.PlatformService.GetOperationDeprecatedFields:output_type -> wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse - 449, // 856: wg.cosmo.platform.v1.PlatformService.ValidateAndFetchPluginData:output_type -> wg.cosmo.platform.v1.ValidateAndFetchPluginDataResponse - 451, // 857: wg.cosmo.platform.v1.PlatformService.LinkSubgraph:output_type -> wg.cosmo.platform.v1.LinkSubgraphResponse - 453, // 858: wg.cosmo.platform.v1.PlatformService.UnlinkSubgraph:output_type -> wg.cosmo.platform.v1.UnlinkSubgraphResponse - 455, // 859: wg.cosmo.platform.v1.PlatformService.VerifyAPIKeyGraphAccess:output_type -> wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessResponse - 461, // 860: wg.cosmo.platform.v1.PlatformService.RecomposeGraph:output_type -> wg.cosmo.platform.v1.RecomposeGraphResponse - 679, // [679:861] is the sub-list for method output_type - 497, // [497:679] is the sub-list for method input_type - 497, // [497:497] is the sub-list for extension type_name - 497, // [497:497] is the sub-list for extension extendee - 0, // [0:497] is the sub-list for field type_name + 16, // 445: wg.cosmo.platform.v1.GetCacheCohortConfigVersionsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 493, // 446: wg.cosmo.platform.v1.UpdateProposalRequest.updatedSubgraphs:type_name -> wg.cosmo.platform.v1.UpdateProposalRequest.UpdateProposalSubgraphs + 16, // 447: wg.cosmo.platform.v1.UpdateProposalResponse.response:type_name -> wg.cosmo.platform.v1.Response + 36, // 448: wg.cosmo.platform.v1.UpdateProposalResponse.breakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange + 36, // 449: wg.cosmo.platform.v1.UpdateProposalResponse.nonBreakingChanges:type_name -> wg.cosmo.platform.v1.SchemaChange + 38, // 450: wg.cosmo.platform.v1.UpdateProposalResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 39, // 451: wg.cosmo.platform.v1.UpdateProposalResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 44, // 452: wg.cosmo.platform.v1.UpdateProposalResponse.lintErrors:type_name -> wg.cosmo.platform.v1.LintIssue + 44, // 453: wg.cosmo.platform.v1.UpdateProposalResponse.lintWarnings:type_name -> wg.cosmo.platform.v1.LintIssue + 45, // 454: wg.cosmo.platform.v1.UpdateProposalResponse.graphPruneErrors:type_name -> wg.cosmo.platform.v1.GraphPruningIssue + 45, // 455: wg.cosmo.platform.v1.UpdateProposalResponse.graphPruneWarnings:type_name -> wg.cosmo.platform.v1.GraphPruningIssue + 41, // 456: wg.cosmo.platform.v1.UpdateProposalResponse.operationUsageStats:type_name -> wg.cosmo.platform.v1.CheckOperationUsageStats + 37, // 457: wg.cosmo.platform.v1.UpdateProposalResponse.composedSchemaBreakingChanges:type_name -> wg.cosmo.platform.v1.FederatedGraphSchemaChange + 16, // 458: wg.cosmo.platform.v1.EnableProposalsForNamespaceResponse.response:type_name -> wg.cosmo.platform.v1.Response + 0, // 459: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest.checkSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity + 0, // 460: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest.publishSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity + 16, // 461: wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response + 16, // 462: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse.response:type_name -> wg.cosmo.platform.v1.Response + 0, // 463: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse.checkSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity + 0, // 464: wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse.publishSeverityLevel:type_name -> wg.cosmo.platform.v1.LintSeverity + 12, // 465: wg.cosmo.platform.v1.GetOperationsRequest.fetchBasedOn:type_name -> wg.cosmo.platform.v1.OperationsFetchBasedOn + 100, // 466: wg.cosmo.platform.v1.GetOperationsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange + 13, // 467: wg.cosmo.platform.v1.GetOperationsRequest.sortDirection:type_name -> wg.cosmo.platform.v1.SortDirection + 16, // 468: wg.cosmo.platform.v1.GetOperationsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 494, // 469: wg.cosmo.platform.v1.GetOperationsResponse.operations:type_name -> wg.cosmo.platform.v1.GetOperationsResponse.Operation + 16, // 470: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 495, // 471: wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.clients:type_name -> wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse.Client + 100, // 472: wg.cosmo.platform.v1.GetOperationClientsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange + 16, // 473: wg.cosmo.platform.v1.GetOperationClientsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 496, // 474: wg.cosmo.platform.v1.GetOperationClientsResponse.clients:type_name -> wg.cosmo.platform.v1.GetOperationClientsResponse.Client + 100, // 475: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsRequest.dateRange:type_name -> wg.cosmo.platform.v1.DateRange + 16, // 476: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 497, // 477: wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.deprecatedFields:type_name -> wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse.DeprecatedField + 15, // 478: wg.cosmo.platform.v1.ValidateAndFetchPluginDataRequest.labels:type_name -> wg.cosmo.platform.v1.Label + 16, // 479: wg.cosmo.platform.v1.ValidateAndFetchPluginDataResponse.response:type_name -> wg.cosmo.platform.v1.Response + 16, // 480: wg.cosmo.platform.v1.LinkSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 16, // 481: wg.cosmo.platform.v1.UnlinkSubgraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 16, // 482: wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessResponse.response:type_name -> wg.cosmo.platform.v1.Response + 16, // 483: wg.cosmo.platform.v1.InitializeCosmoUserResponse.response:type_name -> wg.cosmo.platform.v1.Response + 16, // 484: wg.cosmo.platform.v1.ListOrganizationsResponse.response:type_name -> wg.cosmo.platform.v1.Response + 498, // 485: wg.cosmo.platform.v1.ListOrganizationsResponse.organizations:type_name -> wg.cosmo.platform.v1.ListOrganizationsResponse.OrganizationMembership + 16, // 486: wg.cosmo.platform.v1.RecomposeGraphResponse.response:type_name -> wg.cosmo.platform.v1.Response + 38, // 487: wg.cosmo.platform.v1.RecomposeGraphResponse.compositionErrors:type_name -> wg.cosmo.platform.v1.CompositionError + 40, // 488: wg.cosmo.platform.v1.RecomposeGraphResponse.deploymentErrors:type_name -> wg.cosmo.platform.v1.DeploymentError + 39, // 489: wg.cosmo.platform.v1.RecomposeGraphResponse.compositionWarnings:type_name -> wg.cosmo.platform.v1.CompositionWarning + 23, // 490: wg.cosmo.platform.v1.RecomposeGraphResponse.errorCounts:type_name -> wg.cosmo.platform.v1.SubgraphPublishStats + 15, // 491: wg.cosmo.platform.v1.SchemaCheck.CheckedSubgraph.labels:type_name -> wg.cosmo.platform.v1.Label + 36, // 492: wg.cosmo.platform.v1.GetCheckOperationsResponse.CheckOperation.impacting_changes:type_name -> wg.cosmo.platform.v1.SchemaChange + 107, // 493: wg.cosmo.platform.v1.AnalyticsViewRow.ValueEntry.value:type_name -> wg.cosmo.platform.v1.AnalyticsViewRowValue + 483, // 494: wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlan.features:type_name -> wg.cosmo.platform.v1.GetBillingPlansResponse.BillingPlanFeature + 55, // 495: wg.cosmo.platform.v1.GetFeatureFlagByNameResponse.FfFederatedGraph.federated_graph:type_name -> wg.cosmo.platform.v1.FederatedGraph + 418, // 496: wg.cosmo.platform.v1.UpdateProposalRequest.UpdateProposalSubgraphs.subgraphs:type_name -> wg.cosmo.platform.v1.ProposalSubgraph + 14, // 497: wg.cosmo.platform.v1.GetOperationsResponse.Operation.type:type_name -> wg.cosmo.platform.v1.GetOperationsResponse.OperationType + 374, // 498: wg.cosmo.platform.v1.PlatformService.CreatePlaygroundScript:input_type -> wg.cosmo.platform.v1.CreatePlaygroundScriptRequest + 376, // 499: wg.cosmo.platform.v1.PlatformService.DeletePlaygroundScript:input_type -> wg.cosmo.platform.v1.DeletePlaygroundScriptRequest + 378, // 500: wg.cosmo.platform.v1.PlatformService.UpdatePlaygroundScript:input_type -> wg.cosmo.platform.v1.UpdatePlaygroundScriptRequest + 380, // 501: wg.cosmo.platform.v1.PlatformService.GetPlaygroundScripts:input_type -> wg.cosmo.platform.v1.GetPlaygroundScriptsRequest + 302, // 502: wg.cosmo.platform.v1.PlatformService.CreateNamespace:input_type -> wg.cosmo.platform.v1.CreateNamespaceRequest + 304, // 503: wg.cosmo.platform.v1.PlatformService.DeleteNamespace:input_type -> wg.cosmo.platform.v1.DeleteNamespaceRequest + 306, // 504: wg.cosmo.platform.v1.PlatformService.RenameNamespace:input_type -> wg.cosmo.platform.v1.RenameNamespaceRequest + 309, // 505: wg.cosmo.platform.v1.PlatformService.GetNamespaces:input_type -> wg.cosmo.platform.v1.GetNamespacesRequest + 387, // 506: wg.cosmo.platform.v1.PlatformService.GetNamespace:input_type -> wg.cosmo.platform.v1.GetNamespaceRequest + 392, // 507: wg.cosmo.platform.v1.PlatformService.GetWorkspace:input_type -> wg.cosmo.platform.v1.GetWorkspaceRequest + 336, // 508: wg.cosmo.platform.v1.PlatformService.CreateContract:input_type -> wg.cosmo.platform.v1.CreateContractRequest + 338, // 509: wg.cosmo.platform.v1.PlatformService.UpdateContract:input_type -> wg.cosmo.platform.v1.UpdateContractRequest + 311, // 510: wg.cosmo.platform.v1.PlatformService.MoveFederatedGraph:input_type -> wg.cosmo.platform.v1.MoveGraphRequest + 311, // 511: wg.cosmo.platform.v1.PlatformService.MoveSubgraph:input_type -> wg.cosmo.platform.v1.MoveGraphRequest + 311, // 512: wg.cosmo.platform.v1.PlatformService.MoveMonograph:input_type -> wg.cosmo.platform.v1.MoveGraphRequest + 28, // 513: wg.cosmo.platform.v1.PlatformService.CreateMonograph:input_type -> wg.cosmo.platform.v1.CreateMonographRequest + 18, // 514: wg.cosmo.platform.v1.PlatformService.PublishMonograph:input_type -> wg.cosmo.platform.v1.PublishMonographRequest + 33, // 515: wg.cosmo.platform.v1.PlatformService.DeleteMonograph:input_type -> wg.cosmo.platform.v1.DeleteMonographRequest + 92, // 516: wg.cosmo.platform.v1.PlatformService.UpdateMonograph:input_type -> wg.cosmo.platform.v1.UpdateMonographRequest + 331, // 517: wg.cosmo.platform.v1.PlatformService.MigrateMonograph:input_type -> wg.cosmo.platform.v1.MigrateMonographRequest + 31, // 518: wg.cosmo.platform.v1.PlatformService.CreateFederatedSubgraph:input_type -> wg.cosmo.platform.v1.CreateFederatedSubgraphRequest + 21, // 519: wg.cosmo.platform.v1.PlatformService.PublishFederatedSubgraph:input_type -> wg.cosmo.platform.v1.PublishFederatedSubgraphRequest + 30, // 520: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraph:input_type -> wg.cosmo.platform.v1.CreateFederatedGraphRequest + 32, // 521: wg.cosmo.platform.v1.PlatformService.DeleteFederatedGraph:input_type -> wg.cosmo.platform.v1.DeleteFederatedGraphRequest + 35, // 522: wg.cosmo.platform.v1.PlatformService.DeleteFederatedSubgraph:input_type -> wg.cosmo.platform.v1.DeleteFederatedSubgraphRequest + 26, // 523: wg.cosmo.platform.v1.PlatformService.CheckSubgraphSchema:input_type -> wg.cosmo.platform.v1.CheckSubgraphSchemaRequest + 415, // 524: wg.cosmo.platform.v1.PlatformService.GetProposedSchemaOfCheckedSubgraph:input_type -> wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphRequest + 27, // 525: wg.cosmo.platform.v1.PlatformService.FixSubgraphSchema:input_type -> wg.cosmo.platform.v1.FixSubgraphSchemaRequest + 90, // 526: wg.cosmo.platform.v1.PlatformService.UpdateFederatedGraph:input_type -> wg.cosmo.platform.v1.UpdateFederatedGraphRequest + 88, // 527: wg.cosmo.platform.v1.PlatformService.UpdateSubgraph:input_type -> wg.cosmo.platform.v1.UpdateSubgraphRequest + 94, // 528: wg.cosmo.platform.v1.PlatformService.CheckFederatedGraph:input_type -> wg.cosmo.platform.v1.CheckFederatedGraphRequest + 155, // 529: wg.cosmo.platform.v1.PlatformService.WhoAmI:input_type -> wg.cosmo.platform.v1.WhoAmIRequest + 158, // 530: wg.cosmo.platform.v1.PlatformService.GenerateRouterToken:input_type -> wg.cosmo.platform.v1.GenerateRouterTokenRequest + 160, // 531: wg.cosmo.platform.v1.PlatformService.GetRouterTokens:input_type -> wg.cosmo.platform.v1.GetRouterTokensRequest + 162, // 532: wg.cosmo.platform.v1.PlatformService.DeleteRouterToken:input_type -> wg.cosmo.platform.v1.DeleteRouterTokenRequest + 165, // 533: wg.cosmo.platform.v1.PlatformService.PublishPersistedOperations:input_type -> wg.cosmo.platform.v1.PublishPersistedOperationsRequest + 170, // 534: wg.cosmo.platform.v1.PlatformService.CheckPersistedOperationTraffic:input_type -> wg.cosmo.platform.v1.CheckPersistedOperationTrafficRequest + 168, // 535: wg.cosmo.platform.v1.PlatformService.DeletePersistedOperation:input_type -> wg.cosmo.platform.v1.DeletePersistedOperationRequest + 172, // 536: wg.cosmo.platform.v1.PlatformService.GetPersistedOperations:input_type -> wg.cosmo.platform.v1.GetPersistedOperationsRequest + 265, // 537: wg.cosmo.platform.v1.PlatformService.GetAuditLogs:input_type -> wg.cosmo.platform.v1.GetAuditLogsRequest + 458, // 538: wg.cosmo.platform.v1.PlatformService.InitializeCosmoUser:input_type -> wg.cosmo.platform.v1.InitializeCosmoUserRequest + 460, // 539: wg.cosmo.platform.v1.PlatformService.ListOrganizations:input_type -> wg.cosmo.platform.v1.ListOrganizationsRequest + 53, // 540: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphs:input_type -> wg.cosmo.platform.v1.GetFederatedGraphsRequest + 57, // 541: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphsBySubgraphLabels:input_type -> wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsRequest + 62, // 542: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphByName:input_type -> wg.cosmo.platform.v1.GetFederatedGraphByNameRequest + 64, // 543: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphSDLByName:input_type -> wg.cosmo.platform.v1.GetFederatedGraphSDLByNameRequest + 59, // 544: wg.cosmo.platform.v1.PlatformService.GetSubgraphs:input_type -> wg.cosmo.platform.v1.GetSubgraphsRequest + 66, // 545: wg.cosmo.platform.v1.PlatformService.GetSubgraphByName:input_type -> wg.cosmo.platform.v1.GetSubgraphByNameRequest + 68, // 546: wg.cosmo.platform.v1.PlatformService.GetSubgraphSDLFromLatestComposition:input_type -> wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionRequest + 70, // 547: wg.cosmo.platform.v1.PlatformService.GetLatestSubgraphSDL:input_type -> wg.cosmo.platform.v1.GetLatestSubgraphSDLRequest + 73, // 548: wg.cosmo.platform.v1.PlatformService.GetChecksByFederatedGraphName:input_type -> wg.cosmo.platform.v1.GetChecksByFederatedGraphNameRequest + 76, // 549: wg.cosmo.platform.v1.PlatformService.GetCheckSummary:input_type -> wg.cosmo.platform.v1.GetCheckSummaryRequest + 79, // 550: wg.cosmo.platform.v1.PlatformService.GetCheckOperations:input_type -> wg.cosmo.platform.v1.GetCheckOperationsRequest + 232, // 551: wg.cosmo.platform.v1.PlatformService.ForceCheckSuccess:input_type -> wg.cosmo.platform.v1.ForceCheckSuccessRequest + 239, // 552: wg.cosmo.platform.v1.PlatformService.CreateOperationOverrides:input_type -> wg.cosmo.platform.v1.CreateOperationOverridesRequest + 243, // 553: wg.cosmo.platform.v1.PlatformService.RemoveOperationOverrides:input_type -> wg.cosmo.platform.v1.RemoveOperationOverridesRequest + 241, // 554: wg.cosmo.platform.v1.PlatformService.CreateOperationIgnoreAllOverride:input_type -> wg.cosmo.platform.v1.CreateOperationIgnoreAllOverrideRequest + 245, // 555: wg.cosmo.platform.v1.PlatformService.RemoveOperationIgnoreAllOverride:input_type -> wg.cosmo.platform.v1.RemoveOperationIgnoreAllOverrideRequest + 247, // 556: wg.cosmo.platform.v1.PlatformService.GetOperationOverrides:input_type -> wg.cosmo.platform.v1.GetOperationOverridesRequest + 249, // 557: wg.cosmo.platform.v1.PlatformService.GetAllOverrides:input_type -> wg.cosmo.platform.v1.GetAllOverridesRequest + 234, // 558: wg.cosmo.platform.v1.PlatformService.ToggleChangeOverridesForAllOperations:input_type -> wg.cosmo.platform.v1.ToggleChangeOverridesForAllOperationsRequest + 236, // 559: wg.cosmo.platform.v1.PlatformService.CreateIgnoreOverridesForAllOperations:input_type -> wg.cosmo.platform.v1.CreateIgnoreOverridesForAllOperationsRequest + 81, // 560: wg.cosmo.platform.v1.PlatformService.GetOperationContent:input_type -> wg.cosmo.platform.v1.GetOperationContentRequest + 83, // 561: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphChangelog:input_type -> wg.cosmo.platform.v1.GetFederatedGraphChangelogRequest + 115, // 562: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraphToken:input_type -> wg.cosmo.platform.v1.CreateFederatedGraphTokenRequest + 209, // 563: wg.cosmo.platform.v1.PlatformService.GetOrganizationBySlug:input_type -> wg.cosmo.platform.v1.GetOrganizationBySlugRequest + 133, // 564: wg.cosmo.platform.v1.PlatformService.GetOrganizationMembers:input_type -> wg.cosmo.platform.v1.GetOrganizationMembersRequest + 131, // 565: wg.cosmo.platform.v1.PlatformService.GetPendingOrganizationMembers:input_type -> wg.cosmo.platform.v1.GetPendingOrganizationMembersRequest + 340, // 566: wg.cosmo.platform.v1.PlatformService.IsMemberLimitReached:input_type -> wg.cosmo.platform.v1.IsMemberLimitReachedRequest + 135, // 567: wg.cosmo.platform.v1.PlatformService.InviteUser:input_type -> wg.cosmo.platform.v1.InviteUserRequest + 138, // 568: wg.cosmo.platform.v1.PlatformService.GetAPIKeys:input_type -> wg.cosmo.platform.v1.GetAPIKeysRequest + 140, // 569: wg.cosmo.platform.v1.PlatformService.CreateAPIKey:input_type -> wg.cosmo.platform.v1.CreateAPIKeyRequest + 144, // 570: wg.cosmo.platform.v1.PlatformService.UpdateAPIKey:input_type -> wg.cosmo.platform.v1.UpdateAPIKeyRequest + 142, // 571: wg.cosmo.platform.v1.PlatformService.DeleteAPIKey:input_type -> wg.cosmo.platform.v1.DeleteAPIKeyRequest + 146, // 572: wg.cosmo.platform.v1.PlatformService.RemoveOrganizationMember:input_type -> wg.cosmo.platform.v1.RemoveOrganizationMemberRequest + 148, // 573: wg.cosmo.platform.v1.PlatformService.RemoveInvitation:input_type -> wg.cosmo.platform.v1.RemoveInvitationRequest + 150, // 574: wg.cosmo.platform.v1.PlatformService.MigrateFromApollo:input_type -> wg.cosmo.platform.v1.MigrateFromApolloRequest + 119, // 575: wg.cosmo.platform.v1.PlatformService.CreateOrganizationGroup:input_type -> wg.cosmo.platform.v1.CreateOrganizationGroupRequest + 121, // 576: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroups:input_type -> wg.cosmo.platform.v1.GetOrganizationGroupsRequest + 123, // 577: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroupMembers:input_type -> wg.cosmo.platform.v1.GetOrganizationGroupMembersRequest + 125, // 578: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationGroup:input_type -> wg.cosmo.platform.v1.UpdateOrganizationGroupRequest + 127, // 579: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationGroup:input_type -> wg.cosmo.platform.v1.DeleteOrganizationGroupRequest + 175, // 580: wg.cosmo.platform.v1.PlatformService.CreateOrganizationWebhookConfig:input_type -> wg.cosmo.platform.v1.CreateOrganizationWebhookConfigRequest + 177, // 581: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookConfigs:input_type -> wg.cosmo.platform.v1.GetOrganizationWebhookConfigsRequest + 179, // 582: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookMeta:input_type -> wg.cosmo.platform.v1.GetOrganizationWebhookMetaRequest + 181, // 583: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationWebhookConfig:input_type -> wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigRequest + 183, // 584: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationWebhookConfig:input_type -> wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigRequest + 367, // 585: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookHistory:input_type -> wg.cosmo.platform.v1.GetOrganizationWebhookHistoryRequest + 372, // 586: wg.cosmo.platform.v1.PlatformService.GetWebhookDeliveryDetails:input_type -> wg.cosmo.platform.v1.GetWebhookDeliveryDetailsRequest + 370, // 587: wg.cosmo.platform.v1.PlatformService.RedeliverWebhook:input_type -> wg.cosmo.platform.v1.RedeliverWebhookRequest + 185, // 588: wg.cosmo.platform.v1.PlatformService.CreateIntegration:input_type -> wg.cosmo.platform.v1.CreateIntegrationRequest + 187, // 589: wg.cosmo.platform.v1.PlatformService.GetOrganizationIntegrations:input_type -> wg.cosmo.platform.v1.GetOrganizationIntegrationsRequest + 192, // 590: wg.cosmo.platform.v1.PlatformService.UpdateIntegrationConfig:input_type -> wg.cosmo.platform.v1.UpdateIntegrationConfigRequest + 194, // 591: wg.cosmo.platform.v1.PlatformService.DeleteIntegration:input_type -> wg.cosmo.platform.v1.DeleteIntegrationRequest + 342, // 592: wg.cosmo.platform.v1.PlatformService.DeleteUser:input_type -> wg.cosmo.platform.v1.DeleteUserRequest + 196, // 593: wg.cosmo.platform.v1.PlatformService.DeleteOrganization:input_type -> wg.cosmo.platform.v1.DeleteOrganizationRequest + 198, // 594: wg.cosmo.platform.v1.PlatformService.RestoreOrganization:input_type -> wg.cosmo.platform.v1.RestoreOrganizationRequest + 200, // 595: wg.cosmo.platform.v1.PlatformService.LeaveOrganization:input_type -> wg.cosmo.platform.v1.LeaveOrganizationRequest + 202, // 596: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationDetails:input_type -> wg.cosmo.platform.v1.UpdateOrganizationDetailsRequest + 204, // 597: wg.cosmo.platform.v1.PlatformService.UpdateOrgMemberGroup:input_type -> wg.cosmo.platform.v1.UpdateOrgMemberGroupRequest + 251, // 598: wg.cosmo.platform.v1.PlatformService.IsGitHubAppInstalled:input_type -> wg.cosmo.platform.v1.IsGitHubAppInstalledRequest + 254, // 599: wg.cosmo.platform.v1.PlatformService.CreateOIDCProvider:input_type -> wg.cosmo.platform.v1.CreateOIDCProviderRequest + 256, // 600: wg.cosmo.platform.v1.PlatformService.GetOIDCProvider:input_type -> wg.cosmo.platform.v1.GetOIDCProviderRequest + 258, // 601: wg.cosmo.platform.v1.PlatformService.DeleteOIDCProvider:input_type -> wg.cosmo.platform.v1.DeleteOIDCProviderRequest + 260, // 602: wg.cosmo.platform.v1.PlatformService.UpdateIDPMappers:input_type -> wg.cosmo.platform.v1.UpdateIDPMappersRequest + 296, // 603: wg.cosmo.platform.v1.PlatformService.GetClients:input_type -> wg.cosmo.platform.v1.GetClientsRequest + 293, // 604: wg.cosmo.platform.v1.PlatformService.GetRouters:input_type -> wg.cosmo.platform.v1.GetRoutersRequest + 268, // 605: wg.cosmo.platform.v1.PlatformService.GetInvitations:input_type -> wg.cosmo.platform.v1.GetInvitationsRequest + 270, // 606: wg.cosmo.platform.v1.PlatformService.AcceptOrDeclineInvitation:input_type -> wg.cosmo.platform.v1.AcceptOrDeclineInvitationRequest + 274, // 607: wg.cosmo.platform.v1.PlatformService.GetCompositions:input_type -> wg.cosmo.platform.v1.GetCompositionsRequest + 276, // 608: wg.cosmo.platform.v1.PlatformService.GetCompositionDetails:input_type -> wg.cosmo.platform.v1.GetCompositionDetailsRequest + 279, // 609: wg.cosmo.platform.v1.PlatformService.GetSdlBySchemaVersion:input_type -> wg.cosmo.platform.v1.GetSdlBySchemaVersionRequest + 281, // 610: wg.cosmo.platform.v1.PlatformService.GetChangelogBySchemaVersion:input_type -> wg.cosmo.platform.v1.GetChangelogBySchemaVersionRequest + 283, // 611: wg.cosmo.platform.v1.PlatformService.GetUserAccessibleResources:input_type -> wg.cosmo.platform.v1.GetUserAccessibleResourcesRequest + 285, // 612: wg.cosmo.platform.v1.PlatformService.UpdateFeatureSettings:input_type -> wg.cosmo.platform.v1.UpdateFeatureSettingsRequest + 287, // 613: wg.cosmo.platform.v1.PlatformService.GetSubgraphMembers:input_type -> wg.cosmo.platform.v1.GetSubgraphMembersRequest + 290, // 614: wg.cosmo.platform.v1.PlatformService.AddReadme:input_type -> wg.cosmo.platform.v1.AddReadmeRequest + 333, // 615: wg.cosmo.platform.v1.PlatformService.GetUserAccessiblePermissions:input_type -> wg.cosmo.platform.v1.GetUserAccessiblePermissionsRequest + 344, // 616: wg.cosmo.platform.v1.PlatformService.CreateFeatureFlag:input_type -> wg.cosmo.platform.v1.CreateFeatureFlagRequest + 350, // 617: wg.cosmo.platform.v1.PlatformService.DeleteFeatureFlag:input_type -> wg.cosmo.platform.v1.DeleteFeatureFlagRequest + 346, // 618: wg.cosmo.platform.v1.PlatformService.UpdateFeatureFlag:input_type -> wg.cosmo.platform.v1.UpdateFeatureFlagRequest + 348, // 619: wg.cosmo.platform.v1.PlatformService.EnableFeatureFlag:input_type -> wg.cosmo.platform.v1.EnableFeatureFlagRequest + 101, // 620: wg.cosmo.platform.v1.PlatformService.GetAnalyticsView:input_type -> wg.cosmo.platform.v1.GetAnalyticsViewRequest + 109, // 621: wg.cosmo.platform.v1.PlatformService.GetDashboardAnalyticsView:input_type -> wg.cosmo.platform.v1.GetDashboardAnalyticsViewRequest + 153, // 622: wg.cosmo.platform.v1.PlatformService.GetTrace:input_type -> wg.cosmo.platform.v1.GetTraceRequest + 219, // 623: wg.cosmo.platform.v1.PlatformService.GetGraphMetrics:input_type -> wg.cosmo.platform.v1.GetGraphMetricsRequest + 225, // 624: wg.cosmo.platform.v1.PlatformService.GetMetricsErrorRate:input_type -> wg.cosmo.platform.v1.GetMetricsErrorRateRequest + 228, // 625: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetrics:input_type -> wg.cosmo.platform.v1.GetSubgraphMetricsRequest + 230, // 626: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetricsErrorRate:input_type -> wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateRequest + 298, // 627: wg.cosmo.platform.v1.PlatformService.GetFieldUsage:input_type -> wg.cosmo.platform.v1.GetFieldUsageRequest + 262, // 628: wg.cosmo.platform.v1.PlatformService.GetOrganizationRequestsCount:input_type -> wg.cosmo.platform.v1.GetOrganizationRequestsCountRequest + 206, // 629: wg.cosmo.platform.v1.PlatformService.CreateOrganization:input_type -> wg.cosmo.platform.v1.CreateOrganizationRequest + 319, // 630: wg.cosmo.platform.v1.PlatformService.EnableLintingForTheNamespace:input_type -> wg.cosmo.platform.v1.EnableLintingForTheNamespaceRequest + 322, // 631: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceLintConfig:input_type -> wg.cosmo.platform.v1.ConfigureNamespaceLintConfigRequest + 313, // 632: wg.cosmo.platform.v1.PlatformService.GetNamespaceLintConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceLintConfigRequest + 315, // 633: wg.cosmo.platform.v1.PlatformService.GetNamespaceChecksConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceChecksConfigurationRequest + 317, // 634: wg.cosmo.platform.v1.PlatformService.UpdateNamespaceChecksConfig:input_type -> wg.cosmo.platform.v1.UpdateNamespaceChecksConfigurationRequest + 324, // 635: wg.cosmo.platform.v1.PlatformService.EnableGraphPruning:input_type -> wg.cosmo.platform.v1.EnableGraphPruningRequest + 327, // 636: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceGraphPruningConfig:input_type -> wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigRequest + 329, // 637: wg.cosmo.platform.v1.PlatformService.GetNamespaceGraphPruningConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigRequest + 353, // 638: wg.cosmo.platform.v1.PlatformService.GetFeatureFlags:input_type -> wg.cosmo.platform.v1.GetFeatureFlagsRequest + 355, // 639: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagByName:input_type -> wg.cosmo.platform.v1.GetFeatureFlagByNameRequest + 357, // 640: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFeatureFlag:input_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagRequest + 359, // 641: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphs:input_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsRequest + 361, // 642: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphRequest + 363, // 643: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsInLatestCompositionByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetFeatureFlagsInLatestCompositionByFederatedGraphRequest + 365, // 644: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFederatedGraphRequest + 383, // 645: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphById:input_type -> wg.cosmo.platform.v1.GetFederatedGraphByIdRequest + 385, // 646: wg.cosmo.platform.v1.PlatformService.GetSubgraphById:input_type -> wg.cosmo.platform.v1.GetSubgraphByIdRequest + 394, // 647: wg.cosmo.platform.v1.PlatformService.PushCacheWarmerOperation:input_type -> wg.cosmo.platform.v1.PushCacheWarmerOperationRequest + 396, // 648: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerOperations:input_type -> wg.cosmo.platform.v1.GetCacheWarmerOperationsRequest + 399, // 649: wg.cosmo.platform.v1.PlatformService.ComputeCacheWarmerOperations:input_type -> wg.cosmo.platform.v1.ComputeCacheWarmerOperationsRequest + 401, // 650: wg.cosmo.platform.v1.PlatformService.ConfigureCacheWarmer:input_type -> wg.cosmo.platform.v1.ConfigureCacheWarmerRequest + 403, // 651: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerConfig:input_type -> wg.cosmo.platform.v1.GetCacheWarmerConfigRequest + 409, // 652: wg.cosmo.platform.v1.PlatformService.DeleteCacheWarmerOperation:input_type -> wg.cosmo.platform.v1.DeleteCacheWarmerOperationRequest + 405, // 653: wg.cosmo.platform.v1.PlatformService.GetSubgraphCheckExtensionsConfig:input_type -> wg.cosmo.platform.v1.GetSubgraphCheckExtensionsConfigRequest + 407, // 654: wg.cosmo.platform.v1.PlatformService.ConfigureSubgraphCheckExtensions:input_type -> wg.cosmo.platform.v1.ConfigureSubgraphCheckExtensionsRequest + 211, // 655: wg.cosmo.platform.v1.PlatformService.GetBillingPlans:input_type -> wg.cosmo.platform.v1.GetBillingPlansRequest + 213, // 656: wg.cosmo.platform.v1.PlatformService.CreateCheckoutSession:input_type -> wg.cosmo.platform.v1.CreateCheckoutSessionRequest + 215, // 657: wg.cosmo.platform.v1.PlatformService.CreateBillingPortalSession:input_type -> wg.cosmo.platform.v1.CreateBillingPortalSessionRequest + 217, // 658: wg.cosmo.platform.v1.PlatformService.UpgradePlan:input_type -> wg.cosmo.platform.v1.UpgradePlanRequest + 411, // 659: wg.cosmo.platform.v1.PlatformService.ListRouterCompatibilityVersions:input_type -> wg.cosmo.platform.v1.ListRouterCompatibilityVersionsRequest + 413, // 660: wg.cosmo.platform.v1.PlatformService.SetGraphRouterCompatibilityVersion:input_type -> wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionRequest + 424, // 661: wg.cosmo.platform.v1.PlatformService.CreateProposal:input_type -> wg.cosmo.platform.v1.CreateProposalRequest + 426, // 662: wg.cosmo.platform.v1.PlatformService.GetProposal:input_type -> wg.cosmo.platform.v1.GetProposalRequest + 434, // 663: wg.cosmo.platform.v1.PlatformService.UpdateProposal:input_type -> wg.cosmo.platform.v1.UpdateProposalRequest + 436, // 664: wg.cosmo.platform.v1.PlatformService.EnableProposalsForNamespace:input_type -> wg.cosmo.platform.v1.EnableProposalsForNamespaceRequest + 438, // 665: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceProposalConfig:input_type -> wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigRequest + 440, // 666: wg.cosmo.platform.v1.PlatformService.GetNamespaceProposalConfig:input_type -> wg.cosmo.platform.v1.GetNamespaceProposalConfigRequest + 428, // 667: wg.cosmo.platform.v1.PlatformService.GetProposalsByFederatedGraph:input_type -> wg.cosmo.platform.v1.GetProposalsByFederatedGraphRequest + 430, // 668: wg.cosmo.platform.v1.PlatformService.GetProposalChecks:input_type -> wg.cosmo.platform.v1.GetProposalChecksRequest + 432, // 669: wg.cosmo.platform.v1.PlatformService.GetCacheCohortConfigVersions:input_type -> wg.cosmo.platform.v1.GetCacheCohortConfigVersionsRequest + 419, // 670: wg.cosmo.platform.v1.PlatformService.BulkUpdateProposalRolloutPercentages:input_type -> wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesRequest + 422, // 671: wg.cosmo.platform.v1.PlatformService.TeardownProposalRollout:input_type -> wg.cosmo.platform.v1.TeardownProposalRolloutRequest + 442, // 672: wg.cosmo.platform.v1.PlatformService.GetOperations:input_type -> wg.cosmo.platform.v1.GetOperationsRequest + 444, // 673: wg.cosmo.platform.v1.PlatformService.GetClientsFromAnalytics:input_type -> wg.cosmo.platform.v1.GetClientsFromAnalyticsRequest + 446, // 674: wg.cosmo.platform.v1.PlatformService.GetOperationClients:input_type -> wg.cosmo.platform.v1.GetOperationClientsRequest + 448, // 675: wg.cosmo.platform.v1.PlatformService.GetOperationDeprecatedFields:input_type -> wg.cosmo.platform.v1.GetOperationDeprecatedFieldsRequest + 450, // 676: wg.cosmo.platform.v1.PlatformService.ValidateAndFetchPluginData:input_type -> wg.cosmo.platform.v1.ValidateAndFetchPluginDataRequest + 452, // 677: wg.cosmo.platform.v1.PlatformService.LinkSubgraph:input_type -> wg.cosmo.platform.v1.LinkSubgraphRequest + 454, // 678: wg.cosmo.platform.v1.PlatformService.UnlinkSubgraph:input_type -> wg.cosmo.platform.v1.UnlinkSubgraphRequest + 456, // 679: wg.cosmo.platform.v1.PlatformService.VerifyAPIKeyGraphAccess:input_type -> wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessRequest + 462, // 680: wg.cosmo.platform.v1.PlatformService.RecomposeGraph:input_type -> wg.cosmo.platform.v1.RecomposeGraphRequest + 375, // 681: wg.cosmo.platform.v1.PlatformService.CreatePlaygroundScript:output_type -> wg.cosmo.platform.v1.CreatePlaygroundScriptResponse + 377, // 682: wg.cosmo.platform.v1.PlatformService.DeletePlaygroundScript:output_type -> wg.cosmo.platform.v1.DeletePlaygroundScriptResponse + 379, // 683: wg.cosmo.platform.v1.PlatformService.UpdatePlaygroundScript:output_type -> wg.cosmo.platform.v1.UpdatePlaygroundScriptResponse + 382, // 684: wg.cosmo.platform.v1.PlatformService.GetPlaygroundScripts:output_type -> wg.cosmo.platform.v1.GetPlaygroundScriptsResponse + 303, // 685: wg.cosmo.platform.v1.PlatformService.CreateNamespace:output_type -> wg.cosmo.platform.v1.CreateNamespaceResponse + 305, // 686: wg.cosmo.platform.v1.PlatformService.DeleteNamespace:output_type -> wg.cosmo.platform.v1.DeleteNamespaceResponse + 307, // 687: wg.cosmo.platform.v1.PlatformService.RenameNamespace:output_type -> wg.cosmo.platform.v1.RenameNamespaceResponse + 310, // 688: wg.cosmo.platform.v1.PlatformService.GetNamespaces:output_type -> wg.cosmo.platform.v1.GetNamespacesResponse + 388, // 689: wg.cosmo.platform.v1.PlatformService.GetNamespace:output_type -> wg.cosmo.platform.v1.GetNamespaceResponse + 393, // 690: wg.cosmo.platform.v1.PlatformService.GetWorkspace:output_type -> wg.cosmo.platform.v1.GetWorkspaceResponse + 337, // 691: wg.cosmo.platform.v1.PlatformService.CreateContract:output_type -> wg.cosmo.platform.v1.CreateContractResponse + 339, // 692: wg.cosmo.platform.v1.PlatformService.UpdateContract:output_type -> wg.cosmo.platform.v1.UpdateContractResponse + 312, // 693: wg.cosmo.platform.v1.PlatformService.MoveFederatedGraph:output_type -> wg.cosmo.platform.v1.MoveGraphResponse + 312, // 694: wg.cosmo.platform.v1.PlatformService.MoveSubgraph:output_type -> wg.cosmo.platform.v1.MoveGraphResponse + 312, // 695: wg.cosmo.platform.v1.PlatformService.MoveMonograph:output_type -> wg.cosmo.platform.v1.MoveGraphResponse + 29, // 696: wg.cosmo.platform.v1.PlatformService.CreateMonograph:output_type -> wg.cosmo.platform.v1.CreateMonographResponse + 19, // 697: wg.cosmo.platform.v1.PlatformService.PublishMonograph:output_type -> wg.cosmo.platform.v1.PublishMonographResponse + 34, // 698: wg.cosmo.platform.v1.PlatformService.DeleteMonograph:output_type -> wg.cosmo.platform.v1.DeleteMonographResponse + 93, // 699: wg.cosmo.platform.v1.PlatformService.UpdateMonograph:output_type -> wg.cosmo.platform.v1.UpdateMonographResponse + 332, // 700: wg.cosmo.platform.v1.PlatformService.MigrateMonograph:output_type -> wg.cosmo.platform.v1.MigrateMonographResponse + 50, // 701: wg.cosmo.platform.v1.PlatformService.CreateFederatedSubgraph:output_type -> wg.cosmo.platform.v1.CreateFederatedSubgraphResponse + 22, // 702: wg.cosmo.platform.v1.PlatformService.PublishFederatedSubgraph:output_type -> wg.cosmo.platform.v1.PublishFederatedSubgraphResponse + 49, // 703: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraph:output_type -> wg.cosmo.platform.v1.CreateFederatedGraphResponse + 52, // 704: wg.cosmo.platform.v1.PlatformService.DeleteFederatedGraph:output_type -> wg.cosmo.platform.v1.DeleteFederatedGraphResponse + 51, // 705: wg.cosmo.platform.v1.PlatformService.DeleteFederatedSubgraph:output_type -> wg.cosmo.platform.v1.DeleteFederatedSubgraphResponse + 46, // 706: wg.cosmo.platform.v1.PlatformService.CheckSubgraphSchema:output_type -> wg.cosmo.platform.v1.CheckSubgraphSchemaResponse + 416, // 707: wg.cosmo.platform.v1.PlatformService.GetProposedSchemaOfCheckedSubgraph:output_type -> wg.cosmo.platform.v1.GetProposedSchemaOfCheckedSubgraphResponse + 48, // 708: wg.cosmo.platform.v1.PlatformService.FixSubgraphSchema:output_type -> wg.cosmo.platform.v1.FixSubgraphSchemaResponse + 91, // 709: wg.cosmo.platform.v1.PlatformService.UpdateFederatedGraph:output_type -> wg.cosmo.platform.v1.UpdateFederatedGraphResponse + 89, // 710: wg.cosmo.platform.v1.PlatformService.UpdateSubgraph:output_type -> wg.cosmo.platform.v1.UpdateSubgraphResponse + 95, // 711: wg.cosmo.platform.v1.PlatformService.CheckFederatedGraph:output_type -> wg.cosmo.platform.v1.CheckFederatedGraphResponse + 156, // 712: wg.cosmo.platform.v1.PlatformService.WhoAmI:output_type -> wg.cosmo.platform.v1.WhoAmIResponse + 159, // 713: wg.cosmo.platform.v1.PlatformService.GenerateRouterToken:output_type -> wg.cosmo.platform.v1.GenerateRouterTokenResponse + 161, // 714: wg.cosmo.platform.v1.PlatformService.GetRouterTokens:output_type -> wg.cosmo.platform.v1.GetRouterTokensResponse + 163, // 715: wg.cosmo.platform.v1.PlatformService.DeleteRouterToken:output_type -> wg.cosmo.platform.v1.DeleteRouterTokenResponse + 167, // 716: wg.cosmo.platform.v1.PlatformService.PublishPersistedOperations:output_type -> wg.cosmo.platform.v1.PublishPersistedOperationsResponse + 171, // 717: wg.cosmo.platform.v1.PlatformService.CheckPersistedOperationTraffic:output_type -> wg.cosmo.platform.v1.CheckPersistedOperationTrafficResponse + 169, // 718: wg.cosmo.platform.v1.PlatformService.DeletePersistedOperation:output_type -> wg.cosmo.platform.v1.DeletePersistedOperationResponse + 173, // 719: wg.cosmo.platform.v1.PlatformService.GetPersistedOperations:output_type -> wg.cosmo.platform.v1.GetPersistedOperationsResponse + 267, // 720: wg.cosmo.platform.v1.PlatformService.GetAuditLogs:output_type -> wg.cosmo.platform.v1.GetAuditLogsResponse + 459, // 721: wg.cosmo.platform.v1.PlatformService.InitializeCosmoUser:output_type -> wg.cosmo.platform.v1.InitializeCosmoUserResponse + 461, // 722: wg.cosmo.platform.v1.PlatformService.ListOrganizations:output_type -> wg.cosmo.platform.v1.ListOrganizationsResponse + 56, // 723: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphs:output_type -> wg.cosmo.platform.v1.GetFederatedGraphsResponse + 58, // 724: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphsBySubgraphLabels:output_type -> wg.cosmo.platform.v1.GetFederatedGraphsBySubgraphLabelsResponse + 63, // 725: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphByName:output_type -> wg.cosmo.platform.v1.GetFederatedGraphByNameResponse + 65, // 726: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphSDLByName:output_type -> wg.cosmo.platform.v1.GetFederatedGraphSDLByNameResponse + 61, // 727: wg.cosmo.platform.v1.PlatformService.GetSubgraphs:output_type -> wg.cosmo.platform.v1.GetSubgraphsResponse + 67, // 728: wg.cosmo.platform.v1.PlatformService.GetSubgraphByName:output_type -> wg.cosmo.platform.v1.GetSubgraphByNameResponse + 69, // 729: wg.cosmo.platform.v1.PlatformService.GetSubgraphSDLFromLatestComposition:output_type -> wg.cosmo.platform.v1.GetSubgraphSDLFromLatestCompositionResponse + 71, // 730: wg.cosmo.platform.v1.PlatformService.GetLatestSubgraphSDL:output_type -> wg.cosmo.platform.v1.GetLatestSubgraphSDLResponse + 75, // 731: wg.cosmo.platform.v1.PlatformService.GetChecksByFederatedGraphName:output_type -> wg.cosmo.platform.v1.GetChecksByFederatedGraphNameResponse + 78, // 732: wg.cosmo.platform.v1.PlatformService.GetCheckSummary:output_type -> wg.cosmo.platform.v1.GetCheckSummaryResponse + 80, // 733: wg.cosmo.platform.v1.PlatformService.GetCheckOperations:output_type -> wg.cosmo.platform.v1.GetCheckOperationsResponse + 233, // 734: wg.cosmo.platform.v1.PlatformService.ForceCheckSuccess:output_type -> wg.cosmo.platform.v1.ForceCheckSuccessResponse + 240, // 735: wg.cosmo.platform.v1.PlatformService.CreateOperationOverrides:output_type -> wg.cosmo.platform.v1.CreateOperationOverridesResponse + 244, // 736: wg.cosmo.platform.v1.PlatformService.RemoveOperationOverrides:output_type -> wg.cosmo.platform.v1.RemoveOperationOverridesResponse + 242, // 737: wg.cosmo.platform.v1.PlatformService.CreateOperationIgnoreAllOverride:output_type -> wg.cosmo.platform.v1.CreateOperationIgnoreAllOverrideResponse + 246, // 738: wg.cosmo.platform.v1.PlatformService.RemoveOperationIgnoreAllOverride:output_type -> wg.cosmo.platform.v1.RemoveOperationIgnoreAllOverrideResponse + 248, // 739: wg.cosmo.platform.v1.PlatformService.GetOperationOverrides:output_type -> wg.cosmo.platform.v1.GetOperationOverridesResponse + 250, // 740: wg.cosmo.platform.v1.PlatformService.GetAllOverrides:output_type -> wg.cosmo.platform.v1.GetAllOverridesResponse + 235, // 741: wg.cosmo.platform.v1.PlatformService.ToggleChangeOverridesForAllOperations:output_type -> wg.cosmo.platform.v1.ToggleChangeOverridesForAllOperationsResponse + 237, // 742: wg.cosmo.platform.v1.PlatformService.CreateIgnoreOverridesForAllOperations:output_type -> wg.cosmo.platform.v1.CreateIgnoreOverridesForAllOperationsResponse + 82, // 743: wg.cosmo.platform.v1.PlatformService.GetOperationContent:output_type -> wg.cosmo.platform.v1.GetOperationContentResponse + 86, // 744: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphChangelog:output_type -> wg.cosmo.platform.v1.GetFederatedGraphChangelogResponse + 116, // 745: wg.cosmo.platform.v1.PlatformService.CreateFederatedGraphToken:output_type -> wg.cosmo.platform.v1.CreateFederatedGraphTokenResponse + 210, // 746: wg.cosmo.platform.v1.PlatformService.GetOrganizationBySlug:output_type -> wg.cosmo.platform.v1.GetOrganizationBySlugResponse + 134, // 747: wg.cosmo.platform.v1.PlatformService.GetOrganizationMembers:output_type -> wg.cosmo.platform.v1.GetOrganizationMembersResponse + 132, // 748: wg.cosmo.platform.v1.PlatformService.GetPendingOrganizationMembers:output_type -> wg.cosmo.platform.v1.GetPendingOrganizationMembersResponse + 341, // 749: wg.cosmo.platform.v1.PlatformService.IsMemberLimitReached:output_type -> wg.cosmo.platform.v1.IsMemberLimitReachedResponse + 136, // 750: wg.cosmo.platform.v1.PlatformService.InviteUser:output_type -> wg.cosmo.platform.v1.InviteUserResponse + 139, // 751: wg.cosmo.platform.v1.PlatformService.GetAPIKeys:output_type -> wg.cosmo.platform.v1.GetAPIKeysResponse + 141, // 752: wg.cosmo.platform.v1.PlatformService.CreateAPIKey:output_type -> wg.cosmo.platform.v1.CreateAPIKeyResponse + 145, // 753: wg.cosmo.platform.v1.PlatformService.UpdateAPIKey:output_type -> wg.cosmo.platform.v1.UpdateAPIKeyResponse + 143, // 754: wg.cosmo.platform.v1.PlatformService.DeleteAPIKey:output_type -> wg.cosmo.platform.v1.DeleteAPIKeyResponse + 147, // 755: wg.cosmo.platform.v1.PlatformService.RemoveOrganizationMember:output_type -> wg.cosmo.platform.v1.RemoveOrganizationMemberResponse + 149, // 756: wg.cosmo.platform.v1.PlatformService.RemoveInvitation:output_type -> wg.cosmo.platform.v1.RemoveInvitationResponse + 151, // 757: wg.cosmo.platform.v1.PlatformService.MigrateFromApollo:output_type -> wg.cosmo.platform.v1.MigrateFromApolloResponse + 120, // 758: wg.cosmo.platform.v1.PlatformService.CreateOrganizationGroup:output_type -> wg.cosmo.platform.v1.CreateOrganizationGroupResponse + 122, // 759: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroups:output_type -> wg.cosmo.platform.v1.GetOrganizationGroupsResponse + 124, // 760: wg.cosmo.platform.v1.PlatformService.GetOrganizationGroupMembers:output_type -> wg.cosmo.platform.v1.GetOrganizationGroupMembersResponse + 126, // 761: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationGroup:output_type -> wg.cosmo.platform.v1.UpdateOrganizationGroupResponse + 128, // 762: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationGroup:output_type -> wg.cosmo.platform.v1.DeleteOrganizationGroupResponse + 176, // 763: wg.cosmo.platform.v1.PlatformService.CreateOrganizationWebhookConfig:output_type -> wg.cosmo.platform.v1.CreateOrganizationWebhookConfigResponse + 178, // 764: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookConfigs:output_type -> wg.cosmo.platform.v1.GetOrganizationWebhookConfigsResponse + 180, // 765: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookMeta:output_type -> wg.cosmo.platform.v1.GetOrganizationWebhookMetaResponse + 182, // 766: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationWebhookConfig:output_type -> wg.cosmo.platform.v1.UpdateOrganizationWebhookConfigResponse + 184, // 767: wg.cosmo.platform.v1.PlatformService.DeleteOrganizationWebhookConfig:output_type -> wg.cosmo.platform.v1.DeleteOrganizationWebhookConfigResponse + 369, // 768: wg.cosmo.platform.v1.PlatformService.GetOrganizationWebhookHistory:output_type -> wg.cosmo.platform.v1.GetOrganizationWebhookHistoryResponse + 373, // 769: wg.cosmo.platform.v1.PlatformService.GetWebhookDeliveryDetails:output_type -> wg.cosmo.platform.v1.GetWebhookDeliveryDetailsResponse + 371, // 770: wg.cosmo.platform.v1.PlatformService.RedeliverWebhook:output_type -> wg.cosmo.platform.v1.RedeliverWebhookResponse + 186, // 771: wg.cosmo.platform.v1.PlatformService.CreateIntegration:output_type -> wg.cosmo.platform.v1.CreateIntegrationResponse + 191, // 772: wg.cosmo.platform.v1.PlatformService.GetOrganizationIntegrations:output_type -> wg.cosmo.platform.v1.GetOrganizationIntegrationsResponse + 193, // 773: wg.cosmo.platform.v1.PlatformService.UpdateIntegrationConfig:output_type -> wg.cosmo.platform.v1.UpdateIntegrationConfigResponse + 195, // 774: wg.cosmo.platform.v1.PlatformService.DeleteIntegration:output_type -> wg.cosmo.platform.v1.DeleteIntegrationResponse + 343, // 775: wg.cosmo.platform.v1.PlatformService.DeleteUser:output_type -> wg.cosmo.platform.v1.DeleteUserResponse + 197, // 776: wg.cosmo.platform.v1.PlatformService.DeleteOrganization:output_type -> wg.cosmo.platform.v1.DeleteOrganizationResponse + 199, // 777: wg.cosmo.platform.v1.PlatformService.RestoreOrganization:output_type -> wg.cosmo.platform.v1.RestoreOrganizationResponse + 201, // 778: wg.cosmo.platform.v1.PlatformService.LeaveOrganization:output_type -> wg.cosmo.platform.v1.LeaveOrganizationResponse + 203, // 779: wg.cosmo.platform.v1.PlatformService.UpdateOrganizationDetails:output_type -> wg.cosmo.platform.v1.UpdateOrganizationDetailsResponse + 205, // 780: wg.cosmo.platform.v1.PlatformService.UpdateOrgMemberGroup:output_type -> wg.cosmo.platform.v1.UpdateOrgMemberGroupResponse + 252, // 781: wg.cosmo.platform.v1.PlatformService.IsGitHubAppInstalled:output_type -> wg.cosmo.platform.v1.IsGitHubAppInstalledResponse + 255, // 782: wg.cosmo.platform.v1.PlatformService.CreateOIDCProvider:output_type -> wg.cosmo.platform.v1.CreateOIDCProviderResponse + 257, // 783: wg.cosmo.platform.v1.PlatformService.GetOIDCProvider:output_type -> wg.cosmo.platform.v1.GetOIDCProviderResponse + 259, // 784: wg.cosmo.platform.v1.PlatformService.DeleteOIDCProvider:output_type -> wg.cosmo.platform.v1.DeleteOIDCProviderResponse + 261, // 785: wg.cosmo.platform.v1.PlatformService.UpdateIDPMappers:output_type -> wg.cosmo.platform.v1.UpdateIDPMappersResponse + 297, // 786: wg.cosmo.platform.v1.PlatformService.GetClients:output_type -> wg.cosmo.platform.v1.GetClientsResponse + 294, // 787: wg.cosmo.platform.v1.PlatformService.GetRouters:output_type -> wg.cosmo.platform.v1.GetRoutersResponse + 269, // 788: wg.cosmo.platform.v1.PlatformService.GetInvitations:output_type -> wg.cosmo.platform.v1.GetInvitationsResponse + 271, // 789: wg.cosmo.platform.v1.PlatformService.AcceptOrDeclineInvitation:output_type -> wg.cosmo.platform.v1.AcceptOrDeclineInvitationResponse + 275, // 790: wg.cosmo.platform.v1.PlatformService.GetCompositions:output_type -> wg.cosmo.platform.v1.GetCompositionsResponse + 278, // 791: wg.cosmo.platform.v1.PlatformService.GetCompositionDetails:output_type -> wg.cosmo.platform.v1.GetCompositionDetailsResponse + 280, // 792: wg.cosmo.platform.v1.PlatformService.GetSdlBySchemaVersion:output_type -> wg.cosmo.platform.v1.GetSdlBySchemaVersionResponse + 282, // 793: wg.cosmo.platform.v1.PlatformService.GetChangelogBySchemaVersion:output_type -> wg.cosmo.platform.v1.GetChangelogBySchemaVersionResponse + 284, // 794: wg.cosmo.platform.v1.PlatformService.GetUserAccessibleResources:output_type -> wg.cosmo.platform.v1.GetUserAccessibleResourcesResponse + 286, // 795: wg.cosmo.platform.v1.PlatformService.UpdateFeatureSettings:output_type -> wg.cosmo.platform.v1.UpdateFeatureSettingsResponse + 289, // 796: wg.cosmo.platform.v1.PlatformService.GetSubgraphMembers:output_type -> wg.cosmo.platform.v1.GetSubgraphMembersResponse + 291, // 797: wg.cosmo.platform.v1.PlatformService.AddReadme:output_type -> wg.cosmo.platform.v1.AddReadmeResponse + 335, // 798: wg.cosmo.platform.v1.PlatformService.GetUserAccessiblePermissions:output_type -> wg.cosmo.platform.v1.GetUserAccessiblePermissionsResponse + 345, // 799: wg.cosmo.platform.v1.PlatformService.CreateFeatureFlag:output_type -> wg.cosmo.platform.v1.CreateFeatureFlagResponse + 351, // 800: wg.cosmo.platform.v1.PlatformService.DeleteFeatureFlag:output_type -> wg.cosmo.platform.v1.DeleteFeatureFlagResponse + 347, // 801: wg.cosmo.platform.v1.PlatformService.UpdateFeatureFlag:output_type -> wg.cosmo.platform.v1.UpdateFeatureFlagResponse + 349, // 802: wg.cosmo.platform.v1.PlatformService.EnableFeatureFlag:output_type -> wg.cosmo.platform.v1.EnableFeatureFlagResponse + 108, // 803: wg.cosmo.platform.v1.PlatformService.GetAnalyticsView:output_type -> wg.cosmo.platform.v1.GetAnalyticsViewResponse + 114, // 804: wg.cosmo.platform.v1.PlatformService.GetDashboardAnalyticsView:output_type -> wg.cosmo.platform.v1.GetDashboardAnalyticsViewResponse + 154, // 805: wg.cosmo.platform.v1.PlatformService.GetTrace:output_type -> wg.cosmo.platform.v1.GetTraceResponse + 220, // 806: wg.cosmo.platform.v1.PlatformService.GetGraphMetrics:output_type -> wg.cosmo.platform.v1.GetGraphMetricsResponse + 226, // 807: wg.cosmo.platform.v1.PlatformService.GetMetricsErrorRate:output_type -> wg.cosmo.platform.v1.GetMetricsErrorRateResponse + 229, // 808: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetrics:output_type -> wg.cosmo.platform.v1.GetSubgraphMetricsResponse + 231, // 809: wg.cosmo.platform.v1.PlatformService.GetSubgraphMetricsErrorRate:output_type -> wg.cosmo.platform.v1.GetSubgraphMetricsErrorRateResponse + 301, // 810: wg.cosmo.platform.v1.PlatformService.GetFieldUsage:output_type -> wg.cosmo.platform.v1.GetFieldUsageResponse + 263, // 811: wg.cosmo.platform.v1.PlatformService.GetOrganizationRequestsCount:output_type -> wg.cosmo.platform.v1.GetOrganizationRequestsCountResponse + 207, // 812: wg.cosmo.platform.v1.PlatformService.CreateOrganization:output_type -> wg.cosmo.platform.v1.CreateOrganizationResponse + 320, // 813: wg.cosmo.platform.v1.PlatformService.EnableLintingForTheNamespace:output_type -> wg.cosmo.platform.v1.EnableLintingForTheNamespaceResponse + 323, // 814: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceLintConfig:output_type -> wg.cosmo.platform.v1.ConfigureNamespaceLintConfigResponse + 314, // 815: wg.cosmo.platform.v1.PlatformService.GetNamespaceLintConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceLintConfigResponse + 316, // 816: wg.cosmo.platform.v1.PlatformService.GetNamespaceChecksConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceChecksConfigurationResponse + 318, // 817: wg.cosmo.platform.v1.PlatformService.UpdateNamespaceChecksConfig:output_type -> wg.cosmo.platform.v1.UpdateNamespaceChecksConfigurationResponse + 325, // 818: wg.cosmo.platform.v1.PlatformService.EnableGraphPruning:output_type -> wg.cosmo.platform.v1.EnableGraphPruningResponse + 328, // 819: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceGraphPruningConfig:output_type -> wg.cosmo.platform.v1.ConfigureNamespaceGraphPruningConfigResponse + 330, // 820: wg.cosmo.platform.v1.PlatformService.GetNamespaceGraphPruningConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceGraphPruningConfigResponse + 354, // 821: wg.cosmo.platform.v1.PlatformService.GetFeatureFlags:output_type -> wg.cosmo.platform.v1.GetFeatureFlagsResponse + 356, // 822: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagByName:output_type -> wg.cosmo.platform.v1.GetFeatureFlagByNameResponse + 358, // 823: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFeatureFlag:output_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFeatureFlagResponse + 360, // 824: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphs:output_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsResponse + 362, // 825: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetFeatureFlagsByFederatedGraphResponse + 364, // 826: wg.cosmo.platform.v1.PlatformService.GetFeatureFlagsInLatestCompositionByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetFeatureFlagsInLatestCompositionByFederatedGraphResponse + 366, // 827: wg.cosmo.platform.v1.PlatformService.GetFeatureSubgraphsByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetFeatureSubgraphsByFederatedGraphResponse + 384, // 828: wg.cosmo.platform.v1.PlatformService.GetFederatedGraphById:output_type -> wg.cosmo.platform.v1.GetFederatedGraphByIdResponse + 386, // 829: wg.cosmo.platform.v1.PlatformService.GetSubgraphById:output_type -> wg.cosmo.platform.v1.GetSubgraphByIdResponse + 395, // 830: wg.cosmo.platform.v1.PlatformService.PushCacheWarmerOperation:output_type -> wg.cosmo.platform.v1.PushCacheWarmerOperationResponse + 398, // 831: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerOperations:output_type -> wg.cosmo.platform.v1.GetCacheWarmerOperationsResponse + 400, // 832: wg.cosmo.platform.v1.PlatformService.ComputeCacheWarmerOperations:output_type -> wg.cosmo.platform.v1.ComputeCacheWarmerOperationsResponse + 402, // 833: wg.cosmo.platform.v1.PlatformService.ConfigureCacheWarmer:output_type -> wg.cosmo.platform.v1.ConfigureCacheWarmerResponse + 404, // 834: wg.cosmo.platform.v1.PlatformService.GetCacheWarmerConfig:output_type -> wg.cosmo.platform.v1.GetCacheWarmerConfigResponse + 410, // 835: wg.cosmo.platform.v1.PlatformService.DeleteCacheWarmerOperation:output_type -> wg.cosmo.platform.v1.DeleteCacheWarmerOperationResponse + 406, // 836: wg.cosmo.platform.v1.PlatformService.GetSubgraphCheckExtensionsConfig:output_type -> wg.cosmo.platform.v1.GetSubgraphCheckExtensionsConfigResponse + 408, // 837: wg.cosmo.platform.v1.PlatformService.ConfigureSubgraphCheckExtensions:output_type -> wg.cosmo.platform.v1.ConfigureSubgraphCheckExtensionsResponse + 212, // 838: wg.cosmo.platform.v1.PlatformService.GetBillingPlans:output_type -> wg.cosmo.platform.v1.GetBillingPlansResponse + 214, // 839: wg.cosmo.platform.v1.PlatformService.CreateCheckoutSession:output_type -> wg.cosmo.platform.v1.CreateCheckoutSessionResponse + 216, // 840: wg.cosmo.platform.v1.PlatformService.CreateBillingPortalSession:output_type -> wg.cosmo.platform.v1.CreateBillingPortalSessionResponse + 218, // 841: wg.cosmo.platform.v1.PlatformService.UpgradePlan:output_type -> wg.cosmo.platform.v1.UpgradePlanResponse + 412, // 842: wg.cosmo.platform.v1.PlatformService.ListRouterCompatibilityVersions:output_type -> wg.cosmo.platform.v1.ListRouterCompatibilityVersionsResponse + 414, // 843: wg.cosmo.platform.v1.PlatformService.SetGraphRouterCompatibilityVersion:output_type -> wg.cosmo.platform.v1.SetGraphRouterCompatibilityVersionResponse + 425, // 844: wg.cosmo.platform.v1.PlatformService.CreateProposal:output_type -> wg.cosmo.platform.v1.CreateProposalResponse + 427, // 845: wg.cosmo.platform.v1.PlatformService.GetProposal:output_type -> wg.cosmo.platform.v1.GetProposalResponse + 435, // 846: wg.cosmo.platform.v1.PlatformService.UpdateProposal:output_type -> wg.cosmo.platform.v1.UpdateProposalResponse + 437, // 847: wg.cosmo.platform.v1.PlatformService.EnableProposalsForNamespace:output_type -> wg.cosmo.platform.v1.EnableProposalsForNamespaceResponse + 439, // 848: wg.cosmo.platform.v1.PlatformService.ConfigureNamespaceProposalConfig:output_type -> wg.cosmo.platform.v1.ConfigureNamespaceProposalConfigResponse + 441, // 849: wg.cosmo.platform.v1.PlatformService.GetNamespaceProposalConfig:output_type -> wg.cosmo.platform.v1.GetNamespaceProposalConfigResponse + 429, // 850: wg.cosmo.platform.v1.PlatformService.GetProposalsByFederatedGraph:output_type -> wg.cosmo.platform.v1.GetProposalsByFederatedGraphResponse + 431, // 851: wg.cosmo.platform.v1.PlatformService.GetProposalChecks:output_type -> wg.cosmo.platform.v1.GetProposalChecksResponse + 433, // 852: wg.cosmo.platform.v1.PlatformService.GetCacheCohortConfigVersions:output_type -> wg.cosmo.platform.v1.GetCacheCohortConfigVersionsResponse + 421, // 853: wg.cosmo.platform.v1.PlatformService.BulkUpdateProposalRolloutPercentages:output_type -> wg.cosmo.platform.v1.BulkUpdateProposalRolloutPercentagesResponse + 423, // 854: wg.cosmo.platform.v1.PlatformService.TeardownProposalRollout:output_type -> wg.cosmo.platform.v1.TeardownProposalRolloutResponse + 443, // 855: wg.cosmo.platform.v1.PlatformService.GetOperations:output_type -> wg.cosmo.platform.v1.GetOperationsResponse + 445, // 856: wg.cosmo.platform.v1.PlatformService.GetClientsFromAnalytics:output_type -> wg.cosmo.platform.v1.GetClientsFromAnalyticsResponse + 447, // 857: wg.cosmo.platform.v1.PlatformService.GetOperationClients:output_type -> wg.cosmo.platform.v1.GetOperationClientsResponse + 449, // 858: wg.cosmo.platform.v1.PlatformService.GetOperationDeprecatedFields:output_type -> wg.cosmo.platform.v1.GetOperationDeprecatedFieldsResponse + 451, // 859: wg.cosmo.platform.v1.PlatformService.ValidateAndFetchPluginData:output_type -> wg.cosmo.platform.v1.ValidateAndFetchPluginDataResponse + 453, // 860: wg.cosmo.platform.v1.PlatformService.LinkSubgraph:output_type -> wg.cosmo.platform.v1.LinkSubgraphResponse + 455, // 861: wg.cosmo.platform.v1.PlatformService.UnlinkSubgraph:output_type -> wg.cosmo.platform.v1.UnlinkSubgraphResponse + 457, // 862: wg.cosmo.platform.v1.PlatformService.VerifyAPIKeyGraphAccess:output_type -> wg.cosmo.platform.v1.VerifyAPIKeyGraphAccessResponse + 463, // 863: wg.cosmo.platform.v1.PlatformService.RecomposeGraph:output_type -> wg.cosmo.platform.v1.RecomposeGraphResponse + 681, // [681:864] is the sub-list for method output_type + 498, // [498:681] is the sub-list for method input_type + 498, // [498:498] is the sub-list for extension type_name + 498, // [498:498] is the sub-list for extension extendee + 0, // [0:498] is the sub-list for field type_name } func init() { file_wg_cosmo_platform_v1_platform_proto_init() } @@ -35871,20 +35991,21 @@ func file_wg_cosmo_platform_v1_platform_proto_init() { file_wg_cosmo_platform_v1_platform_proto_msgTypes[398].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[402].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[410].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[417].OneofWrappers = []any{ + file_wg_cosmo_platform_v1_platform_proto_msgTypes[417].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[419].OneofWrappers = []any{ (*UpdateProposalRequest_State)(nil), (*UpdateProposalRequest_UpdatedSubgraphs)(nil), } - file_wg_cosmo_platform_v1_platform_proto_msgTypes[418].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[425].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[426].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[429].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[420].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[427].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[428].OneofWrappers = []any{} file_wg_cosmo_platform_v1_platform_proto_msgTypes[431].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[445].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[446].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[450].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[466].OneofWrappers = []any{} - file_wg_cosmo_platform_v1_platform_proto_msgTypes[477].OneofWrappers = []any{ + file_wg_cosmo_platform_v1_platform_proto_msgTypes[433].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[447].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[448].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[452].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[468].OneofWrappers = []any{} + file_wg_cosmo_platform_v1_platform_proto_msgTypes[479].OneofWrappers = []any{ (*GetOperationsResponse_Operation_Latency)(nil), (*GetOperationsResponse_Operation_RequestCount)(nil), (*GetOperationsResponse_Operation_ErrorPercentage)(nil), @@ -35895,7 +36016,7 @@ func file_wg_cosmo_platform_v1_platform_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_wg_cosmo_platform_v1_platform_proto_rawDesc), len(file_wg_cosmo_platform_v1_platform_proto_rawDesc)), NumEnums: 15, - NumMessages: 482, + NumMessages: 484, NumExtensions: 0, NumServices: 1, }, diff --git a/connect-go/gen/proto/wg/cosmo/platform/v1/platformv1connect/platform.connect.go b/connect-go/gen/proto/wg/cosmo/platform/v1/platformv1connect/platform.connect.go index 029099fbf8..a7e5a19b7f 100644 --- a/connect-go/gen/proto/wg/cosmo/platform/v1/platformv1connect/platform.connect.go +++ b/connect-go/gen/proto/wg/cosmo/platform/v1/platformv1connect/platform.connect.go @@ -547,6 +547,9 @@ const ( // PlatformServiceGetProposalChecksProcedure is the fully-qualified name of the PlatformService's // GetProposalChecks RPC. PlatformServiceGetProposalChecksProcedure = "/wg.cosmo.platform.v1.PlatformService/GetProposalChecks" + // PlatformServiceGetCacheCohortConfigVersionsProcedure is the fully-qualified name of the + // PlatformService's GetCacheCohortConfigVersions RPC. + PlatformServiceGetCacheCohortConfigVersionsProcedure = "/wg.cosmo.platform.v1.PlatformService/GetCacheCohortConfigVersions" // PlatformServiceBulkUpdateProposalRolloutPercentagesProcedure is the fully-qualified name of the // PlatformService's BulkUpdateProposalRolloutPercentages RPC. PlatformServiceBulkUpdateProposalRolloutPercentagesProcedure = "/wg.cosmo.platform.v1.PlatformService/BulkUpdateProposalRolloutPercentages" @@ -756,6 +759,7 @@ var ( platformServiceGetNamespaceProposalConfigMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetNamespaceProposalConfig") platformServiceGetProposalsByFederatedGraphMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetProposalsByFederatedGraph") platformServiceGetProposalChecksMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetProposalChecks") + platformServiceGetCacheCohortConfigVersionsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetCacheCohortConfigVersions") platformServiceBulkUpdateProposalRolloutPercentagesMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("BulkUpdateProposalRolloutPercentages") platformServiceTeardownProposalRolloutMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("TeardownProposalRollout") platformServiceGetOperationsMethodDescriptor = platformServiceServiceDescriptor.Methods().ByName("GetOperations") @@ -1093,6 +1097,14 @@ type PlatformServiceClient interface { GetProposalsByFederatedGraph(context.Context, *connect.Request[v1.GetProposalsByFederatedGraphRequest]) (*connect.Response[v1.GetProposalsByFederatedGraphResponse], error) // GetProposalChecks returns checks for a proposal. GetProposalChecks(context.Context, *connect.Request[v1.GetProposalChecksRequest]) (*connect.Response[v1.GetProposalChecksResponse], error) + // GetCacheCohortConfigVersions returns all RouterConfigVersion (schemaVersion.id) + // UUIDs that have ever been minted for the given (federated_graph_id, + // feature_flag_id) cohort, newest first. Used by hub to filter + // gql_cache_events_raw across the full set of config versions a feature + // flag has produced (proposal unapprove→re-approve cycles mint new + // schemaVersions). Pass feature_flag_id unset to fetch the base/main + // cohort's config versions. + GetCacheCohortConfigVersions(context.Context, *connect.Request[v1.GetCacheCohortConfigVersionsRequest]) (*connect.Response[v1.GetCacheCohortConfigVersionsResponse], error) // BulkUpdateProposalRolloutPercentages atomically creates or updates rollout // percentages across one or more proposals on the same federated graph. For // proposals without an existing rollout, the handler creates feature subgraphs @@ -2166,6 +2178,12 @@ func NewPlatformServiceClient(httpClient connect.HTTPClient, baseURL string, opt connect.WithSchema(platformServiceGetProposalChecksMethodDescriptor), connect.WithClientOptions(opts...), ), + getCacheCohortConfigVersions: connect.NewClient[v1.GetCacheCohortConfigVersionsRequest, v1.GetCacheCohortConfigVersionsResponse]( + httpClient, + baseURL+PlatformServiceGetCacheCohortConfigVersionsProcedure, + connect.WithSchema(platformServiceGetCacheCohortConfigVersionsMethodDescriptor), + connect.WithClientOptions(opts...), + ), bulkUpdateProposalRolloutPercentages: connect.NewClient[v1.BulkUpdateProposalRolloutPercentagesRequest, v1.BulkUpdateProposalRolloutPercentagesResponse]( httpClient, baseURL+PlatformServiceBulkUpdateProposalRolloutPercentagesProcedure, @@ -2408,6 +2426,7 @@ type platformServiceClient struct { getNamespaceProposalConfig *connect.Client[v1.GetNamespaceProposalConfigRequest, v1.GetNamespaceProposalConfigResponse] getProposalsByFederatedGraph *connect.Client[v1.GetProposalsByFederatedGraphRequest, v1.GetProposalsByFederatedGraphResponse] getProposalChecks *connect.Client[v1.GetProposalChecksRequest, v1.GetProposalChecksResponse] + getCacheCohortConfigVersions *connect.Client[v1.GetCacheCohortConfigVersionsRequest, v1.GetCacheCohortConfigVersionsResponse] bulkUpdateProposalRolloutPercentages *connect.Client[v1.BulkUpdateProposalRolloutPercentagesRequest, v1.BulkUpdateProposalRolloutPercentagesResponse] teardownProposalRollout *connect.Client[v1.TeardownProposalRolloutRequest, v1.TeardownProposalRolloutResponse] getOperations *connect.Client[v1.GetOperationsRequest, v1.GetOperationsResponse] @@ -3314,6 +3333,12 @@ func (c *platformServiceClient) GetProposalChecks(ctx context.Context, req *conn return c.getProposalChecks.CallUnary(ctx, req) } +// GetCacheCohortConfigVersions calls +// wg.cosmo.platform.v1.PlatformService.GetCacheCohortConfigVersions. +func (c *platformServiceClient) GetCacheCohortConfigVersions(ctx context.Context, req *connect.Request[v1.GetCacheCohortConfigVersionsRequest]) (*connect.Response[v1.GetCacheCohortConfigVersionsResponse], error) { + return c.getCacheCohortConfigVersions.CallUnary(ctx, req) +} + // BulkUpdateProposalRolloutPercentages calls // wg.cosmo.platform.v1.PlatformService.BulkUpdateProposalRolloutPercentages. func (c *platformServiceClient) BulkUpdateProposalRolloutPercentages(ctx context.Context, req *connect.Request[v1.BulkUpdateProposalRolloutPercentagesRequest]) (*connect.Response[v1.BulkUpdateProposalRolloutPercentagesResponse], error) { @@ -3695,6 +3720,14 @@ type PlatformServiceHandler interface { GetProposalsByFederatedGraph(context.Context, *connect.Request[v1.GetProposalsByFederatedGraphRequest]) (*connect.Response[v1.GetProposalsByFederatedGraphResponse], error) // GetProposalChecks returns checks for a proposal. GetProposalChecks(context.Context, *connect.Request[v1.GetProposalChecksRequest]) (*connect.Response[v1.GetProposalChecksResponse], error) + // GetCacheCohortConfigVersions returns all RouterConfigVersion (schemaVersion.id) + // UUIDs that have ever been minted for the given (federated_graph_id, + // feature_flag_id) cohort, newest first. Used by hub to filter + // gql_cache_events_raw across the full set of config versions a feature + // flag has produced (proposal unapprove→re-approve cycles mint new + // schemaVersions). Pass feature_flag_id unset to fetch the base/main + // cohort's config versions. + GetCacheCohortConfigVersions(context.Context, *connect.Request[v1.GetCacheCohortConfigVersionsRequest]) (*connect.Response[v1.GetCacheCohortConfigVersionsResponse], error) // BulkUpdateProposalRolloutPercentages atomically creates or updates rollout // percentages across one or more proposals on the same federated graph. For // proposals without an existing rollout, the handler creates feature subgraphs @@ -4764,6 +4797,12 @@ func NewPlatformServiceHandler(svc PlatformServiceHandler, opts ...connect.Handl connect.WithSchema(platformServiceGetProposalChecksMethodDescriptor), connect.WithHandlerOptions(opts...), ) + platformServiceGetCacheCohortConfigVersionsHandler := connect.NewUnaryHandler( + PlatformServiceGetCacheCohortConfigVersionsProcedure, + svc.GetCacheCohortConfigVersions, + connect.WithSchema(platformServiceGetCacheCohortConfigVersionsMethodDescriptor), + connect.WithHandlerOptions(opts...), + ) platformServiceBulkUpdateProposalRolloutPercentagesHandler := connect.NewUnaryHandler( PlatformServiceBulkUpdateProposalRolloutPercentagesProcedure, svc.BulkUpdateProposalRolloutPercentages, @@ -5174,6 +5213,8 @@ func NewPlatformServiceHandler(svc PlatformServiceHandler, opts ...connect.Handl platformServiceGetProposalsByFederatedGraphHandler.ServeHTTP(w, r) case PlatformServiceGetProposalChecksProcedure: platformServiceGetProposalChecksHandler.ServeHTTP(w, r) + case PlatformServiceGetCacheCohortConfigVersionsProcedure: + platformServiceGetCacheCohortConfigVersionsHandler.ServeHTTP(w, r) case PlatformServiceBulkUpdateProposalRolloutPercentagesProcedure: platformServiceBulkUpdateProposalRolloutPercentagesHandler.ServeHTTP(w, r) case PlatformServiceTeardownProposalRolloutProcedure: @@ -5889,6 +5930,10 @@ func (UnimplementedPlatformServiceHandler) GetProposalChecks(context.Context, *c return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.GetProposalChecks is not implemented")) } +func (UnimplementedPlatformServiceHandler) GetCacheCohortConfigVersions(context.Context, *connect.Request[v1.GetCacheCohortConfigVersionsRequest]) (*connect.Response[v1.GetCacheCohortConfigVersionsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.GetCacheCohortConfigVersions is not implemented")) +} + func (UnimplementedPlatformServiceHandler) BulkUpdateProposalRolloutPercentages(context.Context, *connect.Request[v1.BulkUpdateProposalRolloutPercentagesRequest]) (*connect.Response[v1.BulkUpdateProposalRolloutPercentagesResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("wg.cosmo.platform.v1.PlatformService.BulkUpdateProposalRolloutPercentages is not implemented")) } diff --git a/connect/src/wg/cosmo/platform/v1/platform-PlatformService_connectquery.ts b/connect/src/wg/cosmo/platform/v1/platform-PlatformService_connectquery.ts index d80fe90878..f419f37f2d 100644 --- a/connect/src/wg/cosmo/platform/v1/platform-PlatformService_connectquery.ts +++ b/connect/src/wg/cosmo/platform/v1/platform-PlatformService_connectquery.ts @@ -6,7 +6,7 @@ // @ts-nocheck import { MethodIdempotency, MethodKind } from "@bufbuild/protobuf"; -import { AcceptOrDeclineInvitationRequest, AcceptOrDeclineInvitationResponse, AddReadmeRequest, AddReadmeResponse, BulkUpdateProposalRolloutPercentagesRequest, BulkUpdateProposalRolloutPercentagesResponse, CheckFederatedGraphRequest, CheckFederatedGraphResponse, CheckPersistedOperationTrafficRequest, CheckPersistedOperationTrafficResponse, CheckSubgraphSchemaRequest, CheckSubgraphSchemaResponse, ComputeCacheWarmerOperationsRequest, ComputeCacheWarmerOperationsResponse, ConfigureCacheWarmerRequest, ConfigureCacheWarmerResponse, ConfigureNamespaceGraphPruningConfigRequest, ConfigureNamespaceGraphPruningConfigResponse, ConfigureNamespaceLintConfigRequest, ConfigureNamespaceLintConfigResponse, ConfigureNamespaceProposalConfigRequest, ConfigureNamespaceProposalConfigResponse, ConfigureSubgraphCheckExtensionsRequest, ConfigureSubgraphCheckExtensionsResponse, CreateAPIKeyRequest, CreateAPIKeyResponse, CreateBillingPortalSessionRequest, CreateBillingPortalSessionResponse, CreateCheckoutSessionRequest, CreateCheckoutSessionResponse, CreateContractRequest, CreateContractResponse, CreateFeatureFlagRequest, CreateFeatureFlagResponse, CreateFederatedGraphRequest, CreateFederatedGraphResponse, CreateFederatedGraphTokenRequest, CreateFederatedGraphTokenResponse, CreateFederatedSubgraphRequest, CreateFederatedSubgraphResponse, CreateIgnoreOverridesForAllOperationsRequest, CreateIgnoreOverridesForAllOperationsResponse, CreateIntegrationRequest, CreateIntegrationResponse, CreateMonographRequest, CreateMonographResponse, CreateNamespaceRequest, CreateNamespaceResponse, CreateOIDCProviderRequest, CreateOIDCProviderResponse, CreateOperationIgnoreAllOverrideRequest, CreateOperationIgnoreAllOverrideResponse, CreateOperationOverridesRequest, CreateOperationOverridesResponse, CreateOrganizationGroupRequest, CreateOrganizationGroupResponse, CreateOrganizationRequest, CreateOrganizationResponse, CreateOrganizationWebhookConfigRequest, CreateOrganizationWebhookConfigResponse, CreatePlaygroundScriptRequest, CreatePlaygroundScriptResponse, CreateProposalRequest, CreateProposalResponse, DeleteAPIKeyRequest, DeleteAPIKeyResponse, DeleteCacheWarmerOperationRequest, DeleteCacheWarmerOperationResponse, DeleteFeatureFlagRequest, DeleteFeatureFlagResponse, DeleteFederatedGraphRequest, DeleteFederatedGraphResponse, DeleteFederatedSubgraphRequest, DeleteFederatedSubgraphResponse, DeleteIntegrationRequest, DeleteIntegrationResponse, DeleteMonographRequest, DeleteMonographResponse, DeleteNamespaceRequest, DeleteNamespaceResponse, DeleteOIDCProviderRequest, DeleteOIDCProviderResponse, DeleteOrganizationGroupRequest, DeleteOrganizationGroupResponse, DeleteOrganizationRequest, DeleteOrganizationResponse, DeleteOrganizationWebhookConfigRequest, DeleteOrganizationWebhookConfigResponse, DeletePersistedOperationRequest, DeletePersistedOperationResponse, DeletePlaygroundScriptRequest, DeletePlaygroundScriptResponse, DeleteRouterTokenRequest, DeleteRouterTokenResponse, DeleteUserRequest, DeleteUserResponse, EnableFeatureFlagRequest, EnableFeatureFlagResponse, EnableGraphPruningRequest, EnableGraphPruningResponse, EnableLintingForTheNamespaceRequest, EnableLintingForTheNamespaceResponse, EnableProposalsForNamespaceRequest, EnableProposalsForNamespaceResponse, FixSubgraphSchemaRequest, FixSubgraphSchemaResponse, ForceCheckSuccessRequest, ForceCheckSuccessResponse, GenerateRouterTokenRequest, GenerateRouterTokenResponse, GetAllOverridesRequest, GetAllOverridesResponse, GetAnalyticsViewRequest, GetAnalyticsViewResponse, GetAPIKeysRequest, GetAPIKeysResponse, GetAuditLogsRequest, GetAuditLogsResponse, GetBillingPlansRequest, GetBillingPlansResponse, GetCacheWarmerConfigRequest, GetCacheWarmerConfigResponse, GetCacheWarmerOperationsRequest, GetCacheWarmerOperationsResponse, GetChangelogBySchemaVersionRequest, GetChangelogBySchemaVersionResponse, GetCheckOperationsRequest, GetCheckOperationsResponse, GetChecksByFederatedGraphNameRequest, GetChecksByFederatedGraphNameResponse, GetCheckSummaryRequest, GetCheckSummaryResponse, GetClientsFromAnalyticsRequest, GetClientsFromAnalyticsResponse, GetClientsRequest, GetClientsResponse, GetCompositionDetailsRequest, GetCompositionDetailsResponse, GetCompositionsRequest, GetCompositionsResponse, GetDashboardAnalyticsViewRequest, GetDashboardAnalyticsViewResponse, GetFeatureFlagByNameRequest, GetFeatureFlagByNameResponse, GetFeatureFlagsByFederatedGraphRequest, GetFeatureFlagsByFederatedGraphResponse, GetFeatureFlagsInLatestCompositionByFederatedGraphRequest, GetFeatureFlagsInLatestCompositionByFederatedGraphResponse, GetFeatureFlagsRequest, GetFeatureFlagsResponse, GetFeatureSubgraphsByFeatureFlagRequest, GetFeatureSubgraphsByFeatureFlagResponse, GetFeatureSubgraphsByFederatedGraphRequest, GetFeatureSubgraphsByFederatedGraphResponse, GetFeatureSubgraphsRequest, GetFeatureSubgraphsResponse, GetFederatedGraphByIdRequest, GetFederatedGraphByIdResponse, GetFederatedGraphByNameRequest, GetFederatedGraphByNameResponse, GetFederatedGraphChangelogRequest, GetFederatedGraphChangelogResponse, GetFederatedGraphsBySubgraphLabelsRequest, GetFederatedGraphsBySubgraphLabelsResponse, GetFederatedGraphSDLByNameRequest, GetFederatedGraphSDLByNameResponse, GetFederatedGraphsRequest, GetFederatedGraphsResponse, GetFieldUsageRequest, GetFieldUsageResponse, GetGraphMetricsRequest, GetGraphMetricsResponse, GetInvitationsRequest, GetInvitationsResponse, GetLatestSubgraphSDLRequest, GetLatestSubgraphSDLResponse, GetMetricsErrorRateRequest, GetMetricsErrorRateResponse, GetNamespaceChecksConfigurationRequest, GetNamespaceChecksConfigurationResponse, GetNamespaceGraphPruningConfigRequest, GetNamespaceGraphPruningConfigResponse, GetNamespaceLintConfigRequest, GetNamespaceLintConfigResponse, GetNamespaceProposalConfigRequest, GetNamespaceProposalConfigResponse, GetNamespaceRequest, GetNamespaceResponse, GetNamespacesRequest, GetNamespacesResponse, GetOIDCProviderRequest, GetOIDCProviderResponse, GetOperationClientsRequest, GetOperationClientsResponse, GetOperationContentRequest, GetOperationContentResponse, GetOperationDeprecatedFieldsRequest, GetOperationDeprecatedFieldsResponse, GetOperationOverridesRequest, GetOperationOverridesResponse, GetOperationsRequest, GetOperationsResponse, GetOrganizationBySlugRequest, GetOrganizationBySlugResponse, GetOrganizationGroupMembersRequest, GetOrganizationGroupMembersResponse, GetOrganizationGroupsRequest, GetOrganizationGroupsResponse, GetOrganizationIntegrationsRequest, GetOrganizationIntegrationsResponse, GetOrganizationMembersRequest, GetOrganizationMembersResponse, GetOrganizationRequestsCountRequest, GetOrganizationRequestsCountResponse, GetOrganizationWebhookConfigsRequest, GetOrganizationWebhookConfigsResponse, GetOrganizationWebhookHistoryRequest, GetOrganizationWebhookHistoryResponse, GetOrganizationWebhookMetaRequest, GetOrganizationWebhookMetaResponse, GetPendingOrganizationMembersRequest, GetPendingOrganizationMembersResponse, GetPersistedOperationsRequest, GetPersistedOperationsResponse, GetPlaygroundScriptsRequest, GetPlaygroundScriptsResponse, GetProposalChecksRequest, GetProposalChecksResponse, GetProposalRequest, GetProposalResponse, GetProposalsByFederatedGraphRequest, GetProposalsByFederatedGraphResponse, GetProposedSchemaOfCheckedSubgraphRequest, GetProposedSchemaOfCheckedSubgraphResponse, GetRoutersRequest, GetRoutersResponse, GetRouterTokensRequest, GetRouterTokensResponse, GetSdlBySchemaVersionRequest, GetSdlBySchemaVersionResponse, GetSubgraphByIdRequest, GetSubgraphByIdResponse, GetSubgraphByNameRequest, GetSubgraphByNameResponse, GetSubgraphCheckExtensionsConfigRequest, GetSubgraphCheckExtensionsConfigResponse, GetSubgraphMembersRequest, GetSubgraphMembersResponse, GetSubgraphMetricsErrorRateRequest, GetSubgraphMetricsErrorRateResponse, GetSubgraphMetricsRequest, GetSubgraphMetricsResponse, GetSubgraphSDLFromLatestCompositionRequest, GetSubgraphSDLFromLatestCompositionResponse, GetSubgraphsRequest, GetSubgraphsResponse, GetTraceRequest, GetTraceResponse, GetUserAccessiblePermissionsRequest, GetUserAccessiblePermissionsResponse, GetUserAccessibleResourcesRequest, GetUserAccessibleResourcesResponse, GetWebhookDeliveryDetailsRequest, GetWebhookDeliveryDetailsResponse, GetWorkspaceRequest, GetWorkspaceResponse, InitializeCosmoUserRequest, InitializeCosmoUserResponse, InviteUserRequest, InviteUserResponse, IsGitHubAppInstalledRequest, IsGitHubAppInstalledResponse, IsMemberLimitReachedRequest, IsMemberLimitReachedResponse, LeaveOrganizationRequest, LeaveOrganizationResponse, LinkSubgraphRequest, LinkSubgraphResponse, ListOrganizationsRequest, ListOrganizationsResponse, ListRouterCompatibilityVersionsRequest, ListRouterCompatibilityVersionsResponse, MigrateFromApolloRequest, MigrateFromApolloResponse, MigrateMonographRequest, MigrateMonographResponse, MoveGraphRequest, MoveGraphResponse, PublishFederatedSubgraphRequest, PublishFederatedSubgraphResponse, PublishMonographRequest, PublishMonographResponse, PublishPersistedOperationsRequest, PublishPersistedOperationsResponse, PushCacheWarmerOperationRequest, PushCacheWarmerOperationResponse, RecomposeGraphRequest, RecomposeGraphResponse, RedeliverWebhookRequest, RedeliverWebhookResponse, RemoveInvitationRequest, RemoveInvitationResponse, RemoveOperationIgnoreAllOverrideRequest, RemoveOperationIgnoreAllOverrideResponse, RemoveOperationOverridesRequest, RemoveOperationOverridesResponse, RemoveOrganizationMemberRequest, RemoveOrganizationMemberResponse, RenameNamespaceRequest, RenameNamespaceResponse, RestoreOrganizationRequest, RestoreOrganizationResponse, SetGraphRouterCompatibilityVersionRequest, SetGraphRouterCompatibilityVersionResponse, TeardownProposalRolloutRequest, TeardownProposalRolloutResponse, ToggleChangeOverridesForAllOperationsRequest, ToggleChangeOverridesForAllOperationsResponse, UnlinkSubgraphRequest, UnlinkSubgraphResponse, UpdateAPIKeyRequest, UpdateAPIKeyResponse, UpdateContractRequest, UpdateContractResponse, UpdateFeatureFlagRequest, UpdateFeatureFlagResponse, UpdateFeatureSettingsRequest, UpdateFeatureSettingsResponse, UpdateFederatedGraphRequest, UpdateFederatedGraphResponse, UpdateIDPMappersRequest, UpdateIDPMappersResponse, UpdateIntegrationConfigRequest, UpdateIntegrationConfigResponse, UpdateMonographRequest, UpdateMonographResponse, UpdateNamespaceChecksConfigurationRequest, UpdateNamespaceChecksConfigurationResponse, UpdateOrganizationDetailsRequest, UpdateOrganizationDetailsResponse, UpdateOrganizationGroupRequest, UpdateOrganizationGroupResponse, UpdateOrganizationWebhookConfigRequest, UpdateOrganizationWebhookConfigResponse, UpdateOrgMemberGroupRequest, UpdateOrgMemberGroupResponse, UpdatePlaygroundScriptRequest, UpdatePlaygroundScriptResponse, UpdateProposalRequest, UpdateProposalResponse, UpdateSubgraphRequest, UpdateSubgraphResponse, UpgradePlanRequest, UpgradePlanResponse, ValidateAndFetchPluginDataRequest, ValidateAndFetchPluginDataResponse, VerifyAPIKeyGraphAccessRequest, VerifyAPIKeyGraphAccessResponse, WhoAmIRequest, WhoAmIResponse } from "./platform_pb.js"; +import { AcceptOrDeclineInvitationRequest, AcceptOrDeclineInvitationResponse, AddReadmeRequest, AddReadmeResponse, BulkUpdateProposalRolloutPercentagesRequest, BulkUpdateProposalRolloutPercentagesResponse, CheckFederatedGraphRequest, CheckFederatedGraphResponse, CheckPersistedOperationTrafficRequest, CheckPersistedOperationTrafficResponse, CheckSubgraphSchemaRequest, CheckSubgraphSchemaResponse, ComputeCacheWarmerOperationsRequest, ComputeCacheWarmerOperationsResponse, ConfigureCacheWarmerRequest, ConfigureCacheWarmerResponse, ConfigureNamespaceGraphPruningConfigRequest, ConfigureNamespaceGraphPruningConfigResponse, ConfigureNamespaceLintConfigRequest, ConfigureNamespaceLintConfigResponse, ConfigureNamespaceProposalConfigRequest, ConfigureNamespaceProposalConfigResponse, ConfigureSubgraphCheckExtensionsRequest, ConfigureSubgraphCheckExtensionsResponse, CreateAPIKeyRequest, CreateAPIKeyResponse, CreateBillingPortalSessionRequest, CreateBillingPortalSessionResponse, CreateCheckoutSessionRequest, CreateCheckoutSessionResponse, CreateContractRequest, CreateContractResponse, CreateFeatureFlagRequest, CreateFeatureFlagResponse, CreateFederatedGraphRequest, CreateFederatedGraphResponse, CreateFederatedGraphTokenRequest, CreateFederatedGraphTokenResponse, CreateFederatedSubgraphRequest, CreateFederatedSubgraphResponse, CreateIgnoreOverridesForAllOperationsRequest, CreateIgnoreOverridesForAllOperationsResponse, CreateIntegrationRequest, CreateIntegrationResponse, CreateMonographRequest, CreateMonographResponse, CreateNamespaceRequest, CreateNamespaceResponse, CreateOIDCProviderRequest, CreateOIDCProviderResponse, CreateOperationIgnoreAllOverrideRequest, CreateOperationIgnoreAllOverrideResponse, CreateOperationOverridesRequest, CreateOperationOverridesResponse, CreateOrganizationGroupRequest, CreateOrganizationGroupResponse, CreateOrganizationRequest, CreateOrganizationResponse, CreateOrganizationWebhookConfigRequest, CreateOrganizationWebhookConfigResponse, CreatePlaygroundScriptRequest, CreatePlaygroundScriptResponse, CreateProposalRequest, CreateProposalResponse, DeleteAPIKeyRequest, DeleteAPIKeyResponse, DeleteCacheWarmerOperationRequest, DeleteCacheWarmerOperationResponse, DeleteFeatureFlagRequest, DeleteFeatureFlagResponse, DeleteFederatedGraphRequest, DeleteFederatedGraphResponse, DeleteFederatedSubgraphRequest, DeleteFederatedSubgraphResponse, DeleteIntegrationRequest, DeleteIntegrationResponse, DeleteMonographRequest, DeleteMonographResponse, DeleteNamespaceRequest, DeleteNamespaceResponse, DeleteOIDCProviderRequest, DeleteOIDCProviderResponse, DeleteOrganizationGroupRequest, DeleteOrganizationGroupResponse, DeleteOrganizationRequest, DeleteOrganizationResponse, DeleteOrganizationWebhookConfigRequest, DeleteOrganizationWebhookConfigResponse, DeletePersistedOperationRequest, DeletePersistedOperationResponse, DeletePlaygroundScriptRequest, DeletePlaygroundScriptResponse, DeleteRouterTokenRequest, DeleteRouterTokenResponse, DeleteUserRequest, DeleteUserResponse, EnableFeatureFlagRequest, EnableFeatureFlagResponse, EnableGraphPruningRequest, EnableGraphPruningResponse, EnableLintingForTheNamespaceRequest, EnableLintingForTheNamespaceResponse, EnableProposalsForNamespaceRequest, EnableProposalsForNamespaceResponse, FixSubgraphSchemaRequest, FixSubgraphSchemaResponse, ForceCheckSuccessRequest, ForceCheckSuccessResponse, GenerateRouterTokenRequest, GenerateRouterTokenResponse, GetAllOverridesRequest, GetAllOverridesResponse, GetAnalyticsViewRequest, GetAnalyticsViewResponse, GetAPIKeysRequest, GetAPIKeysResponse, GetAuditLogsRequest, GetAuditLogsResponse, GetBillingPlansRequest, GetBillingPlansResponse, GetCacheCohortConfigVersionsRequest, GetCacheCohortConfigVersionsResponse, GetCacheWarmerConfigRequest, GetCacheWarmerConfigResponse, GetCacheWarmerOperationsRequest, GetCacheWarmerOperationsResponse, GetChangelogBySchemaVersionRequest, GetChangelogBySchemaVersionResponse, GetCheckOperationsRequest, GetCheckOperationsResponse, GetChecksByFederatedGraphNameRequest, GetChecksByFederatedGraphNameResponse, GetCheckSummaryRequest, GetCheckSummaryResponse, GetClientsFromAnalyticsRequest, GetClientsFromAnalyticsResponse, GetClientsRequest, GetClientsResponse, GetCompositionDetailsRequest, GetCompositionDetailsResponse, GetCompositionsRequest, GetCompositionsResponse, GetDashboardAnalyticsViewRequest, GetDashboardAnalyticsViewResponse, GetFeatureFlagByNameRequest, GetFeatureFlagByNameResponse, GetFeatureFlagsByFederatedGraphRequest, GetFeatureFlagsByFederatedGraphResponse, GetFeatureFlagsInLatestCompositionByFederatedGraphRequest, GetFeatureFlagsInLatestCompositionByFederatedGraphResponse, GetFeatureFlagsRequest, GetFeatureFlagsResponse, GetFeatureSubgraphsByFeatureFlagRequest, GetFeatureSubgraphsByFeatureFlagResponse, GetFeatureSubgraphsByFederatedGraphRequest, GetFeatureSubgraphsByFederatedGraphResponse, GetFeatureSubgraphsRequest, GetFeatureSubgraphsResponse, GetFederatedGraphByIdRequest, GetFederatedGraphByIdResponse, GetFederatedGraphByNameRequest, GetFederatedGraphByNameResponse, GetFederatedGraphChangelogRequest, GetFederatedGraphChangelogResponse, GetFederatedGraphsBySubgraphLabelsRequest, GetFederatedGraphsBySubgraphLabelsResponse, GetFederatedGraphSDLByNameRequest, GetFederatedGraphSDLByNameResponse, GetFederatedGraphsRequest, GetFederatedGraphsResponse, GetFieldUsageRequest, GetFieldUsageResponse, GetGraphMetricsRequest, GetGraphMetricsResponse, GetInvitationsRequest, GetInvitationsResponse, GetLatestSubgraphSDLRequest, GetLatestSubgraphSDLResponse, GetMetricsErrorRateRequest, GetMetricsErrorRateResponse, GetNamespaceChecksConfigurationRequest, GetNamespaceChecksConfigurationResponse, GetNamespaceGraphPruningConfigRequest, GetNamespaceGraphPruningConfigResponse, GetNamespaceLintConfigRequest, GetNamespaceLintConfigResponse, GetNamespaceProposalConfigRequest, GetNamespaceProposalConfigResponse, GetNamespaceRequest, GetNamespaceResponse, GetNamespacesRequest, GetNamespacesResponse, GetOIDCProviderRequest, GetOIDCProviderResponse, GetOperationClientsRequest, GetOperationClientsResponse, GetOperationContentRequest, GetOperationContentResponse, GetOperationDeprecatedFieldsRequest, GetOperationDeprecatedFieldsResponse, GetOperationOverridesRequest, GetOperationOverridesResponse, GetOperationsRequest, GetOperationsResponse, GetOrganizationBySlugRequest, GetOrganizationBySlugResponse, GetOrganizationGroupMembersRequest, GetOrganizationGroupMembersResponse, GetOrganizationGroupsRequest, GetOrganizationGroupsResponse, GetOrganizationIntegrationsRequest, GetOrganizationIntegrationsResponse, GetOrganizationMembersRequest, GetOrganizationMembersResponse, GetOrganizationRequestsCountRequest, GetOrganizationRequestsCountResponse, GetOrganizationWebhookConfigsRequest, GetOrganizationWebhookConfigsResponse, GetOrganizationWebhookHistoryRequest, GetOrganizationWebhookHistoryResponse, GetOrganizationWebhookMetaRequest, GetOrganizationWebhookMetaResponse, GetPendingOrganizationMembersRequest, GetPendingOrganizationMembersResponse, GetPersistedOperationsRequest, GetPersistedOperationsResponse, GetPlaygroundScriptsRequest, GetPlaygroundScriptsResponse, GetProposalChecksRequest, GetProposalChecksResponse, GetProposalRequest, GetProposalResponse, GetProposalsByFederatedGraphRequest, GetProposalsByFederatedGraphResponse, GetProposedSchemaOfCheckedSubgraphRequest, GetProposedSchemaOfCheckedSubgraphResponse, GetRoutersRequest, GetRoutersResponse, GetRouterTokensRequest, GetRouterTokensResponse, GetSdlBySchemaVersionRequest, GetSdlBySchemaVersionResponse, GetSubgraphByIdRequest, GetSubgraphByIdResponse, GetSubgraphByNameRequest, GetSubgraphByNameResponse, GetSubgraphCheckExtensionsConfigRequest, GetSubgraphCheckExtensionsConfigResponse, GetSubgraphMembersRequest, GetSubgraphMembersResponse, GetSubgraphMetricsErrorRateRequest, GetSubgraphMetricsErrorRateResponse, GetSubgraphMetricsRequest, GetSubgraphMetricsResponse, GetSubgraphSDLFromLatestCompositionRequest, GetSubgraphSDLFromLatestCompositionResponse, GetSubgraphsRequest, GetSubgraphsResponse, GetTraceRequest, GetTraceResponse, GetUserAccessiblePermissionsRequest, GetUserAccessiblePermissionsResponse, GetUserAccessibleResourcesRequest, GetUserAccessibleResourcesResponse, GetWebhookDeliveryDetailsRequest, GetWebhookDeliveryDetailsResponse, GetWorkspaceRequest, GetWorkspaceResponse, InitializeCosmoUserRequest, InitializeCosmoUserResponse, InviteUserRequest, InviteUserResponse, IsGitHubAppInstalledRequest, IsGitHubAppInstalledResponse, IsMemberLimitReachedRequest, IsMemberLimitReachedResponse, LeaveOrganizationRequest, LeaveOrganizationResponse, LinkSubgraphRequest, LinkSubgraphResponse, ListOrganizationsRequest, ListOrganizationsResponse, ListRouterCompatibilityVersionsRequest, ListRouterCompatibilityVersionsResponse, MigrateFromApolloRequest, MigrateFromApolloResponse, MigrateMonographRequest, MigrateMonographResponse, MoveGraphRequest, MoveGraphResponse, PublishFederatedSubgraphRequest, PublishFederatedSubgraphResponse, PublishMonographRequest, PublishMonographResponse, PublishPersistedOperationsRequest, PublishPersistedOperationsResponse, PushCacheWarmerOperationRequest, PushCacheWarmerOperationResponse, RecomposeGraphRequest, RecomposeGraphResponse, RedeliverWebhookRequest, RedeliverWebhookResponse, RemoveInvitationRequest, RemoveInvitationResponse, RemoveOperationIgnoreAllOverrideRequest, RemoveOperationIgnoreAllOverrideResponse, RemoveOperationOverridesRequest, RemoveOperationOverridesResponse, RemoveOrganizationMemberRequest, RemoveOrganizationMemberResponse, RenameNamespaceRequest, RenameNamespaceResponse, RestoreOrganizationRequest, RestoreOrganizationResponse, SetGraphRouterCompatibilityVersionRequest, SetGraphRouterCompatibilityVersionResponse, TeardownProposalRolloutRequest, TeardownProposalRolloutResponse, ToggleChangeOverridesForAllOperationsRequest, ToggleChangeOverridesForAllOperationsResponse, UnlinkSubgraphRequest, UnlinkSubgraphResponse, UpdateAPIKeyRequest, UpdateAPIKeyResponse, UpdateContractRequest, UpdateContractResponse, UpdateFeatureFlagRequest, UpdateFeatureFlagResponse, UpdateFeatureSettingsRequest, UpdateFeatureSettingsResponse, UpdateFederatedGraphRequest, UpdateFederatedGraphResponse, UpdateIDPMappersRequest, UpdateIDPMappersResponse, UpdateIntegrationConfigRequest, UpdateIntegrationConfigResponse, UpdateMonographRequest, UpdateMonographResponse, UpdateNamespaceChecksConfigurationRequest, UpdateNamespaceChecksConfigurationResponse, UpdateOrganizationDetailsRequest, UpdateOrganizationDetailsResponse, UpdateOrganizationGroupRequest, UpdateOrganizationGroupResponse, UpdateOrganizationWebhookConfigRequest, UpdateOrganizationWebhookConfigResponse, UpdateOrgMemberGroupRequest, UpdateOrgMemberGroupResponse, UpdatePlaygroundScriptRequest, UpdatePlaygroundScriptResponse, UpdateProposalRequest, UpdateProposalResponse, UpdateSubgraphRequest, UpdateSubgraphResponse, UpgradePlanRequest, UpgradePlanResponse, ValidateAndFetchPluginDataRequest, ValidateAndFetchPluginDataResponse, VerifyAPIKeyGraphAccessRequest, VerifyAPIKeyGraphAccessResponse, WhoAmIRequest, WhoAmIResponse } from "./platform_pb.js"; /** * PlaygroundScripts @@ -2708,6 +2708,28 @@ export const getProposalChecks = { } } as const; +/** + * GetCacheCohortConfigVersions returns all RouterConfigVersion (schemaVersion.id) + * UUIDs that have ever been minted for the given (federated_graph_id, + * feature_flag_id) cohort, newest first. Used by hub to filter + * gql_cache_events_raw across the full set of config versions a feature + * flag has produced (proposal unapprove→re-approve cycles mint new + * schemaVersions). Pass feature_flag_id unset to fetch the base/main + * cohort's config versions. + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.GetCacheCohortConfigVersions + */ +export const getCacheCohortConfigVersions = { + localName: "getCacheCohortConfigVersions", + name: "GetCacheCohortConfigVersions", + kind: MethodKind.Unary, + I: GetCacheCohortConfigVersionsRequest, + O: GetCacheCohortConfigVersionsResponse, + service: { + typeName: "wg.cosmo.platform.v1.PlatformService" + } +} as const; + /** * BulkUpdateProposalRolloutPercentages atomically creates or updates rollout * percentages across one or more proposals on the same federated graph. For diff --git a/connect/src/wg/cosmo/platform/v1/platform_connect.ts b/connect/src/wg/cosmo/platform/v1/platform_connect.ts index f42626513b..6e6925f817 100644 --- a/connect/src/wg/cosmo/platform/v1/platform_connect.ts +++ b/connect/src/wg/cosmo/platform/v1/platform_connect.ts @@ -5,7 +5,7 @@ /* eslint-disable */ // @ts-nocheck -import { AcceptOrDeclineInvitationRequest, AcceptOrDeclineInvitationResponse, AddReadmeRequest, AddReadmeResponse, BulkUpdateProposalRolloutPercentagesRequest, BulkUpdateProposalRolloutPercentagesResponse, CheckFederatedGraphRequest, CheckFederatedGraphResponse, CheckPersistedOperationTrafficRequest, CheckPersistedOperationTrafficResponse, CheckSubgraphSchemaRequest, CheckSubgraphSchemaResponse, ComputeCacheWarmerOperationsRequest, ComputeCacheWarmerOperationsResponse, ConfigureCacheWarmerRequest, ConfigureCacheWarmerResponse, ConfigureNamespaceGraphPruningConfigRequest, ConfigureNamespaceGraphPruningConfigResponse, ConfigureNamespaceLintConfigRequest, ConfigureNamespaceLintConfigResponse, ConfigureNamespaceProposalConfigRequest, ConfigureNamespaceProposalConfigResponse, ConfigureSubgraphCheckExtensionsRequest, ConfigureSubgraphCheckExtensionsResponse, CreateAPIKeyRequest, CreateAPIKeyResponse, CreateBillingPortalSessionRequest, CreateBillingPortalSessionResponse, CreateCheckoutSessionRequest, CreateCheckoutSessionResponse, CreateContractRequest, CreateContractResponse, CreateFeatureFlagRequest, CreateFeatureFlagResponse, CreateFederatedGraphRequest, CreateFederatedGraphResponse, CreateFederatedGraphTokenRequest, CreateFederatedGraphTokenResponse, CreateFederatedSubgraphRequest, CreateFederatedSubgraphResponse, CreateIgnoreOverridesForAllOperationsRequest, CreateIgnoreOverridesForAllOperationsResponse, CreateIntegrationRequest, CreateIntegrationResponse, CreateMonographRequest, CreateMonographResponse, CreateNamespaceRequest, CreateNamespaceResponse, CreateOIDCProviderRequest, CreateOIDCProviderResponse, CreateOperationIgnoreAllOverrideRequest, CreateOperationIgnoreAllOverrideResponse, CreateOperationOverridesRequest, CreateOperationOverridesResponse, CreateOrganizationGroupRequest, CreateOrganizationGroupResponse, CreateOrganizationRequest, CreateOrganizationResponse, CreateOrganizationWebhookConfigRequest, CreateOrganizationWebhookConfigResponse, CreatePlaygroundScriptRequest, CreatePlaygroundScriptResponse, CreateProposalRequest, CreateProposalResponse, DeleteAPIKeyRequest, DeleteAPIKeyResponse, DeleteCacheWarmerOperationRequest, DeleteCacheWarmerOperationResponse, DeleteFeatureFlagRequest, DeleteFeatureFlagResponse, DeleteFederatedGraphRequest, DeleteFederatedGraphResponse, DeleteFederatedSubgraphRequest, DeleteFederatedSubgraphResponse, DeleteIntegrationRequest, DeleteIntegrationResponse, DeleteMonographRequest, DeleteMonographResponse, DeleteNamespaceRequest, DeleteNamespaceResponse, DeleteOIDCProviderRequest, DeleteOIDCProviderResponse, DeleteOrganizationGroupRequest, DeleteOrganizationGroupResponse, DeleteOrganizationRequest, DeleteOrganizationResponse, DeleteOrganizationWebhookConfigRequest, DeleteOrganizationWebhookConfigResponse, DeletePersistedOperationRequest, DeletePersistedOperationResponse, DeletePlaygroundScriptRequest, DeletePlaygroundScriptResponse, DeleteRouterTokenRequest, DeleteRouterTokenResponse, DeleteUserRequest, DeleteUserResponse, EnableFeatureFlagRequest, EnableFeatureFlagResponse, EnableGraphPruningRequest, EnableGraphPruningResponse, EnableLintingForTheNamespaceRequest, EnableLintingForTheNamespaceResponse, EnableProposalsForNamespaceRequest, EnableProposalsForNamespaceResponse, FixSubgraphSchemaRequest, FixSubgraphSchemaResponse, ForceCheckSuccessRequest, ForceCheckSuccessResponse, GenerateRouterTokenRequest, GenerateRouterTokenResponse, GetAllOverridesRequest, GetAllOverridesResponse, GetAnalyticsViewRequest, GetAnalyticsViewResponse, GetAPIKeysRequest, GetAPIKeysResponse, GetAuditLogsRequest, GetAuditLogsResponse, GetBillingPlansRequest, GetBillingPlansResponse, GetCacheWarmerConfigRequest, GetCacheWarmerConfigResponse, GetCacheWarmerOperationsRequest, GetCacheWarmerOperationsResponse, GetChangelogBySchemaVersionRequest, GetChangelogBySchemaVersionResponse, GetCheckOperationsRequest, GetCheckOperationsResponse, GetChecksByFederatedGraphNameRequest, GetChecksByFederatedGraphNameResponse, GetCheckSummaryRequest, GetCheckSummaryResponse, GetClientsFromAnalyticsRequest, GetClientsFromAnalyticsResponse, GetClientsRequest, GetClientsResponse, GetCompositionDetailsRequest, GetCompositionDetailsResponse, GetCompositionsRequest, GetCompositionsResponse, GetDashboardAnalyticsViewRequest, GetDashboardAnalyticsViewResponse, GetFeatureFlagByNameRequest, GetFeatureFlagByNameResponse, GetFeatureFlagsByFederatedGraphRequest, GetFeatureFlagsByFederatedGraphResponse, GetFeatureFlagsInLatestCompositionByFederatedGraphRequest, GetFeatureFlagsInLatestCompositionByFederatedGraphResponse, GetFeatureFlagsRequest, GetFeatureFlagsResponse, GetFeatureSubgraphsByFeatureFlagRequest, GetFeatureSubgraphsByFeatureFlagResponse, GetFeatureSubgraphsByFederatedGraphRequest, GetFeatureSubgraphsByFederatedGraphResponse, GetFeatureSubgraphsRequest, GetFeatureSubgraphsResponse, GetFederatedGraphByIdRequest, GetFederatedGraphByIdResponse, GetFederatedGraphByNameRequest, GetFederatedGraphByNameResponse, GetFederatedGraphChangelogRequest, GetFederatedGraphChangelogResponse, GetFederatedGraphsBySubgraphLabelsRequest, GetFederatedGraphsBySubgraphLabelsResponse, GetFederatedGraphSDLByNameRequest, GetFederatedGraphSDLByNameResponse, GetFederatedGraphsRequest, GetFederatedGraphsResponse, GetFieldUsageRequest, GetFieldUsageResponse, GetGraphMetricsRequest, GetGraphMetricsResponse, GetInvitationsRequest, GetInvitationsResponse, GetLatestSubgraphSDLRequest, GetLatestSubgraphSDLResponse, GetMetricsErrorRateRequest, GetMetricsErrorRateResponse, GetNamespaceChecksConfigurationRequest, GetNamespaceChecksConfigurationResponse, GetNamespaceGraphPruningConfigRequest, GetNamespaceGraphPruningConfigResponse, GetNamespaceLintConfigRequest, GetNamespaceLintConfigResponse, GetNamespaceProposalConfigRequest, GetNamespaceProposalConfigResponse, GetNamespaceRequest, GetNamespaceResponse, GetNamespacesRequest, GetNamespacesResponse, GetOIDCProviderRequest, GetOIDCProviderResponse, GetOperationClientsRequest, GetOperationClientsResponse, GetOperationContentRequest, GetOperationContentResponse, GetOperationDeprecatedFieldsRequest, GetOperationDeprecatedFieldsResponse, GetOperationOverridesRequest, GetOperationOverridesResponse, GetOperationsRequest, GetOperationsResponse, GetOrganizationBySlugRequest, GetOrganizationBySlugResponse, GetOrganizationGroupMembersRequest, GetOrganizationGroupMembersResponse, GetOrganizationGroupsRequest, GetOrganizationGroupsResponse, GetOrganizationIntegrationsRequest, GetOrganizationIntegrationsResponse, GetOrganizationMembersRequest, GetOrganizationMembersResponse, GetOrganizationRequestsCountRequest, GetOrganizationRequestsCountResponse, GetOrganizationWebhookConfigsRequest, GetOrganizationWebhookConfigsResponse, GetOrganizationWebhookHistoryRequest, GetOrganizationWebhookHistoryResponse, GetOrganizationWebhookMetaRequest, GetOrganizationWebhookMetaResponse, GetPendingOrganizationMembersRequest, GetPendingOrganizationMembersResponse, GetPersistedOperationsRequest, GetPersistedOperationsResponse, GetPlaygroundScriptsRequest, GetPlaygroundScriptsResponse, GetProposalChecksRequest, GetProposalChecksResponse, GetProposalRequest, GetProposalResponse, GetProposalsByFederatedGraphRequest, GetProposalsByFederatedGraphResponse, GetProposedSchemaOfCheckedSubgraphRequest, GetProposedSchemaOfCheckedSubgraphResponse, GetRoutersRequest, GetRoutersResponse, GetRouterTokensRequest, GetRouterTokensResponse, GetSdlBySchemaVersionRequest, GetSdlBySchemaVersionResponse, GetSubgraphByIdRequest, GetSubgraphByIdResponse, GetSubgraphByNameRequest, GetSubgraphByNameResponse, GetSubgraphCheckExtensionsConfigRequest, GetSubgraphCheckExtensionsConfigResponse, GetSubgraphMembersRequest, GetSubgraphMembersResponse, GetSubgraphMetricsErrorRateRequest, GetSubgraphMetricsErrorRateResponse, GetSubgraphMetricsRequest, GetSubgraphMetricsResponse, GetSubgraphSDLFromLatestCompositionRequest, GetSubgraphSDLFromLatestCompositionResponse, GetSubgraphsRequest, GetSubgraphsResponse, GetTraceRequest, GetTraceResponse, GetUserAccessiblePermissionsRequest, GetUserAccessiblePermissionsResponse, GetUserAccessibleResourcesRequest, GetUserAccessibleResourcesResponse, GetWebhookDeliveryDetailsRequest, GetWebhookDeliveryDetailsResponse, GetWorkspaceRequest, GetWorkspaceResponse, InitializeCosmoUserRequest, InitializeCosmoUserResponse, InviteUserRequest, InviteUserResponse, IsGitHubAppInstalledRequest, IsGitHubAppInstalledResponse, IsMemberLimitReachedRequest, IsMemberLimitReachedResponse, LeaveOrganizationRequest, LeaveOrganizationResponse, LinkSubgraphRequest, LinkSubgraphResponse, ListOrganizationsRequest, ListOrganizationsResponse, ListRouterCompatibilityVersionsRequest, ListRouterCompatibilityVersionsResponse, MigrateFromApolloRequest, MigrateFromApolloResponse, MigrateMonographRequest, MigrateMonographResponse, MoveGraphRequest, MoveGraphResponse, PublishFederatedSubgraphRequest, PublishFederatedSubgraphResponse, PublishMonographRequest, PublishMonographResponse, PublishPersistedOperationsRequest, PublishPersistedOperationsResponse, PushCacheWarmerOperationRequest, PushCacheWarmerOperationResponse, RecomposeGraphRequest, RecomposeGraphResponse, RedeliverWebhookRequest, RedeliverWebhookResponse, RemoveInvitationRequest, RemoveInvitationResponse, RemoveOperationIgnoreAllOverrideRequest, RemoveOperationIgnoreAllOverrideResponse, RemoveOperationOverridesRequest, RemoveOperationOverridesResponse, RemoveOrganizationMemberRequest, RemoveOrganizationMemberResponse, RenameNamespaceRequest, RenameNamespaceResponse, RestoreOrganizationRequest, RestoreOrganizationResponse, SetGraphRouterCompatibilityVersionRequest, SetGraphRouterCompatibilityVersionResponse, TeardownProposalRolloutRequest, TeardownProposalRolloutResponse, ToggleChangeOverridesForAllOperationsRequest, ToggleChangeOverridesForAllOperationsResponse, UnlinkSubgraphRequest, UnlinkSubgraphResponse, UpdateAPIKeyRequest, UpdateAPIKeyResponse, UpdateContractRequest, UpdateContractResponse, UpdateFeatureFlagRequest, UpdateFeatureFlagResponse, UpdateFeatureSettingsRequest, UpdateFeatureSettingsResponse, UpdateFederatedGraphRequest, UpdateFederatedGraphResponse, UpdateIDPMappersRequest, UpdateIDPMappersResponse, UpdateIntegrationConfigRequest, UpdateIntegrationConfigResponse, UpdateMonographRequest, UpdateMonographResponse, UpdateNamespaceChecksConfigurationRequest, UpdateNamespaceChecksConfigurationResponse, UpdateOrganizationDetailsRequest, UpdateOrganizationDetailsResponse, UpdateOrganizationGroupRequest, UpdateOrganizationGroupResponse, UpdateOrganizationWebhookConfigRequest, UpdateOrganizationWebhookConfigResponse, UpdateOrgMemberGroupRequest, UpdateOrgMemberGroupResponse, UpdatePlaygroundScriptRequest, UpdatePlaygroundScriptResponse, UpdateProposalRequest, UpdateProposalResponse, UpdateSubgraphRequest, UpdateSubgraphResponse, UpgradePlanRequest, UpgradePlanResponse, ValidateAndFetchPluginDataRequest, ValidateAndFetchPluginDataResponse, VerifyAPIKeyGraphAccessRequest, VerifyAPIKeyGraphAccessResponse, WhoAmIRequest, WhoAmIResponse } from "./platform_pb.js"; +import { AcceptOrDeclineInvitationRequest, AcceptOrDeclineInvitationResponse, AddReadmeRequest, AddReadmeResponse, BulkUpdateProposalRolloutPercentagesRequest, BulkUpdateProposalRolloutPercentagesResponse, CheckFederatedGraphRequest, CheckFederatedGraphResponse, CheckPersistedOperationTrafficRequest, CheckPersistedOperationTrafficResponse, CheckSubgraphSchemaRequest, CheckSubgraphSchemaResponse, ComputeCacheWarmerOperationsRequest, ComputeCacheWarmerOperationsResponse, ConfigureCacheWarmerRequest, ConfigureCacheWarmerResponse, ConfigureNamespaceGraphPruningConfigRequest, ConfigureNamespaceGraphPruningConfigResponse, ConfigureNamespaceLintConfigRequest, ConfigureNamespaceLintConfigResponse, ConfigureNamespaceProposalConfigRequest, ConfigureNamespaceProposalConfigResponse, ConfigureSubgraphCheckExtensionsRequest, ConfigureSubgraphCheckExtensionsResponse, CreateAPIKeyRequest, CreateAPIKeyResponse, CreateBillingPortalSessionRequest, CreateBillingPortalSessionResponse, CreateCheckoutSessionRequest, CreateCheckoutSessionResponse, CreateContractRequest, CreateContractResponse, CreateFeatureFlagRequest, CreateFeatureFlagResponse, CreateFederatedGraphRequest, CreateFederatedGraphResponse, CreateFederatedGraphTokenRequest, CreateFederatedGraphTokenResponse, CreateFederatedSubgraphRequest, CreateFederatedSubgraphResponse, CreateIgnoreOverridesForAllOperationsRequest, CreateIgnoreOverridesForAllOperationsResponse, CreateIntegrationRequest, CreateIntegrationResponse, CreateMonographRequest, CreateMonographResponse, CreateNamespaceRequest, CreateNamespaceResponse, CreateOIDCProviderRequest, CreateOIDCProviderResponse, CreateOperationIgnoreAllOverrideRequest, CreateOperationIgnoreAllOverrideResponse, CreateOperationOverridesRequest, CreateOperationOverridesResponse, CreateOrganizationGroupRequest, CreateOrganizationGroupResponse, CreateOrganizationRequest, CreateOrganizationResponse, CreateOrganizationWebhookConfigRequest, CreateOrganizationWebhookConfigResponse, CreatePlaygroundScriptRequest, CreatePlaygroundScriptResponse, CreateProposalRequest, CreateProposalResponse, DeleteAPIKeyRequest, DeleteAPIKeyResponse, DeleteCacheWarmerOperationRequest, DeleteCacheWarmerOperationResponse, DeleteFeatureFlagRequest, DeleteFeatureFlagResponse, DeleteFederatedGraphRequest, DeleteFederatedGraphResponse, DeleteFederatedSubgraphRequest, DeleteFederatedSubgraphResponse, DeleteIntegrationRequest, DeleteIntegrationResponse, DeleteMonographRequest, DeleteMonographResponse, DeleteNamespaceRequest, DeleteNamespaceResponse, DeleteOIDCProviderRequest, DeleteOIDCProviderResponse, DeleteOrganizationGroupRequest, DeleteOrganizationGroupResponse, DeleteOrganizationRequest, DeleteOrganizationResponse, DeleteOrganizationWebhookConfigRequest, DeleteOrganizationWebhookConfigResponse, DeletePersistedOperationRequest, DeletePersistedOperationResponse, DeletePlaygroundScriptRequest, DeletePlaygroundScriptResponse, DeleteRouterTokenRequest, DeleteRouterTokenResponse, DeleteUserRequest, DeleteUserResponse, EnableFeatureFlagRequest, EnableFeatureFlagResponse, EnableGraphPruningRequest, EnableGraphPruningResponse, EnableLintingForTheNamespaceRequest, EnableLintingForTheNamespaceResponse, EnableProposalsForNamespaceRequest, EnableProposalsForNamespaceResponse, FixSubgraphSchemaRequest, FixSubgraphSchemaResponse, ForceCheckSuccessRequest, ForceCheckSuccessResponse, GenerateRouterTokenRequest, GenerateRouterTokenResponse, GetAllOverridesRequest, GetAllOverridesResponse, GetAnalyticsViewRequest, GetAnalyticsViewResponse, GetAPIKeysRequest, GetAPIKeysResponse, GetAuditLogsRequest, GetAuditLogsResponse, GetBillingPlansRequest, GetBillingPlansResponse, GetCacheCohortConfigVersionsRequest, GetCacheCohortConfigVersionsResponse, GetCacheWarmerConfigRequest, GetCacheWarmerConfigResponse, GetCacheWarmerOperationsRequest, GetCacheWarmerOperationsResponse, GetChangelogBySchemaVersionRequest, GetChangelogBySchemaVersionResponse, GetCheckOperationsRequest, GetCheckOperationsResponse, GetChecksByFederatedGraphNameRequest, GetChecksByFederatedGraphNameResponse, GetCheckSummaryRequest, GetCheckSummaryResponse, GetClientsFromAnalyticsRequest, GetClientsFromAnalyticsResponse, GetClientsRequest, GetClientsResponse, GetCompositionDetailsRequest, GetCompositionDetailsResponse, GetCompositionsRequest, GetCompositionsResponse, GetDashboardAnalyticsViewRequest, GetDashboardAnalyticsViewResponse, GetFeatureFlagByNameRequest, GetFeatureFlagByNameResponse, GetFeatureFlagsByFederatedGraphRequest, GetFeatureFlagsByFederatedGraphResponse, GetFeatureFlagsInLatestCompositionByFederatedGraphRequest, GetFeatureFlagsInLatestCompositionByFederatedGraphResponse, GetFeatureFlagsRequest, GetFeatureFlagsResponse, GetFeatureSubgraphsByFeatureFlagRequest, GetFeatureSubgraphsByFeatureFlagResponse, GetFeatureSubgraphsByFederatedGraphRequest, GetFeatureSubgraphsByFederatedGraphResponse, GetFeatureSubgraphsRequest, GetFeatureSubgraphsResponse, GetFederatedGraphByIdRequest, GetFederatedGraphByIdResponse, GetFederatedGraphByNameRequest, GetFederatedGraphByNameResponse, GetFederatedGraphChangelogRequest, GetFederatedGraphChangelogResponse, GetFederatedGraphsBySubgraphLabelsRequest, GetFederatedGraphsBySubgraphLabelsResponse, GetFederatedGraphSDLByNameRequest, GetFederatedGraphSDLByNameResponse, GetFederatedGraphsRequest, GetFederatedGraphsResponse, GetFieldUsageRequest, GetFieldUsageResponse, GetGraphMetricsRequest, GetGraphMetricsResponse, GetInvitationsRequest, GetInvitationsResponse, GetLatestSubgraphSDLRequest, GetLatestSubgraphSDLResponse, GetMetricsErrorRateRequest, GetMetricsErrorRateResponse, GetNamespaceChecksConfigurationRequest, GetNamespaceChecksConfigurationResponse, GetNamespaceGraphPruningConfigRequest, GetNamespaceGraphPruningConfigResponse, GetNamespaceLintConfigRequest, GetNamespaceLintConfigResponse, GetNamespaceProposalConfigRequest, GetNamespaceProposalConfigResponse, GetNamespaceRequest, GetNamespaceResponse, GetNamespacesRequest, GetNamespacesResponse, GetOIDCProviderRequest, GetOIDCProviderResponse, GetOperationClientsRequest, GetOperationClientsResponse, GetOperationContentRequest, GetOperationContentResponse, GetOperationDeprecatedFieldsRequest, GetOperationDeprecatedFieldsResponse, GetOperationOverridesRequest, GetOperationOverridesResponse, GetOperationsRequest, GetOperationsResponse, GetOrganizationBySlugRequest, GetOrganizationBySlugResponse, GetOrganizationGroupMembersRequest, GetOrganizationGroupMembersResponse, GetOrganizationGroupsRequest, GetOrganizationGroupsResponse, GetOrganizationIntegrationsRequest, GetOrganizationIntegrationsResponse, GetOrganizationMembersRequest, GetOrganizationMembersResponse, GetOrganizationRequestsCountRequest, GetOrganizationRequestsCountResponse, GetOrganizationWebhookConfigsRequest, GetOrganizationWebhookConfigsResponse, GetOrganizationWebhookHistoryRequest, GetOrganizationWebhookHistoryResponse, GetOrganizationWebhookMetaRequest, GetOrganizationWebhookMetaResponse, GetPendingOrganizationMembersRequest, GetPendingOrganizationMembersResponse, GetPersistedOperationsRequest, GetPersistedOperationsResponse, GetPlaygroundScriptsRequest, GetPlaygroundScriptsResponse, GetProposalChecksRequest, GetProposalChecksResponse, GetProposalRequest, GetProposalResponse, GetProposalsByFederatedGraphRequest, GetProposalsByFederatedGraphResponse, GetProposedSchemaOfCheckedSubgraphRequest, GetProposedSchemaOfCheckedSubgraphResponse, GetRoutersRequest, GetRoutersResponse, GetRouterTokensRequest, GetRouterTokensResponse, GetSdlBySchemaVersionRequest, GetSdlBySchemaVersionResponse, GetSubgraphByIdRequest, GetSubgraphByIdResponse, GetSubgraphByNameRequest, GetSubgraphByNameResponse, GetSubgraphCheckExtensionsConfigRequest, GetSubgraphCheckExtensionsConfigResponse, GetSubgraphMembersRequest, GetSubgraphMembersResponse, GetSubgraphMetricsErrorRateRequest, GetSubgraphMetricsErrorRateResponse, GetSubgraphMetricsRequest, GetSubgraphMetricsResponse, GetSubgraphSDLFromLatestCompositionRequest, GetSubgraphSDLFromLatestCompositionResponse, GetSubgraphsRequest, GetSubgraphsResponse, GetTraceRequest, GetTraceResponse, GetUserAccessiblePermissionsRequest, GetUserAccessiblePermissionsResponse, GetUserAccessibleResourcesRequest, GetUserAccessibleResourcesResponse, GetWebhookDeliveryDetailsRequest, GetWebhookDeliveryDetailsResponse, GetWorkspaceRequest, GetWorkspaceResponse, InitializeCosmoUserRequest, InitializeCosmoUserResponse, InviteUserRequest, InviteUserResponse, IsGitHubAppInstalledRequest, IsGitHubAppInstalledResponse, IsMemberLimitReachedRequest, IsMemberLimitReachedResponse, LeaveOrganizationRequest, LeaveOrganizationResponse, LinkSubgraphRequest, LinkSubgraphResponse, ListOrganizationsRequest, ListOrganizationsResponse, ListRouterCompatibilityVersionsRequest, ListRouterCompatibilityVersionsResponse, MigrateFromApolloRequest, MigrateFromApolloResponse, MigrateMonographRequest, MigrateMonographResponse, MoveGraphRequest, MoveGraphResponse, PublishFederatedSubgraphRequest, PublishFederatedSubgraphResponse, PublishMonographRequest, PublishMonographResponse, PublishPersistedOperationsRequest, PublishPersistedOperationsResponse, PushCacheWarmerOperationRequest, PushCacheWarmerOperationResponse, RecomposeGraphRequest, RecomposeGraphResponse, RedeliverWebhookRequest, RedeliverWebhookResponse, RemoveInvitationRequest, RemoveInvitationResponse, RemoveOperationIgnoreAllOverrideRequest, RemoveOperationIgnoreAllOverrideResponse, RemoveOperationOverridesRequest, RemoveOperationOverridesResponse, RemoveOrganizationMemberRequest, RemoveOrganizationMemberResponse, RenameNamespaceRequest, RenameNamespaceResponse, RestoreOrganizationRequest, RestoreOrganizationResponse, SetGraphRouterCompatibilityVersionRequest, SetGraphRouterCompatibilityVersionResponse, TeardownProposalRolloutRequest, TeardownProposalRolloutResponse, ToggleChangeOverridesForAllOperationsRequest, ToggleChangeOverridesForAllOperationsResponse, UnlinkSubgraphRequest, UnlinkSubgraphResponse, UpdateAPIKeyRequest, UpdateAPIKeyResponse, UpdateContractRequest, UpdateContractResponse, UpdateFeatureFlagRequest, UpdateFeatureFlagResponse, UpdateFeatureSettingsRequest, UpdateFeatureSettingsResponse, UpdateFederatedGraphRequest, UpdateFederatedGraphResponse, UpdateIDPMappersRequest, UpdateIDPMappersResponse, UpdateIntegrationConfigRequest, UpdateIntegrationConfigResponse, UpdateMonographRequest, UpdateMonographResponse, UpdateNamespaceChecksConfigurationRequest, UpdateNamespaceChecksConfigurationResponse, UpdateOrganizationDetailsRequest, UpdateOrganizationDetailsResponse, UpdateOrganizationGroupRequest, UpdateOrganizationGroupResponse, UpdateOrganizationWebhookConfigRequest, UpdateOrganizationWebhookConfigResponse, UpdateOrgMemberGroupRequest, UpdateOrgMemberGroupResponse, UpdatePlaygroundScriptRequest, UpdatePlaygroundScriptResponse, UpdateProposalRequest, UpdateProposalResponse, UpdateSubgraphRequest, UpdateSubgraphResponse, UpgradePlanRequest, UpgradePlanResponse, ValidateAndFetchPluginDataRequest, ValidateAndFetchPluginDataResponse, VerifyAPIKeyGraphAccessRequest, VerifyAPIKeyGraphAccessResponse, WhoAmIRequest, WhoAmIResponse } from "./platform_pb.js"; import { MethodIdempotency, MethodKind } from "@bufbuild/protobuf"; /** @@ -1859,6 +1859,23 @@ export const PlatformService = { O: GetProposalChecksResponse, kind: MethodKind.Unary, }, + /** + * GetCacheCohortConfigVersions returns all RouterConfigVersion (schemaVersion.id) + * UUIDs that have ever been minted for the given (federated_graph_id, + * feature_flag_id) cohort, newest first. Used by hub to filter + * gql_cache_events_raw across the full set of config versions a feature + * flag has produced (proposal unapprove→re-approve cycles mint new + * schemaVersions). Pass feature_flag_id unset to fetch the base/main + * cohort's config versions. + * + * @generated from rpc wg.cosmo.platform.v1.PlatformService.GetCacheCohortConfigVersions + */ + getCacheCohortConfigVersions: { + name: "GetCacheCohortConfigVersions", + I: GetCacheCohortConfigVersionsRequest, + O: GetCacheCohortConfigVersionsResponse, + kind: MethodKind.Unary, + }, /** * BulkUpdateProposalRolloutPercentages atomically creates or updates rollout * percentages across one or more proposals on the same federated graph. For diff --git a/connect/src/wg/cosmo/platform/v1/platform_pb.ts b/connect/src/wg/cosmo/platform/v1/platform_pb.ts index b585fe7734..fb6f93f3f2 100644 --- a/connect/src/wg/cosmo/platform/v1/platform_pb.ts +++ b/connect/src/wg/cosmo/platform/v1/platform_pb.ts @@ -23491,6 +23491,97 @@ export class GetProposalChecksResponse extends Message { + /** + * @generated from field: string federated_graph_id = 1; + */ + federatedGraphId = ""; + + /** + * When unset, the base/main cohort (rows with feature_flag_id IS NULL) is returned. + * + * @generated from field: optional string feature_flag_id = 2; + */ + featureFlagId?: string; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.GetCacheCohortConfigVersionsRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "federated_graph_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "feature_flag_id", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetCacheCohortConfigVersionsRequest { + return new GetCacheCohortConfigVersionsRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetCacheCohortConfigVersionsRequest { + return new GetCacheCohortConfigVersionsRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetCacheCohortConfigVersionsRequest { + return new GetCacheCohortConfigVersionsRequest().fromJsonString(jsonString, options); + } + + static equals(a: GetCacheCohortConfigVersionsRequest | PlainMessage | undefined, b: GetCacheCohortConfigVersionsRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(GetCacheCohortConfigVersionsRequest, a, b); + } +} + +/** + * @generated from message wg.cosmo.platform.v1.GetCacheCohortConfigVersionsResponse + */ +export class GetCacheCohortConfigVersionsResponse extends Message { + /** + * @generated from field: wg.cosmo.platform.v1.Response response = 1; + */ + response?: Response; + + /** + * schemaVersion.id UUIDs that have ever been minted for the given + * (federated_graph_id, feature_flag_id) cohort, newest first. + * + * @generated from field: repeated string config_versions = 2; + */ + configVersions: string[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "wg.cosmo.platform.v1.GetCacheCohortConfigVersionsResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "response", kind: "message", T: Response }, + { no: 2, name: "config_versions", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetCacheCohortConfigVersionsResponse { + return new GetCacheCohortConfigVersionsResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetCacheCohortConfigVersionsResponse { + return new GetCacheCohortConfigVersionsResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetCacheCohortConfigVersionsResponse { + return new GetCacheCohortConfigVersionsResponse().fromJsonString(jsonString, options); + } + + static equals(a: GetCacheCohortConfigVersionsResponse | PlainMessage | undefined, b: GetCacheCohortConfigVersionsResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(GetCacheCohortConfigVersionsResponse, a, b); + } +} + /** * @generated from message wg.cosmo.platform.v1.UpdateProposalRequest */ diff --git a/controlplane/clickhouse/migrations/20260601120000_add_child_type_name_to_gql_cache_events.sql b/controlplane/clickhouse/migrations/20260601120000_add_child_type_name_to_gql_cache_events.sql new file mode 100644 index 0000000000..3efb664c59 --- /dev/null +++ b/controlplane/clickhouse/migrations/20260601120000_add_child_type_name_to_gql_cache_events.sql @@ -0,0 +1,17 @@ +-- migrate:up + +-- ChildTypeName carries the named return type for FIELD_SELECTION events. +-- For Object accessors this is the unwrapped return type (e.g. 'Address'); +-- for Array accessors it is the list element type (e.g. 'Hobby'). For +-- interface or union accessors the value is the abstract type name — +-- concrete __typename info already lives on the leaf FIELD_HASH rows under +-- the accessor. Empty for every other event type (FIELD_HASH, L1_READ, +-- etc.) and for old rows written before this column existed (ClickHouse +-- backfills empty for absent values on LowCardinality(String)). +ALTER TABLE gql_cache_events_raw + ADD COLUMN IF NOT EXISTS ChildTypeName LowCardinality(String) CODEC(ZSTD(3)); + +-- migrate:down + +ALTER TABLE gql_cache_events_raw + DROP COLUMN IF EXISTS ChildTypeName; diff --git a/controlplane/src/core/bufservices/PlatformService.ts b/controlplane/src/core/bufservices/PlatformService.ts index f8be432478..6a7b3e34f8 100644 --- a/controlplane/src/core/bufservices/PlatformService.ts +++ b/controlplane/src/core/bufservices/PlatformService.ts @@ -42,6 +42,7 @@ import { updateContract } from './contract/updateContract.js'; import { createFeatureFlag } from './feature-flag/createFeatureFlag.js'; import { deleteFeatureFlag } from './feature-flag/deleteFeatureFlag.js'; import { enableFeatureFlag } from './feature-flag/enableFeatureFlag.js'; +import { getCacheCohortConfigVersions } from './feature-flag/getCacheCohortConfigVersions.js'; import { getFeatureFlagByName } from './feature-flag/getFeatureFlagByName.js'; import { getFeatureFlags } from './feature-flag/getFeatureFlags.js'; import { getFeatureFlagsByFederatedGraph } from './feature-flag/getFeatureFlagsByFederatedGraph.js'; @@ -763,6 +764,10 @@ export default function (opts: RouterOptions): Partial { + return getCacheCohortConfigVersions(opts, req, ctx); + }, + getFeatureSubgraphsByFederatedGraph: (req, ctx) => { return getFeatureSubgraphsByFederatedGraph(opts, req, ctx); }, diff --git a/controlplane/src/core/bufservices/feature-flag/getCacheCohortConfigVersions.ts b/controlplane/src/core/bufservices/feature-flag/getCacheCohortConfigVersions.ts new file mode 100644 index 0000000000..97d4dc9550 --- /dev/null +++ b/controlplane/src/core/bufservices/feature-flag/getCacheCohortConfigVersions.ts @@ -0,0 +1,100 @@ +import { PlainMessage } from '@bufbuild/protobuf'; +import { HandlerContext } from '@connectrpc/connect'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { + GetCacheCohortConfigVersionsRequest, + GetCacheCohortConfigVersionsResponse, +} from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb'; +import { and, desc, eq, sql } from 'drizzle-orm'; +import { + federatedGraphs, + federatedGraphsToFeatureFlagSchemaVersions, + graphCompositions, + schemaVersion, +} from '../../../db/schema.js'; +import type { RouterOptions } from '../../routes.js'; +import { enrichLogger, getLogger, handleError } from '../../util.js'; + +export function getCacheCohortConfigVersions( + opts: RouterOptions, + req: GetCacheCohortConfigVersionsRequest, + ctx: HandlerContext, +): Promise> { + let logger = getLogger(ctx, opts.logger); + + return handleError>(ctx, logger, async () => { + const authContext = await opts.authenticator.authenticate(ctx.requestHeader); + logger = enrichLogger(ctx, logger, authContext); + + const latestCreatedAt = sql`max(${graphCompositions.createdAt})`.as('latest_created_at'); + + // Two structurally different paths because the data lives in two places: + // + // main cohort → `graph_compositions` JOIN `schema_versions` JOIN + // `federated_graphs` on `target_id`. Every base/main + // composition lands here, including the active one + // (`federated_graphs.composed_schema_version_id`) and all + // historical predecessors. + // + // flag cohort → `federated_graphs_to_feature_flag_schema_versions` + // filtered by `feature_flag_id`. That table is populated + // exclusively when a feature flag is composed; its + // `feature_flag_id IS NULL` rows are deletion-set-NULL + // orphans from torn-down flags, never main compositions. + // The mirror `is_feature_flag_composition = true` join is + // defensive: it makes the cohort symmetric and guards + // against any future row whose flag-id was nulled while + // the composition record (correctly) keeps the boolean. + // + // GROUP BY de-duplicates compositions that participate in multiple + // (base, composed) tuples and orders by their most recent creation time. + + if (req.featureFlagId) { + const rows = await opts.db + .select({ + composedSchemaVersionId: federatedGraphsToFeatureFlagSchemaVersions.composedSchemaVersionId, + latestCreatedAt, + }) + .from(federatedGraphsToFeatureFlagSchemaVersions) + .innerJoin( + graphCompositions, + eq(graphCompositions.schemaVersionId, federatedGraphsToFeatureFlagSchemaVersions.composedSchemaVersionId), + ) + .where( + and( + eq(federatedGraphsToFeatureFlagSchemaVersions.federatedGraphId, req.federatedGraphId), + eq(federatedGraphsToFeatureFlagSchemaVersions.featureFlagId, req.featureFlagId), + eq(graphCompositions.isFeatureFlagComposition, true), + ), + ) + .groupBy(federatedGraphsToFeatureFlagSchemaVersions.composedSchemaVersionId) + .orderBy(desc(latestCreatedAt)) + .execute(); + + return { + response: { code: EnumStatusCode.OK }, + configVersions: rows.map((r) => r.composedSchemaVersionId), + }; + } + + const rows = await opts.db + .select({ + composedSchemaVersionId: graphCompositions.schemaVersionId, + latestCreatedAt, + }) + .from(graphCompositions) + .innerJoin(schemaVersion, eq(schemaVersion.id, graphCompositions.schemaVersionId)) + .innerJoin(federatedGraphs, eq(federatedGraphs.targetId, schemaVersion.targetId)) + .where( + and(eq(federatedGraphs.id, req.federatedGraphId), eq(graphCompositions.isFeatureFlagComposition, false)), + ) + .groupBy(graphCompositions.schemaVersionId) + .orderBy(desc(latestCreatedAt)) + .execute(); + + return { + response: { code: EnumStatusCode.OK }, + configVersions: rows.map((r) => r.composedSchemaVersionId), + }; + }); +} diff --git a/controlplane/test/feature-flag/get-cache-cohort-config-versions.test.ts b/controlplane/test/feature-flag/get-cache-cohort-config-versions.test.ts new file mode 100644 index 0000000000..8bbdf79a3c --- /dev/null +++ b/controlplane/test/feature-flag/get-cache-cohort-config-versions.test.ts @@ -0,0 +1,278 @@ +import { randomUUID } from 'node:crypto'; +import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb'; +import { inArray } from 'drizzle-orm'; +import { afterAll, beforeAll, describe, expect, test } from 'vitest'; +import { afterAllSetup, beforeAllSetup, genID, genUniqueLabel } from '../../src/core/test-util.js'; +import { + federatedGraphsToFeatureFlagSchemaVersions, + graphCompositions, + schemaVersion, +} from '../../src/db/schema.js'; +import { + DEFAULT_ROUTER_URL, + DEFAULT_SUBGRAPH_URL_ONE, + SetupTest, + createAndPublishSubgraph, + createFeatureFlag, + createFederatedGraph, + createThenPublishFeatureSubgraph, +} from '../test-util.js'; + +let dbname = ''; + +describe('GetCacheCohortConfigVersions', () => { + beforeAll(async () => { + dbname = await beforeAllSetup(); + }); + + afterAll(async () => { + await afterAllSetup(dbname); + }); + + test('returns historical config versions for a (graph, flag) cohort, newest first, and isolates cohorts', async (testContext) => { + const { client, server, users } = await SetupTest({ dbname }); + testContext.onTestFinished(() => server.close()); + + const labels = [genUniqueLabel()]; + const subgraphName = genID('subgraph'); + const featureSubgraphName = genID('feature-subgraph'); + const fedGraphAName = genID('fedGraphA'); + const fedGraphBName = genID('fedGraphB'); + const flagName = genID('flag'); + + // Base subgraph + feature subgraph so we have valid material for the flag. + await createAndPublishSubgraph( + client, + subgraphName, + 'default', + 'type Query { hello: String! }', + labels, + DEFAULT_SUBGRAPH_URL_ONE, + ); + + await createThenPublishFeatureSubgraph( + client, + featureSubgraphName, + subgraphName, + 'default', + 'type Query { hello: String! world: String! }', + labels, + 'http://localhost:4101', + ); + + const fedGraphLabels = labels.map(({ key, value }) => `${key}=${value}`); + await createFederatedGraph(client, fedGraphAName, 'default', fedGraphLabels, DEFAULT_ROUTER_URL); + await createFederatedGraph(client, fedGraphBName, 'default', fedGraphLabels, DEFAULT_ROUTER_URL); + + await createFeatureFlag(client, flagName, labels, [featureSubgraphName], 'default', true); + + const fedGraphAResp = await client.getFederatedGraphByName({ name: fedGraphAName, namespace: 'default' }); + expect(fedGraphAResp.response?.code).toBe(EnumStatusCode.OK); + const fedGraphA = fedGraphAResp.graph; + if (!fedGraphA) { + throw new Error('expected fedGraphA'); + } + + const fedGraphBResp = await client.getFederatedGraphByName({ name: fedGraphBName, namespace: 'default' }); + expect(fedGraphBResp.response?.code).toBe(EnumStatusCode.OK); + const fedGraphB = fedGraphBResp.graph; + if (!fedGraphB) { + throw new Error('expected fedGraphB'); + } + + const flagResp = await client.getFeatureFlagByName({ name: flagName, namespace: 'default' }); + expect(flagResp.response?.code).toBe(EnumStatusCode.OK); + const flag = flagResp.featureFlag; + if (!flag) { + throw new Error('expected feature flag'); + } + + const organizationId = users.adminAliceCompanyA.organizationId; + const db = server.db; + + // Strip every fgffsv row AND every prior graph_compositions row for these + // two graphs' targets so the fixture controls the entire surface. Real + // graph creation already produces an initial main composition; without + // this cleanup it would mix with the rows we mint below and break the + // strict-equality assertions. + await db.delete(federatedGraphsToFeatureFlagSchemaVersions).execute(); + const existingForFixtureTargets = await db + .select({ id: schemaVersion.id }) + .from(schemaVersion) + .where(inArray(schemaVersion.targetId, [fedGraphA.targetId, fedGraphB.targetId])) + .execute(); + if (existingForFixtureTargets.length > 0) { + await db + .delete(graphCompositions) + .where( + inArray( + graphCompositions.schemaVersionId, + existingForFixtureTargets.map((row) => row.id), + ), + ) + .execute(); + } + + // Main compositions live in `graph_compositions` JOIN `schema_versions` on + // the federated graph's target. They never have a row in fgffsv — that + // table is exclusively for flag-composition history. + const mintMainComposition = async (targetId: string, createdAt: Date): Promise => { + const composedSchemaVersionId = randomUUID(); + await db + .insert(schemaVersion) + .values({ + id: composedSchemaVersionId, + organizationId, + targetId, + schemaSDL: 'type Query { hello: String! }', + }) + .execute(); + await db + .insert(graphCompositions) + .values({ + schemaVersionId: composedSchemaVersionId, + isComposable: true, + isFeatureFlagComposition: false, + createdAt, + }) + .execute(); + return composedSchemaVersionId; + }; + + // Flag compositions land in BOTH graph_compositions (with + // is_feature_flag_composition=true) AND fgffsv (linking the flag id). + // Pass featureFlagId=null to simulate the ON DELETE SET NULL orphan that + // a flag tear-down leaves behind — the fgffsv row survives but the link + // is severed. + const mintFlagComposition = async (params: { + federatedGraphId: string; + targetId: string; + featureFlagId: string | null; + baseCompositionSchemaVersionId: string; + createdAt: Date; + }): Promise => { + const composedSchemaVersionId = randomUUID(); + await db + .insert(schemaVersion) + .values({ + id: composedSchemaVersionId, + organizationId, + targetId: params.targetId, + schemaSDL: 'type Query { hello: String! }', + }) + .execute(); + await db + .insert(graphCompositions) + .values({ + schemaVersionId: composedSchemaVersionId, + isComposable: true, + isFeatureFlagComposition: true, + createdAt: params.createdAt, + }) + .execute(); + await db + .insert(federatedGraphsToFeatureFlagSchemaVersions) + .values({ + federatedGraphId: params.federatedGraphId, + baseCompositionSchemaVersionId: params.baseCompositionSchemaVersionId, + composedSchemaVersionId, + featureFlagId: params.featureFlagId, + }) + .execute(); + return composedSchemaVersionId; + }; + + // The fgffsv `base_composition_schema_version_id` only needs to be a valid + // schema_versions.id; reuse one per graph to keep PK + // (graph, base, composed) unique while sharing the base column. + const baseForA = await mintMainComposition(fedGraphA.targetId, new Date('2023-12-01T00:00:00Z')); + const baseForB = await mintMainComposition(fedGraphB.targetId, new Date('2023-12-01T00:00:00Z')); + + // 2 main compositions for fedGraphA. These are the rows the main cohort + // must return — they live only in graph_compositions, not in fgffsv. + const aMainOlder = await mintMainComposition(fedGraphA.targetId, new Date('2024-03-01T00:00:00Z')); + const aMainNewer = await mintMainComposition(fedGraphA.targetId, new Date('2024-04-01T00:00:00Z')); + + // 2 flag compositions for (fedGraphA, flag). These are the rows the flag + // cohort must return. + const aFlagOlder = await mintFlagComposition({ + federatedGraphId: fedGraphA.id, + targetId: fedGraphA.targetId, + featureFlagId: flag.id, + baseCompositionSchemaVersionId: baseForA, + createdAt: new Date('2024-01-01T00:00:00Z'), + }); + const aFlagNewer = await mintFlagComposition({ + federatedGraphId: fedGraphA.id, + targetId: fedGraphA.targetId, + featureFlagId: flag.id, + baseCompositionSchemaVersionId: baseForA, + createdAt: new Date('2024-02-01T00:00:00Z'), + }); + + // 1 cross-graph flag composition that must not leak into A's cohort. + const bFlag = await mintFlagComposition({ + federatedGraphId: fedGraphB.id, + targetId: fedGraphB.targetId, + featureFlagId: flag.id, + baseCompositionSchemaVersionId: baseForB, + createdAt: new Date('2024-05-01T00:00:00Z'), + }); + + // 1 orphan: a flag composition whose flag was torn down. Its fgffsv row + // survives with feature_flag_id=NULL (ON DELETE SET NULL) but + // graph_compositions still records isFeatureFlagComposition=true. The + // orphan must NOT appear in the main cohort (different table), nor in + // any specific flag cohort (no live flag id to match). + const aFlagOrphan = await mintFlagComposition({ + federatedGraphId: fedGraphA.id, + targetId: fedGraphA.targetId, + featureFlagId: null, + baseCompositionSchemaVersionId: baseForA, + createdAt: new Date('2024-06-01T00:00:00Z'), + }); + + // Cohort = (A, F): exactly the 2 flag rows, newest first. The orphan and + // the cross-graph row must not appear. + const flagCohort = await client.getCacheCohortConfigVersions({ + federatedGraphId: fedGraphA.id, + featureFlagId: flag.id, + }); + expect(flagCohort.response?.code).toBe(EnumStatusCode.OK); + expect(flagCohort.configVersions).toEqual([aFlagNewer, aFlagOlder]); + expect(flagCohort.configVersions).not.toContain(aFlagOrphan); + expect(flagCohort.configVersions).not.toContain(bFlag); + + // Cohort = (A, main): exactly the 2 main compositions, newest first. The + // base composition from before the test window also belongs to main, so + // it appears at the tail. Flag rows (live and orphan) must NOT appear. + const baseCohort = await client.getCacheCohortConfigVersions({ + federatedGraphId: fedGraphA.id, + }); + expect(baseCohort.response?.code).toBe(EnumStatusCode.OK); + expect(baseCohort.configVersions).toEqual([aMainNewer, aMainOlder, baseForA]); + expect(baseCohort.configVersions).not.toContain(aFlagNewer); + expect(baseCohort.configVersions).not.toContain(aFlagOlder); + expect(baseCohort.configVersions).not.toContain(aFlagOrphan); + expect(baseCohort.configVersions).not.toContain(bFlag); + + // Cross-graph sanity: cohort = (B, F) returns only the B row. + const otherFlagCohort = await client.getCacheCohortConfigVersions({ + federatedGraphId: fedGraphB.id, + featureFlagId: flag.id, + }); + expect(otherFlagCohort.response?.code).toBe(EnumStatusCode.OK); + expect(otherFlagCohort.configVersions).toEqual([bFlag]); + }); + + test('returns an empty list when the cohort has no recorded versions', async (testContext) => { + const { client, server } = await SetupTest({ dbname }); + testContext.onTestFinished(() => server.close()); + + const resp = await client.getCacheCohortConfigVersions({ + federatedGraphId: randomUUID(), + }); + expect(resp.response?.code).toBe(EnumStatusCode.OK); + expect(resp.configVersions).toEqual([]); + }); +}); diff --git a/graphqlmetrics/cacheevents/schema.go b/graphqlmetrics/cacheevents/schema.go index 8063715849..fde98ac8f9 100644 --- a/graphqlmetrics/cacheevents/schema.go +++ b/graphqlmetrics/cacheevents/schema.go @@ -33,6 +33,8 @@ func EventTypeString(t cacheeventsv1.EventType) string { return "field_hash" case cacheeventsv1.EventType_ENTITY_TYPE_INFO: return "entity_type_info" + case cacheeventsv1.EventType_FIELD_SELECTION: + return "field_selection" default: return "" } diff --git a/graphqlmetrics/cacheevents/writer.go b/graphqlmetrics/cacheevents/writer.go index a3e44b7123..e23ca17ca3 100644 --- a/graphqlmetrics/cacheevents/writer.go +++ b/graphqlmetrics/cacheevents/writer.go @@ -168,6 +168,7 @@ func appendCacheEventRow( ev.BaseKeyHash, // BaseKeyHash ev.HeaderHash, // HeaderHash ev.ResponseHash, // ResponseHash + ev.ChildTypeName, // ChildTypeName (FIELD_SELECTION only; empty for every other event) ) } diff --git a/graphqlmetrics/cacheevents/writer_test.go b/graphqlmetrics/cacheevents/writer_test.go index 082ff73fa2..0207af40a0 100644 --- a/graphqlmetrics/cacheevents/writer_test.go +++ b/graphqlmetrics/cacheevents/writer_test.go @@ -119,10 +119,11 @@ func TestAppendCacheEventRow_CacheOpKindOverridesFreeformString(t *testing.T) { // Order from the source: [Timestamp, OrgID, FedGraphID, RouterConfigVersion, // EventType, OperationHash, OperationName, OperationType, ClientName, // ClientVersion, TraceID, IsShadow, EntityType, SubgraphID, KeyHash, + // FieldName, FieldHash, FieldPath, EntityCount, EntityUniqueKeys, // Verdict, ByteSize, CacheAgeMs, TTLMs, WriteReason, Source, FetchSource, // DurationMs, TTFBMs, ItemCount, IsEntityFetch, HttpStatusCode, // ResponseBytes, ErrorMessage, ErrorCode, CacheOp, ...] - const cacheOpIdx = 30 + const cacheOpIdx = 35 t.Run("typed enum wins over the legacy string", func(t *testing.T) { batch := &fakeBatch{} @@ -175,7 +176,7 @@ func TestAppendCacheEventRow_OrgAndGraphIDsArePropagated(t *testing.T) { func TestAppendCacheEventRow_FieldPath_ServializesAsArrayColumn(t *testing.T) { t.Parallel() - const fieldPathIdx = 41 + const fieldPathIdx = 17 t.Run("nil FieldPath becomes empty array, never nil", func(t *testing.T) { batch := &fakeBatch{} diff --git a/graphqlmetrics/gen/proto/wg/cosmo/cacheevents/v1/cacheevents.pb.go b/graphqlmetrics/gen/proto/wg/cosmo/cacheevents/v1/cacheevents.pb.go index 7fec3af36e..5c0773e002 100644 --- a/graphqlmetrics/gen/proto/wg/cosmo/cacheevents/v1/cacheevents.pb.go +++ b/graphqlmetrics/gen/proto/wg/cosmo/cacheevents/v1/cacheevents.pb.go @@ -37,6 +37,7 @@ const ( EventType_CACHE_OP_ERROR EventType = 10 EventType_FIELD_HASH EventType = 11 EventType_ENTITY_TYPE_INFO EventType = 12 + EventType_FIELD_SELECTION EventType = 13 ) // Enum value maps for EventType. @@ -55,6 +56,7 @@ var ( 10: "CACHE_OP_ERROR", 11: "FIELD_HASH", 12: "ENTITY_TYPE_INFO", + 13: "FIELD_SELECTION", } EventType_value = map[string]int32{ "EVENT_TYPE_UNSPECIFIED": 0, @@ -70,6 +72,7 @@ var ( "CACHE_OP_ERROR": 10, "FIELD_HASH": 11, "ENTITY_TYPE_INFO": 12, + "FIELD_SELECTION": 13, } ) @@ -407,6 +410,16 @@ type CacheEvent struct { FieldName string `protobuf:"bytes,90,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` FieldHash uint64 `protobuf:"fixed64,91,opt,name=field_hash,json=fieldHash,proto3" json:"field_hash,omitempty"` FieldPath []string `protobuf:"bytes,93,rep,name=field_path,json=fieldPath,proto3" json:"field_path,omitempty"` + // FIELD_SELECTION only — emitted when the response walker enters an + // Object/Array accessor inside an entity scope. The accessor itself has + // no scalar value, so field_hash stays zero; the row's existence is the + // signal that the operator selected the accessor. child_type_name is the + // accessor's named return type (unwrapped of NonNull/List). For interface + // or union accessors it carries the abstract type name — concrete + // __typename info lives on the leaf field_hash rows under it. + // Field 95 is reserved for a future concrete_type_name column if we ever + // want to emit per-concrete-resolution accessor rows. + ChildTypeName string `protobuf:"bytes,94,opt,name=child_type_name,json=childTypeName,proto3" json:"child_type_name,omitempty"` // ENTITY_TYPE_INFO only. EntityCount uint32 `protobuf:"varint,100,opt,name=entity_count,json=entityCount,proto3" json:"entity_count,omitempty"` EntityUniqueKeys uint32 `protobuf:"varint,101,opt,name=entity_unique_keys,json=entityUniqueKeys,proto3" json:"entity_unique_keys,omitempty"` @@ -762,6 +775,13 @@ func (x *CacheEvent) GetFieldPath() []string { return nil } +func (x *CacheEvent) GetChildTypeName() string { + if x != nil { + return x.ChildTypeName + } + return "" +} + func (x *CacheEvent) GetEntityCount() uint32 { if x != nil { return x.EntityCount @@ -790,7 +810,7 @@ const file_wg_cosmo_cacheevents_v1_cacheevents_proto_rawDesc = "" + ")wg/cosmo/cacheevents/v1/cacheevents.proto\x12\x17wg.cosmo.cacheevents.v1\"^\n" + "\x1fPublishEntityCacheEventsRequest\x12;\n" + "\x06events\x18\x01 \x03(\v2#.wg.cosmo.cacheevents.v1.CacheEventR\x06events\"\"\n" + - " PublishEntityCacheEventsResponse\"\xb2\x0e\n" + + " PublishEntityCacheEventsResponse\"\xf4\x0e\n" + "\n" + "CacheEvent\x12.\n" + "\x13timestamp_unix_nano\x18\x01 \x01(\x06R\x11timestampUnixNano\x12A\n" + @@ -854,10 +874,11 @@ const file_wg_cosmo_cacheevents_v1_cacheevents_proto_rawDesc = "" + "\n" + "field_hash\x18[ \x01(\x06R\tfieldHash\x12\x1d\n" + "\n" + - "field_path\x18] \x03(\tR\tfieldPath\x12!\n" + + "field_path\x18] \x03(\tR\tfieldPath\x12&\n" + + "\x0fchild_type_name\x18^ \x01(\tR\rchildTypeName\x12!\n" + "\fentity_count\x18d \x01(\rR\ventityCount\x12,\n" + "\x12entity_unique_keys\x18e \x01(\rR\x10entityUniqueKeys\x12H\n" + - "\rcache_op_kind\x18n \x01(\x0e2$.wg.cosmo.cacheevents.v1.CacheOpKindR\vcacheOpKindJ\x04\b\\\x10]R\x10parent_type_name*\xf5\x01\n" + + "\rcache_op_kind\x18n \x01(\x0e2$.wg.cosmo.cacheevents.v1.CacheOpKindR\vcacheOpKindJ\x04\b\\\x10]J\x04\b_\x10`R\x10parent_type_nameR\x12concrete_type_name*\x8a\x02\n" + "\tEventType\x12\x1a\n" + "\x16EVENT_TYPE_UNSPECIFIED\x10\x00\x12\v\n" + "\aL1_READ\x10\x01\x12\v\n" + @@ -873,7 +894,8 @@ const file_wg_cosmo_cacheevents_v1_cacheevents_proto_rawDesc = "" + "\x12\x0e\n" + "\n" + "FIELD_HASH\x10\v\x12\x14\n" + - "\x10ENTITY_TYPE_INFO\x10\f*\\\n" + + "\x10ENTITY_TYPE_INFO\x10\f\x12\x13\n" + + "\x0fFIELD_SELECTION\x10\r*\\\n" + "\vCacheOpKind\x12\x1d\n" + "\x19CACHE_OP_KIND_UNSPECIFIED\x10\x00\x12\a\n" + "\x03GET\x10\x01\x12\a\n" + diff --git a/proto/wg/cosmo/cacheevents/v1/cacheevents.proto b/proto/wg/cosmo/cacheevents/v1/cacheevents.proto index b42008fa99..ce1924988c 100644 --- a/proto/wg/cosmo/cacheevents/v1/cacheevents.proto +++ b/proto/wg/cosmo/cacheevents/v1/cacheevents.proto @@ -4,7 +4,8 @@ package wg.cosmo.cacheevents.v1; // CacheEventsService receives raw entity-cache decision events from the router. // Events are ingested per-fetch (one event per cache decision) and persisted -// into ClickHouse for analytics. +// into ClickHouse for analytics. See graphqlmetrics/cacheevents/ for the +// server-side processor and ClickHouse schema. service CacheEventsService { rpc PublishEntityCacheEvents(PublishEntityCacheEventsRequest) returns (PublishEntityCacheEventsResponse) {} @@ -30,6 +31,7 @@ enum EventType { CACHE_OP_ERROR = 10; FIELD_HASH = 11; ENTITY_TYPE_INFO = 12; + FIELD_SELECTION = 13; } enum CacheOpKind { @@ -140,6 +142,18 @@ message CacheEvent { reserved 92; reserved "parent_type_name"; repeated string field_path = 93; + // FIELD_SELECTION only — emitted when the response walker enters an + // Object/Array accessor inside an entity scope. The accessor itself has + // no scalar value, so field_hash stays zero; the row's existence is the + // signal that the operator selected the accessor. child_type_name is the + // accessor's named return type (unwrapped of NonNull/List). For interface + // or union accessors it carries the abstract type name — concrete + // __typename info lives on the leaf field_hash rows under it. + // Field 95 is reserved for a future concrete_type_name column if we ever + // want to emit per-concrete-resolution accessor rows. + string child_type_name = 94; + reserved 95; + reserved "concrete_type_name"; // ENTITY_TYPE_INFO only. uint32 entity_count = 100; diff --git a/proto/wg/cosmo/platform/v1/platform.proto b/proto/wg/cosmo/platform/v1/platform.proto index d1be60a9c8..0348a32633 100644 --- a/proto/wg/cosmo/platform/v1/platform.proto +++ b/proto/wg/cosmo/platform/v1/platform.proto @@ -3006,6 +3006,19 @@ message GetProposalChecksResponse { int32 totalChecksCount = 3; } +message GetCacheCohortConfigVersionsRequest { + string federated_graph_id = 1; + // When unset, the base/main cohort (rows with feature_flag_id IS NULL) is returned. + optional string feature_flag_id = 2; +} + +message GetCacheCohortConfigVersionsResponse { + Response response = 1; + // schemaVersion.id UUIDs that have ever been minted for the given + // (federated_graph_id, feature_flag_id) cohort, newest first. + repeated string config_versions = 2; +} + message UpdateProposalRequest { message UpdateProposalSubgraphs { repeated ProposalSubgraph subgraphs = 1; @@ -3637,6 +3650,14 @@ service PlatformService { rpc GetProposalsByFederatedGraph(GetProposalsByFederatedGraphRequest) returns (GetProposalsByFederatedGraphResponse) {} // GetProposalChecks returns checks for a proposal. rpc GetProposalChecks(GetProposalChecksRequest) returns (GetProposalChecksResponse) {} + // GetCacheCohortConfigVersions returns all RouterConfigVersion (schemaVersion.id) + // UUIDs that have ever been minted for the given (federated_graph_id, + // feature_flag_id) cohort, newest first. Used by hub to filter + // gql_cache_events_raw across the full set of config versions a feature + // flag has produced (proposal unapprove→re-approve cycles mint new + // schemaVersions). Pass feature_flag_id unset to fetch the base/main + // cohort's config versions. + rpc GetCacheCohortConfigVersions(GetCacheCohortConfigVersionsRequest) returns (GetCacheCohortConfigVersionsResponse) {} // BulkUpdateProposalRolloutPercentages atomically creates or updates rollout // percentages across one or more proposals on the same federated graph. For // proposals without an existing rollout, the handler creates feature subgraphs diff --git a/router-tests/entity_caching/cache_events_export_test.go b/router-tests/entity_caching/cache_events_export_test.go index f3b1c56597..cd3e9db79e 100644 --- a/router-tests/entity_caching/cache_events_export_test.go +++ b/router-tests/entity_caching/cache_events_export_test.go @@ -117,3 +117,99 @@ func TestCacheEventsExport_DeliversBatchesWithBearerAuth(t *testing.T) { "request[%d]: expected non-empty token in Authorization header", i) } } + +// TestCacheEventsExport_EmitsAccessorRows is the end-to-end guarantee that +// when events export is enabled, the router produces FIELD_SELECTION events +// for nested Object/Array accessors alongside the existing FIELD_HASH leaf +// events. Emission rides on EventsExport.Enabled — there is no separate +// sub-flag; downstream consumers either read both event types or filter to +// just field_hash via the EventType column. +// +// The query exercises Warehouse.location (an Object accessor) so the walker +// enters the nested accessor inside an entity scope, which is the +// precondition for emission. +func TestCacheEventsExport_EmitsAccessorRows(t *testing.T) { + t.Parallel() + + handler := &capturingCacheEventsHandler{} + mux := http.NewServeMux() + path, h := cacheeventsv1connect.NewCacheEventsServiceHandler(handler) + mux.Handle(path, h) + fakeServer := httptest.NewServer(mux) + t.Cleanup(fakeServer.Close) + + servers, _ := startSubgraphServers(t) + configJSON := buildConfigJSON(servers) + cache := newMemoryCache(t) + + testenv.Run(t, &testenv.Config{ + RouterConfigJSONTemplate: configJSON, + RouterOptions: []core.Option{ + core.WithEntityCaching(config.EntityCachingConfiguration{ + Enabled: true, + L1: config.EntityCachingL1Configuration{ + Enabled: true, + }, + L2: config.EntityCachingL2Configuration{ + Enabled: false, + }, + EventsExport: config.EntityCacheEventsExportConfig{ + Enabled: true, + Endpoint: fakeServer.URL, + BatchSize: 1, + QueueSize: 64, + Interval: 100 * time.Millisecond, + }, + }), + core.WithEntityCacheInstances(map[string]resolve.LoaderCache{ + "default": cache, + }), + }, + }, func(t *testing.T, xEnv *testenv.Environment) { + // warehouse selects Warehouse.location (Object accessor) → + // triggers FIELD_SELECTION emission inside the entity scope. + req := testenv.GraphQLRequest{ + Query: `{ warehouse(locationId: "w1") { location { id } name capacity } }`, + } + xEnv.MakeGraphQLRequestOK(req) + + // Wait for at least one FIELD_SELECTION event before asserting — + // the periodic exporter may not have flushed yet immediately after + // the request returns. + require.Eventually(t, func() bool { + _, events := handler.snapshot() + for _, ev := range events { + if ev.EventType == cacheeventsv1.EventType_FIELD_SELECTION { + return true + } + } + return false + }, 10*time.Second, 50*time.Millisecond, "expected at least one FIELD_SELECTION event") + }) + + _, events := handler.snapshot() + + var selections []*cacheeventsv1.CacheEvent + for _, ev := range events { + if ev.EventType == cacheeventsv1.EventType_FIELD_SELECTION { + selections = append(selections, ev) + } + } + require.NotEmpty(t, selections, "FIELD_SELECTION must emit when the query selects an accessor inside an entity scope") + + // One of the emitted selection rows must correspond to + // Warehouse.location with ChildTypeName=Location, a non-zero KeyHash + // (PII guard passed), and zero FieldHash (accessors carry no scalar + // value). + var found bool + for _, ev := range selections { + if ev.EntityType == "Warehouse" && ev.FieldName == "location" { + require.Equal(t, "Location", ev.ChildTypeName, "ChildTypeName must be the accessor's unwrapped return type") + require.NotZero(t, ev.KeyHash, "FIELD_SELECTION rows must carry a hashed entity key (PII guard)") + require.Zero(t, ev.FieldHash, "FIELD_SELECTION rows must not carry a value hash") + found = true + break + } + } + require.True(t, found, "expected a FIELD_SELECTION for Warehouse.location among %d emitted selection rows", len(selections)) +} diff --git a/router-tests/operations/feature_flag_rollouts_test.go b/router-tests/operations/feature_flag_rollouts_test.go new file mode 100644 index 0000000000..305997cc85 --- /dev/null +++ b/router-tests/operations/feature_flag_rollouts_test.go @@ -0,0 +1,227 @@ +package integration + +import ( + "strings" + "testing" + + "github.com/stretchr/testify/require" + "github.com/wundergraph/cosmo/router-tests/testenv" + "github.com/wundergraph/cosmo/router/core" + nodev1 "github.com/wundergraph/cosmo/router/gen/proto/wg/cosmo/node/v1" + "github.com/wundergraph/cosmo/router/pkg/config" +) + +// setMyFFTrafficPercentage rewires the standard testenv `myff` feature flag +// to carry the given traffic_percentage. The myff flag swaps in a feature +// subgraph that adds a `productCount` field to Employee — when the rollout +// selector picks myff, the response includes productCount; when it falls +// through to base, the query errors with "Cannot query field productCount". +// That gives every assertion a clean rollout-vs-base discriminator without +// needing to count which goroutine got which bucket. +func setMyFFTrafficPercentage(routerConfig *nodev1.RouterConfig, pct uint32) { + if routerConfig.FeatureFlagConfigs == nil { + return + } + if myff, ok := routerConfig.FeatureFlagConfigs.ConfigByFeatureFlagName["myff"]; ok { + myff.TrafficPercentage = &pct + } +} + +// rolloutsEnabled returns the RouterOptions slice that turns the rollout +// selector on. Tests explicitly opt-in because testenv defaults the +// FeatureFlagRollouts.Enabled to its zero value (false). +func rolloutsEnabled() []core.Option { + return []core.Option{ + core.WithFeatureFlagRollouts(config.FeatureFlagRollouts{Enabled: true}), + } +} + +const ( + productCountQuery = `{ employees { id productCount } }` + + // Error response when the base graph (which doesn't define productCount) + // serves the request because the rollout selector either picked nothing + // or the flag was 0%. + // + // res.Body is a raw JSON string, so the inner double-quotes around the + // field name are JSON-escaped. Match the on-the-wire form, not the + // human-readable form. + productCountFieldError = `Cannot query field \"productCount\"` +) + +func TestFeatureFlagRollouts(t *testing.T) { + t.Parallel() + + t.Run("traffic_percentage 100 routes every request to the rollout flag", func(t *testing.T) { + t.Parallel() + + testenv.Run(t, &testenv.Config{ + RouterOptions: rolloutsEnabled(), + ModifyRouterConfig: func(routerConfig *nodev1.RouterConfig) { + setMyFFTrafficPercentage(routerConfig, 100) + }, + }, func(t *testing.T, xEnv *testenv.Environment) { + for range 50 { + res := xEnv.MakeGraphQLRequestOK(testenv.GraphQLRequest{Query: productCountQuery}) + require.Equal(t, "myff", res.Response.Header.Get("X-Feature-Flag"), + "100%% rollout must always serve the flag's variant") + require.NotContains(t, res.Body, productCountFieldError) + } + }) + }) + + t.Run("traffic_percentage 0 never routes to the flag", func(t *testing.T) { + t.Parallel() + + testenv.Run(t, &testenv.Config{ + RouterOptions: rolloutsEnabled(), + ModifyRouterConfig: func(routerConfig *nodev1.RouterConfig) { + setMyFFTrafficPercentage(routerConfig, 0) + }, + }, func(t *testing.T, xEnv *testenv.Environment) { + for range 50 { + res := xEnv.MakeGraphQLRequestOK(testenv.GraphQLRequest{Query: productCountQuery}) + require.Empty(t, res.Response.Header.Get("X-Feature-Flag"), + "0%% rollout flag must never be picked") + require.Contains(t, res.Body, productCountFieldError) + } + }) + }) + + t.Run("header pin targeting a rollout flag is ignored", func(t *testing.T) { + t.Parallel() + + // myff at 0% means the rollout selector never picks it, AND the header + // pin must be bypassed because rollout flags aren't client-steerable. + // Net: every request falls through to base. + testenv.Run(t, &testenv.Config{ + RouterOptions: rolloutsEnabled(), + ModifyRouterConfig: func(routerConfig *nodev1.RouterConfig) { + setMyFFTrafficPercentage(routerConfig, 0) + }, + }, func(t *testing.T, xEnv *testenv.Environment) { + res := xEnv.MakeGraphQLRequestOK(testenv.GraphQLRequest{ + Query: productCountQuery, + Header: map[string][]string{"X-Feature-Flag": {"myff"}}, + }) + require.Empty(t, res.Response.Header.Get("X-Feature-Flag"), + "header pin on a rollout flag must be ignored — base serves the request") + require.Contains(t, res.Body, productCountFieldError) + }) + }) + + t.Run("cookie pin targeting a rollout flag is ignored", func(t *testing.T) { + t.Parallel() + + testenv.Run(t, &testenv.Config{ + RouterOptions: rolloutsEnabled(), + ModifyRouterConfig: func(routerConfig *nodev1.RouterConfig) { + setMyFFTrafficPercentage(routerConfig, 0) + }, + }, func(t *testing.T, xEnv *testenv.Environment) { + res := xEnv.MakeGraphQLRequestOK(testenv.GraphQLRequest{ + Query: productCountQuery, + Header: map[string][]string{"Cookie": {"feature_flag=myff"}}, + }) + require.Empty(t, res.Response.Header.Get("X-Feature-Flag"), + "cookie pin on a rollout flag must be ignored — base serves the request") + require.Contains(t, res.Body, productCountFieldError) + }) + }) + + t.Run("flag without traffic_percentage stays preview-only — header still works", func(t *testing.T) { + t.Parallel() + + // Selector is enabled, but myff has no traffic_percentage set, so it's + // a preview flag and header/cookie pinning still works exactly as before. + testenv.Run(t, &testenv.Config{ + RouterOptions: rolloutsEnabled(), + }, func(t *testing.T, xEnv *testenv.Environment) { + res := xEnv.MakeGraphQLRequestOK(testenv.GraphQLRequest{ + Query: productCountQuery, + Header: map[string][]string{"X-Feature-Flag": {"myff"}}, + }) + require.Equal(t, "myff", res.Response.Header.Get("X-Feature-Flag")) + require.NotContains(t, res.Body, productCountFieldError) + }) + }) + + t.Run("rollouts disabled — header pin still works even with traffic_percentage set", func(t *testing.T) { + t.Parallel() + + // FeatureFlagRollouts.Enabled = false (default). Even with a non-zero + // traffic_percentage on myff, the selector is dormant: the flag stays + // header/cookie-pinnable and percentage is simply ignored. + testenv.Run(t, &testenv.Config{ + ModifyRouterConfig: func(routerConfig *nodev1.RouterConfig) { + setMyFFTrafficPercentage(routerConfig, 50) + }, + }, func(t *testing.T, xEnv *testenv.Environment) { + res := xEnv.MakeGraphQLRequestOK(testenv.GraphQLRequest{ + Query: productCountQuery, + Header: map[string][]string{"X-Feature-Flag": {"myff"}}, + }) + require.Equal(t, "myff", res.Response.Header.Get("X-Feature-Flag"), + "selector off + header pin → flag still served the legacy way") + require.NotContains(t, res.Body, productCountFieldError) + }) + }) + + t.Run("traffic_percentage above 100 fails closed — selector disables itself", func(t *testing.T) { + t.Parallel() + + // 200% is rejected by newRolloutSelector with a logged error and + // returns nil — the selector is disabled, every unpinned request + // falls through to base. + testenv.Run(t, &testenv.Config{ + RouterOptions: rolloutsEnabled(), + ModifyRouterConfig: func(routerConfig *nodev1.RouterConfig) { + setMyFFTrafficPercentage(routerConfig, 200) + }, + }, func(t *testing.T, xEnv *testenv.Environment) { + for range 50 { + res := xEnv.MakeGraphQLRequestOK(testenv.GraphQLRequest{Query: productCountQuery}) + require.Empty(t, res.Response.Header.Get("X-Feature-Flag")) + require.Contains(t, res.Body, productCountFieldError) + } + }) + }) + + t.Run("traffic_percentage 50 distributes ~50/50 across rollout and base", func(t *testing.T) { + t.Parallel() + + // Statistical assertion. Random per-request bucketing → over many + // samples the empirical share should land near the target with a + // generous tolerance to avoid flake. + testenv.Run(t, &testenv.Config{ + RouterOptions: rolloutsEnabled(), + ModifyRouterConfig: func(routerConfig *nodev1.RouterConfig) { + setMyFFTrafficPercentage(routerConfig, 50) + }, + }, func(t *testing.T, xEnv *testenv.Environment) { + const samples = 1000 + rolloutHits := 0 + baseHits := 0 + for range samples { + res := xEnv.MakeGraphQLRequestOK(testenv.GraphQLRequest{Query: productCountQuery}) + switch { + case res.Response.Header.Get("X-Feature-Flag") == "myff": + rolloutHits++ + case strings.Contains(res.Body, productCountFieldError): + baseHits++ + default: + t.Fatalf("unexpected response: header=%q body=%q", + res.Response.Header.Get("X-Feature-Flag"), res.Body) + } + } + require.Equal(t, samples, rolloutHits+baseHits, "every request must hit one bucket") + + // Tolerance: ±10 percentage points across 1000 samples is comfortable + // (a true 50% Bernoulli with n=1000 has σ ≈ 1.6pp, so 10pp ≈ 6σ). + gotRolloutPct := float64(rolloutHits) / float64(samples) + require.InDeltaf(t, 0.50, gotRolloutPct, 0.10, + "expected ~50%% rollout, got %.3f (rollout=%d base=%d)", + gotRolloutPct, rolloutHits, baseHits) + }) + }) +} diff --git a/router/core/feature_flag_rollout.go b/router/core/feature_flag_rollout.go new file mode 100644 index 0000000000..cde79a416a --- /dev/null +++ b/router/core/feature_flag_rollout.go @@ -0,0 +1,195 @@ +package core + +import ( + mathrand "math/rand/v2" + "net/http" + "sort" + + "github.com/wundergraph/cosmo/router/pkg/config" + "go.uber.org/zap" + + nodev1 "github.com/wundergraph/cosmo/router/gen/proto/wg/cosmo/node/v1" +) + +const rolloutBucketScale = 10000 // basis points: 100% == 10000 + +// rolloutRule is a resolved per-flag percentage range in basis points. +// A request whose bucket falls in [lo, hi) is routed to flagName. +type rolloutRule struct { + flagName string + lo, hi uint32 +} + +// rolloutSelector picks a feature flag for an unpinned request based on the +// per-flag traffic_percentage shipped in the execution config. Bucketing is +// uniformly random per request — there is no per-user stickiness. +type rolloutSelector struct { + rules []rolloutRule + rolloutFlags map[string]struct{} +} + +// newRolloutSelector resolves the proto traffic_percentage for every flag in +// ffConfigs into a single ordered list of buckets. Returns nil (no rollout) +// when the feature is disabled, no flag carries a percentage, or the +// cumulative percentage exceeds 100 (we fail closed to base rather than +// route partial traffic). +func newRolloutSelector( + cfg *config.FeatureFlagRollouts, + ffConfigs map[string]*nodev1.FeatureFlagRouterExecutionConfig, + logger *zap.Logger, +) (*rolloutSelector, error) { + if cfg == nil || !cfg.Enabled { + return nil, nil + } + + // Pure proto-driven: every flag whose execution config carries a + // traffic_percentage participates. Sort by name for stable ordering + // across reloads. + var names []string + for name, ec := range ffConfigs { + if ec.TrafficPercentage == nil { + continue + } + names = append(names, name) + } + sort.Strings(names) + + // First pass: drop any flag whose own pct is over 100. This is always an + // operator typo — a single rollout slice can never exceed the whole graph. + accepted := names[:0] + for _, name := range names { + pct := ffConfigs[name].GetTrafficPercentage() + if pct > 100 { + logger.Error("feature_flag_rollouts: flag percentage exceeds 100; flag dropped, traffic falls through to base for it", + zap.String("flag", name), zap.Uint32("percentage", pct)) + continue + } + accepted = append(accepted, name) + } + + // Second pass: greedy fit under the 100% budget, alphabetical order. + // If the next flag would push cumulative over 100 it is dropped (logged) + // and we keep filling with the remaining flags. Earlier choice: returning + // nil here disabled every rollout flag on the graph and silently restored + // header/cookie pinnability — a single typo blew up the entire rollout. + // Drop-the-offender preserves siblings; the operator sees an explicit + // error in the log and the dropped flag's traffic falls through to base. + var sum uint64 + var cursor uint32 + rules := make([]rolloutRule, 0, len(accepted)) + rolloutFlags := make(map[string]struct{}, len(accepted)) + for _, name := range accepted { + pct := ffConfigs[name].GetTrafficPercentage() + if sum+uint64(pct) > 100 { + logger.Error("feature_flag_rollouts: flag would push cumulative percentage over 100; flag dropped, traffic falls through to base for it", + zap.String("flag", name), + zap.Uint32("percentage", pct), + zap.Uint64("cumulative_so_far", sum)) + continue + } + sum += uint64(pct) + rolloutFlags[name] = struct{}{} + if pct == 0 { + logger.Warn("feature_flag_rollouts: flag has percentage 0 (degenerate); flag will not be reachable", + zap.String("flag", name)) + continue + } + span := pct * (rolloutBucketScale / 100) + rules = append(rules, rolloutRule{flagName: name, lo: cursor, hi: cursor + span}) + cursor += span + } + + // In case all ffs had 0 percentage (or every flag was dropped above). + if len(rules) == 0 && len(rolloutFlags) == 0 { + logger.Warn("feature_flag_rollouts: no usable flags; selector disabled") + return nil, nil + } + + logRolloutFlagSummary(logger, ffConfigs, rolloutFlags, rules) + + return &rolloutSelector{ + rules: rules, + rolloutFlags: rolloutFlags, + }, nil +} + +// isRolloutFlag reports whether name is a rollout flag. The request handler +// uses this to decide whether a header/cookie pin should be ignored — rollout +// flags are never client-steerable. +func (s *rolloutSelector) isRolloutFlag(name string) bool { + if s == nil { + return false + } + _, ok := s.rolloutFlags[name] + return ok +} + +// pick chooses a rollout flag for an unpinned request. Each request is +// bucketed independently with crypto/rand so distribution holds in aggregate; +// individual clients may flicker between variants across requests. +func (s *rolloutSelector) pick(_ http.ResponseWriter, _ *http.Request) (flag, source string, ok bool) { + if s == nil || len(s.rules) == 0 { + return "", "", false + } + bucket := randomBucket() + for _, rule := range s.rules { + if bucket >= rule.lo && bucket < rule.hi { + return rule.flagName, "random", true + } + } + // Bucket landed outside any rule's range — request falls through to base. + return "", "random", false +} + +// randomBucket returns a uniform basis-point bucket in [0, rolloutBucketScale). +// +// math/rand/v2.Uint32N is lock-free per goroutine, ~5 ns, no syscall, and +// rejection-samples to remove the modulo bias `crypto/rand % N` would have. +// Traffic bucketing has no security requirement; predictability of the +// per-request bucket would not let a client influence the gate (the bucket +// itself is not visible to the client and is not derived from request +// content under the current "no stickiness" design). +func randomBucket() uint32 { + return mathrand.Uint32N(rolloutBucketScale) +} + +// logRolloutFlagSummary emits one line per feature flag at config load so +// operators can confirm reachability at a glance. +func logRolloutFlagSummary( + logger *zap.Logger, + ffConfigs map[string]*nodev1.FeatureFlagRouterExecutionConfig, + rolloutFlags map[string]struct{}, + rules []rolloutRule, +) { + if logger == nil || len(ffConfigs) == 0 { + return + } + pctByFlag := make(map[string]uint32, len(rules)) + for _, r := range rules { + pctByFlag[r.flagName] = (r.hi - r.lo) / (rolloutBucketScale / 100) + } + names := make([]string, 0, len(ffConfigs)) + for n := range ffConfigs { + names = append(names, n) + } + sort.Strings(names) + for _, name := range names { + if _, isRollout := rolloutFlags[name]; isRollout { + pct := pctByFlag[name] + if pct == 0 { + logger.Warn("feature flag has percentage=0 — unreachable", + zap.String("flag", name), zap.String("mode", "rollout")) + continue + } + logger.Info("feature flag registered", + zap.String("flag", name), + zap.String("mode", "rollout"), + zap.Uint32("percentage", pct)) + } else { + logger.Info("feature flag registered", + zap.String("flag", name), + zap.String("mode", "preview"), + zap.Strings("reachable_via", []string{"header", "cookie"})) + } + } +} diff --git a/router/core/feature_flag_rollout_test.go b/router/core/feature_flag_rollout_test.go new file mode 100644 index 0000000000..ec8cf09e35 --- /dev/null +++ b/router/core/feature_flag_rollout_test.go @@ -0,0 +1,183 @@ +package core + +import ( + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/require" + "github.com/wundergraph/cosmo/router/pkg/config" + "go.uber.org/zap" + + nodev1 "github.com/wundergraph/cosmo/router/gen/proto/wg/cosmo/node/v1" +) + +func u32p(v uint32) *uint32 { return &v } + +func newSelector(t *testing.T, ffConfigs map[string]*nodev1.FeatureFlagRouterExecutionConfig) *rolloutSelector { + t.Helper() + sel, err := newRolloutSelector( + &config.FeatureFlagRollouts{Enabled: true}, + ffConfigs, + zap.NewNop(), + ) + require.NoError(t, err) + return sel +} + +func TestNewRolloutSelector_DisabledReturnsNil(t *testing.T) { + t.Parallel() + sel, err := newRolloutSelector( + &config.FeatureFlagRollouts{Enabled: false}, + map[string]*nodev1.FeatureFlagRouterExecutionConfig{ + "foo": {TrafficPercentage: u32p(10)}, + }, + zap.NewNop(), + ) + require.NoError(t, err) + require.Nil(t, sel) +} + +func TestNewRolloutSelector_NilCfgReturnsNil(t *testing.T) { + t.Parallel() + sel, err := newRolloutSelector(nil, nil, zap.NewNop()) + require.NoError(t, err) + require.Nil(t, sel) +} + +func TestNewRolloutSelector_NoFlagsReturnsNil(t *testing.T) { + t.Parallel() + sel, err := newRolloutSelector( + &config.FeatureFlagRollouts{Enabled: true}, + map[string]*nodev1.FeatureFlagRouterExecutionConfig{ + "preview_only": {}, // no traffic_percentage + }, + zap.NewNop(), + ) + require.NoError(t, err) + require.Nil(t, sel) +} + +func TestNewRolloutSelector_DropsOverflowingFlagButKeepsSiblings(t *testing.T) { + t.Parallel() + // "a"=60, "b"=60 — alphabetical order means "a" lands inside the budget + // (60), and "b" would push to 120 → "b" is dropped, "a" is preserved. + sel, err := newRolloutSelector( + &config.FeatureFlagRollouts{Enabled: true}, + map[string]*nodev1.FeatureFlagRouterExecutionConfig{ + "a": {TrafficPercentage: u32p(60)}, + "b": {TrafficPercentage: u32p(60)}, + }, + zap.NewNop(), + ) + require.NoError(t, err) + require.NotNil(t, sel) + require.True(t, sel.isRolloutFlag("a"), "a fits under budget and stays a rollout flag") + require.False(t, sel.isRolloutFlag("b"), "b would overflow budget and is dropped (falls through to base, no header/cookie pin)") +} + +func TestNewRolloutSelector_DropsAbove100PercentFlag(t *testing.T) { + t.Parallel() + // Single flag with pct > 100 is always an operator typo — the flag is + // dropped (logged); selector returns nil because nothing is left. + sel, err := newRolloutSelector( + &config.FeatureFlagRollouts{Enabled: true}, + map[string]*nodev1.FeatureFlagRouterExecutionConfig{ + "a": {TrafficPercentage: u32p(101)}, + }, + zap.NewNop(), + ) + require.NoError(t, err) + require.Nil(t, sel) +} + +func TestNewRolloutSelector_ZeroPercentFlagIsRolloutButUnreachable(t *testing.T) { + t.Parallel() + sel := newSelector(t, map[string]*nodev1.FeatureFlagRouterExecutionConfig{ + "shadow": {TrafficPercentage: u32p(0)}, + "live": {TrafficPercentage: u32p(50)}, + }) + require.NotNil(t, sel) + // Both flags are rollout flags (header/cookie pins must be ignored) + require.True(t, sel.isRolloutFlag("shadow"), "0%% flags must still be rollout flags") + require.True(t, sel.isRolloutFlag("live")) + require.False(t, sel.isRolloutFlag("preview_only")) + + // Pick must never return the 0%% flag + for range 200 { + flag, _, _ := sel.pick(httptest.NewRecorder(), httptest.NewRequest("GET", "/", nil)) + require.NotEqual(t, "shadow", flag, "0%% flag must never be picked") + } +} + +func TestPick_HonorsCumulativeRanges(t *testing.T) { + t.Parallel() + // Two flags at 30% and 20% = 50% rollout, 50% base. With enough samples + // the empirical distribution should be close. + sel := newSelector(t, map[string]*nodev1.FeatureFlagRouterExecutionConfig{ + "a": {TrafficPercentage: u32p(30)}, + "b": {TrafficPercentage: u32p(20)}, + }) + require.NotNil(t, sel) + require.True(t, sel.isRolloutFlag("a")) + require.True(t, sel.isRolloutFlag("b")) + + const samples = 20000 + counts := map[string]int{"a": 0, "b": 0, "": 0} + for range samples { + flag, _, _ := sel.pick(httptest.NewRecorder(), httptest.NewRequest("GET", "/", nil)) + counts[flag]++ + } + + // Allow ±3pp tolerance on each band. + const tolPP = 0.03 + checkBand := func(name string, want float64) { + t.Helper() + got := float64(counts[name]) / float64(samples) + require.InDeltaf(t, want, got, tolPP, "flag=%q got=%.3f want=%.3f", name, got, want) + } + checkBand("a", 0.30) + checkBand("b", 0.20) + checkBand("", 0.50) // base/fall-through +} + +func TestPick_IsRandomPerRequest(t *testing.T) { + t.Parallel() + sel := newSelector(t, map[string]*nodev1.FeatureFlagRouterExecutionConfig{ + "a": {TrafficPercentage: u32p(50)}, + }) + require.NotNil(t, sel) + + // Same identical request shape, called many times — both buckets must + // occur (random per request, no stickiness). + flagsSeen := map[string]struct{}{} + for range 200 { + flag, source, _ := sel.pick(httptest.NewRecorder(), httptest.NewRequest("GET", "/", nil)) + require.Equal(t, "random", source) + flagsSeen[flag] = struct{}{} + } + require.Contains(t, flagsSeen, "a", "expected to land on rollout flag at least once") + require.Contains(t, flagsSeen, "", "expected to fall through to base at least once") +} + +func TestNilSelector_IsRolloutFlagReturnsFalse(t *testing.T) { + t.Parallel() + var sel *rolloutSelector + require.False(t, sel.isRolloutFlag("anything")) +} + +func TestNilSelector_PickReturnsFalse(t *testing.T) { + t.Parallel() + var sel *rolloutSelector + flag, source, ok := sel.pick(httptest.NewRecorder(), httptest.NewRequest("GET", "/", nil)) + require.Equal(t, "", flag) + require.Equal(t, "", source) + require.False(t, ok) +} + +func TestRandomBucket_InRange(t *testing.T) { + t.Parallel() + for range 1000 { + b := randomBucket() + require.Less(t, b, uint32(rolloutBucketScale)) + } +} diff --git a/router/core/graph_server.go b/router/core/graph_server.go index 568646a8e4..7315be716e 100644 --- a/router/core/graph_server.go +++ b/router/core/graph_server.go @@ -141,6 +141,7 @@ type buildMultiGraphHandlerOptions struct { baseMux *chi.Mux featureFlagConfigs map[string]*nodev1.FeatureFlagRouterExecutionConfig reloadPersistentState *ReloadPersistentState + rolloutSelector *rolloutSelector } // newGraphServer creates a new server instance. @@ -349,10 +350,20 @@ func newGraphServer(ctx context.Context, r *Router, routerConfig *nodev1.RouterC s.logger.Info("Feature flags enabled", zap.Strings("flags", maps.Keys(featureFlagConfigMap))) } + rolloutSel, err := newRolloutSelector( + &r.featureFlagRollouts, + featureFlagConfigMap, + s.logger, + ) + if err != nil { + s.logger.Error("feature_flag_rollouts: invalid config; rollouts disabled", zap.Error(err)) + } + multiGraphHandler, err := s.buildMultiGraphHandler(ctx, buildMultiGraphHandlerOptions{ baseMux: gm.mux, featureFlagConfigs: featureFlagConfigMap, reloadPersistentState: r.reloadPersistentState, + rolloutSelector: rolloutSel, }) if err != nil { return nil, fmt.Errorf("failed to build feature flag handler: %w", err) @@ -525,9 +536,13 @@ func (s *graphServer) buildMultiGraphHandler( } return func(w http.ResponseWriter, r *http.Request) { - // Extract the feature flag and run the corresponding mux - // 1. From the request header - // 2. From the cookie + // Flag selection precedence: + // 1. X-Feature-Flag header (preview flags only) + // 2. feature_flag cookie (preview flags only) + // 3. Rollout selector (rollout flags, by traffic %) + // + // Header/cookie pins targeting a *rollout* flag are ignored — + // rollout flags must not be steerable by clients. ff := strings.TrimSpace(r.Header.Get(featureFlagHeader)) if ff == "" { @@ -537,7 +552,25 @@ func (s *graphServer) buildMultiGraphHandler( } } + if ff != "" && opts.rolloutSelector != nil && opts.rolloutSelector.isRolloutFlag(ff) { + ff = "" + } + + if ff == "" && opts.rolloutSelector != nil { + if picked, _, ok := opts.rolloutSelector.pick(w, r); ok { + ff = picked + } + } + if mux, ok := featureFlagToMux[ff]; ok { + // Always echo the active flag. A previous attempt suppressed it + // for random rollout picks on the theory that the header lets a + // client grind onto the variant — but the variant must have an + // observably different response shape (otherwise the rollout has + // no purpose), so a grinder already has a side-channel. Stripping + // just hides debug signal from honest clients, breaks downstream + // caches keyed on the flag, and complicates integration tests + // that need to know which variant served the request. w.Header().Set(featureFlagHeader, ff) mux.ServeHTTP(w, r) return diff --git a/router/core/graphql_handler.go b/router/core/graphql_handler.go index e16c540f48..580890143f 100644 --- a/router/core/graphql_handler.go +++ b/router/core/graphql_handler.go @@ -652,6 +652,7 @@ func (h *GraphQLHandler) cachingOptions(reqCtx *requestContext) resolve.CachingO EnableL1Cache: enableL1, EnableL2Cache: enableL2, EnableCacheAnalytics: len(h.entityCaching.Metrics) > 0 || h.entityCaching.EventsExporter != nil, + EmitFieldSelections: h.entityCaching.EventsExporter != nil, GlobalCacheKeyPrefix: globalKeyPrefix, L2CacheKeyInterceptor: h.buildL2CacheKeyInterceptor(reqCtx), } diff --git a/router/core/router.go b/router/core/router.go index 0126107603..3af4ad7057 100644 --- a/router/core/router.go +++ b/router/core/router.go @@ -2614,6 +2614,14 @@ func WithCacheWarmupConfig(cfg *config.CacheWarmupConfiguration) Option { } } +// WithFeatureFlagRollouts configures percentage-based traffic rollouts for +// feature flags shipped in the execution config. See FeatureFlagRollouts. +func WithFeatureFlagRollouts(cfg config.FeatureFlagRollouts) Option { + return func(r *Router) { + r.featureFlagRollouts = cfg + } +} + // WithPlanningDurationOverride sets a function that overrides the measured planning duration. // Used in tests to simulate slow queries that exceed the expensive query threshold. func WithPlanningDurationOverride(fn func(content string) time.Duration) Option { diff --git a/router/core/router_config.go b/router/core/router_config.go index 974ea2800b..9bf423ef7e 100644 --- a/router/core/router_config.go +++ b/router/core/router_config.go @@ -146,6 +146,7 @@ type Config struct { subgraphErrorPropagation config.SubgraphErrorPropagationConfiguration clientHeader config.ClientHeader cacheWarmup *config.CacheWarmupConfiguration + featureFlagRollouts config.FeatureFlagRollouts planningDurationOverride func(content string) time.Duration subscriptionHeartbeatInterval time.Duration hostName string diff --git a/router/core/supervisor_instance.go b/router/core/supervisor_instance.go index c6cd88a0da..6527cda7c7 100644 --- a/router/core/supervisor_instance.go +++ b/router/core/supervisor_instance.go @@ -270,6 +270,7 @@ func optionsFromResources(logger *zap.Logger, config *config.Config, reloadPersi WithRateLimitConfig(&config.RateLimit), WithClientHeader(config.ClientHeader), WithCacheWarmupConfig(&config.CacheWarmup), + WithFeatureFlagRollouts(config.FeatureFlagRollouts), WithMCP(config.MCP), WithConnectRPC(config.ConnectRPC), WithPlugins(config.Plugins), diff --git a/router/gen/proto/wg/cosmo/cacheevents/v1/cacheevents.pb.go b/router/gen/proto/wg/cosmo/cacheevents/v1/cacheevents.pb.go index e93fac671d..9ebff83b2c 100644 --- a/router/gen/proto/wg/cosmo/cacheevents/v1/cacheevents.pb.go +++ b/router/gen/proto/wg/cosmo/cacheevents/v1/cacheevents.pb.go @@ -37,6 +37,7 @@ const ( EventType_CACHE_OP_ERROR EventType = 10 EventType_FIELD_HASH EventType = 11 EventType_ENTITY_TYPE_INFO EventType = 12 + EventType_FIELD_SELECTION EventType = 13 ) // Enum value maps for EventType. @@ -55,6 +56,7 @@ var ( 10: "CACHE_OP_ERROR", 11: "FIELD_HASH", 12: "ENTITY_TYPE_INFO", + 13: "FIELD_SELECTION", } EventType_value = map[string]int32{ "EVENT_TYPE_UNSPECIFIED": 0, @@ -70,6 +72,7 @@ var ( "CACHE_OP_ERROR": 10, "FIELD_HASH": 11, "ENTITY_TYPE_INFO": 12, + "FIELD_SELECTION": 13, } ) @@ -407,6 +410,16 @@ type CacheEvent struct { FieldName string `protobuf:"bytes,90,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` FieldHash uint64 `protobuf:"fixed64,91,opt,name=field_hash,json=fieldHash,proto3" json:"field_hash,omitempty"` FieldPath []string `protobuf:"bytes,93,rep,name=field_path,json=fieldPath,proto3" json:"field_path,omitempty"` + // FIELD_SELECTION only — emitted when the response walker enters an + // Object/Array accessor inside an entity scope. The accessor itself has + // no scalar value, so field_hash stays zero; the row's existence is the + // signal that the operator selected the accessor. child_type_name is the + // accessor's named return type (unwrapped of NonNull/List). For interface + // or union accessors it carries the abstract type name — concrete + // __typename info lives on the leaf field_hash rows under it. + // Field 95 is reserved for a future concrete_type_name column if we ever + // want to emit per-concrete-resolution accessor rows. + ChildTypeName string `protobuf:"bytes,94,opt,name=child_type_name,json=childTypeName,proto3" json:"child_type_name,omitempty"` // ENTITY_TYPE_INFO only. EntityCount uint32 `protobuf:"varint,100,opt,name=entity_count,json=entityCount,proto3" json:"entity_count,omitempty"` EntityUniqueKeys uint32 `protobuf:"varint,101,opt,name=entity_unique_keys,json=entityUniqueKeys,proto3" json:"entity_unique_keys,omitempty"` @@ -762,6 +775,13 @@ func (x *CacheEvent) GetFieldPath() []string { return nil } +func (x *CacheEvent) GetChildTypeName() string { + if x != nil { + return x.ChildTypeName + } + return "" +} + func (x *CacheEvent) GetEntityCount() uint32 { if x != nil { return x.EntityCount @@ -790,7 +810,7 @@ const file_wg_cosmo_cacheevents_v1_cacheevents_proto_rawDesc = "" + ")wg/cosmo/cacheevents/v1/cacheevents.proto\x12\x17wg.cosmo.cacheevents.v1\"^\n" + "\x1fPublishEntityCacheEventsRequest\x12;\n" + "\x06events\x18\x01 \x03(\v2#.wg.cosmo.cacheevents.v1.CacheEventR\x06events\"\"\n" + - " PublishEntityCacheEventsResponse\"\xb2\x0e\n" + + " PublishEntityCacheEventsResponse\"\xf4\x0e\n" + "\n" + "CacheEvent\x12.\n" + "\x13timestamp_unix_nano\x18\x01 \x01(\x06R\x11timestampUnixNano\x12A\n" + @@ -854,10 +874,11 @@ const file_wg_cosmo_cacheevents_v1_cacheevents_proto_rawDesc = "" + "\n" + "field_hash\x18[ \x01(\x06R\tfieldHash\x12\x1d\n" + "\n" + - "field_path\x18] \x03(\tR\tfieldPath\x12!\n" + + "field_path\x18] \x03(\tR\tfieldPath\x12&\n" + + "\x0fchild_type_name\x18^ \x01(\tR\rchildTypeName\x12!\n" + "\fentity_count\x18d \x01(\rR\ventityCount\x12,\n" + "\x12entity_unique_keys\x18e \x01(\rR\x10entityUniqueKeys\x12H\n" + - "\rcache_op_kind\x18n \x01(\x0e2$.wg.cosmo.cacheevents.v1.CacheOpKindR\vcacheOpKindJ\x04\b\\\x10]R\x10parent_type_name*\xf5\x01\n" + + "\rcache_op_kind\x18n \x01(\x0e2$.wg.cosmo.cacheevents.v1.CacheOpKindR\vcacheOpKindJ\x04\b\\\x10]J\x04\b_\x10`R\x10parent_type_nameR\x12concrete_type_name*\x8a\x02\n" + "\tEventType\x12\x1a\n" + "\x16EVENT_TYPE_UNSPECIFIED\x10\x00\x12\v\n" + "\aL1_READ\x10\x01\x12\v\n" + @@ -873,7 +894,8 @@ const file_wg_cosmo_cacheevents_v1_cacheevents_proto_rawDesc = "" + "\x12\x0e\n" + "\n" + "FIELD_HASH\x10\v\x12\x14\n" + - "\x10ENTITY_TYPE_INFO\x10\f*\\\n" + + "\x10ENTITY_TYPE_INFO\x10\f\x12\x13\n" + + "\x0fFIELD_SELECTION\x10\r*\\\n" + "\vCacheOpKind\x12\x1d\n" + "\x19CACHE_OP_KIND_UNSPECIFIED\x10\x00\x12\a\n" + "\x03GET\x10\x01\x12\a\n" + diff --git a/router/internal/cacheevents/builder.go b/router/internal/cacheevents/builder.go index 9de2a0ca89..157502c96c 100644 --- a/router/internal/cacheevents/builder.go +++ b/router/internal/cacheevents/builder.go @@ -35,7 +35,8 @@ func BuildEvents(snapshot *resolve.CacheAnalyticsSnapshot, meta OperationMeta) [ len(snapshot.FetchTimings) + len(snapshot.ErrorEvents) + len(snapshot.ShadowComparisons) + len(snapshot.MutationEvents) + len(snapshot.HeaderImpactEvents) + len(snapshot.CacheOpErrors) + - len(snapshot.FieldHashes) + len(snapshot.EntityTypes) + len(snapshot.FieldHashes) + len(snapshot.FieldSelections) + + len(snapshot.EntityTypes) if total == 0 { return nil } @@ -162,15 +163,47 @@ func BuildEvents(snapshot *resolve.CacheAnalyticsSnapshot, meta OperationMeta) [ if ev.KeyHash == 0 { continue } - // EntityFieldHash has no DataSource or FieldPath in the pinned engine. - // Once those fields land upstream, populate them here. - out = append(out, fillCommon(meta, now, cacheeventsv1.EventType_FIELD_HASH, ev.EntityType, "", false, &cacheeventsv1.CacheEvent{ + // DataSource is the subgraph name that owns the enclosing entity in + // the response walk. Stamped per-entity-scope by the resolver + // (resolvable.go) using EntityDataSource() with a plan-time + // SourceName fallback, so each subgraph that participates in + // federating an entity produces its own field_hash events with its + // own subgraph name. Empty when not resolvable — written verbatim + // so downstream telemetry can distinguish "unknown" from any + // specific subgraph. + // + // FieldPath is the schema-name chain from the enclosing entity down + // to (but not including) the leaf, e.g. ['address'] for + // User.address.street. Empty for direct entity scalars. Written + // through the writer's nil-normalizing fieldPathColumn helper. + out = append(out, fillCommon(meta, now, cacheeventsv1.EventType_FIELD_HASH, ev.EntityType, ev.DataSource, false, &cacheeventsv1.CacheEvent{ KeyHash: ev.KeyHash, FieldName: ev.FieldName, FieldHash: ev.FieldHash, + FieldPath: ev.FieldPath, FetchSource: fetchSourceFromGoTools(ev.Source), })) } + for i := range snapshot.FieldSelections { + ev := &snapshot.FieldSelections[i] + // Same PII guard as field_hash — drop when the engine produced no + // hashed key. The accessor row's signal is its existence, but without + // an entity identity it can't be correlated to anything downstream. + if ev.KeyHash == 0 { + continue + } + // FieldHash stays zero — the accessor has no scalar value. The row's + // existence is the signal. ChildTypeName carries the accessor's + // unwrapped return type so consumers can correlate to the schema + // without re-walking FieldPath against the supergraph SDL. + out = append(out, fillCommon(meta, now, cacheeventsv1.EventType_FIELD_SELECTION, ev.EntityType, ev.DataSource, false, &cacheeventsv1.CacheEvent{ + KeyHash: ev.KeyHash, + FieldName: ev.FieldName, + FieldPath: ev.FieldPath, + ChildTypeName: ev.ChildTypeName, + FetchSource: fetchSourceFromGoTools(ev.Source), + })) + } for i := range snapshot.EntityTypes { ev := &snapshot.EntityTypes[i] out = append(out, fillCommon(meta, now, cacheeventsv1.EventType_ENTITY_TYPE_INFO, ev.TypeName, "", false, &cacheeventsv1.CacheEvent{ diff --git a/router/internal/cacheevents/builder_test.go b/router/internal/cacheevents/builder_test.go index 05c5cd48ed..1b7af1abd8 100644 --- a/router/internal/cacheevents/builder_test.go +++ b/router/internal/cacheevents/builder_test.go @@ -53,10 +53,21 @@ func TestBuildEvents_AllEventTypes(t *testing.T) { }, FieldHashes: []resolve.EntityFieldHash{ // Safe: KeyHash is set (engine ran with HashAnalyticsKeys=true) — emit a FIELD_HASH event. - {EntityType: "User", FieldName: "email", FieldHash: 0xfeed, KeyHash: 0xdead, Source: resolve.FieldSourceL2}, + // DataSource ("accounts") and FieldPath (["address"]) must be propagated onto the proto event. + {EntityType: "User", FieldName: "street", FieldPath: []string{"address"}, FieldHash: 0xfeed, KeyHash: 0xdead, Source: resolve.FieldSourceL2, DataSource: "accounts"}, // PII guard: KeyHash is zero (HashAnalyticsKeys=false on this entity) — must NOT emit. {EntityType: "User", FieldName: "phone", FieldHash: 0xbeef, KeyRaw: piiKey, Source: resolve.FieldSourceSubgraph}, }, + FieldSelections: []resolve.EntityFieldSelection{ + // Safe: KeyHash set — emit a FIELD_SELECTION event. ChildTypeName + // carries the accessor's unwrapped return type so downstream readers + // don't have to walk FieldPath against the supergraph schema. + {EntityType: "User", FieldName: "address", ChildTypeName: "Address", FieldPath: nil, KeyHash: 0xdead, Source: resolve.FieldSourceSubgraph, DataSource: "accounts"}, + // PII guard mirror — KeyHash=0 means the engine couldn't hash the + // key, so we drop the selection event rather than risk leakage via + // any future column. + {EntityType: "User", FieldName: "profile", ChildTypeName: "Profile", KeyRaw: piiKey, Source: resolve.FieldSourceSubgraph}, + }, EntityTypes: []resolve.EntityTypeInfo{ {TypeName: "User", Count: 5, UniqueKeys: 3}, }, @@ -73,8 +84,8 @@ func TestBuildEvents_AllEventTypes(t *testing.T) { } events := BuildEvents(snap, meta) - // 10 base event types + 1 FIELD_HASH (the second has KeyHash=0 and is dropped) + 1 ENTITY_TYPE_INFO = 12. - require.Len(t, events, 12) + // 10 base event types + 1 FIELD_HASH (the second has KeyHash=0 and is dropped) + 1 FIELD_SELECTION (same drop semantics) + 1 ENTITY_TYPE_INFO = 13. + require.Len(t, events, 13) // Verify each event type was emitted exactly once. seen := map[cacheeventsv1.EventType]int{} @@ -93,6 +104,7 @@ func TestBuildEvents_AllEventTypes(t *testing.T) { cacheeventsv1.EventType_HEADER_IMPACT, cacheeventsv1.EventType_CACHE_OP_ERROR, cacheeventsv1.EventType_FIELD_HASH, + cacheeventsv1.EventType_FIELD_SELECTION, cacheeventsv1.EventType_ENTITY_TYPE_INFO, } { require.Equalf(t, 1, seen[et], "missing event type %s", et) @@ -127,7 +139,8 @@ func TestBuildEvents_AllEventTypes(t *testing.T) { cacheeventsv1.EventType_L2_WRITE, cacheeventsv1.EventType_SHADOW_COMPARISON, cacheeventsv1.EventType_MUTATION, - cacheeventsv1.EventType_FIELD_HASH: + cacheeventsv1.EventType_FIELD_HASH, + cacheeventsv1.EventType_FIELD_SELECTION: require.NotZerof(t, ev.KeyHash, "KeyHash must be set for %s", ev.EventType) case cacheeventsv1.EventType_HEADER_IMPACT: require.NotZero(t, ev.BaseKeyHash, "BaseKeyHash must be set for HEADER_IMPACT") @@ -139,21 +152,38 @@ func TestBuildEvents_AllEventTypes(t *testing.T) { } } - // FIELD_HASH must carry the engine-provided FieldName + FieldHash and the - // dropped (KeyHash=0) entry must NOT have produced an event. + // FIELD_HASH must carry the engine-provided FieldName + FieldHash, the + // resolving subgraph's name on SubgraphId (from EntityFieldHash.DataSource), + // the schema-name FieldPath chain, and the dropped (KeyHash=0) entry + // must NOT have produced an event. for _, ev := range events { if ev.EventType != cacheeventsv1.EventType_FIELD_HASH { continue } - require.Equal(t, "email", ev.FieldName) + require.Equal(t, "street", ev.FieldName) require.Equal(t, uint64(0xfeed), ev.FieldHash) require.Equal(t, uint64(0xdead), ev.KeyHash) - // SubgraphId on FIELD_HASH is sourced from EntityFieldHash.DataSource on - // the new engine; the pinned engine has no DataSource on that struct, so - // the field is left empty until the engine bump lands. + require.Equal(t, "accounts", ev.SubgraphId, "SubgraphId must propagate from EntityFieldHash.DataSource") + require.Equal(t, []string{"address"}, ev.FieldPath, "FieldPath must propagate from EntityFieldHash.FieldPath") require.NotEqual(t, "phone", ev.FieldName, "FIELD_HASH event with KeyHash=0 must be dropped") } + // FIELD_SELECTION must carry the accessor name + ChildTypeName + zero + // FieldHash (accessor has no scalar value), and the dropped (KeyHash=0) + // entry must NOT have produced an event. + for _, ev := range events { + if ev.EventType != cacheeventsv1.EventType_FIELD_SELECTION { + continue + } + require.Equal(t, "address", ev.FieldName) + require.Equal(t, "Address", ev.ChildTypeName, "ChildTypeName must propagate from EntityFieldSelection.ChildTypeName") + require.Equal(t, uint64(0), ev.FieldHash, "FIELD_SELECTION rows have no value to hash") + require.Equal(t, uint64(0xdead), ev.KeyHash) + require.Equal(t, "accounts", ev.SubgraphId, "SubgraphId must propagate from EntityFieldSelection.DataSource") + require.Nil(t, ev.FieldPath, "nil FieldPath stays nil for direct entity accessors") + require.NotEqual(t, "profile", ev.FieldName, "FIELD_SELECTION event with KeyHash=0 must be dropped") + } + // ENTITY_TYPE_INFO must carry counts. for _, ev := range events { if ev.EventType != cacheeventsv1.EventType_ENTITY_TYPE_INFO { @@ -408,6 +438,26 @@ func TestBuildEvents_FieldHash_DropsWhenKeyHashIsZero(t *testing.T) { require.Equal(t, uint64(0xdead), events[0].KeyHash) } +func TestBuildEvents_FieldSelection_DropsWhenKeyHashIsZero(t *testing.T) { + t.Parallel() + + snap := &resolve.CacheAnalyticsSnapshot{ + FieldSelections: []resolve.EntityFieldSelection{ + {EntityType: "User", FieldName: "address", ChildTypeName: "Address", KeyHash: 0xdead, Source: resolve.FieldSourceSubgraph, DataSource: "accounts"}, + // PII guard: KeyRaw set but KeyHash=0 — drop. + {EntityType: "User", FieldName: "profile", ChildTypeName: "Profile", KeyHash: 0, KeyRaw: `{"id":"1"}`, Source: resolve.FieldSourceSubgraph}, + {EntityType: "User", FieldName: "settings", ChildTypeName: "Settings", KeyHash: 0, Source: resolve.FieldSourceSubgraph}, + }, + } + events := BuildEvents(snap, OperationMeta{}) + require.Len(t, events, 1, "only the entry with non-zero KeyHash must produce a FIELD_SELECTION event") + require.Equal(t, cacheeventsv1.EventType_FIELD_SELECTION, events[0].EventType) + require.Equal(t, "address", events[0].FieldName) + require.Equal(t, "Address", events[0].ChildTypeName) + require.Equal(t, uint64(0xdead), events[0].KeyHash) + require.Equal(t, uint64(0), events[0].FieldHash, "FIELD_SELECTION has no scalar value to hash") +} + func TestBuildEvents_EntityTypeInfo_NoKeyOrSubgraph(t *testing.T) { t.Parallel() diff --git a/router/pkg/config/config.go b/router/pkg/config/config.go index 4b854d67d7..b3b952e8df 100644 --- a/router/pkg/config/config.go +++ b/router/pkg/config/config.go @@ -1299,6 +1299,12 @@ type IntrospectionConfiguration struct { Secret string `yaml:"secret" env:"INTROSPECTION_SECRET"` } +// FeatureFlagRollouts toggles percentage-based traffic rollouts for feature +// flags shipped in the execution config. +type FeatureFlagRollouts struct { + Enabled bool `yaml:"enabled" envDefault:"true" env:"ENABLED"` +} + type Config struct { Version string `yaml:"version,omitempty" ignored:"true"` @@ -1377,6 +1383,8 @@ type Config struct { Plugins PluginsConfiguration `yaml:"plugins" envPrefix:"PLUGINS_"` WatchConfig WatchConfig `yaml:"watch_config" envPrefix:"WATCH_CONFIG_"` + + FeatureFlagRollouts FeatureFlagRollouts `yaml:"feature_flag_rollouts,omitempty" envPrefix:"FEATURE_FLAG_ROLLOUTS_"` } type WatchConfig struct { diff --git a/router/pkg/config/config.schema.json b/router/pkg/config/config.schema.json index 023c263d2c..a118625bfd 100644 --- a/router/pkg/config/config.schema.json +++ b/router/pkg/config/config.schema.json @@ -4193,6 +4193,18 @@ } } } + }, + "feature_flag_rollouts": { + "type": "object", + "description": "Toggles percentage-based traffic rollouts for feature flags. When enabled, every flag whose execution config has traffic_percentage set becomes a rollout flag (header/cookie pins ignored). Per-request bucket is uniformly random. On by default — set enabled: false to restore header/cookie-pinned feature flag selection.", + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean", + "default": true, + "description": "Enable percentage-based feature flag rollouts." + } + } } }, "$defs": { diff --git a/router/pkg/config/fixtures/full.yaml b/router/pkg/config/fixtures/full.yaml index 02280f4255..b951bc6279 100644 --- a/router/pkg/config/fixtures/full.yaml +++ b/router/pkg/config/fixtures/full.yaml @@ -548,3 +548,6 @@ apollo_compatibility_flags: enabled: true use_graphql_validation_failed_status: enabled: true + +feature_flag_rollouts: + enabled: true diff --git a/router/pkg/config/testdata/config_defaults.json b/router/pkg/config/testdata/config_defaults.json index e6a5c6145f..2bd037a322 100644 --- a/router/pkg/config/testdata/config_defaults.json +++ b/router/pkg/config/testdata/config_defaults.json @@ -669,5 +669,8 @@ "Enabled": false, "Maximum": 10000000000 } + }, + "FeatureFlagRollouts": { + "Enabled": true } } \ No newline at end of file diff --git a/router/pkg/config/testdata/config_full.json b/router/pkg/config/testdata/config_full.json index 2e93674fa7..4c45c470f9 100644 --- a/router/pkg/config/testdata/config_full.json +++ b/router/pkg/config/testdata/config_full.json @@ -1114,5 +1114,8 @@ "Enabled": true, "Maximum": 10000000000 } + }, + "FeatureFlagRollouts": { + "Enabled": true } } \ No newline at end of file