Chef Software service_groups API
The service_groups API from Chef Software — 9 operation(s) for service_groups.
The service_groups API from Chef Software — 9 operation(s) for service_groups.
swagger: '2.0'
info:
title: external/applications/applications.proto ApplicationsService service_groups API
version: version not set
consumes:
- application/json
produces:
- application/json
tags:
- name: service_groups
paths:
/api/v0/applications/delete_disconnected_services:
post:
summary: Remove Disconnected Services
description: 'Removes services marked as disconnected based on the `threshold_seconds` setting.
This function is not used by the API or CLI and is here for testing purposes.
The functionality is currently covered by a periodically running job that can be configured using `UpdateDeleteDisconnectedServicesConfig`.
Authorization Action:
```
applications:serviceGroups:delete
```'
operationId: ApplicationsService_DeleteDisconnectedServices
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/chef.automate.api.applications.ServicesRes'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/grpc.gateway.runtime.Error'
parameters:
- name: body
in: body
required: true
schema:
$ref: '#/definitions/chef.automate.api.applications.DisconnectedServicesReq'
tags:
- service_groups
/api/v0/applications/delete_services_by_id:
post:
summary: Delete the services with the given IDs
description: 'Authorization Action:
```
applications:serviceGroups:delete
```'
operationId: ApplicationsService_DeleteServicesByID
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/chef.automate.api.applications.ServicesRes'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/grpc.gateway.runtime.Error'
parameters:
- name: body
in: body
required: true
schema:
$ref: '#/definitions/chef.automate.api.applications.DeleteServicesByIDReq'
tags:
- service_groups
/api/v0/applications/disconnected_services:
get:
summary: Mark Services as Disconnected
description: 'Marks services as disconnected based on the `threshold_seconds` setting.
This function is not used by the API or CLI and is here for testing purposes.
The functionality is currently covered by a periodically running job that can be configured
by utilizing the `UpdateDisconnectedServicesConfig` endpoint.
Authorization Action:
```
applications:serviceGroups:list
```'
operationId: ApplicationsService_GetDisconnectedServices
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/chef.automate.api.applications.ServicesRes'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/grpc.gateway.runtime.Error'
parameters:
- name: threshold_seconds
description: Threshold for marking services disconnected in seconds.
in: query
required: false
type: integer
format: int32
tags:
- service_groups
/api/v0/applications/service-groups:
get:
summary: List Service Groups
description: 'Lists service groups with name, health information, and application, environment, package, release metadata.
Accepts pagination, sorting, search, and status filters.
Example:
```
applications/service-groups?sorting.field=percent_ok&sorting.order=ASC&pagination.page=1&pagination.size=25
```
Authorization Action:
```
applications:serviceGroups:list
```'
operationId: ApplicationsService_GetServiceGroups
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/chef.automate.api.applications.ServiceGroups'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/grpc.gateway.runtime.Error'
parameters:
- name: filter
description: "Applies search and status filters, in the format of `fieldname:value` or `status:value`.\n\nValid filter fieldnames are:\n* `origin`: origin component of the service's package identifier\n* `service`: the name component of the service's package identifier\n* `version`: the version number component of the service's package identifier\n* `buildstamp`: the build timestamp (also called \"release\") of the service's package identifier\n* `channel`: the package channel to which the service subscribes for updates\n* `application`: the application field of the service's event-stream metadata\n* `environment`: the environment field of the service's event-stream metadata\n* `site`: the site field of the service's event-stream metadata\n* `group`: the suffix of the service group name\n\n`status` filters refine the service group results by a service's\n most recent connected/disconnected state or healthcheck result.\n\n Valid status filter parameters are:\n* `status:disconnected`: returns service groups with at least one service in a disconnected state\n* `status:critical`: returns service groups with a with at least one service in a \"critical\" healthcheck result\n* `status:unknown`: returns service groups with at least one service with an \"unknown\" healthcheck result\n* `status:warning`: returns service groups with at least one service with a \"warning\" healthcheck result\n* `status:ok`: returns service groups with at least one service with an \"ok\" health check result"
in: query
required: false
type: array
items:
type: string
collectionFormat: multi
- name: pagination.page
description: Page number of the results to return.
in: query
required: false
type: integer
format: int32
- name: pagination.size
description: Amount of results to include per page.
in: query
required: false
type: integer
format: int32
- name: sorting.field
description: Field to sort the list results on.
in: query
required: false
type: string
- name: sorting.order
description: Order the results should be returned in.
in: query
required: false
type: string
enum:
- ASC
- DESC
default: ASC
tags:
- service_groups
/api/v0/applications/service-groups/{service_group_id}:
get:
summary: List Services for a Service Group
description: 'List the services for a service group with health status and service metadata.
Uses the service group ID generated by Chef Automate instead of the Chef Habitat- provided ID.
Supports pagination and filtering.
Example:
```
applications/service-groups/1dfff679054c60a10c51d059b6dbf81a765c46f8d3e8ce0752b22ffe8d4d9716?pagination.page=1&pagination.size=25
```
Authorization Action:
```
applications:serviceGroups:list
```'
operationId: ApplicationsService_GetServicesBySG
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/chef.automate.api.applications.ServicesBySGRes'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/grpc.gateway.runtime.Error'
parameters:
- name: service_group_id
description: Service group ID.
in: path
required: true
type: string
- name: pagination.page
description: Page number of the results to return.
in: query
required: false
type: integer
format: int32
- name: pagination.size
description: Amount of results to include per page.
in: query
required: false
type: integer
format: int32
- name: sorting.field
description: Field to sort the list results on.
in: query
required: false
type: string
- name: sorting.order
description: Order the results should be returned in.
in: query
required: false
type: string
enum:
- ASC
- DESC
default: ASC
- name: filter
description: 'Applies filters, in the format of `fieldname:value`.
See documentation for ServicesReq for valid filter parameters.'
in: query
required: false
type: array
items:
type: string
collectionFormat: multi
tags:
- service_groups
/api/v0/applications/service_groups_health_counts:
get:
summary: List Service Groups Health Counts
description: 'Lists the total service group health reports by critical, warning, ok and unknown responses. Supports search and status filtering.
Authorization Action:
```
applications:serviceGroups:list
```'
operationId: ApplicationsService_GetServiceGroupsHealthCounts
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/chef.automate.api.applications.HealthCounts'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/grpc.gateway.runtime.Error'
parameters:
- name: filter
description: 'Applies search filters, in the format of `fieldname:value`.
See the documentation for ServiceGroupsReq for valid filter parameters.'
in: query
required: false
type: array
items:
type: string
collectionFormat: multi
tags:
- service_groups
/api/v0/applications/services:
get:
summary: List Services
description: 'Lists service health status and service metadata for services.
Supports pagination and search and status filtering. For a list of services for a specific service-group see "List Services for a Service Group" (GetServicesBySG endpoint).
Authorization Action:
```
applications:serviceGroups:list
```'
operationId: ApplicationsService_GetServices
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/chef.automate.api.applications.ServicesRes'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/grpc.gateway.runtime.Error'
parameters:
- name: filter
description: "Applies search filters, in the format of `fieldname:value`.\n\nValid filter fieldnames are:\n* `origin`: origin component of the service's package identifier\n* `service`: the name component of the service's package identifier\n* `version`: the version number component of the service's package identifier\n* `buildstamp`: the build timestamp (also called \"release\") of the service's package identifier\n* `channel`: the package channel to which the service subscribes for updates\n* `application`: the application field of the service's event-stream metadata\n* `environment`: the environment field of the service's event-stream metadata\n* `site`: the site field of the service's event-stream metadata\n* `group`: the suffix of the service group name\n\n`status` filters refine service results by a service's\n current state or most recent healthcheck result.\n Disconnected services keep their last healthcheck result\n until their reports are removed by Chef Automate.\n When you apply a healthcheck filter, the report includes\n all recently disconnected services.\n Valid status filter parameters are:\n* `status:disconnected`: returns services in a disconnected state\n* `status:critical`: returns services with a \"critical\" healthcheck result\n* `status:unknown`: returns services with an \"unknown\" healthcheck result\n* `status:warning`: returns services with a \"warning\" healthcheck result\n* `status:ok`: returns services with an \"ok\" health check result"
in: query
required: false
type: array
items:
type: string
collectionFormat: multi
- name: pagination.page
description: Page number of the results to return.
in: query
required: false
type: integer
format: int32
- name: pagination.size
description: Amount of results to include per page.
in: query
required: false
type: integer
format: int32
- name: sorting.field
description: Field to sort the list results on.
in: query
required: false
type: string
- name: sorting.order
description: Order the results should be returned in.
in: query
required: false
type: string
enum:
- ASC
- DESC
default: ASC
tags:
- service_groups
/api/v0/applications/services-distinct-values:
get:
summary: List Filter Values
description: 'Lists all of the possible filter values for a given valid field.
Limit the returned values by providing at one or more characters in the `query_fragment` parameter.
Supports wildcard (* and ?)
Authorization Action:
```
applications:serviceGroups:list
```'
operationId: ApplicationsService_GetServicesDistinctValues
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/chef.automate.api.applications.ServicesDistinctValuesRes'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/grpc.gateway.runtime.Error'
parameters:
- name: field_name
description: Field name of service values.
in: query
required: false
type: string
- name: query_fragment
description: Query value, supports wildcards (* and ?).
in: query
required: false
type: string
- name: filter
description: 'Applies filters, in the format of `fieldname:value`.
See documentation for ServicesReq for valid filter parameters.'
in: query
required: false
type: array
items:
type: string
collectionFormat: multi
tags:
- service_groups
/api/v0/applications/stats:
get:
summary: Show Summary
description: 'Shows a summary of service-groups, services, deployments, and supervisors.
Used for telemetry.
Does not support filtering.
Authorization Action:
```
applications:serviceGroups:list
```'
operationId: ApplicationsService_GetServicesStats
responses:
'200':
description: A successful response.
schema:
$ref: '#/definitions/chef.automate.api.applications.ServicesStatsRes'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/grpc.gateway.runtime.Error'
tags:
- service_groups
definitions:
chef.automate.api.applications.HealthCounts:
type: object
properties:
total:
type: integer
format: int32
ok:
type: integer
format: int32
warning:
type: integer
format: int32
critical:
type: integer
format: int32
unknown:
type: integer
format: int32
disconnected:
type: integer
format: int32
description: Combined count values from the health status and disconnected status reports.
chef.automate.api.applications.HealthStatus:
type: string
enum:
- OK
- WARNING
- CRITICAL
- UNKNOWN
- NONE
default: OK
description: 'The HealthStatus enumerable matches the Chef Habitat implementation for health-check status:
=> https://www.habitat.sh/docs/reference/#health-check
For a health status within a service group.
*critical* means that one or more services are in critical condition.
*warning* means that one or more services have a warning, but none are in critical condition.
*unknown* means that one or more services have not responded, but all of the remaining nodes responded to the health check as "OK".
*OK* means that all of the services are OK and all have responded to the health check.
*none* means that there is no health check information.'
chef.automate.api.applications.ServicesStatsRes:
type: object
properties:
total_service_groups:
type: integer
format: int32
description: Total number of service groups reporting to Chef Automate.
total_services:
type: integer
format: int32
description: Total number of services reporting to Chef Automate, counts both connected and disconnected services.
total_supervisors:
type: integer
format: int32
description: Total number of supervisors reporting to Chef Automate.
total_deployments:
type: integer
format: int32
description: Total number of deployments reporting to Chef Automate.
description: Response message for ServicesStats.
chef.automate.api.applications.ServiceGroups:
type: object
properties:
service_groups:
type: array
items:
$ref: '#/definitions/chef.automate.api.applications.ServiceGroup'
description: List of service groups.
description: List of service groups.
chef.automate.api.applications.Service:
type: object
properties:
supervisor_id:
type: string
description: The Chef Habitat Supervisor ID.
release:
type: string
description: 'Combination of the service version and release in a single string.
Example: 0.1.0/8743278934278923.'
group:
type: string
description: Service group name.
health_check:
$ref: '#/definitions/chef.automate.api.applications.HealthStatus'
description: Intentionally blank.
application:
type: string
description: Application name.
environment:
type: string
description: Environment name.
fqdn:
type: string
description: FQDN reported by a Chef Habitat Supervisor.
channel:
type: string
description: Chef Habitat channel that the service is subscribed to.
update_strategy:
type: string
description: Update strategy that the service employs.
site:
type: string
description: Site reported by Chef Habitat service, a user defined flag.
previous_health_check:
$ref: '#/definitions/chef.automate.api.applications.HealthStatus'
description: Intentionally blank.
current_health_since:
type: string
description: Time interval of current health status from last status change until now.
health_updated_at:
type: string
format: date-time
description: Timestamp since health status change.
disconnected:
type: boolean
description: 'Service connection information.
Based on time since last healthcheck received and disconnected service configuration.'
last_event_occurred_at:
type: string
format: date-time
description: Timestamp of last received health check message.
last_event_since:
type: string
description: Interval since last event received until now.
health_check_result:
$ref: '#/definitions/chef.automate.api.applications.HealthCheckResult'
description: Intentionally blank.
id:
type: string
title: Internal ID
chef.automate.api.applications.DisconnectedServicesReq:
type: object
properties:
threshold_seconds:
type: integer
format: int32
description: Threshold for marking services disconnected in seconds.
description: Request message for GetDisconnectedServices.
chef.automate.api.applications.DeleteServicesByIDReq:
type: object
properties:
ids:
type: array
items:
type: string
description: List of the database IDs of the services to be deleted.
chef.automate.api.applications.ServicesRes:
type: object
properties:
services:
type: array
items:
$ref: '#/definitions/chef.automate.api.applications.Service'
description: List of services.
description: Response message for GetServices.
chef.automate.api.applications.ServicesDistinctValuesRes:
type: object
properties:
values:
type: array
items:
type: string
description: List of distinct values fitting query_fragment and filters.
description: Response message for GetServicesDistinctValues.
google.protobuf.Any:
type: object
properties:
type_url:
type: string
description: "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics."
value:
type: string
format: byte
description: Must be a valid serialized protocol buffer of the above specified type.
description: "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(&foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := &pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := &pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": <string>,\n \"lastName\": <string>\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }"
grpc.gateway.runtime.Error:
type: object
properties:
error:
type: string
code:
type: integer
format: int32
message:
type: string
details:
type: array
items:
$ref: '#/definitions/google.protobuf.Any'
chef.automate.api.applications.HealthCheckResult:
type: object
properties:
stdout:
type: string
stderr:
type: string
exit_status:
type: integer
format: int32
title: 'HealthCheckResult aggregates the stdout output, stderr output and process
exit status of a habitat health check'
chef.automate.api.applications.ServiceGroup:
type: object
properties:
name:
type: string
description: Name of service group.
release:
type: string
description: 'Combination of the version and release in a single string.
Example: 0.1.0/8743278934278923.'
status:
$ref: '#/definitions/chef.automate.api.applications.HealthStatus'
description: Intentionally blank.
health_percentage:
type: integer
format: int32
description: 'Percentage of services reporting OK status.
The health_percentage can be a number between 0-100.'
services_health_counts:
$ref: '#/definitions/chef.automate.api.applications.HealthCounts'
description: Intentionally blank.
id:
type: string
description: Service group ID. This is a value constructed by Chef Automate and is not reported by Chef Habitat.
application:
type: string
description: Application name for the service group.
environment:
type: string
description: Environment name for the service group.
package:
type: string
description: 'Combination of the origin and package name in a single string.
Example: core/redis.'
disconnected_count:
type: integer
format: int32
description: Count of disconnected services within this service group.
description: 'A service group message is the representation of an individual service group that
is internally generated by aggregating all of its services.'
chef.automate.api.applications.ServicesBySGRes:
type: object
properties:
group:
type: string
description: Service group name.
services:
type: array
items:
$ref: '#/definitions/chef.automate.api.applications.Service'
description: List of services.
services_health_counts:
$ref: '#/definitions/chef.automate.api.applications.HealthCounts'
description: Intentionally blank.
description: Response message for GetServicesBySG.