--- layout: docs page_title: Consul-Terraform-Sync Status API description: >- Consul-Terraform-Sync Status API --- # Status The `/status` endpoints return status-related information for tasks. This endpoint returns a count of successful and failed task events that are recorded whenever tasks execute an automation. Currently, only the five most recent events are stored in Consul-Terraform-Sync (CTS). For more information on the hierarchy of status information and how it is collected, refer to [Status Information](/docs/nia/tasks#status-information). If CTS is configured [for high availability](/docs/nia/usage/run-ha), you can send a request to the [`/status/cluster` endpoint](#cluster-status) of any instance to get information about the cluster. Requests to the `status` endpoint return a 400 error, however, if high availability is enabled and the request is sent to a follower instance. The error message depends on what information the follower instance is able to obtain about the leader. Refer to [Error Messages](/docs/nia/usage/errors-ref) for more information. ## Status for all tasks This endpoint returns the overall status information for all tasks. | Method | Path | Produces | | ------ | ------------------- | ------------------ | | `GET` | `/status` | `application/json` | ### Request parameters No request parameters are available for this endpoint. ### Response statuses - `200`: Successfully retrieved the status. ### Response fields | Name | Type | Description | | ----- | ------ | ------------------ | |`status` | object | The summary count of how many tasks have a given health status value |`status.successful` | integer | The number of tasks that have a `successful` health status. |`status.errored` | integer | The number of tasks that have an `errored` health status. |`status.critical` | integer | The number of tasks that have a `critical` health status. |`status.unknown` | integer | The number of tasks that have an `unknown` health status. |`enabled` | object | The summary count of how many tasks are enabled or disabled. |`enabled.true` | integer | The number of tasks that are enabled. |`enabled.false` | integer | The number of tasks that are disabled. ### Example Request: ```shell-session $ curl localhost:8558/v1/status ``` Response: ```json { "task_summary": { "status": { "successful": 28, "errored": 5, "critical": 1, "unknown": 0 }, "enabled": { "true": 32, "false": 2 } } } ``` ## Task status This endpoint returns the individual task status information for a single specified task or for all tasks. Task health status value is determined by the success or failure of all stored [event data](/docs/nia/tasks#event) on the process of updating network infrastructure for a task. Currently only the 5 most recent events are stored per task. - Successful: The most recent stored event is successful. - Errored: The most recent stored event is not successful but all previous stored events are successful. - Critical: The most recent stored event is not successful and one or more previous stored events are also not successful. - Unknown: No event data is stored for the task. | Method | Path | Produces | | ------ | ------------------- | ------------------ | | `GET` | `/status/tasks/:task_name` | `application/json` | ### Request parameters | Name | Required | Type | Description | Default | | -------- | -------- | ------ | ------------------ | ------- | |`:task_name` | Optional | string | Option to specify the name of the task to return in the response. If not specified, all tasks are returned in the response.| none |`include` | Optional | string | Only accepts the value `"events"`. Use to include stored event information in response. | none |`status` | Optional | string | Only accepts health status values `"successful"`, `"errored"`, `"critical"`, or `"unknown"`. Use to filter response by tasks that have the specified health status value. Recommend setting this parameter when requesting all tasks i.e. no `task` parameter is set. | none ### Response statuses - `200`: Successfully retrieved the task status - `404`: Task with the given name not found ### Response fields The response is a JSON map of task name to a status information structure with the following fields. | Name | Type | Description | | ----------- | ------ | ------------------ | |`task_name` | string | Name of the task as configured in CTS. |`status` | string | Values are `"successful"`, `"errored"`, `"critical"`, or `"unknown"`. This is determined by the success or failure of all stored events on the network infrastructure update process for the task, as described earlier. |`enabled` | boolean | Whether the task is enabled or not. |`services` | list[string] | **Deprecated in CTS 0.5.0 and will be removed in a future major release.** List of the services configured for the task. |`providers` | list[string] | **Deprecated in CTS 0.5.0 and will be removed in v0.8.0.** List of the providers configured for the task. |`events_url` | string | Relative URL to retrieve the event data stored for the task. |`events` | list[[Event](/docs/nia/api/status#event)] | List of stored events that inform the task's status. See [section below](/docs/nia/api/status#event) for information on event data. This field is only included in the response upon request by setting the `?include=events` parameter. The relative URL for the request to include events can be retrieved from the `events_url` field. #### Event Event represents the process of updating network infrastructure of a task. The data is captured in a JSON structure. For more details on the scope of an event, see [Event](/docs/nia/tasks#event). | Name | Type | Description | | ----------- | ------ | ------------------ | |`id` | string | UUID to uniquely identify the event. |`success` | boolean | Indication of whether the event was successful or not. |`start_time` | time | Time when the event started. |`end_time` | time | Time when the event ended. |`task_name` | string | Name that task is configured with in CTS. |`error` | object | Information when the event fails. Null when successful. |`error.message` | string | Error message that is returned on failure. |`config` | object | **Deprecated in CTS 0.5.0 and will be removed in v0.8.0.** Configuration values for the task when it was run. |`config.services` | list[string] | **Deprecated in CTS 0.5.0 and will be removed in v0.8.0.** List of the services configured for the task. |`config.source` | string | **Deprecated in CTS 0.5.0 and will be removed in v0.8.0.** Module configured for the task. |`config.providers` | list[string] | **Deprecated in CTS 0.5.0 and will be removed in v0.8.0.** List of the providers configured for the task. ### Examples The following examples call `status` endpoints to retrieve information about tasks. #### All task statuses Request: ```shell-session $ curl localhost:8558/v1/status/tasks ``` Response: ```json { "task_a": { "task_name": "task_a", "status": "successful", "enabled": true, "providers": [ "local" ], "services": [ "api" ], "events_url": "/v1/status/tasks/task_a?include=events" }, "task_b": { "task_name": "task_b", "status": "errored", "enabled": false, "providers": [ "null" ], "services": [ "web" ], "events_url": "/v1/status/tasks/task_b?include=events" } } ``` #### Individual task status with events Request: ```shell-session $ curl localhost:8558/v1/status/tasks/task_b?include=events ``` Response: ```json { "task_b": { "task_name": "task_b", "status": "errored", "enabled": false, "providers": [ "null" ], "services": [ "web", ], "events_url": "/v1/status/tasks/task_b?include=events", "events": [ { "id": "44137ba2-8fc9-6cbe-0e0e-e9305ee4f7f9", "success": false, "start_time": "2020-11-24T12:06:51.858292-05:00", "end_time": "2020-11-24T12:06:52.770165-05:00", "task_name": "task_b", "error": { "message": "example error: terraform-apply error" }, "config": { "providers": [ "null" ], "services": [ "web" ], "module": "../modules/test_task" } }, { "id": "ef202675-502f-431f-b133-ed64d15b0e0e", "success": true, "start_time": "2020-11-24T12:04:18.651231-05:00", "end_time": "2020-11-24T12:04:20.900115-05:00", "task_name": "task_b", "error": null, "config": { "providers": [ "null" ], "services": [ "web", ], "module": "../modules/test_task" } } ] } } ``` ## Cluster status The `/v1/status/cluster` API endpoint returns information about high-availability clusters and its members, such as health status and leadership. This endpoint is only supported when using CTS in [high availability mode](/docs/nia/usage/run-ha). If you call the endpoint without configuring CTS for high availability, then CTS prints an error to the console. Refer to [Error Messages](/docs/nia/usage/errors-ref) for information about CTS error messages. | Method | Path | Response format | | ------ | ----------------- | ------------------ | | `GET` | `/status/cluster` | `application/json` | ### Request parameters Currently no request parameters are offered for the overall status API. ### Request statuses - `200`: Successfully retrieved the cluster status ### Response fields The following table describes the responses that the `status/cluster` endpoint can send. | Field | Type | Description | | --- | ---- | --- | | `cluster_name` | string | Identifies the name of the cluster. | | `members` | array | Contains an array of [member objects](#member-objects). Each object in the `members` array represents a CTS instance. | #### Member objects The following table describes the fields available for objects in the `members` array. | Field | Type | Description | | --- | ---- | --- | | `address` | string | Indicates the location of the instance. The address is only included in the response if the `high_availability.instance.address` option is configured on the leader instance. Refer to the [high availability instance configuration](/docs/nia/configuration#high-availability-instance) reference for additional information. | | `healthy` | boolean | Indicates the health of the service instance health. Refer to [Service Registration](#/docs/nia/configuration#service-registration) for additional information. | | `id` | string | Indicates the service registration ID. Refer to [Service Registration](#/docs/nia/configuration#service-registration) for additional information. | | `leader` | boolean | Identifies the cluster leader. | | `service_name` | string | Identifies the name of the service that the instance represents. Refer to [Service Registration](#/docs/nia/configuration#service-registration) for additional information. Default is `consul-terraform-sync`. | ### Example The following command calls the `/status/cluster` endpoint: ```shell-session $ curl –request GET http://localhost:8553/v1/status/cluster ``` The following example response shows three CTS instances. The cluster leader is `cts-02` and is advertising that its address is `cts-02.example.com`: ```json { "cluster_name": "cluster-a", "members": [ { "address": "cts-02.example.com", "healthy": true, "id": "cts-02", "leader": true, "service_name": "consul-terraform-sync" }, { "healthy": true, "id": "cts-03", "leader": false, "service_name": "consul-terraform-sync" }, { "healthy": true, "id": "cts-01", "leader": false, "service_name": "consul-terraform-sync" } ], "request_id": "e1bc2236-3d0e-5f5e-dc51-164a1cf6da88" } ```