All Downloads are FREE. Search and download functionalities are using the official Maven repository.

query-protocol.topology.graphqls Maven / Gradle / Ivy

There is a newer version: 10.1.0
Show newest version
# 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
    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
    # Query the topology, based on the given instance
    getProcessTopology(serviceInstanceId: ID!, duration: Duration!): ProcessTopology
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy