| # 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!]! |
| } |
| |
| type ProcessTopology { |
| nodes: [ProcessNode!]! |
| calls: [Call!]! |
| } |
| |
| # Node in Topology |
| type Node { |
| # The service ID of the node. |
| 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! |
| # [Deprecated] |
| # No type for service instance topology. |
| 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! |
| # [Deprecated] |
| # No type for service instance topology. |
| type: String |
| # It is a conjuecture node or real node, to represent an instance. |
| isReal: Boolean! |
| } |
| |
| # Node in ProcessTopology |
| type ProcessNode { |
| # The process id of each node. |
| id: ID! |
| # Service id |
| serviceId: ID! |
| # The literal name of the #serviceId. |
| serviceName: String! |
| # Service Instance id |
| serviceInstanceId: ID! |
| # The literal name of the #serviceInstanceId. |
| serviceInstanceName: String! |
| # The name of the process |
| name: String! |
| # It's a virtual node or real node. |
| # A unreal node means that the current node is not a process belonging to this instance, but interacting with the processes belonging to the 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 |
| # No value in instance topology and endpoint dependency. |
| sourceComponents: [ID!]! |
| target: ID! |
| # The protocol and tech stack used at target side in this distributed call |
| # No value in instance topology and endpoint dependency. |
| targetComponents: [ID!]! |
| id: ID! |
| # The detect Points of this distributed call. |
| detectPoints: [DetectPoint!]! |
| } |
| |
| extend type Query { |
| # Query the global topology |
| # When layer is specified, the topology of this layer would be queried |
| getGlobalTopology(duration: Duration!, layer: String): 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 |
| # Query the topology, based on the given instance |
| getProcessTopology(serviceInstanceId: ID!, duration: Duration!): ProcessTopology |
| } |