blob: 48a76b1253d78b76d413a01c124876eaf38f2486 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# The overview topology of the whole application cluster or services,
type Topology {
nodes: [Node!]!
calls: [Call!]!
}
# The instance topology based on the given serviceIds
type ServiceInstanceTopology {
nodes: [ServiceInstanceNode!]!
calls: [Call!]!
}
# The endpoint topology
type EndpointTopology {
nodes: [EndpointNode!]!
calls: [Call!]!
}
# Node in Topology
type Node {
# The global id of each node,
# 1. Service id
# 2. Endpoint id
id: ID!
# The literal name of the #id.
name: String!
# The type name may be
# 1. The service provider/middleware tech, such as: Tomcat, SpringMVC
# 2. Conjectural Service, e.g. MySQL, Redis, Kafka
type: String
# It is a conjecture node or real node, to represent a service or endpoint.
isReal: Boolean!
}
# Node in ServiceInstanceTopology
type ServiceInstanceNode {
# The instance id of each node,
id: ID!
# The literal name of the #id. Instance Name.
name: String!
# Service id
serviceId: ID!
# The literal name of the #serviceId.
serviceName: String!
# The type name may be
# 1. The service provider/middleware tech, such as: Tomcat, SpringMVC
# 2. Conjectural Service, e.g. MySQL, Redis, Kafka
type: String
# It is a conjecture node or real node, to represent an instance.
isReal: Boolean!
}
# Node in EndpointTopology
type EndpointNode {
# The instance id of each node,
id: ID!
# The literal name of the #id. Endpoint Name
name: String!
# Service id
serviceId: ID!
# The literal name of the #serviceId.
serviceName: String!
# The type name may be
# 1. The service provider/middleware tech, such as: Tomcat, SpringMVC
# 2. Conjectural Service, e.g. MySQL, Redis, Kafka
type: String
# It is a conjuecture node or real node, to represent an instance.
isReal: Boolean!
}
# The Call represents a directed distributed call,
# from the `source` to the `target`.
type Call {
source: ID!
# The protocol and tech stack used at source side in this distributed call
sourceComponents: [ID!]!
target: ID!
# The protocol and tech stack used at target side in this distributed call
targetComponents: [ID!]!
id: ID!
# The detect Points of this distributed call.
detectPoints: [DetectPoint!]!
}
enum NodeType {
SERVICE,
ENDPOINT,
USER
}
extend type Query {
# Query the global topology
getGlobalTopology(duration: Duration!): Topology
# Query the topology, based on the given service
getServiceTopology(serviceId: ID!, duration: Duration!): Topology
# Query the topology, based on the given services.
# `#getServiceTopology` could be replaced by this.
getServicesTopology(serviceIds: [ID!]!, duration: Duration!): Topology
# Query the instance topology, based on the given clientServiceId and serverServiceId
getServiceInstanceTopology(clientServiceId: ID!, serverServiceId: ID!, duration: Duration!): ServiceInstanceTopology
# Query the topology, based on the given endpoint
getEndpointTopology(endpointId: ID!, duration: Duration!): Topology
# v2 of getEndpointTopology
getEndpointDependencies(endpointId: ID!, duration: Duration!): EndpointTopology
}