Consul
Catalog HTTP API
The /catalog
endpoints register and deregister nodes, services, and checks in
Consul. The catalog should not be confused with the agent, since some of the
API methods look similar.
Register Entity
This endpoint is a low-level mechanism for registering or updating entries in the catalog. It is usually preferable to instead use the agent endpoints for registration as they are simpler and perform anti-entropy.
Method | Path | Produces |
---|---|---|
PUT | /catalog/register | application/json |
The table below shows this endpoint's support for blocking queries, consistency modes, agent caching, and required ACLs.
Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
---|---|---|---|
NO | none | none | node:write,service:write |
Query Parameters
ns
(string: "")
Enterprise - Specifies the namespace of the service and checks you register. You can also specify the namespace through other methods.
JSON Request Body Schema
ID
(string: "")
- An optional UUID to assign to the node. This must be a 36-character UUID-formatted string.Node
(string: <required>)
- Specifies the node ID to register.Address
(string: <required>)
- Specifies the address to register.Datacenter
(string: "")
- Specifies the datacenter, which defaults to the agent's datacenter if not provided.TaggedAddresses
(map<string|string>: nil)
- Specifies the tagged addresses.NodeMeta
(map<string|string>: nil)
- Specifies arbitrary KV metadata pairs for filtering purposes.Service
(Service: nil)
- Contains an object the specifies the service to register. TheService.Service
field is required. IfService.ID
is not provided, the default is theService.Service
. You can only specify one service with a givenID
per node. We recommend using valid DNS labels for service definition names. Refer to the Internet Engineering Task Force's RFC 1123 for additional information. Service names that conform to standard usage ensures compatibility with external DNSs. Refer to Services Configuration Reference for additional information. The following fields are optional:For additional information configuring services, refer to Service - Agent API. The
/catalog
endpoint had different behaviors than the/services
endpoint.Check
(Check: nil)
- Specifies to register a check. The register API manipulates the health check entry in the Catalog, but it does not setup the script, TTL, or HTTP check to monitor the node's health. To truly enable a new health check, the check must either be provided in agent configuration or set via the agent endpoint.The
CheckID
can be omitted and will default to the value ofName
. As withService.ID
, theCheckID
must be unique on this node.Notes
is an opaque field that is meant to hold human-readable text. If aServiceID
is provided that matches theID
of a service on that node, the check is treated as a service level health check, instead of a node level health check. TheStatus
must be one ofpassing
,warning
, orcritical
.You can provide defaults for TCP and HTTP health checks to the
Definition
field. Refer to Health Checks for additional information.Multiple checks can be provided by replacing
Check
withChecks
and sending an array ofCheck
objects.SkipNodeUpdate
(bool: false)
- Specifies whether to skip updating the node's information in the registration. This is useful in the case where only a health check or service entry on a node needs to be updated or when a register request is intended to update a service entry or health check. In both use cases, node information will not be overwritten, if the node is already registered. Note, if the parameter is enabled for a node that doesn't exist, it will still be created.Namespace
(string: "")
Enterprise - Specifies the namespace of the service and checks you register. This field takes precedence over thens
query parameter, one of several other methods to specify the namespace.
It is important to note that Check
does not have to be provided with Service
and vice versa. A catalog entry can have either, neither, or both.
Sample Payload
{
"Datacenter": "dc1",
"ID": "40e4a748-2192-161a-0510-9bf59fe950b5",
"Node": "t2.320",
"Address": "192.168.10.10",
"TaggedAddresses": {
"lan": "192.168.10.10",
"wan": "10.0.10.10"
},
"NodeMeta": {
"somekey": "somevalue"
},
"Service": {
"ID": "redis1",
"Service": "redis",
"Tags": ["primary", "v1"],
"Address": "127.0.0.1",
"TaggedAddresses": {
"lan": {
"address": "127.0.0.1",
"port": 8000
},
"wan": {
"address": "198.18.0.1",
"port": 80
}
},
"Meta": {
"redis_version": "4.0"
},
"Port": 8000,
"Namespace": "default"
},
"Check": {
"Node": "t2.320",
"CheckID": "service:redis1",
"Name": "Redis health check",
"Notes": "Script based health check",
"Status": "passing",
"ServiceID": "redis1",
"Definition": {
"TCP": "localhost:8888",
"Interval": "5s",
"Timeout": "1s",
"DeregisterCriticalServiceAfter": "30s"
},
"Namespace": "default"
},
"SkipNodeUpdate": false
}
Sample Request
$ curl \
--request PUT \
--data @payload.json \
--header "X-Consul-Namespace: team-1" \
http://127.0.0.1:8500/v1/catalog/register
Deregister Entity
This endpoint is a low-level mechanism for directly removing entries from the Catalog. It is usually preferable to instead use the agent endpoints for deregistration as they are simpler and perform anti-entropy.
Method | Path | Produces |
---|---|---|
PUT | /catalog/deregister | application/json |
The table below shows this endpoint's support for blocking queries, consistency modes, agent caching, and required ACLs.
Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
---|---|---|---|
NO | none | none | node:write,service:write |
Query Parameters
ns
(string: "")
Enterprise - Specifies the namespace of the service and checks you deregister. You can also specify the namespace through other methods.
JSON Request Body Schema
The behavior of the endpoint depends on what keys are provided.
Node
(string: <required>)
- Specifies the ID of the node. If no other values are provided, this node, all its services, and all its checks are removed.Datacenter
(string: "")
- Specifies the datacenter, which defaults to the agent's datacenter if not provided.CheckID
(string: "")
- Specifies the ID of the check to remove.ServiceID
(string: "")
- Specifies the ID of the service to remove. The service and all associated checks will be removed.Namespace
(string: "")
Enterprise - Specifies the namespace of the service and checks you deregister. This field takes precedence over thens
query parameter, one of several other methods to specify the namespace. You can also specify the namespace in theService
orCheck
fields; if namespaces are specified in multiple places, they must all be the same.
Sample Payloads
{
"Datacenter": "dc1",
"Node": "t2.320"
}
{
"Datacenter": "dc1",
"Node": "t2.320",
"CheckID": "service:redis1",
"Namespace": "team-1"
}
{
"Datacenter": "dc1",
"Node": "t2.320",
"ServiceID": "redis1",
"Namespace": "team-1"
}
Sample Request
$ curl \
--request PUT \
--data @payload.json \
http://127.0.0.1:8500/v1/catalog/deregister
List Datacenters
This endpoint returns the list of all known datacenters. The datacenters will be sorted in ascending order based on the estimated median round trip time from the server to the servers in that datacenter.
This endpoint does not require a cluster leader and will succeed even during an availability outage. Therefore, it can be used as a simple check to see if any Consul servers are routable.
Method | Path | Produces |
---|---|---|
GET | /catalog/datacenters | application/json |
The table below shows this endpoint's support for blocking queries, consistency modes, agent caching, and required ACLs.
Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
---|---|---|---|
NO | none | simple | none |
The corresponding CLI command is consul catalog datacenters
.
Sample Request
$ curl \
http://127.0.0.1:8500/v1/catalog/datacenters
Sample Response
["dc1", "dc2"]
List Nodes
This endpoint and returns the nodes registered in a given datacenter.
The HTTP response includes the X-Consul-Results-Filtered-By-ACLs: true
header
if the response array excludes results due to ACL policy configuration.
Refer to the HTTP API documentation for more information.
Method | Path | Produces |
---|---|---|
GET | /catalog/nodes | application/json |
The table below shows this endpoint's support for blocking queries, consistency modes, agent caching, and required ACLs.
Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
---|---|---|---|
YES | all | none | node:read |
The corresponding CLI command is consul catalog nodes
.
Query Parameters
dc
(string: "")
- Specifies the datacenter to query. This parameter defaults to the datacenter of the agent being queried.near
(string: "")
- Specifies a node name to sort the node list in ascending order based on the estimated round trip time from that node. Passing?near=_agent
uses the agent's node for the sort.node-meta
(string: "")
Deprecated - Usefilter
with theMeta
selector instead. This parameter will be removed in a future version of Consul. Specifies a desired node metadata key/value pair of the formkey:value
. This parameter can be specified multiple times, and filters the results to nodes with the specified key/value pairs.filter
(string: "")
- Specifies the expression used to filter the queries results prior to returning the data.
Sample Request
$ curl \
http://127.0.0.1:8500/v1/catalog/nodes
Sample Response
[
{
"ID": "40e4a748-2192-161a-0510-9bf59fe950b5",
"Node": "baz",
"Address": "10.1.10.11",
"Datacenter": "dc1",
"TaggedAddresses": {
"lan": "10.1.10.11",
"wan": "10.1.10.11"
},
"Meta": {
"instance_type": "t2.medium"
}
},
{
"ID": "8f246b77-f3e1-ff88-5b48-8ec93abf3e05",
"Node": "t2.320",
"Address": "10.1.10.12",
"Datacenter": "dc2",
"TaggedAddresses": {
"lan": "10.1.10.11",
"wan": "10.1.10.12"
},
"Meta": {
"instance_type": "t2.large"
}
}
]
Filtering
The filter will be executed against each Node in the result list with the following selectors and filter operations being supported:
Selector | Supported Operations |
---|---|
Address | Equal, Not Equal, In, Not In, Matches, Not Matches |
Datacenter | Equal, Not Equal, In, Not In, Matches, Not Matches |
ID | Equal, Not Equal, In, Not In, Matches, Not Matches |
Meta | Is Empty, Is Not Empty, In, Not In |
Meta.<any> | Equal, Not Equal, In, Not In, Matches, Not Matches |
Node | Equal, Not Equal, In, Not In, Matches, Not Matches |
TaggedAddresses | Is Empty, Is Not Empty, In, Not In |
TaggedAddresses.<any> | Equal, Not Equal, In, Not In, Matches, Not Matches |
List Services
This endpoint returns the services registered in a given datacenter.
The HTTP response includes the X-Consul-Results-Filtered-By-ACLs: true
header
if the response array excludes results due to ACL policy configuration.
Refer to the HTTP API documentation for more information.
Method | Path | Produces |
---|---|---|
GET | /catalog/services | application/json |
The table below shows this endpoint's support for blocking queries, consistency modes, agent caching, and required ACLs.
Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
---|---|---|---|
YES | all | background refresh | service:read |
The corresponding CLI command is consul catalog services
.
Query Parameters
dc
(string: "")
- Specifies the datacenter to query. This will default to the datacenter of the agent being queried.node-meta
(string: "")
Deprecated - Usefilter
with theNodeMeta
selector instead. This parameter will be removed in a future version of Consul. Specifies a desired node metadata key/value pair of the formkey:value
. This parameter can be specified multiple times, and filters the results to nodes with the specified key/value pairs.ns
(string: "")
Enterprise - Specifies the namespace of the services you lookup. You can also specify the namespace through other methods.filter
(string: "")
- Specifies the expression used to filter the queries results prior to returning the data.
Filtering
The filter will be executed against each Service mapping within the catalog. The following selectors and filter operations are supported:
Selector | Supported Operations |
---|---|
Address | Equal, Not Equal, In, Not In, Matches, Not Matches |
Datacenter | Equal, Not Equal, In, Not In, Matches, Not Matches |
ID | Equal, Not Equal, In, Not In, Matches, Not Matches |
Node | Equal, Not Equal, In, Not In, Matches, Not Matches |
NodeMeta.<any> | Equal, Not Equal, In, Not In, Matches, Not Matches |
NodeMeta | Is Empty, Is Not Empty, In, Not In |
ServiceAddress | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceConnect.Native | Equal, Not Equal |
ServiceEnableTagOverride | Equal, Not Equal |
ServiceID | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceKind | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceMeta.<any> | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceMeta | Is Empty, Is Not Empty, In, Not In |
ServiceName | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServicePort | Equal, Not Equal |
ServiceProxy.DestinationServiceID | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.DestinationServiceName | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.LocalServiceAddress | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.LocalServicePort | Equal, Not Equal |
ServiceProxy.Mode | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.TransparentProxy.OutboundListenerPort | Equal, Not Equal |
ServiceProxy.MeshGateway.Mode | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.Upstreams.Datacenter | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.Upstreams.DestinationName | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.Upstreams.DestinationNamespace | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.Upstreams.DestinationType | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.Upstreams.LocalBindAddress | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.Upstreams.LocalBindPort | Equal, Not Equal |
ServiceProxy.Upstreams.MeshGateway.Mode | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.Upstreams | Is Empty, Is Not Empty |
ServiceTaggedAddresses.<any>.Address | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceTaggedAddresses.<any>.Port | Equal, Not Equal |
ServiceTaggedAddresses | Is Empty, Is Not Empty, In, Not In |
ServiceTags | In, Not In, Is Empty, Is Not Empty |
ServiceWeights.Passing | Equal, Not Equal |
ServiceWeights.Warning | Equal, Not Equal |
TaggedAddresses.<any> | Equal, Not Equal, In, Not In, Matches, Not Matches |
TaggedAddresses | Is Empty, Is Not Empty, In, Not In |
Sample Request
$ curl \
http://127.0.0.1:8500/v1/catalog/services?ns=foo
Sample Response
{
"consul": [],
"redis": [],
"postgresql": ["primary", "secondary"]
}
The keys are the service names, and the array values provide all known tags for a given service.
List Nodes for Service
This endpoint returns the nodes providing a service in a given datacenter.
The HTTP response includes the X-Consul-Results-Filtered-By-ACLs: true
header
if the response array excludes results due to ACL policy configuration.
Refer to the HTTP API documentation for more information.
Method | Path | Produces |
---|---|---|
GET | /catalog/service/:service_name | application/json |
The table below shows this endpoint's support for blocking queries, consistency modes, agent caching, and required ACLs.
Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
---|---|---|---|
YES | all | background refresh | node:read,service:read |
Path Parameters
service_name
(string: <required>)
- Specifies the name of the service for which to list nodes.
Query Parameters
dc
(string: "")
- Specifies the datacenter to query. This will default to the datacenter of the agent being queried.tag
(string: "")
Deprecated - Usefilter
with theServiceTags
selector instead. This parameter will be removed in a future version of Consul. Specifies the tag to filter on. Can be used multiple times for additional filtering, returning only the results that include all of the tag values provided.near
(string: "")
- Specifies a node name to sort the node list in ascending order based on the estimated round trip time from that node. Passing?near=_agent
uses the agent's node for the sort.node-meta
(string: "")
Deprecated - Usefilter
with theNodeMeta
selector instead. This parameter will be removed in a future version of Consul. Specifies a desired node metadata key/value pair of the formkey:value
. This parameter can be specified multiple times, and filters the results to nodes with the specified key/value pairs.filter
(string: "")
- Specifies the expression used to filter the queries results prior to returning the data.merge-central-config
- Include this flag in a request forconnect-proxy
kind or*-gateway
kind services to return a fully resolved service definition that includes merged values from the proxy-defaults/global and service-defaults/:service config entries. Returning a fully resolved service definition is useful when a service was registered using the /catalog/register endpoint, which does not automatically merge config entries.ns
(string: "")
Enterprise - Specifies the namespace of the services you lookup. You can also specify the namespace through other methods.
Sample Request
$ curl \
http://127.0.0.1:8500/v1/catalog/service/web?ns=default
Sample Response
[
{
"ID": "40e4a748-2192-161a-0510-9bf59fe950b5",
"Node": "t2.320",
"Address": "192.168.10.10",
"Datacenter": "dc1",
"TaggedAddresses": {
"lan": "192.168.10.10",
"wan": "10.0.10.10"
},
"NodeMeta": {
"somekey": "somevalue"
},
"CreateIndex": 51,
"ModifyIndex": 51,
"ServiceAddress": "172.17.0.3",
"ServiceEnableTagOverride": false,
"ServiceID": "32a2a47f7992:nodea:5000",
"ServiceName": "web",
"ServicePort": 5000,
"ServiceMeta": {
"web_meta_value": "baz"
},
"ServiceTaggedAddresses": {
"lan": {
"address": "172.17.0.3",
"port": 5000
},
"wan": {
"address": "198.18.0.1",
"port": 512
}
},
"ServiceTags": ["prod"],
"ServiceProxy": {
"DestinationServiceName": "",
"DestinationServiceID": "",
"LocalServiceAddress": "",
"LocalServicePort": 0,
"Config": null,
"Upstreams": null
},
"ServiceConnect": {
"Native": false,
"Proxy": null
},
"Namespace": "default"
}
]
Address
is the IP address of the Consul node on which the service is registered.Datacenter
is the data center of the Consul node on which the service is registered.TaggedAddresses
is the list of explicit LAN and WAN IP addresses for the agentNodeMeta
is a list of user-defined metadata key/value pairs for the nodeCreateIndex
is an internal index value representing when the service was createdModifyIndex
is the last index that modified the serviceNode
is the name of the Consul node on which the service is registeredServiceAddress
is the IP address of the service host — if empty, node address should be usedServiceEnableTagOverride
indicates whether service tags can be overridden on this serviceServiceID
is a unique service instance identifierServiceName
is the name of the serviceServiceMeta
is a list of user-defined metadata key/value pairs for the serviceServicePort
is the port number of the serviceServiceTags
is a list of tags for the serviceServiceTaggedAddresses
is the map of explicit LAN and WAN addresses for the service instance. This includes both the address as well as the port.ServiceKind
is the kind of service, usually "". See the Agent service registration API for more information.ServiceProxy
is the proxy config as specified in service mesh Proxies.ServiceConnect
are the service mesh settings. The value of this struct is equivalent to theConnect
field for service registration.Namespace
is the Consul Enterprise namespace of this service instance
Filtering
Filtering is executed against each entry in the top level result list with the following selectors and filter operations being supported:
Selector | Supported Operations |
---|---|
Address | Equal, Not Equal, In, Not In, Matches, Not Matches |
Datacenter | Equal, Not Equal, In, Not In, Matches, Not Matches |
ID | Equal, Not Equal, In, Not In, Matches, Not Matches |
Node | Equal, Not Equal, In, Not In, Matches, Not Matches |
NodeMeta.<any> | Equal, Not Equal, In, Not In, Matches, Not Matches |
NodeMeta | Is Empty, Is Not Empty, In, Not In |
ServiceAddress | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceConnect.Native | Equal, Not Equal |
ServiceEnableTagOverride | Equal, Not Equal |
ServiceID | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceKind | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceMeta.<any> | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceMeta | Is Empty, Is Not Empty, In, Not In |
ServiceName | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServicePort | Equal, Not Equal |
ServiceProxy.DestinationServiceID | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.DestinationServiceName | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.LocalServiceAddress | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.LocalServicePort | Equal, Not Equal |
ServiceProxy.Mode | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.TransparentProxy.OutboundListenerPort | Equal, Not Equal |
ServiceProxy.MeshGateway.Mode | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.Upstreams.Datacenter | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.Upstreams.DestinationName | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.Upstreams.DestinationNamespace | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.Upstreams.DestinationType | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.Upstreams.LocalBindAddress | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.Upstreams.LocalBindPort | Equal, Not Equal |
ServiceProxy.Upstreams.MeshGateway.Mode | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceProxy.Upstreams | Is Empty, Is Not Empty |
ServiceTaggedAddresses.<any>.Address | Equal, Not Equal, In, Not In, Matches, Not Matches |
ServiceTaggedAddresses.<any>.Port | Equal, Not Equal |
ServiceTaggedAddresses | Is Empty, Is Not Empty, In, Not In |
ServiceTags | In, Not In, Is Empty, Is Not Empty |
ServiceWeights.Passing | Equal, Not Equal |
ServiceWeights.Warning | Equal, Not Equal |
TaggedAddresses.<any> | Equal, Not Equal, In, Not In, Matches, Not Matches |
TaggedAddresses | Is Empty, Is Not Empty, In, Not In |
List Nodes for Mesh-capable Service
This endpoint returns the nodes providing a mesh-capable service in a given datacenter. This will include both proxies and native integrations. A service may register both mesh-capable and incapable services at the same time, so this endpoint may be used to filter only the mesh-capable endpoints.
The HTTP response includes the X-Consul-Results-Filtered-By-ACLs: true
header
if the response array excludes results due to ACL policy configuration.
Refer to the HTTP API documentation for more information.
Method | Path | Produces |
---|---|---|
GET | /catalog/connect/:service | application/json |
Parameters and response format are the same as
/catalog/service/:service_name
.
Retrieve Map of Services for a Node
This endpoint returns the node's registered services.
The HTTP response includes the X-Consul-Results-Filtered-By-ACLs: true
header
if the response array excludes results due to ACL policy configuration.
Refer to the HTTP API documentation for more information.
Method | Path | Produces |
---|---|---|
GET | /catalog/node/:node_name | application/json |
The table below shows this endpoint's support for blocking queries, consistency modes, agent caching, and required ACLs.
Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
---|---|---|---|
YES | all | none | node:read,service:read |
Path Parameters
node_name
(string: <required>)
- Specifies the name of the node to list services for.
Query Parameters
dc
(string: "")
- Specifies the datacenter to query. This will default to the datacenter of the agent being queried.filter
(string: "")
- Specifies the expression used to filter the queries results prior to returning the data.ns
(string: "")
Enterprise - Specifies the namespace of the services you lookup. You can also specify the namespace through other methods.
Sample Request
$ curl \
http://127.0.0.1:8500/v1/catalog/node/my-node
Sample Response
{
"Node": {
"ID": "40e4a748-2192-161a-0510-9bf59fe950b5",
"Node": "t2-node",
"Address": "10.1.10.12",
"Datacenter": "dc1",
"TaggedAddresses": {
"lan": "10.1.10.12",
"wan": "10.1.10.12"
},
"Meta": {
"instance_type": "t2.medium"
}
},
"Services": {
"consul": {
"ID": "consul",
"Service": "consul",
"Tags": null,
"Meta": {},
"Port": 8300
},
"redis": {
"ID": "redis",
"Service": "redis",
"TaggedAddresses": {
"lan": {
"address": "10.1.10.12",
"port": 8000
},
"wan": {
"address": "198.18.1.2",
"port": 80
}
},
"Tags": ["v1"],
"Meta": {
"redis_version": "4.0"
},
"Port": 8000,
"Namespace": "default"
}
}
}
Filtering
The filter will be executed against each value in the Services
mapping within the
top level Node object. The following selectors and filter operations are supported:
Selector | Supported Operations |
---|---|
Address | Equal, Not Equal, In, Not In, Matches, Not Matches |
Connect.Native | Equal, Not Equal |
EnableTagOverride | Equal, Not Equal |
ID | Equal, Not Equal, In, Not In, Matches, Not Matches |
Kind | Equal, Not Equal, In, Not In, Matches, Not Matches |
Meta | Is Empty, Is Not Empty, In, Not In |
Meta.<any> | Equal, Not Equal, In, Not In, Matches, Not Matches |
Port | Equal, Not Equal |
Proxy.DestinationServiceID | Equal, Not Equal, In, Not In, Matches, Not Matches |
Proxy.DestinationServiceName | Equal, Not Equal, In, Not In, Matches, Not Matches |
Proxy.LocalServiceAddress | Equal, Not Equal, In, Not In, Matches, Not Matches |
Proxy.LocalServicePort | Equal, Not Equal |
Proxy.Mode | Equal, Not Equal, In, Not In, Matches, Not Matches |
Proxy.TransparentProxy.OutboundListenerPort | Equal, Not Equal |
Proxy.MeshGateway.Mode | Equal, Not Equal, In, Not In, Matches, Not Matches |
Proxy.Upstreams | Is Empty, Is Not Empty |
Proxy.Upstreams.Datacenter | Equal, Not Equal, In, Not In, Matches, Not Matches |
Proxy.Upstreams.DestinationName | Equal, Not Equal, In, Not In, Matches, Not Matches |
Proxy.Upstreams.DestinationNamespace | Equal, Not Equal, In, Not In, Matches, Not Matches |
Proxy.Upstreams.DestinationType | Equal, Not Equal, In, Not In, Matches, Not Matches |
Proxy.Upstreams.LocalBindAddress | Equal, Not Equal, In, Not In, Matches, Not Matches |
Proxy.Upstreams.LocalBindPort | Equal, Not Equal |
Proxy.Upstreams.MeshGateway.Mode | Equal, Not Equal, In, Not In, Matches, Not Matches |
Service | Equal, Not Equal, In, Not In, Matches, Not Matches |
TaggedAddresses | Is Empty, Is Not Empty, In, Not In |
TaggedAddresses.<any>.Address | Equal, Not Equal, In, Not In, Matches, Not Matches |
TaggedAddresses.<any>.Port | Equal, Not Equal |
Tags | In, Not In, Is Empty, Is Not Empty |
Weights.Passing | Equal, Not Equal |
Weights.Warning | Equal, Not Equal |
List Services for Node
This endpoint returns the node's registered services.
The HTTP response includes the X-Consul-Results-Filtered-By-ACLs: true
header
if the response array excludes results due to ACL policy configuration.
Refer to the HTTP API documentation for more information.
Method | Path | Produces |
---|---|---|
GET | /catalog/node-services/:node_name | application/json |
The table below shows this endpoint's support for blocking queries, consistency modes, agent caching, and required ACLs.
Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
---|---|---|---|
YES | all | none | node:read,service:read |
Path Parameters
node_name
(string: <required>)
- Specifies the name of the node to list services for.
Query Parameters
dc
(string: "")
- Specifies the datacenter to query. This will default to the datacenter of the agent being queried.filter
(string: "")
- Specifies the expression used to filter the queries results prior to returning the data.merge-central-config
- Include this flag in a request forconnect-proxy
kind or*-gateway
kind services to return a fully resolved service definition that includes merged values from the proxy-defaults/global and service-defaults/:service config entries. Returning a fully resolved service definition is useful when a service was registered using the /catalog/register endpoint, which does not automatically merge config entries.ns
(string: "")
Enterprise - Specifies the namespace of the services you lookup. The namespace may be specified as '*' to return results for all namespaces. You can also specify the namespace through other methods.
Sample Request
$ curl \
http://127.0.0.1:8500/v1/catalog/node-services/t2-node
Sample Response
{
"Node": {
"ID": "40e4a748-2192-161a-0510-9bf59fe950b5",
"Node": "t2-node",
"Address": "10.1.10.12",
"Datacenter": "dc1",
"TaggedAddresses": {
"lan": "10.1.10.12",
"wan": "10.1.10.12"
},
"Meta": {
"instance_type": "t2.medium"
}
},
"Services": [
{
"ID": "consul",
"Service": "consul",
"Tags": null,
"Meta": {},
"Port": 8300
},
{
"ID": "redis",
"Service": "redis",
"TaggedAddresses": {
"lan": {
"address": "10.1.10.12",
"port": 8000
},
"wan": {
"address": "198.18.1.2",
"port": 80
}
},
"Tags": [
"v1"
],
"Meta": {
"redis_version": "4.0"
},
"Port": 8000,
"Namespace": "default"
}
]
}
Filtering
The filter will be executed against each value in the Services
list within the
top level object. The following selectors and filter operations are supported:
Selector | Supported Operations |
---|---|
Address | Equal, Not Equal, In, Not In, Matches, Not Matches |
Connect.Native | Equal, Not Equal |
EnableTagOverride | Equal, Not Equal |
ID | Equal, Not Equal, In, Not In, Matches, Not Matches |
Kind | Equal, Not Equal, In, Not In, Matches, Not Matches |
Meta | Is Empty, Is Not Empty, In, Not In |
Meta.<any> | Equal, Not Equal, In, Not In, Matches, Not Matches |
Port | Equal, Not Equal |
Proxy.DestinationServiceID | Equal, Not Equal, In, Not In, Matches, Not Matches |
Proxy.DestinationServiceName | Equal, Not Equal, In, Not In, Matches, Not Matches |
Proxy.LocalServiceAddress | Equal, Not Equal, In, Not In, Matches, Not Matches |
Proxy.LocalServicePort | Equal, Not Equal |
Proxy.Mode | Equal, Not Equal, In, Not In, Matches, Not Matches |
Proxy.TransparentProxy.OutboundListenerPort | Equal, Not Equal |
Proxy.MeshGateway.Mode | Equal, Not Equal, In, Not In, Matches, Not Matches |
Proxy.Upstreams | Is Empty, Is Not Empty |
Proxy.Upstreams.Datacenter | Equal, Not Equal, In, Not In, Matches, Not Matches |
Proxy.Upstreams.DestinationName | Equal, Not Equal, In, Not In, Matches, Not Matches |
Proxy.Upstreams.DestinationNamespace | Equal, Not Equal, In, Not In, Matches, Not Matches |
Proxy.Upstreams.DestinationType | Equal, Not Equal, In, Not In, Matches, Not Matches |
Proxy.Upstreams.LocalBindAddress | Equal, Not Equal, In, Not In, Matches, Not Matches |
Proxy.Upstreams.LocalBindPort | Equal, Not Equal |
Proxy.Upstreams.MeshGateway.Mode | Equal, Not Equal, In, Not In, Matches, Not Matches |
Service | Equal, Not Equal, In, Not In, Matches, Not Matches |
TaggedAddresses | Is Empty, Is Not Empty, In, Not In |
TaggedAddresses.<any>.Address | Equal, Not Equal, In, Not In, Matches, Not Matches |
TaggedAddresses.<any>.Port | Equal, Not Equal |
Tags | In, Not In, Is Empty, Is Not Empty |
Weights.Passing | Equal, Not Equal |
Weights.Warning | Equal, Not Equal |
List Services for Gateway
1.8.0+: This API is available in Consul versions 1.8.0 and later.
This endpoint returns the services associated with an ingress gateway or terminating gateway.
The HTTP response includes the X-Consul-Results-Filtered-By-ACLs: true
header
if the response array excludes results due to ACL policy configuration.
Refer to the HTTP API documentation for more information.
Method | Path | Produces |
---|---|---|
GET | /catalog/gateway-services/:gateway | application/json |
The table below shows this endpoint's support for blocking queries, consistency modes, agent caching, and required ACLs.
Blocking Queries | Consistency Modes | Agent Caching | ACL Required |
---|---|---|---|
YES | all | none | service:read |
Path Parameters
gateway
(string: <required>)
- Specifies the name of the node to list services for.
Query Parameters
dc
(string: "")
- Specifies the datacenter to query. This parameter defaults to the datacenter of the agent being queried.ns
(string: "")
Enterprise - Specifies the namespace of the services you lookup. The namespace may be specified as '*' to return results for all namespaces. You can also specify the namespace through other methods.
Sample Request
$ curl \
http://127.0.0.1:8500/v1/catalog/gateway-services/my-terminating-gateway
Sample Responses
[
{
"Gateway": {
"Name": "my-terminating-gateway",
"Namespace": "default"
},
"Service": {
"Name": "api",
"Namespace": "frontend"
},
"GatewayKind": "terminating-gateway",
"CAFile": "/etc/certs/ca.pem",
"CertFile": "/etc/certs/api/client.pem",
"KeyFile": "/etc/certs/api/client.key",
"SNI": "api.my-domain",
"CreateIndex": 16,
"ModifyIndex": 16
},
{
"Gateway": {
"Name": "my-terminating-gateway",
"Namespace": "default"
},
"Service": {
"Name": "web",
"Namespace": "frontend"
},
"GatewayKind": "terminating-gateway",
"CreateIndex": 17,
"ModifyIndex": 17
}
]
[
{
"Gateway": {
"Name": "my-ingress-gateway",
"Namespace": "default"
},
"Service": {
"Name": "api",
"Namespace": "frontend"
},
"GatewayKind": "ingress-gateway",
"Port": 8888,
"Protocol": "http",
"Hosts": ["api.mydomain.com"],
"CreateIndex": 15,
"ModifyIndex": 15
},
{
"Gateway": {
"Name": "my-ingress-gateway",
"Namespace": "default"
},
"Service": {
"Name": "redis",
"Namespace": "ops"
},
"GatewayKind": "ingress-gateway",
"Port": 8443,
"Protocol": "tcp",
"CreateIndex": 16,
"ModifyIndex": 16
}
]
Gateway.Name
is the name of the gateway service of the requestGateway.Namespace
is the Consul Enterprise namespace of the gatewayService.Name
is the name of a service associated with the gatewayService.Namespace
is the Consul Enterprise namespace of a service associated with the gatewayGatewayKind
is the kind of service, will be one of "ingress-gateway" or "terminating-gateway". See the Agent service registration API for more information.CAFile
is the path to a CA file the gateway will use for TLS origination to the associated serviceCertFile
is the path to a client certificate the gateway will use for TLS origination to the associated serviceKeyFile
is the path to a key file the gateway will use for TLS origination to the associated serviceSNI
is a hostname or domain name the gateway will specify during the TLS handshake with the associated servicePort
is the port the ingress gateway is listening on for the associated serviceProtocol
is the protocol of the ingress gateway's listener for the associated serviceHosts
list of hosts that specify what requests will match to this associated serviceFromWildcard
determines whether the service was associated with the gateway by providing a wildcard specifier in the gateway's configuration entry
Methods to specify namespace Enterprise
Catalog endpoints support several methods for specifying the namespace of resources with the following order of precedence:
Namespace
field of the JSON request body - only applies to the register entity endpointns
query parameterX-Consul-Namespace
request header- Namespace is inherited from the namespace of the request's ACL token (if any)
- The
default
namespace